Model Izin rwx

Izin baca, tulis, dan eksekusi untuk user, grup, dan other dalam notasi simbolik dan oktal.

Daftar isi

Izin (permission) adalah aturan yang menentukan siapa boleh membaca, mengubah, dan menjalankan sebuah berkas. Topik ini membahas struktur izin rwx untuk tiga kelompok pemilik, cara membacanya dalam notasi simbolik, cara menghitungnya dalam notasi oktal, serta perbedaan arti huruf yang sama ketika melekat pada berkas dan pada direktori. Setelah menyelesaikannya, keluaran ls -l dan stat dapat ditafsirkan sepenuhnya, dan pemilihan mode pada perintah chmod menjadi keputusan yang sadar, bukan tebakan.

Tiga kelompok pemilik: user, grup, dan other#

Setiap berkas di Linux menyimpan satu triplet izin, yakni sekumpulan tiga huruf, untuk pemilik (user), satu untuk grup (group), dan satu untuk pengguna lain (other). Pemilik dan grup yang berlaku untuk sebuah berkas terlihat pada keluaran ls -l, yaitu dua kolom sebelum ukuran berkas. Setiap berkas hanya menyimpan satu UID pemilik dan satu GID grup. Karena itu, pemberian akses kepada lebih dari satu kelompok pengguna ditangani dengan keanggotaan grup, bukan dengan menambah pemilik. Diagram berikut memperlihatkan bagaimana sepuluh karakter pada keluaran ls -l terbagi menjadi penanda jenis berkas dan tiga triplet tersebut.

Contoh: izin-rw-r--r--dengan mode 644-jenis berkasrw-user (pemilik)4+2+0 = 6r--grup4+0+0 = 4r--other4+0+0 = 4Bobot huruf: r = 4, w = 2, x = 1Jumlah tiap triplet membentuk satu digit oktal: 6-4-4
Pembagian string izin menjadi penanda jenis berkas dan tiga triplet user, grup, other

Empat berkas sistem berikut memberi contoh yang nyata:

bash
stat -c '%A %a %n' /etc/passwd /etc/shadow /usr/bin/ls /tmp
text Keluaran
-rw-r--r-- 644 /etc/passwd
-rw-r----- 640 /etc/shadow
-rwxr-xr-x 755 /usr/bin/ls
drwxrwxrwt 1777 /tmp

Opsi %A menampilkan notasi simbolik, sedangkan %a menampilkan nilai oktalnya. Berkas /etc/passwd dapat dibaca semua orang tetapi hanya boleh diubah root. /etc/shadow dibatasi untuk root dan grup shadow, sedangkan /usr/bin/ls membutuhkan izin eksekusi agar dapat dijalankan semua pengguna. Huruf t pada /tmp disebut sticky bit, penanda yang membuat /tmp tetap bisa ditulis semua orang tanpa mengizinkan penghapusan berkas milik pengguna lain.

Arti huruf r, w, dan x#

Huruf yang sama membawa arti berbeda untuk berkas dan untuk direktori. Pada berkas, r mengizinkan pembacaan isi, w mengizinkan pengubahan isi, dan x mengizinkan berkas dijalankan sebagai program. Pada direktori, r mengizinkan pembacaan daftar nama, w mengizinkan pembuatan dan penghapusan entri, sedangkan x mengizinkan penerobosan (traversal), yaitu mengakses entri di dalam direktori tersebut, termasuk cd ke dalamnya.

HurufPada berkasPada direktori
r (4)Membaca isi berkasMembaca daftar nama entri
w (2)Mengubah isi berkasMembuat dan menghapus entri
x (1)Menjalankan berkas sebagai programMengakses entri (penerobosan, cd)

Perhatikan bahwa izin menulis pada direktori tidak memeriksa pemilik berkas di dalamnya. Pengguna dapat menghapus berkas milik pengguna lain selama memiliki w dan x pada direktorinya, kecuali sticky bit menahannya.

Membaca notasi simbolik#

Notasi simbolik menuliskan izin sebagai sepuluh karakter, yaitu satu penanda jenis berkas diikuti tiga triplet rwx. Tanda hubung pada posisi tertentu berarti izin tersebut tidak diberikan. Contoh berikut menyiapkan tiga objek dengan mode yang ditetapkan eksplisit agar keluarannya identik di mesin mana pun.

bash
# menyiapkan folder kerja
mkdir -p /tmp/kerja-model-izin
cd /tmp/kerja-model-izin
rm -rf laporan.txt skrip.sh arsip
touch laporan.txt
printf '#!/bin/bash\necho hai\n' > skrip.sh
mkdir arsip
# mode ditetapkan eksplisit agar keluaran konsisten
chmod 644 laporan.txt
chmod 664 skrip.sh
chmod 755 arsip
stat -c '%A %a %n' laporan.txt skrip.sh arsip
text Keluaran
-rw-r--r-- 644 laporan.txt
-rw-rw-r-- 664 skrip.sh
drwxr-xr-x 755 arsip

String -rw-r--r-- berarti pemilik boleh membaca dan menulis, sedangkan grup dan other hanya membaca. String -rw-rw-r-- menambahkan izin menulis bagi grup, pola yang cocok untuk berkas kerja bersama satu tim. String drwxr-xr-x menunjukkan direktori (huruf d) yang dapat dimasuki semua orang, tetapi hanya pemiliknya yang boleh menambah atau menghapus entri di dalamnya. Nilai oktalnya, yaitu 644, 664, dan 755, masing-masing adalah ringkasan tiga triplet tersebut.

