Memahami Izin File Unix dengan Kalkulator Chmod
Izin file Unix mengontrol siapa yang dapat membaca, menulis, dan mengeksekusi file dan direktori. Setiap file dan direktori pada sistem Linux atau Unix memiliki sekumpulan bit izin yang menentukan akses untuk tiga kategori: pemilik file, grup, dan lainnya. Memahami izin ini sangat penting untuk administrasi sistem, pengembangan web, DevOps, dan pekerjaan apa pun di server Linux.
Tiga Triplet Izin
Izin diorganisasikan menjadi tiga kelompok yang masing-masing terdiri dari tiga bit:
Owner Group Other
rwx rwx rwx
Setiap triplet berisi tiga izin:
- r — Baca (4)
- w — Tulis (2)
- x — Eksekusi (1)
Nilai dalam tanda kurung adalah bobot oktal. Untuk menghitung mode oktal, jumlahkan bobot izin yang diaktifkan untuk setiap triplet.
rwx = 4 + 2 + 1 = 7
rw- = 4 + 2 + 0 = 6
r-x = 4 + 0 + 1 = 5
r-- = 4 + 0 + 0 = 4
-wx = 0 + 2 + 1 = 3
-w- = 0 + 2 + 0 = 2
--x = 0 + 0 + 1 = 1
--- = 0 + 0 + 0 = 0
Mode Chmod Umum
| Oktal | Simbolik | Owner | Group | Other | Penggunaan Umum |
|---|---|---|---|---|---|
| 777 | rwxrwxrwx | rwx | rwx | rwx | Akses penuh (tidak aman, hindari) |
| 755 | rwxr-xr-x | rwx | r-x | r-x | Direktori, skrip yang dapat dieksekusi |
| 750 | rwxr-x--- | rwx | r-x | --- | Direktori tim |
| 700 | rwx------ | rwx | --- | --- | Eksekutif pribadi |
| 644 | rw-r--r-- | rw- | r-- | r-- | File biasa, aset web |
| 640 | rw-r----- | rw- | r--- | --- | File yang dapat dibaca tim |
| 600 | rw------- | rw- | --- | --- | File pribadi (kunci SSH) |
| 400 | r-------- | r-- | --- | --- | Konfigurasi hanya-baca |
Izin File vs Direktori
Bit eksekusi berperilaku berbeda untuk file dan direktori.
| Izin | Pada File | Pada Direktori |
|---|---|---|
| r | Baca isi file | Daftar isi direktori (ls) |
| w | Modifikasi isi file | Buat, ganti nama, hapus file di dalamnya |
| x | Eksekusi file sebagai program | Masuk direktori (cd), akses file di dalamnya |
Perbedaan ini sangat penting. Sebuah direktori membutuhkan r dan x agar dapat dibaca — r saja memungkinkan Anda melihat nama file, tetapi tanpa x Anda tidak dapat mengakses file apa pun di dalamnya.
# Direktori dengan r tetapi tanpa x — dapat melihat daftar tetapi tidak dapat mengakses
$ ls -la /example
# (menampilkan nama file tetapi Anda tidak dapat cd atau membaca file)
# Direktori dengan r-x — akses baca penuh
$ ls -la /example
$ cat /example/file.txt
Referensi Perintah Chmod
Notasi Oktal
chmod 755 script.sh # rwxr-xr-x
chmod 644 index.html # rw-r--r--
chmod 600 id_rsa # rw------- (kunci privat SSH)
chmod 700 ~/.ssh # rwx------ (direktori SSH)
chmod -R 755 public/ # Rekursif (terapkan ke semua file dan subdirektori)
Notasi Simbolik
chmod u+x script.sh # Tambah eksekusi untuk pemilik
chmod g+w file.txt # Tambah tulis untuk grup
chmod o-r file.txt # Hapus baca untuk lainnya
chmod a+rx script.sh # Tambah baca+eksekusi untuk semua (ugo)
chmod u=rwx,g=rx,o= # Setel izin tepat: rwxr-x---
chmod -R u=rwX,go=rX public/ # Rekursif, X = eksekusi hanya untuk direktori
Huruf kapital X dalam mode simbolik bersifat khusus: ini menambahkan izin eksekusi hanya jika target adalah direktori atau sudah memiliki izin eksekusi untuk pengguna mana pun. Ini sangat berguna untuk operasi rekursif.
# Setel semua direktori ke 755 dan semua file ke 644 secara rekursif
find /path -type f -exec chmod 644 {} \;
find /path -type d -exec chmod 755 {} \;
# Atau gunakan pintasan X
chmod -R u=rwX,go=rX /path
Bit Izin Khusus
Selain bit rwx dasar, Unix mendukung tiga izin khusus.
Setuid (SUID) — u+s (4000)
Ketika diatur pada eksekutabel, proses berjalan dengan hak istimewa pemilik file, bukan pengguna yang meluncurkannya. Ini memungkinkan pengguna biasa menjalankan perintah yang memerlukan izin yang lebih tinggi.
chmod u+s /usr/bin/passwd
# -rwsr-xr-x (s menggantikan x di triplet pemilik)
Setgid (SGID) — g+s (2000)
Pada file, proses berjalan dengan grup file. Pada direktori, file baru yang dibuat di dalamnya mewarisi grup direktori alih-alih grup utama pembuat.
chmod g+s /shared/directory
# drwxrwsr-x (s menggantikan x di triplet grup)
Sticky Bit — +t (1000)
Terutama digunakan pada /tmp — hanya pemilik file (atau root) yang dapat menghapus atau mengganti nama file di dalam direktori, bahkan jika orang lain memiliki izin tulis.
chmod +t /tmp
# drwxrwxrwt (t menggantikan x di triplet other)
Umask: Izin Default
Umask mendefinisikan bit izin mana yang dihapus ketika file atau direktori baru dibuat. Ini adalah kebalikan dari izin default yang diinginkan.
umask 022 # Default untuk sebagian besar sistem
# File: 666 - 022 = 644 (rw-r--r--)
# Dirs: 777 - 022 = 755 (rwxr-xr-x)
umask 002 # Default untuk direktori bersama
# File: 666 - 002 = 664 (rw-rw-r--)
# Dirs: 777 - 002 = 775 (rwxrwxr-x)
umask 077 # Restriktif (pribadi)
# File: 666 - 077 = 600 (rw-------)
# Dirs: 777 - 077 = 700 (rwx------)
Praktik Terbaik Keamanan
- File konfigurasi yang berisi rahasia: 600 (
chmod 600 .env) - Kunci privat SSH: 600 (
chmod 600 ~/.ssh/id_rsa) - Direktori SSH: 700 (
chmod 700 ~/.ssh) - Direktori web: 755 (
chmod 755 /var/www/html) - File web: 644 (
chmod 644 /var/www/html/index.html) - Direktori upload: 755, bukan 777
- Skrip eksekutabel: 755 (
chmod 755 deploy.sh) - Jangan pernah gunakan 777 di produksi — memungkinkan pengguna mana pun memodifikasi file
Kendala Umum
Kendala 1: Membingungkan izin direktori dan file
# ❌ Salah — memberi eksekusi ke semua file secara rekursif
chmod -R 755 /path
# ✅ Benar — pisahkan izin file dan direktori
find /path -type f -exec chmod 644 {} \;
find /path -type d -exec chmod 755 {} \;
Kendala 2: Menggunakan 777 untuk upload web
# ❌ Salah — pengguna mana pun dapat menulis
chmod 777 uploads/
# ✅ Benar — pemilik dapat menulis, lainnya hanya baca+eksekusi
chmod 755 uploads/
# Jadikan pengguna server web sebagai pemilik
chown www-data:www-data uploads/
Kendala 3: Mengabaikan izin grup untuk proyek tim
# Setel bit grup sticky agar file baru mewarisi grup
chmod g+s /project/shared
chmod 775 /project/shared
Alat Online
Alat CHMOD Calculator di Help2Code menyediakan pengalih bit izin interaktif dengan output oktal dan simbolik instan. Alihkan baca, tulis, dan eksekusi untuk pemilik, grup, dan lainnya, dan lihat perintah chmod yang dihasilkan segera. Preset cepat untuk mode umum seperti 755, 644, 600, dan 700 memudahkan menemukan set izin yang tepat tanpa menghafal nilai oktal.
Kesimpulan
Izin file Unix adalah sistem yang sederhana namun kuat yang dibangun di atas tiga triplet bit baca, tulis, dan eksekusi. Notasi oktal membuat izin menjadi ringkas dan dapat diskrip, sementara notasi simbolik menyediakan kontrol yang terperinci. Memahami izin — termasuk umask, SUID, SGID, dan sticky bit — sangat penting untuk administrasi server yang aman. Gunakan alat CHMOD Calculator untuk bereksperimen dengan kombinasi izin secara interaktif.