Как вы меняете права доступа к системной ссылке в Mac OS?
Я пробовал chmod -h 755 mylink
используя iTerm2 с zsh, но это не сработало.
После того, как я пошел совершенно неверным путем с этой проблемой, позвольте мне перефразировать проблему. Давайте посмотрим, почему разрешения на символьные ссылки не имеют смысла, поэтому менять их или нет бесполезно.
Я не могу воспроизвести проблему. В некоторых системах разрешения символической ссылки не могут быть изменены вообще. Мой опыт показывает, что 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
man chmod
man chflags