无法删除 /tmp 下 root 拥有的文件

无法删除 /tmp 下 root 拥有的文件

该文件和文件夹归 root 所有,但我sudo chmod ugo+rw对两者都做了,我用 确认了这一点ls -l。尽管如此,我仍无法以普通用户身份删除该文件。

❯ ls -ld /tmp /tmp/perm
drwxrwxrwt 46 root root 1160 Jan  9 17:41 /tmp
-rw-rw-rw-  1 root root    3 Jan  9 17:40 /tmp/perm
❯ rm /tmp/perm
rm: cannot remove '/tmp/perm': Operation not permitted

未配置 attr 和 ACL:

❯ lsattr -d /tmp
---------------------- /tmp
❯ getfacl /tmp
getfacl: Removing leading '/' from absolute path names
# file: tmp
# owner: root
# group: root
# flags: --t
user::rwx
group::rwx
other::rwx

在子文件夹中执行相同的操作也是可行的。

/tmp/是安装在 Arch Linux 下运行的 ext4 系统的一部分。

答案1

那是因为:t中的粘性位。/tmpdrwxrwxrwt 46 root root 1160 Jan 9 17:41 /tmp

man chmod

限制删除标志或粘性位

限制删除标志或粘性位是单个位,其解释取决于文件类型。对于目录,它可以防止非特权用户删除或重命名目录中的文件,除非他们拥有该文件或目录;这称为目录的限制删除标志,通常在 /tmp 等全局可写目录中找到。

您可以使用以下方法设置粘滞位:

chmod +t /path/to/dir

或者

chmod o+x,+t /path/to/dir

两者的区别在于,第一个将设置T而不是t如果目录没有执行权限其他的。而o+x,+t将设置执行权限和粘滞位。

在这种情况下,我不推荐你从 中删除粘性位/tmp。但如果你想删除它,你应该使用:

sudo chmod -t /tmp

或者更好的是,不要删除粘性位,只需rm /tmp/perm以 root(或sudo)身份运行。

相关内容