我无法删除我作为组成员具有写入权限的文件

tsh*_*ang 14 permissions debian group

$ touch testfile
$ chmod g+w testfile
$ sudo adduser user2 user1
$ stat -c'%a %A' testfile
664 -rw-rw-r--
$ su user2
Password: 
$ groups
user2 user1
$ rm testfile 
rm: cannot remove `testfile': Permission denied
Run Code Online (Sandbox Code Playgroud)

有什么不见了?

jsb*_*ngs 26

删除文件意味着您正在更改它所在的目录,而不是文件本身。您的组需要目录上的 rw 才能删除文件。文件的权限仅用于更改文件本身。

在您考虑文件系统的工作方式之前,这可能一开始会让人感到困惑。一个文件就是一个inode,目录就是inode。通过删除它,您只是删除了对目录中该文件的 inode 的引用。因此,您正在更改目录,而不是文件。您可以在另一个目录中拥有指向该文件的硬链接,并且您仍然可以将其从第一个目录中删除,而无需实际更改文件本身,它仍然存在于另一个目录中。