Могу ли я создать символическую ссылку на файл, к которому у меня нет доступа?

8

[ Отказ от ответственности : в этом вопросе нет злого умысла, я пытаюсь понять команду ln -s для школьного проекта]

Скажем, у меня есть файловая система с моей домашней папкой /home/anna. /home/bobэто папка, к которой у меня нет доступа, с файлом, к которому у меня нет доступа,foo.txt

Могу ли я успешно запустить ln -s /home/bob/foo.txtв своей домашней папке? Правильно ли предположить, что если я смогу, то создаст ссылку, к которой я не могу получить доступ (с теми же разрешениями, что и foo.txt)?

Что если у меня были права на чтение foo.txt, а не доступ /home/bob?

Как насчет обратного случая, когда я мог получить доступ, /home/bobно не читать foo.txt?

MyStackRunnethOver
источник
4
Вы можете создать символическую ссылку практически на что угодно, включая вещи, которые не существуют.
Муру
1
С технической точки зрения символическая ссылка не имеет собственных разрешений, и ls, как lrwxrwxrwxправило , будет показывать, что as , так что немного ошибочно говорить о правах доступа.
Хенрик поддерживает сообщество

Ответы:

9

Да, вы можете создать символическую ссылку на любое место.

Могу ли я успешно запустить 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?

Опять же, вы можете создать символическую ссылку на него, но не получить доступ к файлу.

Арминий
источник
2
@ 4o2 Так как это правильно, я комментирую здесь, чтобы уточнить. Ваш вопрос больше связан с разрешениями, которые вы правильно отметили, и добро пожаловать в Exchange. Когда пользователь создается, он получает каталог /homeи помещается в группу с тем же именем, что и его имя пользователя, то есть пользователь bob находится в группе bob, пока его не добавят к другим, чтобы пользователи не могли читать файлы друг друга. В прежние времена все пользователи принадлежали к группе пользователей, что позволяло намекать злонамеренные намерения. Чтобы Анна увидела файлы Боба, Боб должен добавить ее в группу Боба.
eyoung100