[免責事項:この質問には悪意はありません。私は学校のプロジェクトの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
を読み取れないという逆の場合はどうですか?
はい、任意の場所へのシンボリックリンクを作成できます。
ホームフォルダーで
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
を読み取れないという逆の場合はどうですか?
ここでも、シンボリックリンクを作成できますが、ファイルにはアクセスできません。