[Отказ от ответственности: в этом вопросе нет злого умысла, я пытаюсь понять команду 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
?
Опять же, вы можете создать символическую ссылку на него, но не получить доступ к файлу.