POSIX目录权限包括“粘滞”位(S_ISVTX),它是所述,将删除或重命名限制为仅限文件所有者或根用户。这通常用于诸如/tmp和/var/tmp之类的目录,它们可能具有允许所有用户创建临时文件的权限drwxrwxrwt,但阻止其他非根用户删除这些文件。
我的问题是root是否允许修改普通用户在标记为粘性位的目录中创建的文件。
假设一个普通用户在一个受粘性位保护的/var/tmp中创建一个文件(该文件系统位于本地的、非NFS文件系统上,没有SELinux限制):
echo "something" > /var/tmp/somefile但是root尝试追加到这个文件:
echo "else" >> /var/tmp/somefile当我在一些Linux系统(例如Debian-11,ArchLinux)上尝试这一点时,会产生一个bash: /var/tmp/somefile: Permission denied错误。这似乎是对超级用户更改本地文件系统中文件的权限的意外限制。Linux的其他种类(例如Debian-10、Debian-9、Fedora-35)似乎没有这种限制,尽管在文件系统设置上没有明显的差异。
我还没有找到任何说明粘滞位应该阻止根修改这样一个文件的文档。例如,作为sys/stat.h基础的POSIX文档除了删除受粘性保护的文件外,对其他行为的描述很少。
有人能向我指出,当超级用户试图修改标记为粘性位的目录中的文件时,粘性位应该如何运行,或者什么系统设置会影响这种行为?
发布于 2022-01-28 12:59:37
找到答案
您所显示的行为似乎依赖于fs.protected_regular Linux内核参数,该参数与fs.protected_fifos by 此承诺一起引入,目的是修复安全漏洞。
解决方案:
sudo sysctl fs.protected_regular=0
资源:
因为它是一个补丁,所以可能不会有更详细的文档记录。
https://unix.stackexchange.com/questions/503111/group-permissions-for-root-not-working-in-tmp
https://stackoverflow.com/questions/70479857
复制相似问题