← Back to list

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…

Muhammad Naufalrio · 2026-05-21 07:11 · 0 claps · 8.2 min read
#basics-linux
Open on Medium ↗
Wiki topics: SAF · Safety & Alignment BIZ · Business Strategy 🔓 · Open Source

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

  1. Setup SSH Passwordless
  2. Navigate Filesystem
  3. Managing Local Users and Groups
  4. 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.

  1. 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_rsaprivate key, jangan pernah dibagikan ke siapapun
  • ~/.ssh/id_rsa.pubpublic key, ini yang akan dikirim ke server
  1. 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.
  1. 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.

  1. 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
  1. 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.

  1. 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
  1. 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

  1. bintang pertama mewakili Menit (0–59)
  2. bintang ke dua mewakili Jam (0–23)
  3. bintang ke tiga mewakili Tanggal (1–31)
  4. bintang ke empat mewakili Bulan (1–12)
  5. 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