Linux Sysadmin Notes 1: SSH, Filesystem, User Management & Permission
Ada satu kebiasaan buruk yang sering saya lihat termasuk pada diri sendiri yaitu belajar hal baru tanpa mendokumentasikannya. Seminggu…
Linux Sysadmin Notes 1: SSH, Filesystem, User Management & Permission
Ada satu kebiasaan buruk yang sering saya lihat termasuk pada diri sendiri yaitu belajar hal baru tanpa mendokumentasikannya. Seminggu kemudian lupa. Sebulan kemudian harus Google dari nol lagi.
Artikel ini bagian pertama dari seri dokumentasi pribadi saya tentang Linux Sysadmin. Tidak ada yang terlalu teoritis di sini lebih ke “ini yang saya pakai, ini cara kerjanya, ini yang perlu diperhatikan.” Kalau kamu baru mulai belajar Linux administration, mulai dari sini. Kalau sudah jago, mungkin ada satu dua hal yang bisa jadi pengingat.
Environment yang digunakan : Oracle Linux 9 U4
Daftar Isi
- Setup SSH Passwordless
- Navigate Filesystem
- Managing Local Users and Groups
- Managing File System Permissions
1. Setup SSH Passwordless
SSH Passwordless menggunakan sistem key pair yaitu dua kunci yang saling berpasangan. Private key disimpan di mesin lokal, public key dikirim ke server tujuan. Saat connect, SSH verifikasi keduanya cocok tanpa perlu password.
Metode ini lebih aman dari password biasa karena tidak bisa di brute force, dan bisa dipakai untuk otomasi.
brute force sendiri merupakan metode serangan siber yang mencoba semua kemungkinan kombinasi kata sandi atau kunci enkripsi untuk mendapatkan akses ilegal ke akun atau sistem.
- Generate key pair di mesin lokal:
ssh-keygen -t rsa -b 4096 -C "your_email@example.com" | "username@ip"
- -t : type merupakan jenis algoritma enkripsi yang digunakan, memiliki nilai rsa merupakan algoritma yang umum dan kompatible. ada juga alternatif lain seperti ed25519.
- -b : bits panjang kunci dalam satu bit semakin besar makan semakin kuat juga enkripsinya, *bits* memiliki nilai 4096** ini merupakan standart yang aman.
- -C : comment label identitas untuk key ini. Tidak mempengaruhi fungsi, tapi berguna kalau kamu punya banyak key dan perlu tahu key mana dan milik siapa, bisa di tambahkan email/username dan ip/ bisa juga tidak mengunakan -C
setelah dijalankan, akan diminta:
- Lokasi penyimpanan — tekan Enter untuk default
~/.ssh/id_rsa - Passphrase — password tambahan untuk melindungi private key (opsional, tapi direkomendasikan)
Hasilnya terdapat dua file:
~/.ssh/id_rsa→ private key, jangan pernah dibagikan ke siapapun~/.ssh/id_rsa.pub→ public key, ini yang akan dikirim ke server
- Kirim Public Key ke Server
ssh-copy-id username@server_ip
Perintah ini akan meminta password server sekali saja setelah itu tidak perlu lagi.
Kalau ssh-copy-id tidak tersedia, cara manualnya:
cat ~/.ssh/id_rsa.pub | ssh username@server_ip "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"
- cat ~/.ssh/id_rsa.pub ini berfungsi untuk membaca isi file public key dan menampilkannya ke output
- mkdir -p ~/.ssh ini berfungsi untuk membuat direktori .ssh jika di server belum ada
- cat >> ~/.ssh/authorized_keys ini berfungsi untuk isi public key ke file authorized_keys Pakai ( >> )agar tidak menimpa key yang sudah ada.
- Set Permission yang Benar di Server
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
command pertama ini berfungsi untuk mengatur izin di file ~/.ssh, dan command kedua berfungsi untuk memberikan isi di file ~/.ssh/authorized_keys.
- Test koneksi
ssh username@ip_server
Kalau masuk tanpa diminta password, berarti berhasil.
tetapi jika terdapat masalah cara untuk debugnya sebagai berikut:
ssh -v username@server_ip
- -v : verbose berfungsi untuk menampilkan detail proses koneksi SSH langkah per langkah. Berguna untuk troubleshooting. Bisa ditambah jadi -vv atau -vvv untuk detail yang lebih banyak
- SSH Config untuk Kemudahan
Buat atau edit file ~/.ssh/config di mesin lokal:
contoh :
Host myserver
HostName 192.168.1.100
User adminuser
IdentityFile ~/.ssh/id_rsa
Port 22
Host Alias/nama pendek yang kamu pilih sendiri. Ini yang akan kamu ketik saat connect HostName IP address atau hostname asli server User Username yang digunakan untuk login, IdentityFile Path ke private key yang digunakan untuk server ini, Port Port SSH server. Default SSH adalah 22 . Ganti jika server menggunakan port berbeda.
Setelah konfigurasi ini, cukup ketik:
ssh myserver
2. Navigate Filesystem
a. Filesystem Hierarchy Standard (FHS)
Di Linux semua berawal dari ( / ) (root). FHS adalah konvensi yang menentukan di mana setiap jenis file seharusnya berada .
- ( / ) Root filesystemTitik awal semua path di Linux
- /bin Binary perintah dasarPerintah seperti ls, cp, mv ada di sini
- /sbin Binary administrasi sistemPerintah seperti fdisk, ifconfig biasanya butuh root
- /etc File konfigurasi sistemSemua konfigurasi service dan sistem ada di sini
- /home Home directory userSetiap user punya folder sendiri, misal /home/alice
- /root Home directory rootKhusus untuk user root, bukan di /home/root
- /var File yang sering berubahLog, cache, spool, database
- /var/log Log sistem dan aplikasiTempat pertama yang dicek saat ada masalah
- /tmp File sementaraDihapus otomatis saat reboot
- /usr Program dan library userSoftware sistem utama ada di sini
- /usr/local Software yang diinstall manualSoftware yang kamu install sendiri di luar package manager
- /opt Software pihak ketigaAplikasi seperti Oracle, Java sering diinstall di sini
- /dev Device filesRepresentasi hardware: disk ( /dev/sda ), terminal ( /dev/tty ) /proc Virtual filesystem kernelBerisi info proses dan kernel tidak ada di disk fisik
- /sys Virtual filesystem hardwareInfo hardware dan driver tidak ada di disk fisik
- /mnt Mount point sementaraBiasa dipakai untuk mount disk atau NFS sementara
- /boot File bootingKernel, initramfs, dan bootloader config ada di sini
b. Command line File Management
command Navigasi
Navigasi
- **pwd : **print working directory berfungsi menampilkan lokasi direktori saat ini.
- cd : change directory berfungsi untuk pindah ke direktori yang dituju.
- ls : list berfungsi untuk Menampilkan isi direktori.
Membuat dan Menghapus
- mkdir : berfungsi untuk membuat direktori
- touch : berfungsi untuk membuat file
- rm : berfungsi untuk menghapus file
- rmdir : berfungsi untuk menghapus direktori
- rm -r : berfungsi untuk menghapus direktori/file yang terdapat isi di dalamnya
Menyalin dan Memindahkan
- cp : berfungsi untuk copy file
- mv : berfungsi untuk memindahkan file bisa juga untuk rename file/direktori
Melihat Isi File
- cat
- head
- tail
Mencari File dan Konten
- find
- grep
c. Managing Links Between Files
Ada dua jenis link di Linux perbedaannya cukup fundamental.
- Hard Link
Hard link adalah nama alternatif untuk file yang sama. Keduanya menunjuk ke inode yang sama di disk inode adalah struktur data yang menyimpan semua info tentang file (ukuran, permission, lokasi di disk), kecuali nama filenya.
contoh penlisan
ln fileasli.txt hard_link.txt
ln tanpa opsiBuat hard link
fileasli.txt File sumber
hard_link.txt Nama hard link baru
Karakteristik:
- Kalau file asli dihapus, hard link tetap bisa diakses datanya tidak hilang karena inode masih ada
- Harus berada di filesystem yang sama
- Tidak bisa dibuat untuk direktori
- Ketika isi salah satu diubah, yang lain ikut berubah karena memang data yang sama
- Symbolic Link (Symlink)
ln -s /path/file_asli.txt symlink.txt
ln -s /path/direktori_asli/ symlink_direktori
-s : symbolic link, bukan hard link
/path/file_asli.txt Path lengkap ke file/direktori yang dituju. Sebaiknya gunakan path absolut agar symlink tidak broken saat dipindahkan
symling.txt Nama symlink yang akan dibuat
3. Managing Local Users and Groups
a. Buat User Baru dengan Home Directory dan Password
Buat User
useradd -m -d /home/username -s /bin/bash -c "Nama Lengkap" username
- m : make home directory buat home directory untuk user ini secara otomatis
- — d /home/username directory — tentukan lokasi home directory. Kalau tidak diisi, default mengikuti /etc/default/useradd
- -s /bin/bash : shell tentukan default shell yang digunakan user saat login. /bin/bash adalah shell paling umum. Gunakan /sbin/nologin untuk user sistem yang tidak boleh login
- -c “Nama Lengkap” comment biasanya diisi nama lengkap user. Tersimpan di /etc/passwd di kolom GECOS
- username Nama user yang akan dibuat. Ditulis di paling akhir
Set password
passwd username
passwd tanpa opsi lain akan meminta kamu mengetik password baru dua kali untuk konfirmasi.
id username
berguna untuk verifikasi
contoh hasilnya :
uid=1001(alice) gid=1001(alice) groups=1001(alice),10(wheel)
b. Buat Group dan Tambahkan User
groupadd namagroup
Buat group baru. Secara otomatis mendapat GID berikutnya yang tersedia.
usermod -aG namagroup username
berfungsi untuk menambahkan user kedalam grup
- -a : append tambahkan group tanpa menghapus keanggotaan group yang sudah ada
- -G : Groups daftar secondary group yang akan ditambahkan
Wajib pakai -aG bersamaan, bukan -G saja. Kalau hanya -G namagrup username, user akan dikeluarkan dari semua group lain dan hanya masuk ke namagroup saja.
grep namagroup /etc/group
# namagroup:x:5000:alice,bob
groups username
# username : username wheel namagroup
commanad di atas adalah untuk verifikasi
c. Berikan Akses Superuser (sudo)
Cara paling aman — tambahkan ke group wheel :
usermod -aG wheel username
Group wheel di Oracle Linux 9 sudah dikonfigurasi di /etc/sudoers untuk mendapat akses sudo penuh. Ini cara yang paling bersih karena tidak perlu edit file konfigurasi manual.
Kalau perlu konfigurasi manual:
visudo
visudo adalah editor khusus untuk file /etc/sudoers . Selalu gunakan visudo bukan nano atau vi langsung — karena visudo akan memvalidasi sintaks sebelum menyimpan. Kalau sintaks salah, visudo akan memperingatkan. Kalau edit langsung dan salah, sudo bisa tidak bisa dipakai sama sekali.
Tambahkan baris berikut sesuai kebutuhan:
# Akses sudo penuh — harus memasukkan password sendiri
username ALL=(ALL) ALL
# Sudo tanpa password — gunakan hanya untuk automation, bukan user interaktif
username ALL=(ALL) NOPASSWD: ALL
# Sudo hanya untuk perintah tertentu
username ALL=(ALL) /usr/bin/systemctl, /usr/bin/journalctl
test akses sudo :
su - username
d. Hapus User
userdel username
userdel -r username
tanpa opsiHapus user dari sistem tapi home directory dan file-filenya tetap ada
- r remove hapus user beserta home directory dan mail spool-nya
Sebelum hapus, cek dulu:
ps aux | grep username
- ps process status tampilkan daftar proses yang sedang berjalan
- a Tampilkan proses dari semua user, bukan hanya user saat ini
- u Format output yang lebih detail: tampilkan username, CPU, memory
- x Tampilkan proses yang tidak terhubung ke terminal (background process)
- | grep username Filter output, tampilkan hanya baris yang mengandung nama user
find / -user username 2>/dev/null
Cari semua file yang dimiliki user ini di seluruh sistem. Penting dilakukan sebelum hapus agar tidak ada file “orphan” yang tidak punya owner jelas.
usermod -L username
- L Lock kunci akun agar tidak bisa login, tapi akun tidak dihapus. Berguna kalau kamu mau non-aktifkan user dulu sebelum benar-benar menghapusnya
4. Managing File System Permissions
ls -l
# -rwxr-xr-- 1 alice developers 4096 Jan 1 10:00 script.sh