Mode berkas baru sebenarnya tidak ditetapkan manual, melainkan dihitung sistem dari nilai umask. Agar keluaran contoh di atas stabil di mesin mana pun, mode ketiga objek ditetapkan secara eksplisit dengan chmod. Mekanisme umask dibahas penuh pada topik umask di modul ini.

Izin eksekusi pada direktori#

Pada direktori, ketiadaan x memotong akses ke isi meskipun r masih ada, dan ketiadaan r menyembunyikan daftar nama meskipun x masih ada. Dua percobaan berikut memperlihatkan keduanya secara berurutan.

bash
mkdir terkunci
printf 'laporan mingguan\n' > terkunci/isi.txt
chmod 600 terkunci
# r ada, x tidak: nama masih terbaca
ls terkunci
# isi berkas tidak dapat diakses tanpa x
cat terkunci/isi.txt
text Keluaran
isi.txt
cat: terkunci/isi.txt: Permission denied

Direktori ber-mode 600 masih mengizinkan pembacaan daftar nama, tetapi kernel menolak penerobosan ke entri di dalamnya, sehingga cat gagal meskipun nama berkasnya terlihat jelas pada baris pertama keluaran. Kondisi sebaliknya terjadi bila r yang dilepas.

bash
chmod 111 terkunci
# x ada, r tidak: daftar nama terkunci
ls terkunci
# berkas yang namanya diketahui tetap bisa dibaca
cat terkunci/isi.txt
# memulihkan akses lalu membersihkan contoh
chmod 700 terkunci
rm -rf terkunci
text Keluaran
ls: cannot open directory 'terkunci': Permission denied
laporan mingguan

Pola ini menjelaskan banyak pesan error yang tampak tidak konsisten, misalnya ls yang berhasil pada satu direktori tetapi gagal setelah opsi -l ditambahkan. Opsi -l memerlukan metadata setiap entri, dan pengambilan metadata butuh x pada direktorinya. Kombinasi yang sama dijumpai pada konfigurasi server. Direktori layanan web biasanya ber-mode 755 agar pengunjung dapat menjangkau berkas di dalamnya, sedangkan ~/.ssh ber-mode 700 agar hanya pemiliknya yang dapat menjangkau kunci di dalamnya. Karena pemeriksaan dilakukan pada setiap direktori di sepanjang jalur, akses sebuah berkas bergantung pada izin seluruh direktori di jalurnya, bukan pada satu direktori saja.

Notasi oktal#

Notasi oktal meringkas setiap triplet menjadi satu digit dengan memberi bobot r = 4, w = 2, dan x = 1, lalu menjumlahkan bobot huruf yang muncul. Tiga digit berurutan menyatakan izin user, grup, dan other.

DigitBinerHurufArti
0000---Tanpa izin
1001--xEksekusi saja
2010-w-Tulis saja
3011-wxTulis dan eksekusi
4100r--Baca saja
5101r-xBaca dan eksekusi
6110rw-Baca dan tulis
7111rwxPenuh

Perhitungan ini dapat direproduksi dengan aritmetika bash, yang memahami notasi biner 2#...:

bash
# bobot: r=4, w=2, x=1
echo "rwx = $((2#100))+$((2#010))+$((2#001)) = $((2#111))"
echo "rw- = $((2#110))"
echo "r-x = $((2#101))"
text Keluaran
rwx = 4+2+1 = 7
rw- = 6
r-x = 5

Untuk membiasakan konversi dua arah, jalankan demo interaktif berikut. Pilih izin untuk setiap kelompok, atau gunakan tombol contoh cepat, lalu bandingkan hasil simbolik dan oktal yang muncul.

Dua mode yang paling sering dijumpai pada server adalah 644 untuk berkas konfigurasi dan 755 untuk direktori serta skrip yang harus bisa dijalankan. Keduanya kini dapat dibaca langsung, yaitu rw-r--r-- dan rwxr-xr-x, tanpa menghafal daftar digitnya.

Kesalahan umum#

  • Memakai chmod -R 777 sebagai solusi segala masalah akses. Mode ini membuka seluruh berkas kepada semua pengguna, termasuk yang seharusnya privat, dan perubahan yang sudah dilakukan sulit dilacak. Sebutkan pola izin yang benar per target, atau gunakan X kapital bila eksekusi hanya boleh menyasar direktori.
  • Menebak penyebab Permission denied tanpa memeriksa direktorinya. Kegagalan bisa berasal dari r yang hilang, x yang hilang, atau keduanya. Periksa dengan stat -c '%A %n' pada setiap direktori di jalurnya, bukan hanya berkas tujuan.
  • Menganggap x diperlukan untuk membaca. Berkas dengan r tanpa x tetap dapat dibaca, hanya tidak dapat dijalankan, sedangkan direktori tanpa x tidak dapat diterobos walaupun bit r-nya ada.
  • Mengubah izin berkas milik pengguna lain. chmod hanya dapat dijalankan pemilik berkas atau root, dan pengguna lain menerima pesan Operation not permitted.

Ringkasan#

  • Izin terbagi ke tiga kelompok, yaitu user, grup, dan other, masing-masing dengan triplet rwx. Huruf r membaca, w mengubah, dan x mengeksekusi berkas atau menerobos direktori.
  • Pada direktori, x mengatur akses ke isi, sedangkan r mengatur pembacaan daftar nama. Keduanya dapat dikombinasikan secara bebas.
  • Notasi oktal menjumlahkan bobot r=4, w=2, x=1 per triplet, sehingga 644 berarti rw-r--r-- dan 755 berarti rwxr-xr-x.
  • Perintah stat -c '%A %a %n' menampilkan bentuk simbolik dan oktal sekaligus dalam satu keluaran.

Referensi#