Dari pos. Mengapa rm dapat menghapus file read-only? Saya mengerti bahwa rm
hanya perlu menulis izin pada direktori untuk menghapus file. Tetapi saya merasa sulit untuk mencerna perilaku di mana kita dapat dengan mudah menghapus file yang berbeda pemilik dan grup.
Saya mencoba yang berikut ini
mtk: nama pengguna saya
abc: membuat pengguna baru
$ ls -l file
-rw-rw-r-- 1 mtk mtk 0 Aug 31 15:40 file
$ sudo chown abc file
$ sudo chgrp abc file
$ ls -l file
-rw-rw-r-- 1 abc abc 0 Aug 31 15:40 file
$ rm file
$ ls -l file
<deleted>
Saya berpikir ini seharusnya tidak diizinkan. Seorang pengguna harus dapat menghapus hanya file di bawah kepemilikannya? Adakah yang bisa menjelaskan mengapa ini diizinkan? dan apa cara untuk menghindari ini? Saya dapat berpikir hanya membatasi izin tulis dari direktori induk untuk menonaktifkan pembatalan file yang mengejutkan.
-rw-rw-rw- 1 root root 0 Sep 1 11:11 /tmp/foo
sebagai pengguna biasa (/tmp
lengket) karena saya diizinkan untuk menulisnya? Namun saya tidak bisa.me
/you
skenario masuk ke fokus yang lebih jelas jika Anda berhipotesis bahwa pengguna (orang yang tidak memiliki file) membuat tautan. Kata ganti sulit digunakan; katakanlah Al membuat/home/al/file1
, dan Bob, yang telah menjalankan (dan mungkin membaca) akses ke/home/al
, tautan langsung file/home/bob/als_file
. Haruskah Bob dicegah menghapus tautan yang ia buat? Dan haruskah Al diizinkan untuk menghapus (membatalkan tautan)/home/bob/als_file
ketika dia tidak memiliki akses tulis/home/bob
? Jalan ini menuju kekacauan.Untuk menghapus file, Anda hanya perlu bisa menulis ke direktori tempat file itu berada.
Jika Anda tidak suka ini, Anda dapat mengatur bit "sticky" melalui
chmod +t dir
jika Anda berada di OS setengah jalan baru (fitur ini diperkenalkan sekitar tahun 1986 di SunOS).Jika Anda ingin lebih berbutir halus, Anda memerlukan sistem file dengan implementasi ACL modern seperti ZFS. ACL NFSv4 standar berdasarkan NTFS mencakup dukungan untuk izin penghapusan khusus file per pengguna dan izin "delete_child" untuk direktori.
sumber
t
bit, Anda harus memiliki direktori. Dan jika Anda memiliki direktori, Anda selalu dapat menghapus file terlepas dari apakaht
bitnya diatur atau tidak. Jika Anda menautkan file ke direktori orang lain, Anda harus siap agar orang lain dapat menghapusnya. Alternatifnya adalah membuat sub-dir Anda terlebih dahulu dan menambahkan file Anda di sana, karena pemilik tidak akan dapat menghapus subdir itu jika tidak kosong.rm
merupakan operasi di direktori, bukan di file. Sebuah file dihapus ketika referensi terakhir untuk itu dihapus, tetapi secara teknis, itu adalah efek samping.Logikanya mirip dengan rumah: Pemilik atau penyewa memutuskan tamu mana yang akan dibuang, tidak peduli siapa yang memiliki tamu. Juga, tamu yang diusir yang diterima di rumah lain (memiliki hardlink lain di direktori orang lain) tidak akan mati kedinginan di luar.
sumber