符号链接"权限被拒绝" ...到root

时间:2014-10-21 21:07:51

标签: linux file-permissions symlink

我写了一个简单的脚本来自动创建符号链接。

#!/pseudo
today = "/tmp/" + date("Y-m-d")
exec("ln -sf " + today + " /tmp/today")

足够简单;得到今天的日期并制作符号链接。理想情况下,使用-f午夜后运行,以便就地更新。

这很好用! ...为我的用户。

xkeeper /tmp$ ls -ltr
drwxrwxrwx  xkeeper   xkeeper   2014-10-21
lrwxrwxrwx  xkeeper   xkeeper   today -> /tmp/2014-10-21/

xkeeper /tmp$ cd today
xkeeper /tmp/today$ cd ..

请注意,它工作正常,所有权限都是世界可读的,一切看起来都不错。

但是如果有人想要使用这个链接(我们会说root,但是其他任何用户都有这个问题),会发生一些非常奇怪的事情:

root /tmp# cd today
bash: cd: today: Permission denied

我完全不知道为什么会这样。我还尝试使用ln -s -n -f创建链接(而不是“--no-dereferencing”,但是会出现相同的问题。)

1 个答案:

答案 0 :(得分:12)

由于/ tmp通常设置了粘滞位,因此{/ 1}}拒绝访问/ tmp / today。 您可以通过设置

来禁用此保护
protected_symlinks
  

protected_symlinks

     

长期存在的一类安全问题是基于符号链接的   使用时间检查时间,最常见于世界可写   像/ tmp这样的目录。利用这个漏洞的常用方法   在遵循给定的符号链接时(即a。),是跨越特权边界   root进程遵循属于另一个用户的符号链接。对于一个可能的   多年来数百个例子的不完整清单,请参阅:   http://cve.mitre.org/cgi-bin/cvekey.cgi?keyword=/tmp

     

当设置为" 0"时,符号链接行为不受限制。

     

设置为" 1"只有在外面时才允许遵循符号链接   一个粘性的世界可写目录,或者当符号链接的uid和   关注者匹配,或者目录所有者与符号链接的所有者匹配。

     

此保护基于Openwall和grsecurity中的限制。

有关详细信息,请查看this