Diberikan pengguna non-root "joshua", sebagai root saya membuat file bernama "foo" di direktori home joshua (/ home / johsua /); terlihat seperti ini:
-rw-r--r-- 1 root root 0 12-19 21:00 foo
dan kemudian menghapusnya sebagai joshua, saya bisa menghapusnya dengan sukses.
Saya berharap bahwa joshua tidak memiliki cukup izin untuk menghapusnya. Apakah ini semacam 'Izin warisan'? Platform saya adalah Debian 5.0.7.
sudo
atau peningkatan hak istimewa lainnya. Anda mungkin mengabaikan sesuatu.Jawaban:
Pengguna tidak menghapus file, sistem melakukannya. Pengguna hanya menghapus file dari direktori sendiri. Sistem menghapus file karena jumlah referensi turun menjadi nol. Hanya kebetulan bahwa pengguna menghapus file dari direktori terjadi untuk menurunkan jumlah referensi menjadi nol. (Jika file itu sulit ditautkan ke direktori lain atau pegangan dibuka ke file, itu tidak akan dihapus.)
Sistem menghapus file secara otomatis ketika jumlah referensi turun menjadi nol. Pemilik file tidak masalah. Ada banyak cara seseorang selain pemilik file dapat menjatuhkan jumlah referensi file ke nol.
Menghapus file dari direktori (disebut 'unlinking') adalah operasi pada direktori. Membatalkan tautan file mengurangi jumlah referensi.
Demikian pula, pengguna selain pemilik dapat menutup pegangan terakhir ke file yang tidak tertaut ke direktori mana pun. Menutup pegangan itu akan menghapus file juga, karena lagi jumlah referensi akan turun menjadi nol.
sumber
rm
perintah agak membingungkan perairan, karenarm
merupakan singkatan dari "hapus", dan pengguna dilatih untuk menganggapnyarm
sebagai operasi "hapus". Banyak pengguna menggunakanrm
setiap hari sementara tidak menyadari bahwa operasi yang sebenarnya dilakukannya adalah "batalkan tautan", bukan "hapus". Akibatnya, seharusnya tidak terlalu mengejutkan bahwa banyak pengguna menemukan perilaku ini mengejutkan ketika mereka pertama kali menemukannya.rm
perintah itu sebenarnya menghapus file atau direktori dari direktori. Ini lebih buruk pada Windows di mana perintah dipanggildel
, karena digunakan untuk menghapus file tetapi pada mesin Windows modern (sejak NT4), ini juga merupakan operasi pembatalan tautan.Tebakan pertama: Untuk menghapus file, Anda harus menulis izin pada folder yang berisi. Jadi Coba / home / johsua / foo / bar, berikan 755 ke foo dan 644 untuk bar.
sumber