更改用户时符号链接无法按预期工作

更改用户时符号链接无法按预期工作

符号链接不起作用,使用标准 UBUNTU 16 LTS...它显示“权限被拒绝”,我期望获得访问权限,即使在chown.

完整示例:

sudo rm /tmp/file.txt  # if exist, remove

cd ~
sudo chmod 666 data/file.txt
ls -l data/file.txt    # "-rw-rw-rw-" as expected
more data/file.txt     # working fine
sudo ln -sf $PWD/data/file.txt /tmp/file.txt  # fine
ls -l /tmp/file.txt    # "lrwxrwxrwx",  /tmp/file.txt -> /home/thisUser/file.txt
more /tmp/file.txt     # fine

sudo chown -h postgres:postgres /tmp/file.txt

sudo more /tmp/file.txt   #  NOT WORK! but its is sudo! and 666!

答案1

这些操作应该会产生错误消息:没有权限。目录/tmp具有包括粘滞位在内的权限。该错误是内核配置的结果fs.protected_symlinks

要显示设置,sysctl fs.protected_symlinks.1设置时这等于。暂时禁用,即不建议, sysctl fs.protected_symlinks=0.永久关闭,这又是不建议, sysctl -w fs.protected_symlinks=0.

patchwork.kernel.org了解更多信息。

为了避免链接失效,下面是来自超链接的符号链接的主要摘要段落。

基斯·库克 - 2012 年 7 月 2 日晚上 8:17

这为 Linux VFS 添加了符号链接和硬链接限制。

符号链接:

一类长期存在的安全问题是基于符号链接的检查时间使用时间竞争,最常见于世界可写目录(如 /tmp)。利用此缺陷的常见方法是在遵循给定的符号链接时跨越权限边界(即根进程遵循属于另一个用户的符号链接)。有关多年来可能不完整的数百个示例的列表,请参阅: http://cve.mitre.org/cgi-bin/cvekey.cgi?keyword=/tmp

解决方案是仅在粘性世界可写目录之外、或者当符号链接和追随者的 uid 匹配、或者当目录所有者与符号链接的所有者匹配时,才允许遵循符号链接。

相关内容