簡體   English   中英

符號鏈接將“權限被拒絕”...給root

[英]Symlink giving “Permission denied”… to root

我寫了一個簡單的腳本來自動創建一個符號鏈接。

#!/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 ”非常好解釋),但是出現了同樣的問題。

由於/ tmp通常設置了粘滯位,因為protected_symlinks拒絕訪問/ tmp / today。 您可以通過設置禁用此保護

sysctl -w fs.protected_symlinks=0

protected_symlinks

長期存在的一類安全問題是基於符號鏈接的使用時間檢查時間種族,最常見於/ tmp這樣的世界可寫目錄。 利用此缺陷的常用方法是在遵循給定符號鏈接時跨越特權邊界(即根進程遵循屬於另一個用戶的符號鏈接)。 有關多年來數百個示例的可能不完整列表,請參閱: http//cve.mitre.org/cgi-bin/cvekey.cgi?keyword = / tmp

設置為“0”時,符號鏈接跟隨行為不受限制。

設置為“1”時,只有在粘性世界可寫目錄之外,或者符號鏈接和跟隨符的uid匹配時,或者目錄所有者與符號鏈接的所有者匹配時,才允許遵循符號鏈接。

這種保護基於Openwall和grsecurity的限制。

有關詳細信息,請查看

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM