CHMOD(1)
НАЗВАНИЕ
chmod - изменение режима доступа к файлам
СИНТАКСИС
chmod режим файл ...
ОПИСАНИЕ
Права доступа к указанным файлам (среди которых могут
быть каталоги) изменяются в соответствии с указанным
режимом. Режим может быть задан в абсолютном или символьном виде.
Абсолютный вид - восьмеричное число, являющееся поразрядным ИЛИ следующих режимов:
- 04000
- При выполнении переустановить действующий идентификатор пользователя.
- 020#0
- При выполнении переустановить действующий идентификатор группы, если # есть 7, 5, 3 или 1;
учитывать блокировку доступа, если # есть 6, 4,
2 или 0.
- 01000
- Бит навязчивости [см. chmod(2)].
- 00400
- Доступен для чтения владельцем.
- 00200
- Доступен для записи владельцем.
- 00100
- Доступен для выполнения (в случае каталога - для просмотра) владельцем.
- 00040
- Доступен для чтения членами группы.
- 00020
- Доступен для записи членами группы.
- 00010
- Доступен для выполнения (просмотра) членами
группы.
- 00004
- Доступен для чтения прочими пользователями.
- 00002
- Доступен для записи прочими пользователями.
- 00001
- Доступен для выполнения (просмотра) прочими
пользователями.
Использование символьного вида основано на однобуквенных обозначениях, которые определяют класс доступа и
права доступа для членов данного класса. Права доступа
к файлу зависят от идентификатора пользователя и идентификатора группы, в которую он входит. Режим в целом
описывается в терминах трех последовательностей, по три
буквы в каждой:
Владелец Группа Прочие
(u) (g) (o)
rwx rwx rwx
Здесь владелец, члены группы и все прочие пользователи
обладают правами чтения файла, записи в него и его выполнения. В примере показаны обозначения как для класса
доступа, так и для прав доступа внутри класса.
Для задания режима доступа в символьном виде используется следующий синтаксис:
[кому] операция права
Часть кому есть комбинация букв u, g и o (владелец,
члены группы и прочие пользователи соответственно). Если часть кому опущена или указано a, то это эквивалентно ugo.
Операция может быть: + (добавить право), - (лишить права), = (в пределах данного класса присвоить права абсолютно, то есть добавить указанные права и отнять неуказанные).
Права - любая осмысленная комбинация следующих букв:
r | Право на чтение. |
w | Право на запись. |
x | Право на выполнение (поиск в каталоге). |
s | При выполнении переустанавливать действующий идентификатор пользователя или группы. |
t | После выполнения программы сохранять сегмент команд (бит навязчивости). |
l | Учет блокировки доступа. |
Опустить часть права можно только если операция есть =
(для лишения всех прав).
Если надо сделать более одного указания об изменении
прав, то при использовании символьного вида в правах не
должно быть пробелов, а указания должны разделяться запятыми. Например, команда
chmod u+w,go+x f1
добавит для владельца право писать в файл f1, а для
членов группы и прочих пользователей - право выполнять
файл. Права устанавливаются в указанном порядке. Право
s можно добавлять только для пользователя и группы,
право t - только для пользователя.
Учет блокировки доступа (l) к файлу и его частям означает возможность монопольного захвата сегментов файла
на время их обработки. Нельзя, однако, разрешить выполнение файла для членов группы и одновременно учитывать
блокировку файла. Нельзя также разрешить переустановить
при выполнении действующий идентификатор группы и учитывать блокировку файла. Таким образом, следующие команды являются некорректными:
chmod g+x,+l f2
chmod g+s,+l f3
Попытка их выполнения вызовет соответствующую диагностику.
Изменить режим доступа к файлу может только его владелец или суперпользователь. Бит навязчивости может установить только суперпользователь. Чтобы добавить право
переустановки идентификатора группы, надо быть членом
этой группы; кроме того, для членов группы должно быть
установлено право выполнения.
Для просмотра прав доступа и контроля при их изменении
используется команда ls(1) с флагом -l. Права переустановки идентификаторов пользователя и группы отмечаются
буквой s на месте соответствующей буквы x: малой s, если соответствующая категория пользователей имеет право
x, и большой S - если не имеет; право t отмечается на
месте последней буквы x: малой t, если прочие пользователи имеют право выполнять файл, и большой T - если не
имеют. Право l отмечается на месте права x для членов
группы.
ПРИМЕРЫ
- Чтобы установить права, позволяющие владельцу читать
и писать в файл, а членам группы и прочим пользователям
только читать, надо сложить 0400, 0200, 0040 и 0004.
Таким образом, команду можно записать двумя способами:
chmod 644 f1
chmod u=rw,go=r f1
- Позволить всем выполнять файл f2:
chmod +x f2
- Учитывать блокировку доступа к файлу f3:
chmod +l f3
- Дать всем права на чтение запись и выполнение, а
также на переустановку идентификатора группы при выполнении файла f4:
chmod =rwx,g+s f4
chmod 2777 f4
СМ. ТАКЖЕ
ls(1).
chmod(2) в Справочнике программиста.