所以我今天早些时候在我的服务器上进行了一些维护,注意到我能够删除我的主目录中的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]$
我的问题是我怎么能够删除一个由root拥有的文件,并且具有权限-rw-r--r--
,而我不是root?
权限,内容和所有属性都是inode的一部分。 该名称在目录条目中。 权限不是recursion地inheritance的。
当你删除一个文件,在内部你只需要从目录条目到inode中删除一个硬链接。 当所有的硬链接被删除,inode没有被使用,文件系统将回收空间。 无论文件上设置了哪些权限,只需要在文件夹上写入权限(不可变的ext权限除外)。 相同的空文件夹。
当你删除一个不为空的文件夹时,你需要在你正在删除的文件夹和它的父文件上有写入权限。
当你拥有这个目录的时候,你可以根据目录的权限对它进行任何操作。 因此,尽pipe没有拥有该文件,但您仍然可以将其删除,因为您拥有文件所在目录的读/写权限。