Product SiteDocumentation Site

Глава 59. Средства управления дискреционными правами доступа

59.1. Команда chmod
59.2. Команда chown
59.3. Команда chgrp
59.4. Команда umask
59.5. Команда chattr
59.6. Команда lsattr
59.7. Команда getfacl
59.8. Команда setfacl

59.1. Команда chmod

Команда chmod предназначена для изменения прав доступа файлов и каталогов.
Синтаксис:
chmod [ОПЦИИ] РЕЖИМ[,РЕЖИМ]... <ФАЙЛ>
chmod [ОПЦИИ] --reference=ИФАЙЛ <ФАЙЛ>
Основные опции:
  • -R — рекурсивно изменять режим доступа к файлам, расположенным в указанных каталогах;
  • --reference=ИФАЙЛ — использовать режим файла ИФАЙЛ.
chmod изменяет права доступа каждого указанного файла в соответствии с правами доступа, указанными в параметре режим, который может быть представлен как в символьном виде, так и в виде восьмеричного, представляющего битовую маску новых прав доступа.
Формат символьного режима следующий:
[ugoa...][[+-=][разрешения...]...]
Здесь разрешения — это ноль или более букв из набора «rwxXst» или одна из букв из набора «ugo».
Каждый аргумент — это список символьных команд изменения прав доступа, разделеных запятыми. Каждая такая команда начинается с нуля или более букв «ugoa», комбинация которых указывает, чьи права доступа к файлу будут изменены: пользователя, владеющего файлом (u), пользователей, входящих в группу, к которой принадлежит файл (g), остальных пользователей (o) или всех пользователей (a). Если не задана ни одна буква, то автоматически будет использована буква «a», но биты, установленные в umask, не будут затронуты.
Оператор «+» добавляет выбранные права доступа к уже имеющимся у каждого файла, «-» удаляет эти права. «=» присваивает только эти права каждому указанному файлу.
Буквы «rwxXst» задают биты доступа для пользователей: «r» — чтение, «w» — запись, «x» — выполнение (или поиск для каталогов), «X» — выполнение/поиск только если это каталог или же файл с уже установленным битом выполнения, «s» — задать ID пользователя и группы при выполнении, «t» — запрет удаления.
Числовой режим состоит не более чем из четырех восьмеричных цифр (от нуля до семи), которые складываются из битовых масок с разрядами «4», «2» и «1». Любые пропущенные разряды дополняются лидирующими нулями:
  • первый разряд выбирает установку идентификатора пользователя (setuid) (4) или идентификатора группы (setgid) (2) или sticky-бита (1);
  • второй разряд выбирает права доступа для пользователя, владеющего данным файлом: чтение (4), запись (2) и исполнение (1);
  • третий разряд выбирает права доступа для пользователей, входящих в данную группу, с тем же смыслом, что и у второго разряда;
  • четвертый разряд выбирает права доступа для остальных пользователей (не входящих в данную группу), опять с тем же смыслом.
Примеры:
  • установить права, позволяющие владельцу читать и писать в файл f1, а членам группы и прочим пользователям только читать. Команду можно записать двумя способами:
    $ chmod 644 f1
    $ chmod u=rw,go=r f1
    
  • позволить всем выполнять файл f2:
    $ chmod +x f2
  • запретить удаление файла f3:
    $ chmod +t f3
  • дать всем права на чтение запись и выполнение, а также на переустановку идентификатора группы при выполнении файла f4:
    $ chmod =rwx,g+s f4
    $ chmod 2777 f4