chmod
chmod — изменяет права доступа к файлу
ОБЗОР
chmod [опции] режим файл…
Опции POSIX: [-R] [—]
Метод задания прав доступа в стиле GNU: [—reference=rfile]
Опции GNU (краткая форма): [-cfvR] [—help] [—version] [—]
ОПИСАНИЕ
chmod изменяет права доступа каждого указанного файла в соответствии с правами доступа, указанными в параметре режим, который может быть представлен как в символьном виде, так и в виде восьмеричного числа, представляющего битовую маску новых прав доступа.
Формат символьного режима таков:
`[ugoa…][[+-=][rwxXstugo…]…][,…]’.
Каждый аргумент — это список символьных команд изменения прав доступа, разделённых запятыми. Каждая такая команда начинается с нуля или более букв `ugoa’, комбинация которых указывает, чьи права доступа к файлу будут изменены:
пользователя, владеющего файлом (u);
других пользователей в данной группе (g);
других пользователей, не входящих в данную группу (o) или же всех пользователей (a). Буква `a‘ эквивалентна `ugo‘. Если не задана ни одна буква, то автоматически будет использоваться буква `a‘, но биты, установленные в umask, не будут затронуты.
Оператор `+‘ добавляет выбранные права доступа к уже имеющимся у каждого файла;
`—‘ удаляет эти права;
а `=‘ присваивает только эти права каждому указанному файлу.
Буквы `rwxXstugo‘ выбирают новые права доступа для пользователя, заданного одной из букв `ugoa‘:
чтение (r);
запись (w);
выполнение (или доступ к каталогу) (x);
выполнение, если файл является каталогом или уже имеет право на выполнение для какого-нибудь пользователя (X);
setuid- или setgid-биты (s);
sticky-бит (t);
установка для остальных таких же прав доступа, которые имеет пользователь, владеющий этим файлом (u);
установка для остальных таких же прав доступа, которые имеет группа файла (g);
установка для остальных таких же прав доступа, которые имеют остальные пользователи (не входящие в группу файла) (o). (Так, `chmod g-s file’ снимает бит set-group-ID (sgid), `chmod ug+s file’ устанавливает биты suid и sgid, в то время как `chmod o+s file’ ничего не делает).
`sticky-бит’ не описывается в POSIX. Такое специфическое название он получил из-за первоначальной функции, которую он выполнял: сохранял исполняемый код программы на устройстве подкачки. В настоящее время установка sticky-бита для каталога, приводит к тому, что только владелец файла и владелец этого каталога могут удалять этот файл из каталога. (Обычно это используется в каталогах типа /tmp, куда все имеют права на запись).
Числовой режим состоит из не более четырёх восьмеричных цифр (от нуля до семи), которые складываются из битовых масок 4, 2 и 1. Любые пропущенные разряды дополняются лидирующими нулями. Первая цифра выбирает установку идентификатора пользователя (setuid) (4) или идентификатора группы (setgid) (2) или sticky-бита (1). Вторая цифра выбирает права доступа для пользователя, владеющего данным файлом: чтение(4), запись (2) и выполнение (1); третья цифра выбирает права доступа для пользователей, входящих в данную группу, с тем же смыслом, что и у второй цифры; и четвёртый разряд выбирает права доступа для остальных пользователей (не входящих в данную группу), опять с тем же смыслом.
chmod никогда не изменяет права на символьные ссылки, так как этого не умеет делать системный вызов chmod. Это не является проблемой, так как права символьных ссылок никогда не используются. Однако, для каждой символьной ссылки, заданной в командной строке, chmod изменяет права доступа связанного с ней файла. При этом chmod игнорирует символьные ссылки, встречающиеся во время рекурсивной обработки каталогов.
ОПЦИИ POSIX
- -R
- Рекурсивное изменение прав доступа для каталогов и их содержимого.
ДОПОЛНИТЕЛЬНОЕ ОПИСАНИЕ GNU-ВЕРСИИ
Расширение GNU (новое в fileutils 4.0) позволяет использовать опцию —reference=rfile для задания точно таких же прав доступа, как и у файла rfile.
- —
- Завершает список опций.
ОПЦИИ GNU
- -c, —changes
- Подробно описывать действия для каждого файла, чьи права действительно изменяются.
- -f, —silent, —quiet
- Не выдавать сообщения об ошибке для файлов, чьи права не могут быть изменены.
- -v, —verbose
- Подробно описывать действие или отсутствие действия для каждого файла.
- -R, —recursive
- Рекурсивное изменение прав доступа для каталогов и их содержимого.
СТАНДАРТНЫЕ ОПЦИИ GNU
- —help
- Выдать подсказку на стандартный вывод и успешно завершиться.
- —version
- Выдать информацию о версии на стандартный вывод и успешно завершиться.
- —
- Служит для обозначения конца списка опций.
ОКРУЖЕНИЕ
При работе обычным образом используются переменные LANG, LC_ALL, LC_CTYPE и LC_MESSAGES. В системах, соответствующих стандарту XSI, обычным образом используется NLSPATH.
СОВМЕСТИМОСТЬ СО СТАНДАРТАМИ
POSIX 1003.2 требует только опцию -R. Использование других опций может оказаться непереносимым решением. Стандарт POSIX не описывает бит `t’. Этот стандарт не говорит о том, должна ли chmod соблюдать корректность прав доступа к файлу, очищая или отказываясь устанавливать биты suid и sgid, когда биты, дающие права на выполнение, сброшены, а также о том, должна ли вообще chmod обращать внимание на бит `s’.
НЕСТАНДАРТНЫЕ ПРАВА ДОСТУПА
Выше было описано применение бита `t’ для каталогов. Различные системы придают специальное значение комбинациям битов прав доступа, обычно не имеющим смысла. Так, например, в Linux, которая берет пример с System V (см. System V Interface Definition (SVID) Version 3), если на файле установлен бит setgid, но не установлен бит выполнения группой, то блокировки этого файла становятся mandatory (жесткими), в отличие от обычных advisory (информационных). Подробности описаны в файле /usr/src/linux/Documentation/mandatory.txt.
ЗАМЕЧАНИЯ
Данная страница описывает команду chmod, которая находится в пакете fileutils-4.0; другие версии могут иметь небольшие отличия. Добавления и исправления отправляйте по адресу aeb@cwi.nl. Сообщения об ошибках в программах отправляйте по адресу fileutils-bugs@gnu.ai.mit.edu.
СМОТРИ ТАКЖЕ
chattr(1), chown(1), install(1), chmod(2), stat(2), umask(2)
ПЕРЕВОД
Перевёл с английского Виктор Вислобоков <corochoone@perm.ru> 2003