我有一个具有以下文件模式位 ( ) 的文件a+rw
:
[0] mypc<johndoe>:~>sudo touch /tmp/test
[0] mypc<johndoe>:~>sudo chmod a+rw /tmp/test
[0] mypc<johndoe>:~>ls -l /tmp/test
-rw-rw-rw- 1 root root 0 Mar 13 11:09 /tmp/test
为什么我无法删除该文件?
[0] mypc<johndoe>:~>rm /tmp/test
rm: cannot remove '/tmp/test': Operation not permitted
答案1
该/tmp
目录通常标记为限制删除标志,显示为许可函t
或输出T
中ls
。
限制删除意味着几件事。在一般情况下,这意味着只有文件的所有者或文件本身的所有者/tmp
才能删除/tmp
.
您无法删除该文件,因为您不是所有者,即root
.尝试一下你可能忘记的跑步rm
方式。sudo
sudo rm /tmp/test
更具体地说,仅针对 Linux,限制删除标志(在世界可写目录上,例如/tmp
)还启用protected_symlinks
、protected_hardlinks
、protected_regular
和protected_fifos
限制,在此类目录中分别阻止用户跟踪不属于他们的符号链接、阻止用户对不属于他们的文件建立硬链接、阻止用户打开不属于他们的 FIFO 以及阻止用户在想要创建文件时,无法打开他们不拥有的现有文件。
root
当您执行各种进一步的操作时,这会让您惊讶于权限错误做使用sudo
。
有关这些问题的更多信息,例如“CentOS 6 和 CentOS 7 之间的硬链接权限行为不同“,”更改用户时符号链接无法按预期工作“, 和 ”root 的组权限在 /tmp 中不起作用”。
答案2
问题似乎是 的粘性位/tmp
。
$ ls -ld /tmp dwxrwxrwt⃝ 1根根1044年3月13日12:09 /tmp
https://en.wikipedia.org/wiki/Sticky_bit
设置目录的粘滞位后,文件系统会以特殊方式处理此类目录中的文件,因此只有文件所有者、目录所有者或 root 用户可以重命名或删除该文件。如果没有设置粘性位,则任何对该目录具有写入和执行权限的用户都可以重命名或删除所包含的文件,而不管文件的所有者是谁。通常,这是在 /tmp 目录上设置的,以防止普通用户删除或移动其他用户的文件。