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

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

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


ユーザーが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ファイルを「固定」して、管理者が実際にシステムを完全にアップグレードできないようにするという問題もあります。

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

おすすめ記事