为什么我无需成为 root 即可删除主目录中由 root 拥有的文件?

为什么我无需成为 root 即可删除主目录中由 root 拥有的文件?

所以我今天早些时候对我的服务器进行了一些维护,并注意到我能够删除主目录中由 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 中使用默认)。

删除文件时,您实际上只是从目录条目中删除指向 inode 的硬链接。当所有硬链接均已删除且 inode 未使用时,文件系统将回收空间。无论文件上设置了哪些权限(不可变的 ext 权限除外),您只需要对该文件夹具有写入权限。空文件夹也一样。

当您删除一个非空文件夹时,您需要对要删除的文件夹及其父文件夹具有写权限。

答案2

如果您拥有该目录,则可以根据目录的权限对该目录及其内容执行任何操作。因此,尽管您不拥有该文件,但您仍然可以删除它,因为您对该文件所在的目录具有读/写权限。

相关内容