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 для членов группы.

ПРИМЕРЫ

  1. Чтобы установить права, позволяющие владельцу читать и писать в файл, а членам группы и прочим пользователям только читать, надо сложить 0400, 0200, 0040 и 0004. Таким образом, команду можно записать двумя способами:
    
       chmod 644 f1
    
       chmod u=rw,go=r f1
    
    
  2. Позволить всем выполнять файл f2:
    
       chmod +x f2
    
    
  3. Учитывать блокировку доступа к файлу f3:
    
       chmod +l f3
    
    
  4. Дать всем права на чтение запись и выполнение, а также на переустановку идентификатора группы при выполнении файла f4:
    
       chmod =rwx,g+s f4
    
       chmod 2777 f4
    
    

СМ. ТАКЖЕ
ls(1).
chmod(2) в Справочнике программиста.