Команда Linux chmod
Команда Linux chmod (полное английское название: change mode) — это команда, которая управляет правами доступа пользователей к файлам.
chmod (change mode) — это команда в системах Linux, используемая для изменения прав доступа к файлам или каталогам. Она управляет правами доступа владельца файла, группы-владельца и других пользователей к файлу.
Только владелец файла и суперпользователь могут изменять права доступа к файлу или каталогу.
Права доступа к файлам в Linux/Unix делятся на три уровня: владелец файла (Owner), группа пользователей (Group) и другие пользователи (Other Users).

Вы можете использовать абсолютный режим (восьмеричный числовой режим) и символьный режим для указания прав доступа к файлам.

Разрешение на использование: Все пользователи
Синтаксис
chmod [选项] 权限模式 文件... chmod [选项] --reference=参考文件 文件...
Общие параметры
- -c : Отображать действие изменения только если права доступа к файлу действительно были изменены
- -f : Не отображать сообщения об ошибках, если права доступа к файлу невозможно изменить
- -v : Отображать подробную информацию об изменениях прав доступа
- -R : Применять те же изменения прав доступа ко всем файлам и подкаталогам в текущем каталоге (то есть изменять их по одному рекурсивно)
- --help : Отображать справочную информацию
- --version : Отображать версию
mode : Строка настройки прав доступа, формат следующий:
Режимы разрешений
1. Символьный режим (ugoa+/- права доступа)
[ugoa...][[+-=][rwxX]...][,...]
Где:
- u обозначает владельца файла, g обозначает тех, кто принадлежит к той же группе, что и владелец файла, o обозначает остальных, а a обозначает все три категории.
- + означает добавление права доступа, - означает удаление права доступа, = означает установку права доступа в точном виде.
- r означает доступ для чтения, w — для записи, x — для выполнения, X — только когда файл является подкаталогом или файл уже сделан исполняемым.
В символьном режиме можно задать несколько элементов: who (тип пользователя), оператор и разрешение. Настройки каждого элемента можно разделять запятыми.
Команда chmod изменяет права доступа к файлу для типов пользователей, указанных в who. Тип пользователя обозначается одной или несколькими буквами в позиции who, как показано в таблице символьного режима who:
| who | Тип пользователя | Описание |
|---|---|---|
| u | user | Владелец файла |
| g | group | Группа владельца файла |
| o | остальные | Все остальные пользователи |
| a | all | Все пользователи, что эквивалентноugo |
Таблица символьного режима для оператора:
| Operator | Описание |
|---|---|
| + | Добавить разрешение указанному типу пользователя |
| - | Удалить разрешение у указанного типа пользователей |
| = | Установить разрешения для указанного типа пользователей, т. е. сбросить все разрешения данного типа пользователей |
Типы разрешений:
| Mode | Name | Описание |
|---|---|---|
| r | read | Установить разрешение на чтение |
| w | write | Установить разрешение на запись |
| x | Разрешение на выполнение | Установить разрешение на выполнение |
| X | Специальное разрешение на выполнение | Устанавливать для файла разрешение на выполнение только в том случае, когда файл является каталогом, или когда другие типы пользователей имеют разрешение на выполнение |
| s | setuid/gid | При выполнении файла устанавливать для файла разрешение setuid или setgid в соответствии с типом пользователя, указанным параметром who |
| t | Липкий бит | Установить липкий бит. Только суперпользователь может установить этот бит, и только владелец файла u может использовать этот бит. |
2. Восьмеричный синтаксис
Команда chmod может использовать восьмеричные числа для указания прав.
| Number | Разрешение |
|---|---|
| 4 | Чтение (r) |
| 2 | Запись (w) |
| 1 | Выполнение (x) |
Комбинация:
- Права владельца (первая цифра)
- Права группы (вторая цифра)
- Права других пользователей (третья цифра)
Распространённые комбинации:
- 755:
rwxr-xr-x - 644:
rw-r--r-- - 700:
rwx------
Права доступа к файлу или каталогу управляются 9 битами прав; каждая группа из трёх битов представляет права на чтение, запись и выполнение для владельца файла (User), права на чтение, запись и выполнение для группы (Group) и права на чтение, запись и выполнение для других пользователей (Other).
| # | Разрешение | rwx | Binary |
|---|---|---|---|
| 7 | Чтение + Запись + Выполнение | rwx | 111 |
| 6 | Чтение + запись | rw- | 110 |
| 5 | Чтение + выполнение | r-x | 101 |
| 4 | Только для чтения | r-- | 100 |
| 3 | Запись + выполнение | -wx | 011 |
| 2 | Только для записи | -w- | 010 |
| 1 | Только выполнение | --x | 001 |
| 0 | Отсутствует | --- | 000 |
Например, 765 будет интерпретировано следующим образом:
- Права владельца выражаются в виде числа: сумма цифр трёх битов прав владельца. Например, rwx означает 4+2+1, что должно быть 7.
- Права группы выражаются в виде числа: сумма цифр битов прав группы. Например, rw- означает 4+2+0, что должно быть 6.
- Права остальных пользователей выражаются в виде числа: сумма цифр битов прав остальных пользователей. Например, r-x означает 4+0+1, что должно быть 5.
Примеры
Сделайте file1.txt доступным для чтения всем:
chmod ugo+r file1.txt
Сделайте file1.txt доступным для чтения всем:
chmod a+r file1.txt
Установите file1.txt и file2.txt так, чтобы владелец файла и члены той же группы могли писать, но остальные не могли писать:
chmod ug+w,o-w file1.txt file2.txt
Добавьте разрешение на выполнение для владельца файла ex1.py:
chmod u+x ex1.py
Сделайте все файлы и подкаталоги в текущем каталоге доступными для чтения всем:
chmod -R a+r *
Кроме того, chmod также может использовать числа для представления разрешений, например:
chmod 777 file
Синтаксис:
chmod abc file
Где a, b, c — числа, представляющие разрешения для пользователя (User), группы (Group) и остальных (Other) соответственно.
r=4,w=2,x=1
- Для атрибутов rwx: 4+2+1=7;
- Для атрибутов rw-: 4+2=6;
- Для атрибутов r-x: 4+1=5.
chmod a=rwx file
и
chmod 777 file
Результат тот же
chmod ug=rwx,o=x file
и
chmod 771 file
Результат тот же
Если использоватьchmod 4755 filenameэто может предоставить программе права root.
Дополнительные примечания
| Команда | Описание |
|---|---|
| chmod a+r file | Добавить разрешение на чтение всем пользователям для файла |
| chmod a-x file | Удалить разрешение на выполнение у всех пользователей для файла |
| chmod a+rw file | Добавить разрешения на чтение и запись всем пользователям для файла |
| chmod +rwx file | Добавить разрешения на чтение, запись и выполнение всем пользователям для файла |
| chmod u=rw,go= file | Установить разрешения на чтение и запись для владельца файла и снять все разрешения для группы и других пользователей на файл (пробел означает отсутствие разрешения) |
| chmod -R u+r,go-r docs | Добавить пользователю разрешение на чтение для всех файлов в каталоге docs и его иерархии подкаталогов и удалить разрешение на чтение для группы и других пользователей |
| chmod 664 file | Установить разрешения на чтение и запись для владельца и группы файла, а также разрешение на чтение для остальных пользователей |
| chmod 0755 file | Эквивалентноu=rwx (4+2+1),go=rx (4+1 & 4+1)。0Нет специального режима. |
| chmod 4755 file | 4Установлен бит set-user-ID, а остальное эквивалентно u=rwx (4+2+1), go=rx (4+1 & 4+1). |
| find path/ -type d -exec chmod a-x {} \; | Удалить разрешение на выполнение для всех пользователей на path/ и всех его каталогах (не включая файлы); используйте '-type f' для сопоставления файлов. |
| find path/ -type d -exec chmod a+x {} \; | Разрешить всем пользователям просматривать или проходить через каталог path/ |
Энциклопедия команд Linux