3

Как вы меняете права доступа к системной ссылке в Mac OS?

Я пробовал chmod -h 755 mylink используя iTerm2 с zsh, но это не сработало.

1 ответ1

4

После того, как я пошел совершенно неверным путем с этой проблемой, позвольте мне перефразировать проблему. Давайте посмотрим, почему разрешения на символьные ссылки не имеют смысла, поэтому менять их или нет бесполезно.

Я не могу воспроизвести проблему. В некоторых системах разрешения символической ссылки не могут быть изменены вообще. Мой опыт показывает, что Mac OS El Capitan в большинстве случаев меняет разрешения на символические ссылки, но новые разрешения не действуют.

Концептуально изменение разрешений символической ссылки не должно иметь никакого эффекта. Если получить доступ к файлу так же просто, как создать символическую ссылку и затем изменить разрешения символической ссылки, ни один файл не будет безопасным.

Я нашел этот отказ от ответственности в man 7 symlink:

Флаги, права доступа, владелец / группа и время модификации существующей символической ссылки могут быть изменены с помощью [системных вызовов]. Из них только флаги используются системой; права доступа и собственность игнорируются.

Вот крайний пример.

$ touch myfile
$ ln -s myfile mylink
$ ls -l myfile mylink
-rw-r--r--  1 user  staff  0 Jul 13 14:42 myfile
lrwxr-xr-x  1 user  staff  6 Jul 13 14:43 mylink -> myfile
$ chmod -h 000 mylink
$ ls -l myfile mylink
-rw-r--r--  1 user  staff  0 Jul 13 14:42 myfile
ls: mylink: Permission denied
l---------  1 user  staff  6 Jul 13 14:43 mylink
$ echo 'Hello, world!' > mylink
$ cat mylink
Hello, world!
$ ls -l myfile
-rw-r--r--  1 user  staff  14 Jul 13 14:43 myfile

Символическая ссылка не имеет разрешений, но echo и cat следуют за mylink на myfile . echo пишет в myfile а cat читает его, игнорируя разрешения символической ссылки. Примечание: Права доступ символических ссылок заблокированы ls показывать цель на линке, а коммунальные услуги по- прежнему следовать символической ссылке. Наоборот,

$ chmod 000 myfile
$ chmod -h 777 mylink
$ ls -l myfile mylink
----------  1 user  staff  14 Jul 13 14:43 myfile
lrwxrwxrwx  1 user  staff   6 Jul 13 14:43 mylink -> myfile
$ cat mylink
cat: mylink: Permission denied

Риторически, не так ли это должно быть?

Ссылки (некоторые специфичные для Mac OS и El Capitan):

  • man 7 symlink
  • ОПЦИИ МАНИПУЛЯЦИИ ACL раздел man chmod
  • man chflags

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .