Mode Numerik
Digit Oktal Izin
4Baca (r)
2Tulis (w)
1Eksekusi (x)
0Tanpa izin
Format Tiga Digit
chmod 755 file # rwxr-xr-x chmod 644 file # rw-r--r-- chmod 700 file # rwx------ chmod 600 file # rw-------
Perhitungan Digit
7 (4+2+1)rwx — baca, tulis, eksekusi
6 (4+2)rw- — baca, tulis
5 (4+1)r-x — baca, eksekusi
4r-- — baca saja
3 (2+1)-wx — tulis, eksekusi
2-w- — tulis saja
1--x — eksekusi saja
0--- — tanpa izin
Mode Simbolik
Sintaks: [ugoa][+-=][rwxXst]
uUser (pemilik)
gGroup
oOthers (lainnya)
aSemua (u + g + o)
+Tambah izin
-Hapus izin
=Set izin tepat
Contoh Simbolik
chmod u+x file # owner: add execute chmod g-w file # group: remove write chmod o=r file # others: set read only chmod a+r file # all: add read chmod u+x,g-w,o= file # combined operations
Izin Umum
Preset Izin File
644 rw-r--r--File default — pemilik rw, lainnya baca
755 rwxr-xr-xScript/binary — pemilik rwx, lainnya rx
600 rw-------File privat — pemilik saja
400 r--------Baca saja privat (SSH key)
666 rw-rw-rw-File world-writable (hindari)
777 rwxrwxrwxAkses penuh semua pihak (hindari)
Referensi Cepat
chmod 644 *.html # web files: owner rw, world r chmod 755 *.sh # scripts: owner rwx, world rx chmod 600 ~/.ssh/id_* # SSH keys: owner only chmod 400 secret.pem # certificate: read-only
Izin Direktori
Arti Izin untuk Direktori
r (4)Tampilkan isi direktori (ls)
w (2)Buat/hapus file di direktori
x (1)Masuk ke direktori (cd)
rx (5)Tampilkan + akses (khas untuk baca)
rwx (7)Kontrol penuh
Izin Direktori Umum
chmod 755 dir/ # standard: owner rwx, others rx chmod 700 dir/ # private: owner only chmod 750 dir/ # group access: owner rwx, group rx chmod 1777 /tmp # sticky bit: only owner can delete
Bit Khusus
Setuid, Setgid, Sticky
Setuid (4xxx)Jalankan sebagai pemilik file (mis. passwd)
Setgid (2xxx)Jalankan sebagai group file / warisi group direktori
Sticky (1xxx)Hanya pemilik yang bisa hapus file (mis. /tmp)
Mengatur Bit Khusus
chmod 4755 program # setuid: -rwsr-xr-x chmod 2755 dir/ # setgid: drwxr-sr-x chmod 1755 dir/ # sticky: drwxr-xr-t chmod u+s program # symbolic setuid chmod g+s dir/ # symbolic setgid chmod +t dir/ # symbolic sticky bit
Rekursif
Perubahan Izin Rekursif
chmod -R 755 dir/ # set all to 755 recursively chmod -R u+rwX dir/ # owner rw, +x on dirs only chmod -R go-w dir/ # remove group/other write
File vs Direktori dengan find
# set directories to 755, files to 644 find /path -type d -exec chmod 755 {} + find /path -type f -exec chmod 644 {} +
X Besar — Eksekusi Kondisional
x (huruf kecil)Tambah execute ke semua file dan direktori
X (huruf besar)Tambah execute hanya ke direktori dan file yang sudah executable
umask
Cara Kerja umask
umaskTampilkan umask saat ini
umask 022File: 644, Direktori: 755
umask 077File: 600, Direktori: 700
umask 002File: 664, Direktori: 775
Perhitungan umask
# default permission minus umask = effective # Files: 666 - 022 = 644 (rw-r--r--) # Dirs: 777 - 022 = 755 (rwxr-xr-x) umask # display current umask umask 022 # typical default umask -S # show in symbolic notation
Pola Umum
Kasus Penggunaan Sehari-hari
Web rootchmod -R 755 /var/www/html
File configchmod 600 app.conf
Direktori SSHchmod 700 ~/.ssh
SSH authorized_keyschmod 600 ~/.ssh/authorized_keys
Direktori bersamachmod 2775 /shared (setgid)
File logchmod 640 /var/log/app.log
Script cronchmod 755 /etc/cron.daily/myjob
Direktori tempchmod 1777 /tmp (sticky)
Melihat Izin
ls -l file.txt # show permissions ls -ld dir/ # show directory permissions stat -c '%A %a %n' * # symbolic + numeric + name getfacl file.txt # show ACLs (if in use)