Cara kebenaran chmod berfungsi: 755, 644 dan sticky bit
Pada sistem seakan-Unix, chmod mengubah kebenaran akses bagi fail dan direktori. Kebenaran baca, tulis dan laksana ditetapkan secara berasingan untuk pemilik, kumpulan dan pengguna lain. Kebenaran direktori mempunyai maksud tersendiri: ia menentukan sama ada nama boleh disenaraikan, entri boleh dicipta atau dibuang, dan laluan yang diketahui boleh diakses.
Mod angka dan mod simbolik
Arahan simbolik seperti chmod u+x script.sh memberi pemilik kebenaran untuk melaksanakan fail. Dalam mod angka, baca bernilai 4, tulis 2 dan laksana 1. Jadi 755 bermaksud rwxr-xr-x: pemilik boleh membaca, menulis dan melaksana, manakala kumpulan dan pengguna lain boleh membaca dan melaksana. Mod 644 selalunya sesuai untuk fail awam biasa, tetapi kesesuaiannya bergantung pada aplikasi. Jangan anggap nombor yang biasa dilihat sebagai tetapan keselamatan sejagat.
Mengapa kebenaran direktori penting
Pada direktori, kebenaran baca membolehkan nama disenaraikan, tulis membolehkan entri direktori diubah, dan laksana membolehkan laluan yang diketahui dilalui. Pembuangan fail biasanya bergantung pada kebenaran direktori induknya, bukan kebenaran tulis pada fail itu sendiri. Oleh itu, fail yang ditetapkan kepada 444 masih boleh dibuang oleh sesiapa yang mempunyai akses mencukupi pada direktori tersebut. Manual GNU Coreutils menerangkan perbezaan ini. Jika akses gagal walaupun fail akhir kelihatan boleh dibaca, periksa setiap direktori induk dan identiti yang digunakan oleh perkhidmatan untuk berjalan.
Contoh pada hosting web
Bayangkan sebuah direktori fail HTML yang perlu dibaca oleh pelayan web, tetapi hanya boleh dikemas kini oleh pemiliknya. Sebagai titik permulaan, anda boleh menggunakan 755 untuk direktori dan 644 untuk fail biasa. Anda masih perlu mengambil kira akaun perkhidmatan, kumpulan dan peraturan hosting; fail konfigurasi peribadi mungkin memerlukan akses yang lebih ketat. Menetapkan semuanya kepada 777 semata-mata untuk menghilangkan ralat memberi pengguna setempat hak pengubahsuaian yang luas dan boleh membuka lubang keselamatan. Periksa pemilik dan kebenaran semasa dengan stat dan ls -l sebelum mengubahnya.
Setuid, setgid dan sticky bit
Digit perlapanan keempat di hadapan menentukan bit khas: 4 untuk setuid, 2 untuk setgid dan 1 untuk sticky. Contohnya, 4755 mengaktifkan setuid pada fail boleh laksana; 455 tidak. Setuid perlu digunakan dengan berhati-hati kerana kelemahan dalam program mungkin berjalan dengan keistimewaan pemilik. Pada direktori, setgid boleh menyebabkan entri baharu mewarisi kumpulan direktori. Sticky bit pada direktori kongsi seperti /tmp mengehadkan siapa yang boleh membuang atau menamakan semula fail pengguna lain. Sebelum menjalankan chmod -R, semak pepohon direktori dengan teliti: fail biasa, fail boleh laksana dan direktori jarang sekali memerlukan mod yang sama.