9.4. Настройка разрешений в символьном формате chmod
Проблема
Требуется установить некоторые биты разрешений, сохранив значения остальных битов. Числовые форматы chmod позволяют задавать только все биты разрешений одновременно, что не всегда удобно.
Решение
Самым распространённым применением символических обозначений chmod является добавление бита исполнения в атрибуты файла без изменения остальных разрешений:
$ chmod +x сценарий
По умолчанию используется режим «a» (all), поэтому данный пример разрешит исполнение сценария всем пользователям. Если нужно разрешить выполнение только для владельца файла, используется следующая команда:
$ chmod u+x сценарий
Для сброса отдельных битов можно воспользоваться следующим вариантом, который лишает группу и прочих пользователей права исполнения:
$ chmod go-x сценарий
Быстрая установка бита setgid для каталога позволяет создать общий каталог, в котором все файлы будут принадлежать той же группе, что и сам каталог:
$ chmod +s /общий-каталог
Чтобы сбросить все разрешения для группы и прочих пользователей, выполните:
$ chmod go= сценарий
Следующая команда даёт группе те же разрешения, что и владельцу файла:
$ chmod g=u сценарий
Комментарий
Символическая запись chmod может быть сложной в использовании. Например, следующая команда стирает все существующие разрешения и устанавливает новые:
$ chmod -v a=,u-rwx,g=rx,o=r сценарий
Это эквивалентно числовой записи chmod 754, но символический формат позволяет более гибко управлять отдельными правами. Важно помнить, что символическая форма записи, также называемая мнемонической, позволяет использовать следующие обозначения:
- r — чтение (Read);
- w — запись (Write);
- x — исполнение (Execute);
- X — выполнение для файлов с уже установленными разрешениями на выполнение или для каталогов;
- s — установка идентификатора пользователя или группы при исполнении (setuid, setgid);
- t — бит закрепления (sticky bit);
- u — владелец файла;
- g — группа, которой принадлежит файл;
- o — прочие пользователи;
- + — добавление разрешений;
- = — замена разрешений;
- - — сброс разрешений.
Использование символической записи особенно полезно, когда нужно внести изменения в уже существующие разрешения, не изменяя все права сразу. Это помогает избежать ошибок и даёт более детальный контроль над управлением правами доступа.
Например, если вы работаете в проекте, где несколько пользователей должны иметь доступ к определённым ресурсам, символическая форма записи chmod позволит вам настроить права таким образом, чтобы каждый пользователь имел нужные права, не затрагивая другие параметры. Вы можете точно контролировать, кто может читать, изменять или выполнять файл или каталог, что важно для соблюдения безопасности системы.
Важно помнить, что неверное использование некоторых опций, таких как setuid или setgid, может создать уязвимости в системе. Всегда проверяйте, какие права вы устанавливаете, особенно для исполняемых файлов, чтобы избежать потенциальных угроз безопасности.
См. также
info chmod; раздел 9.7.