Почему Linux / POSIX есть, но не lchmod?

Кажется, что Linux поддерживает изменение владельца символической ссылки (например, lchown ), но изменение режима / разрешения символической ссылки (то есть lchmod ) не поддерживается . Насколько я вижу, это соответствует POSIX. Однако я не понимаю, почему кто-то поддерживал бы одну из этих операций, но не тот и другой. Какова мотивация этого?

2 Solutions collect form web for “Почему Linux / POSIX есть, но не lchmod?”

Linux, как и большинство Unix-подобных систем (Apple OS / X является одним из редких исключений), игнорирует разрешения на символические ссылки, когда дело доходит до решения своих задач, например.

Однако владение символическими ссылками, как и другие файлы, имеет значение, когда дело доходит до разрешения переименовать или отменить связь их записей в каталогах, у которых установлен бит t бит, например /tmp .

Чтобы иметь возможность удалять или переименовывать файл (символическая ссылка или нет) в /tmp , вы должны быть владельцем файла. Это одна из причин, по которой вы захотите изменить право собственности на символическую ссылку (предоставить или удалить разрешение для развязки / переименования).

 $ ln -s / /tmp/x $ rm /tmp/x # OK removed $ ln -s / /tmp/x $ sudo chown -h nobody /tmp/x $ rm /tmp/x rm: cannot remove '/tmp/x': Operation not permitted 

Кроме того, как упоминал Марк Плотник в своем удаленном ответе , приложениям резервного копирования и архивирования требуется lchown() для восстановления символических ссылок для своих первоначальных владельцев. Другим вариантом было бы переключить euid и egid перед созданием символической ссылки, но это не было бы эффективным и усложняло бы правильные управления в каталоге, в который была извлечена символьная ссылка.

В posix нет lchmod (), но fchmodat (), который позволит установить разрешения символической ссылки. Это все равно не требует разрешения разрешений на символические ссылки.

  • OS X / Linux one-liner / script, чтобы найти самую большую повторяющуюся группу строк в текстовом файле?
  • Проверьте, содержит ли переменная оболочки абсолютный путь
  • POSIX находит все локальные файлы
  • Что, в качестве примера, может произвести POLLNVAL?
  • Как привести текст HEREDOC в переменную сценария оболочки?
  • В POSIX sed период (точка) соответствует новой строке в многострочном пространстве шаблонов?
  • open () вернуть новый дескриптор файла posix
  • Как получить информацию о файловой системе для определенного файла?
  • Какой самый безопасный (или самый элегантный или самый короткий) способ изменить в каталог, откуда вызывается скрипт?
  • Ограничивает ли POSIX количество каталогов в корневом каталоге os?
  • Включение очереди сообщений Posix
  • Linux и Unix - лучшая ОС в мире.