
今天早些時候,我在伺服器上進行了一些維護,並注意到我能夠刪除我的主目錄中 root 擁有的檔案。
我能夠重現一個範例:
[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]$
-rw-r--r--
我的問題是,當我不是 root 時,如何刪除 root 擁有並具有權限的檔案?
答案1
權限、內容和所有屬性都是 inode 的一部分。該名稱位於目錄條目中。權限不會遞歸繼承(除非您在 Posix ACL 中使用預設值)。
當您刪除檔案時,您只是在內部刪除從目錄條目到索引節點的硬連結。當所有硬連結都被刪除且索引節點不再使用時,檔案系統將回收該空間。無論檔案上設定了哪些權限(不可變的 ext 權限除外),您只需要對該資料夾具有寫入權限。對於空資料夾也是如此。
當您刪除非空資料夾時,您需要對要刪除的資料夾及其父資料夾具有寫入權限。
答案2
當您擁有該目錄時,您可以根據該目錄的權限對其及其內容執行任何操作。因此,儘管不擁有該文件,您仍然可以刪除它,因為您對該文件所在的目錄具有讀取/寫入權限。