下面显示了一个文件,/tmp/testfile
由用户1组更改为车轮其中还包括用户2。该文件具有rw
该组的权限。那么该组的任何成员是否都可以删除它?下面的示例输出显示用户2无法删除该文件。为什么?
[user2@files ~]$ ls -l /tmp/testfile
-rw-rw-r-- 1 user1 wheel 0 Jul 18 18:54 /tmp/testfile
[user2@files ~]$ groups
user2 wheel
[user2@files ~]$ rm /tmp/testfile
rm: cannot remove `/tmp/testfile': Operation not permitted
答案1
首先,你查看的是错误的权限。当你移动/重命名/删除文件时,你只是修改了父目录– 不检查文件自身的权限。您只能从目录的文件列表中删除一个条目。因此,您应该检查父目录(在本例中/tmp
)的权限。
$ ls -ld /tmp
drwxrwxrwt 15 root root 460 Jul 19 15:18 /tmp/
第二,/tmp
是特殊的。在几乎所有系统上,任何人都可以写入它(ugo=rwx
),因此乍一看,似乎任何人都可以重命名或删除其中的任何文件。这当然很容易(好吧,甚至更容易)给其他用户制造麻烦,因此/tmp
始终设置“粘性”又称“限制删除”模式(o+t
)。设置此模式后,只有文件所有者可以移动或删除该目录中的文件,无论任何权限如何。
(在 GNU coreutils 中,chmod(1)
手册页有一节关于“限制删除标志或粘着位”。