GNU/Linux >> Linux の 問題 >  >> Linux

ユーザーを変更すると、シンボリックリンクが期待どおりに機能しませんか?

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


Linux
  1. Sshが1台の特定のコンピューターから機能していませんか?

  2. CentOS / RHEL 7 で systemd-tmpfiles が /tmp/ または /var/tmp (tmpwatch の置き換え) をクリーンアップする方法

  3. CentOS/RHEL:/tmp マウント ポイントが /etc/fstab に追加されたときに自動的にマウントされない

  1. シンボリック リンク:このファイルにリンクしているすべてのファイルを検索します

  2. Node.js:「fs」を使用してディレクトリを反復処理するときに、ファイルがシンボリック リンクかどうかを確認する

  3. シンボリック リンクがフォルダーではなくファイルを作成するのはなぜですか?

  1. 出力をリダイレクトするときに特定のファイル許可を設定する方法は?

  2. コマンドがユーザー入力を要求するときに、コマンドの出力をファイルにリダイレクトする方法は?

  3. unix:///var/run/supervisor.sock そのようなファイルはありません