Linux adalah sistem multi-user sejak lahir: satu mesin bisa dipakai banyak orang sekaligus, dan setiap orang memiliki file, pengaturan, serta hak aksesnya sendiri. Kunci dari model ini adalah user account — identitas yang dipakai sistem setiap kali seseorang login, menjalankan perintah, atau membuat file. Semua informasi akun tersimpan sebagai file teks biasa di /etc yang bisa kita baca langsung. Pada Chapter ini kita membedah struktur /etc/passwd dan /etc/shadow, lalu mengenal perintah useradd, passwd, usermod, dan userdel untuk mengelola akun.

Multi-User dalam Kehidupan Nyata #

Setiap proses di Linux dimiliki seorang user, dan setiap file mencatat siapa pemiliknya. Berkat catatan ini, sistem tahu siapa yang menjalankan proses, siapa pemilik file, dan siapa yang boleh mengubah apa. Tanpa pemisahan akun, satu user bisa tanpa sengaja merusak data user lain.

Akun root dengan UID 0 berkuasa penuh atas seluruh sistem, sementara akun user biasa dibatasi oleh permission. Ada pula akun sistem seperti www-data atau sshd yang sengaja dibuat tanpa kemampuan login, agar aplikasi tidak berjalan dengan kuasa penuh — kerusakan dari satu aplikasi pun tetap terbatas.

Anatomi File /etc/passwd #

File /etc/passwd adalah basis data akun utama: satu baris per user dengan tujuh field yang dipisah tanda titik dua (:). Contohnya baris milik root:

bash
grep '^root:' /etc/passwd

Output yang Dihasilkan:

text
root:x:0:0:root:/root:/bin/bash

Tanda sirkumfleks (^) membuat grep hanya mencocokkan baris yang diawali root:, sehingga user lain tidak ikut tersaring. Tujuh field baris tersebut bermakna:

PosisiFieldNilai untuk rootMaknanya
1nama loginrootnama yang diketik saat login
2passwordxpenanda hash di /etc/shadow
3UID0nomor identitas user bagi kernel
4GID0nomor group primer si user
5GECOSrootkomentar bebas, misal nama lengkap
6home/rootdirektori awal setelah login
7shell/bin/bashprogram yang dijalankan saat login

Kadang kita hanya butuh field tertentu — cut membelah baris berdasarkan pemisah lalu memilih kolomnya:

bash
grep '^root:' /etc/passwd | cut -d: -f1,3,7

Output yang Dihasilkan:

text
root:0:/bin/bash

Mari kita bedah dua tahap pipeline tersebut:

  1. grep '^root:' /etc/passwd menyaring baris yang diawali root:; karena field pertama adalah nama login, pola ini tidak akan salah tangkap.
  2. cut -d: -f1,3,7 membelah baris dengan pemisah tanda titik dua, lalu mengambil field ke-1 (nama), ke-3 (UID), dan ke-7 (shell).

Sebagai contoh tampilan, baris user biasa bernama Budi di komputer lain tampak seperti ini:

text
budi:x:1001:1001:Budi Santoso:/home/budi:/bin/bash

Password Tidak Disimpan di /etc/passwd #

Field kedua berisi x — bukan password, melainkan penanda bahwa hash password sesungguhnya disimpan di /etc/shadow. Dulu hash ditulis langsung di /etc/passwd, tetapi file tersebut wajib terbaca semua user karena banyak alat bergantung padanya — misalnya ls memakainya untuk menerjemahkan angka UID menjadi nama. Hash yang bisa dibaca semua orang mudah di-crack secara offline — karena itu hash kini dipindah ke /etc/shadow.

Kita bisa membandingkan permission kedua file itu secara langsung:

bash
stat -c '%a %U:%G %n' /etc/passwd /etc/shadow

Output yang Dihasilkan:

text
644 root:root /etc/passwd
640 root:shadow /etc/shadow

Angka 644 berarti semua user boleh membaca /etc/passwd. Sebaliknya /etc/shadow ber-640 dengan pemilik root dan group shadow — hanya mereka yang boleh membaca hash di dalamnya. Hash modern ($6$... untuk SHA-512, $y$... untuk yescrypt) selalu disertai salt, sehingga password sama pun menghasilkan hash berbeda. Format kedua file didokumentasikan di passwd(5) dan shadow(5) .

Mengelola Akun dengan useradd, passwd, dan usermod #

Membuat akun berarti menambah baris baru ke /etc/passwd — pekerjaan useradd. Perintah di bagian ini membutuhkan akses root:

bash
sudo useradd -m -s /bin/bash budi
sudo passwd budi

Opsi -m membuat home directory /home/budi beserta kerangka file awal; -s menetapkan shell login user tersebut. Setelah baris akun ada, passwd budi menetapkan passwordnya — perintah ini meminta password baru dua kali tanpa menampilkan apa pun ke layar.

Dua pelengkap menutup siklus hidup akun: usermod -L budi mengunci akun dengan menyisipkan tanda seru di awal hashnya, sedangkan userdel -r budi menghapus akun beserta home directory dan mail spool-nya.

Satu hal belum kita bahas: field keempat /etc/passwd menyebut GID, yaitu group primer si user. Group adalah cara Linux berbagi akses antar banyak user sekaligus — kita bedah pada Chapter Group Management .