ユーザー変更時にシンボリックリンクが期待どおりに機能しません。

ユーザー変更時にシンボリックリンクが期待どおりに機能しません。

標準の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とフォロワーが一致する場合、またはディレクトリの所有者がシンボリックリンクの所有者と一致する場合にのみシンボリックリンクに従うことを許可することです。

おすすめ記事