標準のUBUNTU 16 LTSではSymlinkは機能しません。 「Permission Denied」と表示されます。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!
答え1
これらの操作を実行すると、エラーメッセージが生成されます。許可が拒否されました。ディレクトリには/tmp
固定ビットを含む権限があります。このエラーはカーネル構成の結果ですfs.protected_symlinks
。
設定を表示するにはsysctl fs.protected_symlinks
が設定1
されている場合と同じです。一時的に無効になっています。推奨しない、sysctl fs.protected_symlinks=0
.永久閉鎖されました。今回も同様です。推奨しない、sysctl -w fs.protected_symlinks=0
。
バラよりpatchwork.kernel.orgより多くの情報を知りたいです。
リンクの破損を防ぐために、ハイパーリンクのシンボリックリンクの主な要約段落は次のとおりです。
キスクック - 2012年7月2日午後8時17分
これにより、Linux VFSにシンボリックリンクとハードリンク制限が追加されます。
シンボリックリンク:
長年にわたって継続してきたセキュリティ問題の1つは、シンボリックリンクベースのチェック時間使用時間の競争であり、これは誰でも書き込み可能なディレクトリ(/ tmpなど)で最も一般的です。この欠陥を悪用する一般的な方法は、与えられたシンボリックリンクをたどると権限の境界を越えることです(つまり、ルートプロセスは他のユーザーに属するシンボリックリンクに従います)。長年にわたって何百ものケースを含む不完全なリストについては、以下を参照してください。 http://cve.mitre.org/cgi-bin/cvekey.cgi?keyword=/tmp
解決策は、誰もが書くことができる粘着性のあるディレクトリの外で、またはシンボリックリンクのuidとフォロワーが一致する場合、またはディレクトリの所有者がシンボリックリンクの所有者と一致する場合にのみシンボリックリンクに従うことを許可することです。