Права доступа к файлу могут изменить только владелец файла и суперпользователь. Параметр права_доступа задается в числовой форме, либо в символьной.
Права доступа в числовой форме задаются в виде восьмеричного числа – битовой маски, являющегося суммой одного или нескольких следующих значений:
4000
– установка бита SUID
2000
– установка бита SUID
1000
– установка sticky-бита
0400
– право на чтение для владельца
0200
– право на запись для владельца
0100
– право на выполнение для владельца
0040
– право на чтение для группы владельца
0020
– право на запись для группы владельца
0010
– право на выполнение для группы владельца
0004
– право на чтение для остальных пользователей
0002
– право на запись для остальных пользователей
0001
– право на выполнение для остальных пользователей
Права доступа в символьном виде задаются с помощью следующей грамматики:
права_доступа
::=выражение [, выражение ...]
выражение
::=[субъект ...] [действие ...] действие
действие
::=операция [права ...]
субъект
::=a | u | g | o
операция
::=+ | - | =
права
::=r | s | t | w | x | X | u | g | o
Пример использования. Для того, чтобы для файла test.txt сбросить все права для группы владельца и остальных пользователей, а для владельца установить права на чтение и запись, можно использовать следующие команды (они эквивалентны): chmod u=rw,go= test.txt, chmod a=,u=rw test.txt, chmod 600 test.txt. Результат:
Для добавления группе владельца права на запись и отмена для остальных пользователей права на чтение можно использовать следующую команду: chmod g+w,o-r test.txt. Результат:
Владельца файла может изменить только суперпользователь. Группу может изменить владелец и суперпользователь. В качестве имени владельца/группы берется первый аргумент, не являющийся опцией. Если задано только имя пользователя (или числовой идентификатор пользователя), то данный пользователь становится владельцем каждого из указанных файлов, а группа этих файлов не изменяется. Если за именем пользователя через двоеточие следует имя группы (или числовой идентификатор группы), без пробелов между ними, то изменяется также и группа файла.
Для изменения группы-владельца файла test.txtна guest необходимо ввести следующую команду: chown :guest test.txt. Результат: