9.2. Настройка разрешений в числовом формате chmod

Проблема

Требуется контролировать доступ к файлу. Допустим, вы хотите удержать секретный рецепт соуса подальше от посторонних, или у вас имеется конфиденциальная информация, нуждающаяся в защите. А может (что более вероятно), потребовалось разрешить исполнение некоторого файла. В любом случае потребуется задать разрешения для файлов, но сначала нужно разобраться, как вычисляются числовые коды разрешений.

Решение

Воспользуйтесь командой chmod (CHange MODe). Смена разрешений может выполняться только суперпользователем (root) и владельцем файла.

Например, следующая команда предоставляет владельцу файла доступ для чтения и записи к файлу /archive/datafile. Ни один другой пользователь, кроме root, не сможет обратиться к этому файлу:

$ chmod -v 600 /archive/datafile
mode of '/archive/datafile' changed to 0600 (rw-)

В следующем примере владелец файла /shared/list разрешает его чтение всем желающим, но изменения в файл могут вноситься только владельцем файла и root:

$ chmod -v 644 /shared/list
mode of '/shared/list' changed to 0644 (rw-r--r--)

Чтобы сценарий можно было запустить, в атрибутах файла необходимо установить бит исполнения. Следующая команда разрешает редактирование сценария только пользователю, а чтение и исполнение — всем желающим:

$ chmod 755 /shared/somescript

У каталогов бит исполнения всегда должен быть установлен, иначе они не будут работать:

$ chmod 755 /shared

Назначение разрешений каталогу со всем содержимым, включая подкаталоги, производится с ключом -R. Ключ -v включает режим подробного вывода, чтобы вы видели, какие действия выполняет команда:

$ chmod -R -v 755 /shared

Комментарий

Файловые разрешения вычисляются по табл. 9.2. Просуммируйте нужные значения для каждого типа пользователей, а затем перечислите их в порядке следования в таблице: владелец, группа, прочие. Специальные биты рассматриваются в разделе 9.7.

Таблица 9.2. Вычисление файловых разрешений

РазрешениеЧисловое значение
Чтение (read)4
Запись (write)2
Исполнение (execute)1

Специальные биты:

БитЧисловое значение
setuid4
setgid2
sticky1

См. также

info chmod.