ハードリンクの生成 - 権限?

ハードリンクの生成 - 権限?

ハードリンクの作成に影響を与える権限は何ですか?ファイル所有権自体は重要ですか?


ユーザーがaliceディレクトリ内のファイルへのハードリンクを作成したいとします。target.txttarget-dir

  • そしてaliceどのような権限が必要ですか?target.txttarget-dir
  • target.txtユーザーが所有しbilltarget-dirユーザーが所有している場合、chadこれは変わりますか?

ext4ファイルシステムに次のフォルダ/ファイル構造を作成してこの状況をシミュレートしようとしました。

#> ls -lh . *
.:
drwxr-xr-x 2 bill bill 60 Oct  1 11:29 source-dir
drwxrwxrwx 2 chad chad 60 Oct  1 11:40 target-dir

source-dir:
-r--r--r-- 1 bill bill 0 Oct  1 11:29 target.txt

target-dir:
-rw-rw-r-- 1 alice alice 0 Oct  1 11:40 dummy

aliceへのソフトリンクは作成できますが、ハードtarget.txtリンクは作成できません。

#> ln source-dir/target.txt target-dir/
ln: failed to create hard link ‘target-dir/target.txt’ => ‘source-dir/target.txt’: Operation not permitted

alice変更権限がある場合とない場合は、target.txtハードリンクが成功します。私がここで何を見逃しているのでしょうか?

答え1

ハードリンクを作成するには、aliceすべての場合に権限が必要ですwrite+executetarget-dir必要な権限はtarget.txtさまざまです。

  • その場合は、所有権fs.protected_hardlinks = 1または少なくとも権限が必要です。alicetarget.txtread+write
  • そうでfs.protected_hardlinks = 0あれば、どの権限セットでも可能です。

同様の質問に対する回答です欠落している情報はこの質問に答えることができます。

~からこのコミットメッセージ(強調):

システムファイルと同じパーティションにユーザー書き込み可能ディレクトリがあるシステムでは、長年続くセキュリティ上の問題はハードリンクベースの検証時間使用競争であり、最も一般的には/ tmpなどのグローバル書き込み可能ディレクトリにあります。この欠陥を悪用する一般的な方法は、特定のハードリンクをたどると権限の境界を越えることです(つまり、ルートプロセスは他のユーザーが作成したハードリンクに従います)。また、ユーザーが潜在的に脆弱なsetuid / setgidファイルを「固定」して、管理者が実際にシステムを完全にアップグレードできないようにするという問題もあります。

解決策は、ユーザーがすでに既存のファイルの所有者である場合、または既存のファイルへの読み取り/書き込みアクセス権を持っている場合にのみハードリンクの作成を許可することです。

答え2

alice必要少なくとも読み取り権限target.txtと書き込み+実行権限target-dir

権限構造は、3つの区別されたコレクションとして機能します。

  1. ユーザー権限:適用対象ユーザーノードを所有してください。
  2. グループ権限:すべてのユーザーに適用されます。このグループに属しています。ノードを所有してください。
  3. 他人に対する権限:次に適用されます。他のユーザー/グループノードを所有していません。

したがって、所有権の問題は、必要な権限を持つ権限セットにのみ影響しますalice。つまり:

  • alice所有者ユーザーの場合は、必要な権限がユーザーセクションにある必要があります。
  • そのグループを所有するグループの一部である場合は、必要なalice権限が「グループ」セクションにある必要があります。
  • alice所有しておらず、それを所有しているグループに属していない場合は、必要な権限が「その他」セクションにある必要があります。

関連情報