Permissions

更改使用者時,符號連結無法按預期工作

  • March 22, 2019

使用標準 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 和跟隨者匹配,或者當目錄所有者與符號連結的所有者匹配時,才允許遵循符號連結。

引用自:https://unix.stackexchange.com/questions/336625