Jika saya membuat file dan kemudian mengubah izinnya menjadi 444
(hanya baca), kok bisa rm
dapatkah menghapusnya?
Jika saya melakukan ini:
echo test > test.txt
chmod 444 test.txt
rm test.txt
…rm
akan menanyakan apakah saya ingin menghapus file yang dilindungi penulisan test.txt
. Saya mengharapkan rm
tidak dapat menghapus file seperti itu dan saya harus melakukan chmod +w test.txt
pertama. Jika saya melakukan rm -f test.txt
lalu rm
akan menghapus file tanpa meminta, meskipun hanya-baca.
Ada yang bisa jelasin? Saya menggunakan Ubuntu 12.04/bash.
Jawaban yang Diterima:
Semua rm
kebutuhan adalah menulis + menjalankan izin pada direktori induk. Izin file itu sendiri tidak relevan.
Berikut adalah referensi yang menjelaskan model izin lebih jelas daripada yang pernah saya dapat:
Setiap upaya untuk mengakses data file memerlukan izin baca. Setiap
upaya untuk mengubah data file memerlukan izin menulis. Upaya
apa pun untuk mengeksekusi file (program atau skrip) memerlukan izin
eksekusi…Karena direktori tidak digunakan dengan cara yang sama seperti file biasa, izin
bekerja sedikit (tetapi hanya sedikit) berbeda. Upaya
untuk membuat daftar file dalam direktori memerlukan izin baca untuk direktori
, tetapi tidak pada file di dalamnya. Upaya untuk menambahkan file ke direktori
, menghapus file dari direktori, atau mengganti nama file, semua
memerlukan izin menulis untuk direktori, tetapi (mungkin mengejutkan)
tidak untuk file-file di dalamnya. Izin eksekusi tidak berlaku untuk
direktori (direktori tidak dapat juga berupa program). Tapi bit izin itu
digunakan kembali untuk direktori untuk tujuan lain.Izin eksekusi diperlukan pada direktori untuk dapat melakukan cd ke dalamnya
(yaitu, menjadikan beberapa direktori sebagai direktori kerja Anda saat ini).Eksekusi diperlukan pada direktori untuk mengakses informasi "inode" dari
file di dalamnya. Anda memerlukan ini untuk mencari direktori untuk membaca
inode file di dalamnya. Karena alasan ini, izin eksekusi pada
direktori sering disebut izin pencarian.