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

Pet*_*uss 3 root permissions symlink tmp chown

符号链接不起作用,使用标准 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!
Run Code Online (Sandbox Code Playgroud)

Chr*_*her 9

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

要显示设置,sysctl fs.protected_symlinks。这等于1设置时。暂时禁用,不推荐sysctl -w fs.protected_symlinks=0。要永久关闭(同样不推荐),请使用/etc/sysctl.conf

有关更多信息,请参阅patchwork.kernel.org

为避免链接失效,超链接中符号链接的主要摘要段落如下。

Kees Cook - 2012 年 7 月 2 日,晚上 8:17

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

符号链接:

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

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