Почему 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 (), который позволит установить разрешения символической ссылки. Это все равно не требует разрешения разрешений на символические ссылки.

  • Темы против прерываний
  • В чем разница между идентификатором токена WORD и NAME?
  • Порядок между опциями и операндами?
  • Как открыть grep (1p) manpage?
  • IO и другие команды оболочки, когда программа не запускается терминалом
  • Требуется ли совместимая с POSIX реализация для поддержки локалей, отличных от стандартных?
  • Есть ли способ POSIX для установки нулевого аргумента целевого приложения?
  • При использовании linux acl mkdir и mkdir -p делают разные вещи
  • Где я могу найти «Формат маски доступа» для разрешений POSIX и ACL в Linux?
  • Как отменить регулярное выражение внутри другого регулярного выражения
  • Есть ли минимальная оболочка POSIX для OS X?
  • Linux и Unix - лучшая ОС в мире.