web-dev-qa-db-ja.com

アクセスできないファイルへのシンボリックリンクを作成できますか?

[免責事項:この質問には悪意はありません。私は学校のプロジェクトのln -sコマンドを理解しようとしています]

私のホームフォルダー/home/annaにファイルシステムがあるとします。 /home/bobは、アクセスできないフォルダーです。アクセスできないファイルがあります。foo.txt

ホームフォルダーでln -s /home/bob/foo.txtを正常に実行できますか?できれば、アクセスできないリンクが(foo.txtと同じ権限で)生成されると想定しても正しいですか?

DIDにfoo.txtの読み取り権限があって、/home/bobへのアクセス権がない場合はどうなりますか?

/home/bobにアクセスできてもfoo.txtを読み取れないという逆の場合はどうですか?

8

はい、任意の場所へのシンボリックリンクを作成できます。

ホームフォルダーでln -s /home/bob/foo.txtを正常に実行できますか?可能であれば、アクセスできないリンク(foo.txtと同じ権限を持つ)が生成されると想定することは正しいですか?

正しい。対象ファイルのアクセス制限が適用されます。制限されたリソースへのシンボリックリンクを作成すると、それにアクセスできなくなります。ターゲットファイルが実際に存在する必要はありません。

デモ:

$ ln -s /etc/shadow foo
$ file foo
foo: symbolic link to /etc/shadow
$ cat foo
cat: foo: Permission denied

$ ln -s /etc/nonexistent bar
$ file bar
bar: broken symbolic link to /etc/nonexistent

DIDにfoo.txtの読み取り権限があって、/home/bobへのアクセス権がない場合はどうなりますか?

親ディレクトリに対する権限がない場合は、 含まれているファイルにアクセスできません 。したがって、シンボリックリンクを使用しても、それにアクセスすることはできません。シンボリックリンクを作成しても、権限には影響しません。

/home/bobにアクセスできてもfoo.txtを読み取れないという逆の場合はどうですか?

ここでも、シンボリックリンクを作成できますが、ファイルにはアクセスできません。

9
Arminius