ハードリンクの作成に影響を与える権限は何ですか?ファイル所有権自体は重要ですか?
ユーザーがalice
ディレクトリ内のファイルへのハードリンクを作成したいとします。target.txt
target-dir
- そして
alice
どのような権限が必要ですか?target.txt
target-dir
target.txt
ユーザーが所有しbill
、target-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+execute
。target-dir
必要な権限はtarget.txt
さまざまです。
- その場合は、所有権
fs.protected_hardlinks = 1
または少なくとも権限が必要です。alice
target.txt
read+write
- そうで
fs.protected_hardlinks = 0
あれば、どの権限セットでも可能です。
同様の質問に対する回答です欠落している情報はこの質問に答えることができます。
~からこのコミットメッセージ(強調):
システムファイルと同じパーティションにユーザー書き込み可能ディレクトリがあるシステムでは、長年続くセキュリティ上の問題はハードリンクベースの検証時間使用競争であり、最も一般的には/ tmpなどのグローバル書き込み可能ディレクトリにあります。この欠陥を悪用する一般的な方法は、特定のハードリンクをたどると権限の境界を越えることです(つまり、ルートプロセスは他のユーザーが作成したハードリンクに従います)。また、ユーザーが潜在的に脆弱なsetuid / setgidファイルを「固定」して、管理者が実際にシステムを完全にアップグレードできないようにするという問題もあります。
解決策は、ユーザーがすでに既存のファイルの所有者である場合、または既存のファイルへの読み取り/書き込みアクセス権を持っている場合にのみハードリンクの作成を許可することです。。