Permissions
更改使用者時,符號連結無法按預期工作
使用標準 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!
這些操作應導致錯誤消息: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 添加了符號連結和硬連結限制。
符號連結:
長期存在的一類安全問題是基於符號連結的檢查時間-使用時間競賽,最常見於像 /tmp 這樣的全域可寫目錄中。利用此漏洞的常用方法是在遵循給定符號連結時跨越特權邊界(即根程序遵循屬於另一個使用者的符號連結)。有關多年來數百個範例的可能不完整列表,請參閱: http ://cve.mitre.org/cgi-bin/cvekey.cgi?keyword=/tmp
解決方案是只允許在粘性世界可寫目錄之外,或者當符號連結的 uid 和跟隨者匹配,或者當目錄所有者與符號連結的所有者匹配時,才允許遵循符號連結。