Setiap kali membaca ls -l atau menulis chmod, kita berhadapan dengan notasi permission yang ringkas tapi mudah lupa: -rw-r--r--, 755, setgid, umask 022. Halaman ini merangkum semuanya dalam tabel rujukan: cara membaca notasi simbolik, konversi ke oktal dan sebaliknya, tiga special bits, nilai umask umum, perintah terkait, sampai tabel gejala error yang paling sering muncul. Gunakan halaman ini saat menulis chmod dan butuh konfirmasi cepat; penjelasan mekanisme lengkapnya tetap ada di chapter File Permissions dan chmod dan chown .

Membaca Notasi Simbolik rwx #

String pertama pada ls -l terdiri dari 10 karakter yang terbagi empat bagian. Karakter pertama adalah jenis berkas (- file biasa, d direktori, l symlink), lalu tiga kelompok rwx yang berurutan berlaku untuk pemilik (owner), group, dan other:

Posisi karakterBerlaku untukContoh pada -rw-r--r--
Karakter 1Jenis berkas: - file, d direktori, l symlink- berarti file biasa
Karakter 2-4Hak pemilik (owner)rw- boleh baca dan tulis, tidak boleh eksekusi
Karakter 5-7Hak groupr-- hanya boleh baca
Karakter 8-10Hak other (selain owner dan group)r-- hanya boleh baca

Arti tiap huruf sedikit berbeda antara file dan direktori, dan perbedaan inilah sumber kebingungan paling umum:

HurufPada filePada direktori
rMembaca isi fileMendaftar isi (ls)
wMengubah isi fileMembuat dan menghapus entri di dalamnya
xMenjalankan file sebagai programMasuk (cd) dan mengakses entri di dalamnya

Perhatikan bahwa menghapus file tidak membutuhkan w pada file itu sendiri, melainkan w pada direktori tempatnya berada — itulah kenapa kita bisa “menulis” tanpa bisa “membaca” sebuah direktori. Daftar opsi chmod yang lengkap beserta notasi simboliknya selalu bisa dibuka di halaman manual chmod(1) .

Konversi Oktal dan Simbolik #

Mode oktal menulis tiga kelompok rwx sebagai tiga angka: r bernilai 4, w bernilai 2, dan x bernilai 1, lalu dijumlahkan per kelompok. Sebuah chmod 755 berarti rwxr-xr-x, dan chmod 644 berarti rw-r--r--:

NilaiSimbolikBerarti
0---tidak ada hak
1--xhanya eksekusi
2-w-hanya tulis
3-wxtulis dan eksekusi
4r--hanya baca
5r-xbaca dan eksekusi
6rw-baca dan tulis
7rwxsemua hak

Gabungan tiga digit itu melahirkan mode-mode yang terus berulang di sistem nyata. Tabel berikut adalah yang paling sering dijumpai beserta alasannya:

OktalSimbolikPemakaian umum
600rw-------Berkas privat milik satu user: kunci SSH (~/.ssh/id_ed25519), .bashrc dengan rahasia
644rw-r--r--Berkas konfigurasi yang boleh dibaca semua orang tapi hanya pemiliknya menulis; hasil umum umask 022
664rw-rw-r--Berkas kerja bersama satu group (lihat Group Management )
700rwx------Direktori privat seperti ~/.ssh — group dan other tidak boleh masuk
750rwxr-x---Direktori kerja: pemilik penuh, group boleh masuk dan melihat, other tersingkir
755rwxr-xr-xSkrip dan direktori yang boleh dipakai semua user; hasil umum umask 022 pada direktori
775rwxrwxr-xDirektori kerja bersama satu group tanpa sticky bit
777rwxrwxrwxHampir selalu kesalahan — lihat peringatan di bawah

Konversi ini bisa dibuktikan sendiri dengan chmod dan stat — perintah stat -c '%a %A' mencetak mode oktal dan simboliknya berdampingan:

bash
touch catatan.txt
chmod 644 catatan.txt
stat -c '%a %A' catatan.txt
chmod 600 catatan.txt
stat -c '%a %A' catatan.txt
mkdir -p proyek
chmod 750 proyek
stat -c '%a %A' proyek

Output yang Dihasilkan:

text
644 -rw-r--r--
600 -rw-------
750 drwxr-x---