Ubah Permission dengan chmod
Contoh Cara numerik (octal):
chmod 755 script.sh
chmod 644 config.txt
chmod 600 private_key
chmod -R 755 /var/www/
755 : owner=7(rwx), group=5(r-x), others=5(r-x)
Ubah Ownership dengan chown
contoh penggunakaan
chown (nama_user) (nama-file/direktori) // ini untuk mengubah kepemilikan
sebuah direktori atau file
chgrp (nama_group) (nama_group) // ini untuk mengupah kepeemilikan grup
chown alice script.sh
chown alice:developers script.sh
chown :developers script.sh
chgrp developers script.sh
chown -R alice:developers /var/www/
alice Nama user baru sebagai owner. Bisa juga pakai UID: chown 1001 file
:developer Nama group baru. Titik dua ( : ) memisahkan owner dan group
Hanya alice Hanya ubah owner, group tidak berubah
:developer Hanya ubah group, owner tidak berubah
- R recursive terapkan ke semua file dan subdirektori
5. Scheduling dengan Crontab
cron adalah daemon yang menjalankan perintah atau script secara otomatis sesuai jadwal. Berguna untuk backup, cleanup log, monitoring berkala pekerjaan rutin yang tidak perlu dilakukan manual.
crontab -e
crontab -l
crontab -r
crontab -u username -e
-e edit — buka editor untuk mengedit crontab user saat ini
-l list — tampilkan isi crontab user saat ini
-r remove — hapus semua crontab user saat ini (hati-hati, tidak ada konfirmasi)
- u username Kelola crontab milik user tertentu. Hanya bisa dijalankan oleh root
contoh penggunaan :
# Backup setiap tengah malam (jam 00:00)
0 0 * * * /usr/local/bin/backup.sh
# Cleanup /tmp setiap Minggu jam 2 pagi
0 2 * * 0 find /tmp -type f -mtime +7 -delete
# Cek disk usage setiap jam tepat (menit ke-0)
0 * * * * df -h >> /var/log/disk_usage.log
# Jalankan setiap 5 menit
*/5 * * * * /usr/local/bin/check_service.sh
# Setiap hari kerja (Senin-Jumat) jam 8 pagi
0 8 * * 1-5 /usr/local/bin/morning_report.sh
# Tanggal 1 setiap bulan jam 00:00
0 0 1 * * /usr/local/bin/monthly_cleanup.sh
Pada command di atas terdapat
* * * * * command
1 2 3 4 5
Setiap bintang mewakili waktu, di bawah ini akan saya jabarkan arti dari kelima bintang tersebut
- bintang pertama mewakili Menit (0–59)
- bintang ke dua mewakili Jam (0–23)
- bintang ke tiga mewakili Tanggal (1–31)
- bintang ke empat mewakili Bulan (1–12)
- bintang ke lima mewakili Hari dalam seminggu (0–7 | 0 dan 7 = Minggu, 1 = Senin, dst)
Praktik yang Perlu Dibiasakan
Selalu pakai path absolut:
# ❌ Salah — cron tidak tahu PATH yang sama dengan terminal kamu
*/5 * * * * backup.sh
# ✅ Benar — path jelas, tidak bergantung pada environment
*/5 * * * * /usr/local/bin/backup.sh
Redirect output agar kamu tahu kalau ada error:
# Buang semua output (silent mode)
0 0 * * * /usr/local/bin/backup.sh > /dev/null 2>&1
# Simpan output ke log
0 0 * * * /usr/local/bin/backup.sh >> /var/log/backup.log 2>&1
> Redirect stdout ke file (timpa)
>> Redirect stdout ke file (tambahkan di akhir, tidak menimpa)
2>&1 Redirect stderr (2) ke tempat yang sama dengan stdout (1). Artinya error juga masuk ke file log yang sama
/dev/null "Lubang hitam" Linux — semua yang dikirim ke sini dibuang dan tidak tersimpan
메타데이터
- post_id
- a59562abe329
- slug
- linux-sysadmin-notes-1-ssh-filesystem-user-management-permission-a59562abe329
- url
- https://medium.com/@zm.naufalrio52/linux-sysadmin-notes-1-ssh-filesystem-user-management-permission-a59562abe329
- canonical_url
- https://medium.com/@zm.naufalrio52/linux-sysadmin-notes-1-ssh-filesystem-user-management-permission-a59562abe329
- author_url
- https://medium.com/@zm.naufalrio52
- status
- ok
- fetched_at
- 2026-08-19 05:22:01