我写了一个简单的脚本来自动创建符号链接。
#!/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
”,但是会出现相同的问题。)
答案 0 :(得分:12)
由于/ tmp通常设置了粘滞位,因此{/ 1}}拒绝访问/ tmp / today。 您可以通过设置
来禁用此保护protected_symlinks
长期存在的一类安全问题是基于符号链接的 使用时间检查时间,最常见于世界可写 像/ tmp这样的目录。利用这个漏洞的常用方法 在遵循给定的符号链接时(即a。),是跨越特权边界 root进程遵循属于另一个用户的符号链接。对于一个可能的 多年来数百个例子的不完整清单,请参阅: http://cve.mitre.org/cgi-bin/cvekey.cgi?keyword=/tmp
当设置为" 0"时,符号链接行为不受限制。
设置为" 1"只有在外面时才允许遵循符号链接 一个粘性的世界可写目录,或者当符号链接的uid和 关注者匹配,或者目录所有者与符号链接的所有者匹配。
此保护基于Openwall和grsecurity中的限制。
有关详细信息,请查看this。