Baris demi baris, blok di atas membuktikan tabel sebelumnya: chmod 644 lalu 600 pada file menghasilkan rw-r--r-- lalu rw-------, dan chmod 750 pada direktori menghasilkan rwxr-x--- — huruf pertama otomatis - atau d sesuai jenisnya.

Special Bits: setuid, setgid, dan Sticky #

Di depan tiga digit oktal masih ada digit keempat untuk special bits. Ketiganya jarang kita set sendiri, tapi sering kita temui (dan harus pahami) di sistem nyata:

BitNilai oktalPada filePada direktori
setuid4000Program berjalan sebagai pemilik file-nya, bukan user yang menjalankannya (contoh: /usr/bin/passwd mode 4755)Tidak berpengaruh
setgid2000Program berjalan sebagai group pemiliknyaFile dan subdirektori baru di dalamnya mewarisi group direktori ini — resep folder kerja tim
sticky1000Hampir tidak pernah dipakai modernHanya pemilik file (atau pemilik direktori) yang boleh menghapusnya — inilah yang menjaga /tmp tetap tertib dengan mode 1777

Pada notasi simbolik, ketiganya muncul sebagai huruf s, s, dan t menggantikan x di posisi masing-masing: -rwsr-xr-x untuk 4755, drwxrws--- untuk 2770, dan drwxrwxrwt untuk 1777. Kita buktikan ketiganya sekaligus:

bash
touch backup.sh
chmod 4755 backup.sh
stat -c '%a %A' backup.sh
mkdir -p data-setgid data-sticky
chmod 2770 data-setgid
stat -c '%a %A' data-setgid
chmod 1777 data-sticky
stat -c '%a %A' data-sticky

Output yang Dihasilkan:

text
4755 -rwsr-xr-x
2770 drwxrws---
1777 drwxrwxrwt

Mekanisme lengkap setiap bit — termasuk alasan /tmp memakai sticky dan kenapa setuid berbahaya di file sembarangan — dibahas di chapter Special Permissions .

Nilai umask yang Umum #

umask memotong permission bawaan saat berkas dibuat: file lahir dari basis 666 dan direktori dari 777, lalu dikurangi umask. Detail mekanismenya ada di chapter umask ; tabel ini cukup untuk keputusan sehari-hari:

umaskFile baruDirektori baruKapan cocok
022644755Bawaan umum distro: group dan other boleh membaca
027640750Group boleh membaca, other tidak — wajar untuk mesin kantor
077600700Ruang kerja privat: hanya pemilik yang melihat apa pun

Perintah Terkait Permission #

PerintahFungsiContoh singkatMateri
chmodMengubah modechmod 644 config.confchmod dan chown
chownMengubah pemilik dan groupsudo chown budi:budi filechmod dan chown
chgrpMengubah group sajachgrp tim laporan.txtGroup Management
umaskMelihat atau mengatur mask sesi iniumask 077umask
statMenampilkan mode aktual sebuah berkasstat -c '%a %A' app.shumask
getfaclMenampilkan ACL sebuah berkasgetfacl laporan.txtAccess Control Lists
setfaclMengatur ACLsetfacl -m u:siti:r-- laporan.txtAccess Control Lists
sudoMenjalankan perintah sebagai rootsudo systemctl restart nginxsudo dan root

Gejala Permission Umum dan Solusinya #

Empat gejala berikut menyumbang sebagian besar pertanyaan permission sehari-hari. Diagnosisnya selalu dimulai dari ls -l pada file dan direktori induknya:

GejalaPenyebab yang umumSolusi
Permission denied saat membaca fileKita bukan pemiliknya dan bagian other tidak punya rMinta pemilik menyalin file tersebut, atau naikkan hak lewat group/ACL bila memang berkepentingan
Permission denied saat menjalankan skripBit x belum ada pada filechmod +x skrip.sh lalu jalankan dengan ./skrip.sh
cannot open directory saat cdKita tidak punya x pada direktori tersebut (punya r saja tidak cukup)chmod +x nama-direktori oleh pemiliknya
File baru bisa dibaca semua orangumask sesi terlalu longgar (022)Set umask 077 di ~/.bashrc untuk ruang kerja privat

Dengan mode, special bits, dan umask dalam satu halaman, kebutuhan berikutnya biasanya berpindah ke lokasi: direktori mana yang pantas menampung file, dan kenapa konfigurasi ada di /etc sementara log ada di /var. Peta lengkapnya ada di Referensi Filesystem .