GNU/Linux >> Belajar Linux >  >> Linux

Mengapa Rm Dapat Menghapus File Read-only?

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.


Linux
  1. Buat dan hapus file swap di Ubuntu

  2. Bagaimana cara menghapus file atau direktori bernama \?

  3. Bisakah saya mengganti nama file dalam direktori dengan Vim?

  1. Mengapa saya tidak bisa membuat file lebih besar dari 2 GB di Linux?

  2. Bagaimana cara menghapus file ._ dalam direktori? Ubuntu

  3. Saya tidak dapat menghapus file 'rm:tidak dapat menghapus sistem file X Read-only'

  1. Bisakah File yang Ditimpa Dipulihkan?

  2. Statistik Rekursif Pada Jenis File Di Direktori?

  3. Hapus symlink ke direktori