Права доступа к файлам, то есть контроль доступа к файлам и каталогам (папкам), крайне важны. Если ты писал собственные Bash-скрипты, скорее всего, уже сбился со счёта, сколько раз вводил команду chmod +x myscript.sh. При выполнении задач системного администрирования тебе необходимо хорошо знать команды su и sudo.
Время от времени может понадобиться освежить знания о правах доступа. На работе, например, нужно защищать конфиденциальные данные от посторонних глаз на сервере компании, который зачастую работает под управлением Linux. Кроме того, представь себе возможные убытки, если не удастся предотвратить случайные изменения критически важных файлов или злонамеренные действия.
Эта шпаргалка по правам доступа в Linux — именно то, что тебе нужно. В ней рассматриваются типы прав доступа, категории пользователей, к которым они применяются, команды chmod, su/sudo и другие связанные команды Linux.
Права доступа
Следующие команды отображают права доступа к файлам и каталогам:
| Команда | Описание |
|---|---|
ls -l foo.sh |
Проверить права доступа к файлу foo.sh |
ls -ld bar |
Проверить права доступа к каталогуbar |

Права доступа, область действия и сведения о файле при выполнении команд ls -l или ls -ld

Права доступа в символьной нотации
Права на файлы и каталоги охватывают четыре области:
| Область действия | Символ | Описание |
|---|---|---|
| User | u |
Владелец файла или каталога |
| Group | g |
Группа пользователей, которые могут получить доступ к файлу или каталогу |
| Other | o |
Другие пользователи (мир) |
| All | a |
Все пользователи |
Права доступа к файлам
| Тип разрешения | Символ | Если файл имеет это разрешение, вы можете: | Если каталог имеет это разрешение, вы можете: |
|---|---|---|---|
| Читать | r |
Открытие и просмотр содержимого файлов (команды cat, head, tail) |
Просмотр содержимого каталога (команды ls, du) |
| Написать | w |
Редактирование, удаление или переименование файла (с помощью vi) |
Редактирование, удаление или переименование каталога и файлов внутри него; создание файлов внутри него (команда touch) |
| Выполнить | x |
Запустите файл. | Вход в каталог (команда cd); без права x (исполнение) права r (чтение) и w (запись) на каталог бесполезны. |
| Ничего | - |
Ничего | Ничего |
Команды, связанные с правами доступа
| Команда | Описание |
|---|---|
chmod permission foo |
Изменить права доступа к файлу или каталогу foo в соответствии с заданными правами в символьной или восьмеричной нотации. Примеры: |
chmod +x foo |
Выдать права на выполнение для всех пользователей на файл foo с использованием символьной нотации. |
chmod 777 foo |
Выдать права на чтение, запись и выполнение для всех пользователей на файл foo с использованием восьмеричной нотации. |
chown user2 foo |
Изменить владельца файла foo на пользователя user2. |
chgrp group2 foo |
Изменить группу, к которой принадлежит файл foo, на group2. |
umask |
Получите четырёхзначное вычитаемое. Напомните себе: уменьшаемое – вычитаемое = разность. Если уменьшаемое — 777, разность — это ваши права доступа по умолчанию для каталогов; если уменьшаемое — 666, разность — это ваши права доступа по умолчанию для файлов. |
su / sudo / sudo -i |
Вызов привилегий суперпользователя. |
id |
Узнать свой идентификатор пользователя (UID) и идентификатор группы (GID). |
groups |
Найти все группы, к которым ты принадлежишь. |
Если ты выполняешь команду, выходящую за пределы предоставленных прав, ты получишь ошибки вроде «Permission denied» (доступ запрещён) или «Operation not permitted» (операция не разрешена).
Изменение прав доступа
Существует два способа представления прав доступа в командной строке. Первый аргумент команды chmod поддерживает оба формата.
| Метод | Формат разрешения | Примеры | Применение, не связанное с использованием chmod |
|---|---|---|---|
| Символьная нотация | Короткая текстовая строка, состоящая из одного символа из набора [u/g/o/a], одного символа операции из набора [+/-/=] и как минимум одного символа из [r/w/x]. Если опустить u/g/o/a, по умолчанию используется a. |
u+rg-wxo=rx+x (i.e., a+x) |
Вывод команд ls -l и ls -ld, например:-rwxrw-r--xЗдесь символ - обозначает отсутствие, а не удаление, права доступа. |
| Восьмеричная нотация | Трёхзначное восьмеричное число в диапазоне от 000 до 777 | 774 |
Вычисление прав доступа по умолчанию с помощью umask |
Символьная нотация
Эта нотация используется в выводе команд ls -l и ls -ld. Она сочетает символы u/g/o/a (обозначающие область действия), знаки +/-/= и права r/w/x для изменения доступа. Если u/g/o/a опущены, по умолчанию используется a.
Знаки +/-/= означают: предоставление / удаление / установка конкретных прав.
Вот несколько примеров использования команды chmod с символьной нотацией. Можно изменять сразу несколько прав, объединив выражения через запятую (,) — как показано в четвёртом примере ниже.
| Команда в символьной нотации | Изменение прав пользователя (u) | Изменение прав группы (g) | Изменение прав для остальных (o) пользователей |
|---|---|---|---|
chmod +x foo |
✓ Выполнить | ✓ Выполнить | ✓ Выполнить |
chmod a=x foo |
☐ Чтение ☐ Записать ✓ Выполнить |
☐ Чтение ☐ Записать ✓ Выполнить |
☐ Чтение ☐ Записать ✓ Выполнить |
chmod u-w foo |
☐ Записать | (Без изменений) | (Без изменений) |
chmod u+wx,g-x,o=rx foo |
✓ Записать ✓ Выполнить |
☐ Выполнить | ✓ Чтение ☐ Записать ✓ Выполнить |
Восьмеричная нотация
Эта нотация представляет собой трёхзначное число, где каждая цифра обозначает права доступа как сумму слагаемых 4, 2 и 1, соответствующих правам чтения (r), записи (w) и выполнения (x) соответственно.
- Первая цифра относится к пользователю (владельцу) (
u). - Вторая цифра — к группе (
g). - Третья цифра — к остальным пользователям (
o).
| Восьмеричная цифра | Предоставленные права доступа | Символ |
|---|---|---|
| 0 | Нет (отсутствуют) | [u/g/o]-rwx |
| 1 | Только право на выполнение | [u/g/o]=x |
| 2 | Только право на запись | [u/g/o]=w |
| 3 | Только права на запись и выполнение: 2 + 1 = 3 | [u/g/o]=wx |
| 4 | Только для чтения | [u/g/o]=r |
| 5 | Только права на чтение и выполнение: 4 + 1 = 5 | [u/g/o]=rx |
| 6 | Только права на чтение и запись: 4 + 2 = 6 | [u/g/o]=rw |
| 7 | Все разрешения: 4 + 2 + 1 = 7 | [u/g/o]=rwx |
Вот несколько примеров использования команды chmod с восьмеричной нотацией:
| Команда в восьмеричной нотации | Изменение прав пользователя (u) | Изменение прав группы (g) | Изменение прав для остальных пользователей (o) |
|---|---|---|---|
chmod 777 foo |
✓ Чтение ✓ Записать ✓ Выполнить |
✓ Чтение ✓ Записать ✓ Выполнить |
✓ Чтение ✓ Записать ✓ Выполнить |
chmod 501 foo |
✓ Чтение ☐ Записать ✓ Выполнить |
☐ Чтение ☐ Записать ☐ Выполнить |
☐ Чтение ☐ Записать ✓ Выполнить |
chmod 365 foo |
☐ Чтение ✓ Записать ✓ Выполнить |
✓ Чтение ✓ Записать ☐ Выполнить |
✓ Чтение ☐ Записать ✓ Выполнить |
chmod 177 foo |
☐ Чтение ☐ Записать ✓ Выполнить |
✓ Чтение ✓ Записать ✓ Выполнить |
✓ Чтение ✓ Записать ✓ Выполнить |
Преобразование между символьной и восьмеричной нотациями
Чтобы визуализировать восьмеричную нотацию, можно представить отображение ↔ как соответствие между символьной нотацией и двоичной записью (0 = доступ запрещён, 1 = доступ разрешён), а ⇔ — как преобразование между двоичной и восьмеричной системами счисления. Получается:
r↔100₂⇔4₈,w↔010₂⇔2₈,x↔001₂⇔1₈.
Таким образом, каждая комбинация прав r, w и x соответствует уникальной сумме их числовых значений. Например, полные права rwx ↔ 111 111 111₂ ⇔ 777₈, как показано ниже:
Символьная нотация (вывод команды ls -l) |
Двоичное представление | Восьмеричная нотация |
|---|---|---|
rwxr-xr-x |
111 101 101 |
755 |
rw-r--r-- |
110 100 100 |
644 |
rwx------ |
111 000 000 |
700 |
r-xr-xr-x |
101 101 101 |
555 |
Права доступа по умолчанию
Помимо того, что восьмеричная нотация является альтернативой символьной, она имеет особое применение в команде umask.
Чтобы узнать, какие права установлены у тебя как у текущего пользователя, используй команду umask, чтобы получить четырёхзначное число. Если вычесть его из 0777, ты получишь права доступа по умолчанию для создания каталога; если вычесть из 0666, — права по умолчанию для создания файла.
Пример использования:
| Команда | Описание |
|---|---|
umask |
Узнай свои права доступа по умолчанию для пользователя и группы при создании нового файла или каталога. |
Примеры:
Вывод команды umask |
Права доступа к каталогам по умолчанию | Права доступа к файлам по умолчанию |
|---|---|---|
| 0002 | Восьмерично:777 – 2 = 775Символьно: rwxrwxr-x |
Восьмерично:666 – 2 = 664Символьно: rw-rw-r-- |
| 0022 | Восьмерично:777 – 22 = 755Символьно: rwxr-xr-x |
Восьмерично:666 – 22 = 644Символьно: rw-r--r-- |
| 0314 | Восьмерично:777 – 314 = 463Символьно: r--rw–wx |
Восьмерично:666 – 314 = 352Символьно: -wxr-x-w- |
Изменение владельца
Прежде чем изменить владельца файла или каталога, нужно понимать, как система идентифицирует пользователей и группы. Для этого полезны команды id и groups.
Пример использования:
| Команда | Описание |
|---|---|
id |
Узнай свой идентификатор пользователя (UID) и идентификатор группы (GID) |
groups |
Узнай, к каким группам принадлежит твой пользователь |
Пример:
Вывод команды id |
Описание |
|---|---|
uid=501(teacher) gid=20(staff) groups=20(staff),12(everyone),61(localaccounts) |
Твой пользователь id ( uid) is 501.Твой пользователь id ( gid) is 20.Твой пользователь принадлежит трём группам: staff, everyone and localaccounts. |
groups output |
Описание |
staff everyone localaccounts |
Твой пользователь входит в три группы:staff, everyone and localaccounts. |
Суперпользователь
Большинство дистрибутивов Linux содержат программу, которая позволяет получить доступ к терминалу от имени суперпользователя (root). Эта программа помогает опытным пользователям выполнять задачи системного администрирования.
Существует два способа вызвать эту программу: команда su (сокращение от substitute user) для открытия отдельного shell под root, и команда sudo для выполнения команд с правами суперпользователя напрямую. В обоих случаях потребуется ввести пароль суперпользователя для продолжения выполнения задачи.
В современных дистрибутивах пароль для root-пользователя обычно не задаётся, поэтому в таких случаях используют команду sudo -i, чтобы войти в shell от имени root.
Символ командной строки меняется с $ на # в root-оболочке. Это напоминание о том, что с большой силой приходит большая ответственность. Чтобы выйти из оболочки root, используй команду exit.
| Команда (включая символ оболочки) | Символ) Описание команды |
Вывод приглашения и (нового) символа оболочки |
|---|---|---|
$ su |
Вызов оболочки суперпользователя | Password: # |
$ sudo some_command |
Выполнение команды some_command с привилегиями суперпользователя |
Password:$ |
$ sudo -i |
Вызов оболочки суперпользователя, если su отключён |
Password:# |
Используй команды суперпользователя с осторожностью.
Изменение владельца файла
Если у тебя есть права суперпользователя, ты можешь изменить владельца (пользователя) файла или каталога с помощью команды chown. Если ты знаешь UID нового владельца, вместо user2 можно также указать соответствующий UID.
| Команда | Описание |
|---|---|
sudo chown user2 foo |
Передать право владения файлом foo пользователю user2 |
sudo chown 102 foo |
Передать право владения файлом foo пользователю с UID=102 |
Изменение группы-владельца
Если ты являешься владельцем файла или каталога, ты можешь изменить группу-владельца с помощью команды chgrp.
| Команда | Описание |
|---|---|
chgrp group2 foo |
Передать право собственности на файл/каталог foo группе group2 |
chgrp 2 foo |
Передать право собственности на файл/каталог foo группе с GID=2 |
sudo chown user2:group2 foo |
(Требуются привилегии суперпользователя) Одновременно изменить владельца и группу файла на user2 и group2 соответственно |




















