Команда Linux chmod

Linux 命令大全Энциклопедия команд Linux

Команда 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 命令大全Энциклопедия команд Linux

Другие расширения