Кажется, что Linux поддерживает изменение владельца символической ссылки (т.е. lchown
), но изменение режима / разрешения символической ссылки (т.е. lchmod
) не поддерживается . Насколько я вижу, это соответствует POSIX. Тем не менее, я не понимаю, почему можно было бы поддерживать одну из этих операций, но не обе. Какова мотивация этого?
linux
permissions
posix
Флориан Брукер
источник
источник
lrwxrwxrwx
. Аchmod
не имеет здесь смысла. Перейдя по ссылке, вы попадете в список разрешений.lchmod
. Но другие Unix-подобные ОС поддерживают его (например, Mac OS X ), поэтому вопрос заключается в том, почему Linux не поддерживает егоlchown
.Ответы:
Linux, как и большинство Unix-подобных систем (Apple OS / X является одним из редких исключений), игнорирует разрешения для символических ссылок, когда речь идет, например, о решении их целей.
Однако владение символическими ссылками, как и другими файлами, имеет отношение к разрешению на переименование или отмену связи их записей в каталогах с установленным
t
битом, таких как/tmp
.Чтобы иметь возможность удалить или переименовать файл (символическая ссылка или нет)
/tmp
, вы должны быть владельцем файла. Это одна из причин, по которой можно изменить владельца символической ссылки (предоставить или удалить разрешение на удаление / переименование ее).Кроме того, как отметил Марк Плотник в своем удаленном ответе , приложения
lchown()
для резервного копирования и архивирования должны восстанавливать символические ссылки на их первоначальных владельцев. Другим вариантом будет переключение euid и egid перед созданием символической ссылки, но это не будет эффективным и усложнит управление правами в каталоге, в котором извлечена символическая ссылка.источник
В posix нет lchmod (), но есть функция fchmodat (), которая позволила бы установить разрешения для символической ссылки. Это все еще не требует, чтобы разрешения символических ссылок были оценены.
источник
lchmod
в соответствии с POSIX. Что добавляет этот ответ, которого еще нет в вопросе?