Linuxでシンボリックリンクの所有者を変更する理由


12

Linuxでは、シンボリックリンク(symlink)の所有者またはグループ所有者を変更できます。シンボリックリンクを介してファイルにアクセスするときにシンボリックリンクのアクセス許可が使用されないので、なぜ誰かがそれをしたいのかと思いました。

便利なのは1つの使用例だけだと想像できます。つまり、ユーザーがスティッキービットを使用してディレクトリ内のシンボリックリンクを削除できるようにします。

シンボリックリンクの所有者またはグループ所有者を変更することが役立つ他のケースを知っていますか?

回答:


6

Eveが書き込み可能なディレクトリでrootが作業しているとします。fooこのディレクトリには、イブに属するように変更する必要があるファイルがあります。だからルートタイプchown eve foo。しかし、ルートがEnterキーを押す直前に、Eveが実行されln -sf /etc/passwd fooます。今/etc/passwdイブに属しています!rootが実行さchown -h eve fooれてシンボリックリンクをたどらないことを確認できる場合、実行できる最も大きな害は、同じディレクトリ内の他のファイルがEveに属するように変更されたことです。

lchownディレクトリツリーの所有者を変更する場合にも便利です。chownシンボリックリンクを呼び出したので、ツリー外のファイルに誤って影響を与えることを心配する必要はありません。


「ルートがシンボリックリンクをたどらないようにchown -h bob fooを実行できる場合、実行できる最も大きな害は、同じディレクトリ内の他のファイルがEveに属するように変更されたことです。」「chown -h eve foo」という意味でしょうか。変更される可能性のある他のファイル、それはシンボリックリンクですよね?
user368507 2012年

@ user5528他のファイルはシンボリックリンクではない可能性があります。イブは引き続きを実行できmv myfile foo、ルートはの所有者を変更することになりmyfileます。ただしmyfile、イブが作成したり、そのディレクトリに移動したりできるファイルである必要があります。システム上のファイルであってはなりません。
Gilles「SO-邪悪なことをやめよう」

2
興味深く、明らかに質問者によって承認されていますが、この回答が質問にどのように対処するかはわかりません。chown -hシンボリックリンクではないはずのファイルの所有権を変更する際に、なぜそれを警告措置として使用するのか(エッジケース、IMO)を説明する理由のほうが多いようです。実際にはシンボリックリンクであることが意図されているファイルの所有権を変更する理由については説明されていません。
Ivan X

なぜchown「ツリー外のファイル」の所有者を変更するのは、変更するのはディレクトリの所有者だけなのですか?
Melab、2016年

@Melab ディレクトリツリーの所有者を変更する場合、つまりユーティリティをアンアンインストールするchown -R場合、(l)chown各ディレクトリエントリでシステムコールが呼び出されます。ディレクトリエントリがシンボリックリンクの場合chown、ツリーの外部にあるリンクのターゲットに影響を与えるため、システムコールを呼び出さないでください。
Gilles「SO-悪をやめなさい」

8

Apacheは、リンクの所有者が宛先の所有者と一致する場合にのみ、シンボリックリンクをたどるように構成できます。これは、ユーザーが所有していないファイル(/ etc / passwdなど)へのWebアクセス用のリンクを作成できないようにするのに役立ちます。

...ので、あなたは、rootとして、言わせたかったのapacheがxymonか何かが所有していた特定のログファイルを表示するためのリンクに従うことができますが、それは関係なく、所有者のシンボリックリンクをたどるようにすることによってApacheのセキュリティを緩和する必要はありませんでした。次に、xymonをシンボリックリンクの所有者にすることができます。


1
OK。私はそれが無関係であることを知っていますが、Apacheのこの動作のポイントは何ですか?つまり、ユーザーがファイルを読み取ることができるのであれば、なぜWebアクセスから読み取る必要があるのでしょうか。thx
user368507 2012年

まあ、それはファイルを読み取るローカルユーザーだけではありません。Apacheがそれを読むことができれば、潜在的に誰もがそれを読むことができます。また、Apacheの脆弱性によってへのシンボリックリンクの作成が許可された/etc/passwd場合、悪意のあるユーザーは他のローカルアクセスなしでそのファイルへの読み取りアクセスを持っている可能性がありますが、Apacheが所有するシンボリックリンクによって妨害されます。
Lars Rohrbach

4

最初の答えは問題に対応していないようで、2番目の答えはApacheにのみ適用されます。

一般的にLinuxで考えられることの1つは、ユーザーがシンボリックリンクの所有者である場合にのみ、通常のユーザーがシンボリックリンクへのハードリンクを作成できることです。なぜそのようなリンクを作りたいのか、私にはわかりません。

もう1つは、通常のユーザーがファイルのグループ所有権を変更できるのは、そのユーザーがファイルを所有している場合(およびファイルが追加されるグループのメンバーでもある場合)です。シンボリックリンクが行います。組織では、リンクを必要とするチームを示すタグとして役立つ場合があります。

また、少なくともUbuntuでは、誰でもシンボリックリンクのタイムスタンプを更新できます。ただし、一部のシステムでは所有者のみが許可されている場合があります。タイムスタンプがシンボリックリンクにどの程度役立つかはわかりませんが、使用されている量に関する有用な情報が得られる場合があります。

編集:私は所有権が重要になるもう1つの理由を理解しました。リンクは、ファイルの所有者のみがファイルを削除または名前を変更できるスティッキーディレクトリ内にある可能性があります。


0

ログファイルに追加するプログラムがあります。これらのログファイルは、毎月異なる名前で作成されます。ソフトウェアに正確なファイル名を計算させるのではなく、その月の現在のファイルを指すシンボリックリンクである「汎用」ファイル名(data.logなど)を使用します。これはcronジョブで自動化されています。

新しい月次ファイルが作成されたら、シンボリックリンクを新しいファイルにポイントする必要があります。所有権/グループの競合がある場合、ソフトウェアはシンボリックリンクを変更できません。したがって、シンボリックリンクを変更するには、所有権/グループの書き込み権限が必要です。


0

オープニング画面でファイルへのリンクが必要な場合は、シンボリックリンクを

「/ home / username / Desktop」

ディレクトリ。

また、シンボリックリンク自体がroot:root(0:0)の所有権を持っている必要があります。そうでない場合、リンクは機能しません。

(Ubuntu / Debianなど)

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.