Команда chmod (сокр. от "change mode" – смена режима) предоставляет возможность изменять привилегии доступа к файлам и директориям в операционных системах, ориентированных на Unix.
Синтаксис команды представлен следующим образом: chmod [ключи] установка_прав имя_файла
Ключи являются опциональными. Права могут быть установлены двумя методами: воспользовавшись символическим обозначением прав (rwx) или применив числовой формат в восьмеричной системе.
Изменение прав с помощью символьной нотации
При использовании символов для задания прав в первом аргументе (установка_прав) команды chmod применяются три группы символов.
Первая группа указывает, для кого применяется или исключается доступ: владельца (u), группы (g), других (o) или всех категорий (a). Можно выбирать как одну, так и несколько категорий одновременно.
Вторая группа обозначает действие над правами и включает в себя один символ: -, + или =, соответствующие запрету, разрешению или назначению прав.
Третья группа перечисляет права, которые изменяются: чтение (r), запись (w), выполнение (x). Допустимо задавать сразу несколько прав.
На изображении первым примером является добавление для группы права на запись, что выглядит как g+w. Во втором примере группе и прочим пользователям назначаются права r--. В последнем случае прочим запрещается чтение файла. Следует отметить, что можно достичь одного и того же результата различными способами: через назначение, добавление или удаление прав.
Когда необходимо назначить различные права для разных групп пользователей, это достигается перечислением выражений установка_прав через запятую без пробелов. Также можно указать несколько файлов или использовать шаблон. Пример:
chmod o-r,a-w month.txt text.txt
В этом случае прочим запрещается читать, и для всех пользователей устанавливается запрет на изменение. Данные правила применяются к двум файлам.
Установка прав с помощью чисел
Метод использования команды chmod с числовым выражением прав, записываемых одной восьмеричной цифрой для каждой категории пользователя, более прост в записи. Важно помнить значения цифр:
- 7 – разрешены чтение, запись и выполнение
- 6 – разрешены чтение и запись
- 5 – разрешены чтение и выполнение
- 4 – разрешено только чтение
- 0 – запрет на все действия
В первом аргументе chmod указываются три цифры: первая обозначает права владельца, вторая – группы, третья – других пользователей.
В первом примере файлу назначаются права владельца на чтение и запись, а для группы и других – только на чтение. Во втором примере все пользователи получают права на чтение и запись.
Установка прав для каталогов
В каталогах права на чтение, запись и выполнение приобретают особый характер, как упоминалось в предыдущем уроке. Также нередко возникает задача рекурсивного назначения прав для вложенных объектов в каталоге, что реализуется с использованием ключа -R.
В примере мы применяем для каталога и всех содержащихся в нем объектов права 754. Для каталогов это означает, что владелец имеет полные права, группа может только просматривать содержимое каталога, а другие пользователи могут лишь узнать список объектов. Обратите внимание на использование ключа -d команды ls. Он предназначен для получения информации о самом каталоге, а не его содержимом.
Если директория имеет право на запись, то категория пользователей с этим правом может удалить из нее любой файл, даже если он ей не принадлежит. Поэтому полезным оказывается установка t-бита. Этот бит разрешает удалять и переименовывать файлы в каталоге только владельцу этих файлов.
В данном примере используется числовой формат для команды chmod, где добавляется цифра 1, обозначающая установку t-бита. В символьной нотации достаточно додать +t без указания пользователей. При выводе команды ls символ t появляется вместо x в правах остальных. Это не означает замену, а особенности вывода. Символ t указывает наличие права на выполнение. Без него вместо t изображалась бы заглавная буква.