Jadi saya melakukan beberapa pemeliharaan di server saya sebelumnya hari ini dan memperhatikan bahwa saya dapat menghapus file yang dimiliki oleh root di direktori home saya.
Saya dapat mereproduksi sampel:
[cbennett@nova ~/temp]$ ls -al
total 8
drwxrwxr-x. 2 cbennett cbennett 4096 Oct 5 20:59 .
drwxr-xr-x. 22 cbennett cbennett 4096 Oct 5 20:58 ..
-rw-rw-r--. 1 cbennett cbennett 0 Oct 5 20:58 my-own-file
[cbennett@nova ~/temp]$ sudo touch file-owned-by-root
[cbennett@nova ~/temp]$ ls -al
total 8
drwxrwxr-x. 2 cbennett cbennett 4096 Oct 5 21:00 .
drwxr-xr-x. 22 cbennett cbennett 4096 Oct 5 20:58 ..
-rw-r--r--. 1 root root 0 Oct 5 21:00 file-owned-by-root
-rw-rw-r--. 1 cbennett cbennett 0 Oct 5 20:58 my-own-file
[cbennett@nova ~/temp]$ rm file-owned-by-root
rm: remove write-protected regular empty file ‘file-owned-by-root’? y
[cbennett@nova ~/temp]$ ls -al
total 8
drwxrwxr-x. 2 cbennett cbennett 4096 Oct 5 21:00 .
drwxr-xr-x. 22 cbennett cbennett 4096 Oct 5 20:58 ..
-rw-rw-r--. 1 cbennett cbennett 0 Oct 5 20:58 my-own-file
[cbennett@nova ~/temp]$
Pertanyaan saya adalah bagaimana saya bisa menghapus file yang dimiliki oleh root dan memiliki izin -rw-r--r--
, sementara saya tidak root?
linux
security
permissions
Carl Bennett
sumber
sumber
Jawaban:
Izin, konten, dan semua atribut adalah bagian dari inode. Nama ada di entri direktori. Izin tidak diwarisi secara rekursif (kecuali ketika Anda menggunakan default di Posix ACL).
Ketika Anda menghapus file, secara internal Anda hanya menghapus tautan keras dari entri direktori ke inode. Ketika semua hardlink dihapus dan inode tidak digunakan, sistem file akan mengambil kembali ruang tersebut. Anda hanya perlu menulis izin pada folder apa pun izin yang ditetapkan pada file (dengan pengecualian izin ext yang tidak dapat diubah). Sama untuk folder kosong.
Ketika Anda menghapus folder yang tidak kosong, Anda perlu izin menulis pada folder yang Anda hapus dan orang tuanya.
sumber
sudo touch test_file;sudo chattr +i test_file;rm -f test_file
Lihat:man chattr
Ketika Anda memiliki direktori, Anda diizinkan untuk melakukan apa saja untuk itu dan konten di dalamnya berdasarkan izin direktori. Oleh karena itu, meskipun tidak memiliki file, Anda masih dapat menghapusnya karena Anda telah membaca / menulis izin ke direktori tempat file tersebut berada.
sumber
vi
menyimpan file terlebih dahulu dalam salinan sementara, kemudian menghapus file asli dan mengganti nama salinan menjadi aslinya (atau sesuatu seperti itu).