標準のUBUNTU16LTSを使用しているシンボリックリンクが機能しない…アクセスを期待していた場所に「アクセスが拒否されました」と表示され、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!
承認された回答:
これらのアクションにより、次のエラーメッセージが表示されます:アクセスが拒否されました 。ディレクトリ、/tmp
、スティッキービットを含む権限があります。このエラーは、fs.protected_symlinks
のカーネル構成の結果です。 。
設定を表示するには、sysctl fs.protected_symlinks
。これは1
に相当します 設定すると。一時的に無効にすること。これは推奨されません 、sysctl -w fs.protected_symlinks=0
。完全にオフにすること。これもお勧めしません 、/etc/sysctl.conf
を使用します 。
詳細については、patchwork.kernel.orgを参照してください。
リンク切れを回避するために、ハイパーリンクからのシンボリックリンクの主要な要約段落が続きます。
キースクック–2012年7月2日午後8時17分
これにより、LinuxVFSにシンボリックリンクとハードリンクの制限が追加されます。
シンボリックリンク:
長年のセキュリティ問題のクラスは、シンボリックリンクベースの
を参照してください。
time-of-check-time-of-useレースであり、/tmpのような世界で書き込み可能な
ディレクトリで最も一般的に見られます。この欠陥を悪用する一般的な方法は、
特定のシンボリックリンクをたどるときに特権の境界を越えることです(つまり、ルートプロセスは別のユーザーに属するシンボリックリンクをたどります)。何百年にもわたる数百の例のおそらく
不完全なリストについては、http://cve.mitre.org/cgi-bin/cvekey.cgi?keyword =/ tmp解決策は、スティッキーな誰でも書き込み可能なディレクトリの外部にある場合、
シンボリックリンクのuidとフォロワーが一致する場合、またはディレクトリの所有者がシンボリックリンクの所有者と一致する場合にのみ、シンボリックリンクをフォローできるようにすることです。