
ハードリンクの作成に影響を与える権限は何ですか?ファイル所有権自体は重要ですか?
ユーザーが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ファイルを「固定」して、管理者が実際にシステムを完全にアップグレードできないようにするという問題もあります。
解決策は、ユーザーがすでに既存のファイルの所有者である場合、または既存のファイルへの読み取り/書き込みアクセス権を持っている場合にのみハードリンクの作成を許可することです。。
答え2
alice
必要少なくとも読み取り権限target.txt
と書き込み+実行権限target-dir
。
権限構造は、3つの区別されたコレクションとして機能します。
- ユーザー権限:適用対象ユーザーノードを所有してください。
- グループ権限:すべてのユーザーに適用されます。このグループに属しています。ノードを所有してください。
- 他人に対する権限:次に適用されます。他のユーザー/グループノードを所有していません。
したがって、所有権の問題は、必要な権限を持つ権限セットにのみ影響しますalice
。つまり:
alice
所有者ユーザーの場合は、必要な権限がユーザーセクションにある必要があります。- そのグループを所有するグループの一部である場合は、必要な
alice
権限が「グループ」セクションにある必要があります。 alice
所有しておらず、それを所有しているグループに属していない場合は、必要な権限が「その他」セクションにある必要があります。