
Команда chmod: Ваш путеводитель по управлению правами доступа
В мире Linux и серверного администрирования безопасность и контроль являются ключевыми. Одним из самых первых и важнейших инструментов, которые вы должны освоить, является команда chmod
. Если вы уже знакомы с основами работы в терминале, о которых мы говорили в нашей предыдущей статье об интерфейсе командной строки, то пора сделать следующий шаг.
Эта статья – ваш подробный путеводитель по команде chmod
. Мы разберем, что такое права доступа, как их читать и, самое главное, как их изменять с помощью двух мощных режимов: символьного и цифрового.
Что такое право доступа к файлам?
Каждый файл и каждая папка в Linux-подобных системах имеет набор флагов, определяющих, кто и что может с ними делать. Это и есть права доступа. Чтобы их увидеть, достаточно выполнить команду ls -l
в терминале.
$ls -l -rwxr-xr-- 1 user group 4096 июл 27 11:00 script.sh drwxr-xr-x 2 user group 4096 июл 27 11:02 my_folder
Таинственная строка -rwxr-xr--
в начале и является визуальным представлением прав. Она состоит из 10 символов, разбиваемых на четыре части:
- Тип файла (1-й символ):
-
для файла,d
для директории (папки). - Владелец (Owner/User) (2-4 символы): Права для пользователя, создавшего файл.
- Группа (Group) (5-7 символы): Права для пользователей, принадлежащих к группе файлов.
- Другие (Others) (8-10 символы): Права для всех других пользователей системы.
Сами права обозначаются тремя буквами — rwx:
r
(Read) — право на чтение содержимого файла или просмотр списка файлов в папке.w
(Write) — право на изменение (запись) файла или создание/удаление файлов в папке.x
(Execute) — право на выполнение файла (если это скрипт или программа) или вход в папку.
Два режима `chmod`: Символьный и Цифровой
Команда chmod
(от «change mode«) позволяет изменять эти права. Она имеет два основных синтаксиса, и понимание обоих делает вас гибким администратором.
1. Символьный режим: интуитивно понятный
Этот режим использует буквы для обозначения пользователей (u
, g
, o
, a
) и операторы (+
, -
, =
) для изменения прав (r
, w
, x
).
- Пользователи:
u
(user/владелец),g
(group/группа),o
(others/другие),a
(all/все). - Операторы:
+
(добавить право),-
(забрать право),=
(установить конкретные права, перезаписав старые).
Примеры символьного режима:
Добавить право на выполнение файла script.sh
для владельца:
chmod u+x script.sh
Забрать право на запись у всех, кроме владельца, для файла config.txt
:
chmod go-w config.txt
Установить права «чтения и записи» для владельца, и «только чтения» для группы и других:
chmod u=rw,go=r config.txt
2. Цифровой (восьмеричный) режим: быстрый и универсальный
Это самый популярный способ использования chmod
. Он базируется на числах, где каждое право имеет свой вес:
r
(чтение) = 4w
(запись) = 2x
(выполнение) = 1
Чтобы получить нужную комбинацию, вы просто добавляете эти цифры. Например, rwx
= 4+2+1 = 7. Права задаются тремя цифрами – для владельца, группы и других соответственно.
Число | Права (rwx) | Описание |
---|---|---|
0 | --- |
Никаких прав |
1 | --x |
Только выполнение |
2 | -w- | Только запись |
3 | -wx | Запись и выполнение (2+1) |
4 | r-- |
Только чтение |
5 | r-x | Чтение и выполнение (4+1) |
6 | rw- | Чтение и запись (4+2) |
7 | rwx | Полные права (4+2+1) |
Популярные комбинации в цифровом режиме:
chmod 755 my_script.sh
— наиболее частый вариант для скриптов и папок.
- 7 (Владелец):
rwx
— полное право. - 5 (Группа):
r-x
— чтение и выполнение. - 5 (Другие):
r-x
— чтение и выполнение.
chmod 644 index.html
— Стандарт для веб-файлов, которые являются не исполняемыми.
- 6 (Владелец):
rw-
— чтение и запись. - 4 (Группа):
r--
— только чтение. - 4 (Другие):
r--
— только чтение.
Еще один практический пример: Шаги для расчета прав каждой категории пользователей.
Чтобы вычислить права и итоговую цифру, нужно провести небольшую математическую операцию суммирования:
- Если вам нужно установить права на чтение и запись для владельца, тогда: Чтение (4) + Запись (2) =
6
- Если вам нужно установить права на чтение и выполнение для группы, считаем: Чтение (4) + Выполнение (1) =
5
- Если вам нужно установить право на чтение для других, тогда: Чтение (4) =
4
Заджойним итоговые значения: в примере (для владельца 6, для группы 5, а остальных 4) итоговое значение будет = 654
.
💡 Продвинутый уровень: Рекурсивное изменение прав
Иногда нужно изменить права для папки и всех файлов и подпапок внутри нее. Для этого используется флаг -R
(рекурсивно).
ВНИМАНИЕ: Используйте эту опцию с большой осторожностью, поскольку массовое изменение прав может нарушить работу системы или создать угрозу безопасности.
Например, установить права 755
для папки public_html
и всего ее содержимого:
chmod -R 755 public_html/
Правильной практикой является установка прав 755
для папок и 644
для файлов внутри них, что делается с помощью комбинации команд find
и chmod
.
Почему важно правильно настраивать права?
Грамотное использование chmod
дает вам несколько ключевых преимуществ:
- Безопасность: Вы ограничиваете доступ к чувствительным файлам (например, файлам конфигурации с паролями), позволяя их читать только владельцу.
- Контроль: Вы четко определяете, кто может изменять файлы, предотвращая случайные или злонамеренные редактирования.
- Функциональность: Веб-серверы и скрипты просто не будут работать без корректно выставленных прав на выполнение и чтение.
- Порядок: Это основа правильной организации файловой структуры в многопользовательских системах.
Вместо вывода
Команда chmod
— это не просто утилита, это фундаментальный механизм контроля в Linux. Овладев символьным и цифровым режимами, вы сможете гибко и эффективно управлять безопасностью ваших файлов и директорий. Начните с простых примеров, например chmod 644
для текстовых файлов и chmod 755
для скриптов, и постепенно к вам придет чувство полного контроля над своей системой.