Izin File Linux Dijelaskan: Panduan chmod Lengkap
Panduan lengkap tentang izin file Unix ā model owner/group/other, notasi oktal (755, 644, 777), notasi simbolik, setuid/setgid/sticky bit, dan contoh dunia nyata untuk web server dan kunci SSH.
Setiap file dan direktori di sistem Linux atau macOS membawa satu set izin yang mengontrol siapa yang dapat membaca, menulis, atau mengeksekusinya. Mengatur izin ini dengan benar adalah perbedaan antara server yang aman dan server yang bocor data atau dikompromikan. Namun notasinya ā chmod 755, output ls -la yang menampilkan -rwxr-xr-- ā bisa terasa rumit sampai kamu memahami model di baliknya. Panduan ini menjelaskan izin file Unix dari prinsip pertama.
Kamu bisa menghitung nilai izin dan mengkonversi antara notasi oktal dan simbolik secara instan dengan BrowseryTools chmod Calculator ā gratis, tanpa daftar, semuanya berjalan di browsermu.
Model Izin Unix: Owner, Group, Other
Unix menetapkan setiap file dan direktori tiga set izin, masing-masing mencakup audiens yang berbeda:
- Owner (user) ā akun pengguna yang memiliki file. Biasanya pengguna yang membuatnya.
- Group ā sekelompok pengguna yang diberi nama. File termasuk dalam satu grup; semua anggota grup tersebut berbagi izin grup.
- Other (world) ā semua orang di sistem yang bukan owner maupun anggota grup.
Dalam masing-masing tiga set tersebut, terdapat tiga bit izin: read (r), write (w), dan execute (x). Itu menghasilkan sembilan bit izin secara total, yang langsung dipetakan ke sembilan karakter yang kamu lihat setelah indikator tipe file dalam output ls -la.
Membaca Output ls -la
Ketika kamu menjalankan ls -la, setiap baris dimulai dengan string 10 karakter seperti -rwxr-xr--. Berikut cara membacanya:
- rwx r-x r-- ^ ^^^ ^^^ ^^^ | | | āāā other: read only | | āāāāāāāā group: read + execute | āāāāāāāāāāāāā owner: read + write + execute āāāāāāāāāāāāāāāā file type: - = file, d = directory, l = symlink
Tanda hubung - di posisi izin berarti izin tersebut tidak diberikan. Jadi r-x berarti read dan execute diizinkan, tetapi write tidak.
Arti Read, Write, Execute untuk File vs Direktori
Tiga bit izin memiliki arti yang berbeda tergantung apakah diterapkan ke file atau direktori:
- File read (r) ā dapat membaca isi file (
cat,less, buka di editor). - File write (w) ā dapat memodifikasi atau memotong file. Catatan: menghapus file dikontrol oleh izin write direktori induk, bukan bit write file itu sendiri.
- File execute (x) ā dapat menjalankan file sebagai program atau skrip. Tanpa bit ini,
./script.shmengembalikan "Permission denied" meskipun kamu bisa membacanya. - Directory read (r) ā dapat melihat daftar isi direktori (
ls). Tanpanya, kamu tahu direktori itu ada tapi tidak bisa melihat isinya. - Directory write (w) ā dapat membuat, mengganti nama, atau menghapus file di dalam direktori. Inilah mengapa kamu bisa menghapus file yang bukan milikmu jika kamu memiliki akses write ke direktori induknya.
- Directory execute (x) ā dapat masuk ke direktori (
cd) dan mengakses file di dalamnya jika kamu mengetahui namanya. Ini kadang disebut "search bit." Direktori denganr--memungkinkan kamu melihat daftar nama file tetapi tidak mengaksesnya; direktori dengan--xmemungkinkan kamu mengakses file berdasarkan nama tetapi tidak melihat daftarnya.
Notasi Oktal: 755, 644, 777
Setiap set izin (owner, group, other) adalah tiga bit. Tiga bit dapat merepresentasikan nilai 0 hingga 7 ā tepat satu digit oktal. Itulah mengapa izin ditulis sebagai tiga digit oktal, satu per audiens:
Bit values: r = 4, w = 2, x = 1 rwx = 4+2+1 = 7 r-x = 4+0+1 = 5 r-- = 4+0+0 = 4 --- = 0+0+0 = 0 chmod 755 ā owner: 7 (rwx), group: 5 (r-x), other: 5 (r-x) chmod 644 ā owner: 6 (rw-), group: 4 (r--), other: 4 (r--) chmod 600 ā owner: 6 (rw-), group: 0 (---), other: 0 (---)
Kamu tidak perlu menghafalkan setiap kombinasi ā gunakan BrowseryTools chmod Calculator untuk memeriksa arti nilai oktal apa pun atau untuk membangun nilai yang tepat untuk situasimu.
Notasi Simbolik: u+x, g-w, o=r
Mode simbolik memungkinkanmu memodifikasi izin relatif terhadap kondisi saat ini, tanpa menentukan ketiga set sekaligus. Formatnya adalah [siapa][operator][izin]:
- Siapa:
u(owner/user),g(group),o(other),a(ketiganya) - Operator:
+(tambah),-(hapus),=(atur tepat) - Izin:
r,w,x
chmod u+x script.sh # add execute for owner only chmod g-w config.txt # remove write from group chmod o=r public.html # set other to read-only exactly chmod a+r file.txt # add read for everyone chmod u=rwx,g=rx,o= # equivalent to chmod 750
Pola Izin Umum Dijelaskan
- 755 (
rwxr-xr-x) ā Standar untuk executable dan direktori. Owner bisa melakukan segalanya; semua orang lain bisa membaca dan mengeksekusi (atau masuk direktori) tetapi tidak menulis. Default untuk direktori document root web server dan skrip publik. - 644 (
rw-r--r--) ā Standar untuk file biasa. Owner bisa read/write; semua orang lain hanya bisa membaca. Baik untuk aset web, file konfigurasi yang tidak berisi rahasia, dan sebagian besar konten statis. - 600 (
rw-------) ā Owner bisa read/write; tidak ada orang lain yang bisa melakukan apa pun. Diperlukan untuk kunci privat SSH (~/.ssh/id_rsa). SSH akan menolak menggunakan file kunci yang memiliki izin lebih longgar. - 700 (
rwx------) ā Owner bisa melakukan segalanya; tidak ada orang lain yang memiliki akses. Baik untuk skrip privat dan direktori yang berisi data sensitif. - 400 (
r--------) ā Read-only untuk owner; sepenuhnya terkunci untuk semua orang. Digunakan untuk file konfigurasi dan sertifikat yang tidak boleh diubah di mana penulisan yang tidak disengaja akan berbahaya.
Mengapa 777 Berbahaya
chmod 777 memberikan izin read, write, dan execute kepada setiap pengguna di sistem. Ini berarti proses apa pun yang berjalan sebagai pengguna mana pun ā termasuk aplikasi web yang dikompromikan, skrip berbahaya di lingkungan shared hosting, atau pengguna lain di mesin ā dapat memodifikasi atau mengeksekusi file. Dalam konteks web server, file PHP dengan izin 777 memungkinkan proses lain untuk menimpanya dengan kode berbahaya. Jangan pernah gunakan 777 di production. Jika kamu menggunakannya untuk "memperbaiki error izin," perbaikan sebenarnya adalah memberikan kepemilikan file kepada pengguna atau grup yang tepat.
Setuid, Setgid, dan Sticky Bit
Di luar sembilan bit standar, ada tiga bit khusus yang muncul sebagai digit keempat di depan dalam notasi oktal empat digit:
- Setuid (4xxx) ā ketika diset pada executable, program berjalan dengan hak istimewa owner file, bukan pemanggil.
/usr/bin/passwdmenggunakan ini untuk memungkinkan pengguna biasa menulis ke/etc/shadow, yang dimiliki oleh root. - Setgid (2xxx) ā pada executable, berjalan dengan hak istimewa grup file. Pada direktori, file baru yang dibuat di dalamnya mewarisi grup direktori daripada grup utama pembuatnya ā berguna untuk direktori proyek bersama.
- Sticky bit (1xxx) ā pada direktori, mencegah pengguna menghapus file yang bukan milik mereka, meskipun mereka memiliki akses write ke direktori.
/tmpmemiliki sticky bit (chmod 1777) sehingga pengguna dapat membuat file temp mereka sendiri tetapi tidak dapat menghapus milik orang lain.
chmod Rekursif (-R) dan Contoh Dunia Nyata
Flag -R menerapkan perubahan izin secara rekursif ke direktori dan semua isinya. Gunakan dengan hati-hati ā menerapkan izin yang sama ke file dan direktori seringkali salah karena direktori membutuhkan bit execute agar bisa dimasuki, sementara file biasa biasanya tidak harus memiliki execute:
# Web server: directories need 755, files need 644
find /var/www/html -type d -exec chmod 755 {} ;
find /var/www/html -type f -exec chmod 644 {} ;
# Fix SSH key permissions
chmod 700 ~/.ssh
chmod 600 ~/.ssh/id_ed25519
chmod 644 ~/.ssh/id_ed25519.pub
chmod 644 ~/.ssh/authorized_keys
# Make a deploy script executable
chmod +x deploy.shKetika kamu tidak yakin nilai oktal mana yang harus digunakan, BrowseryTools chmod Calculator memungkinkanmu mengklik checkbox untuk izin owner, group, dan other dan langsung melihat nilai oktal dan notasi simbolik yang dihasilkan.
chmod Calculator Gratis ā Oktal ā Simbolik ā Mudah Dibaca
Buka chmod Calculator āTry the Tools ā 100% Free, No Sign-Up
Everything runs in your browser. No uploads. No accounts. No ads.
Explore All Tools ā