ハードリンクの作成-許可?


16

どの許可がハードリンクの作成に影響しますか?ファイルの所有権自体が重要ですか?


ユーザーalicetarget.txtディレクトリ内のファイルへのハードリンクを作成したいとしますtarget-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し、権限が変更されていない場合、ハードリンクは成功します。ここに何が欠けていますか?


これは課題ですか?もしそうなら、一部の回答者が選択する回答の種類に影響を与える可能性があります(コースの課題について質問することは範囲外ではありません)。とにかく、そのシナリオを作成して何が起こるか見てみましたか?
エリックルヌーフ

いいえ、割り当て用ではありません。私はこの正確なシナリオに直面しており、いくつかの推測がありますが、理論的な観点から尋ねる方が良いと思いました。私の場合、root でない限りtarget.txttarget-dirアクセス許可に関係なくハードリンクを作成できませんsudo
gcscaglia

ハードリンクは同じ所有権とアクセス許可を共有するため、元のファイルにアクセスするのと同じです。
テプピック

@teppic私が難しいのは、作成されたハードリンクにaliceアクセスせず、元のファイルとそのハードリンク(で作成sudo)の両方にアクセスできるため、ハードリンクを作成することですが、リンクを次のように作成することはできませんユーザーaliceはこれらのアクセス許可にすべて同意しているにもかかわらず、それで十分なはずです。
gcscaglia

回答:


18

ハードリンクを作成するには、すべてのケースで権限aliceが必要です。必要な権限は異なります:write+executetarget-dirtarget.txt

  • fs.protected_hardlinks = 1その後alice、所有権target.txtまたは少なくともそのread+writeアクセス許可が必要な場合。
  • その場合fs.protected_hardlinks = 0、アクセス許可のセットが実行されます。000でも大丈夫です。

同様の質問に対するこの回答には、この質問に回答するための情報が欠けていました。

http://kernel.opensuse.org/cgit/kernel/commit/?id=800179c9b8a1 [重点鉱山]:

ハードリンク:

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

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


ありがとう!これが、私がDebian 9で1日間苦労してきたことです!
アルダ

dirにrwx permsおよびファイルにrw permsがある場合でも、なぜ「許可されていない操作」を受け取るのですか?
マイケル

1

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

現在、権限構造は3分割されたセットとして機能します。

  1. ユーザー権限:ノードを所有するユーザーに適用されます。
  2. グループ権限:ノードを所有するグループに属するすべてのユーザー適用されます。
  3. その他の権限:ノードを所有していない他のユーザー/グループに適用されます。

したがって、所有権の質問は、必要なアクセス許可がどのアクセス許可セットであるかにのみ影響しaliceます。

  • 場合はalice、所有者のユーザーで、必要な権限は、「ユーザー」の部分でなければなりません。
  • aliceがそれを所有するグループの一部である場合、必要な権限は「グループ」部分になければなりません。
  • 場合はalice、それを所有していて、それを所有するグループの一部ではありませんん、必要な権限は、「その他」の一部でなければなりません。

私もそう思いました。しかし、私の状況でtarget.txtは、444のアクセス許可とtarget-dir777のアクセス許可がありますが、ルートとしてリンクするか、リンクしているファイルを所有しない限り、ハードリンクを作成できません。奇妙なことに、ソフトリンクは説明どおりに機能します。
gcscaglia

その情報は質問自体に含めると便利です。更新することをお勧めします。奇妙なことに、私はそれを前に考えていませんでした...しかし、あなたが働いているファイルシステムはUnixのような所有権/許可を最初からサポートしていますか?
dave_alcarin

はい、それは、fedora 21システムですぐに使えるext4です。私がファイルの所有者である場合、リンクは機能します。
gcscaglia
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.