[免責事項: この質問に悪意はありません。学校のプロジェクトで ln -s コマンドを理解しようとしています。
たとえば、ホームフォルダを含むファイルシステムがあるとします。これは/home/anna
アクセスできない/home/bob
フォルダで、アクセスできないファイルがあります。foo.txt
ホーム フォルダーで正常に実行できますかln -s /home/bob/foo.txt
? 実行できたとしても、アクセスできないリンク ( と同じ権限foo.txt
) が生成されると考えるのは正しいでしょうか?
に対する読み取り権限はあるがfoo.txt
、 にはアクセスできない場合はどうなるでしょうか/home/bob
?
/home/bob
逆に、アクセスはできるが読み取れない場合はどうでしょうかfoo.txt
?
答え1
はい、シンボリックリンクを作成できますどれでも位置。
ホーム フォルダーで正常に実行できますか
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
に対する読み取り権限はあるが
foo.txt
、 にはアクセスできない場合はどうなるでしょうか/home/bob
?
親ディレクトリに対する権限がない場合は、含まれているファイルにアクセスできませんしたがって、シンボリックリンクを使用しても、アクセスすることはできません。シンボリックリンクを作成しても、権限には影響しません。
/home/bob
逆に、アクセスはできるが読み取れない場合はどうでしょうかfoo.txt
?
繰り返しになりますが、シンボリックリンクを作成することはできますが、ファイルにアクセスすることはできません。