Введение
В большинстве UNIX-подобных систем по умолчанию используется механизм Discretionary Access Control (DAC), отвечающий за управление правами доступа. Он определяет, какие действия пользователь может выполнять с процессами и файлами. В Linux под файлом понимается практически любой объект системы: устройство, обычный файл, каталог, ссылка и другие типы. Для всех них применяются атрибуты, включающие владельца, группу, тип, размер и дополнительные характеристики. Именно по владельцу и группе можно определить, кто и в каком объёме имеет доступ к конкретному объекту.
Требования
- Права root или эквивалентные;
- Debian 12 или более новая версия;
- Базовое понимание принципов работы операционной системы;
- Активное интернет-соединение.
Разрешения и атрибуты
Посмотреть текущие права доступа и атрибуты файлов в Linux можно с помощью команды:
ls -lЕсли требуется получить информацию только по одному конкретному файлу, используется команда:
ls -l /etc/network/interfacesРазберём, что означает каждая часть вывода:
- В начале отображаются три группы символов — триплеты прав доступа. Первый символ указывает тип объекта: дефис обозначает обычный файл, d — каталог, l — символическую ссылку;
- Следующие символы rw- относятся к владельцу файла и определяют права на чтение, запись и выполнение. Аналогичные триплеты далее описывают права группы и остальных пользователей;
- Число 1 показывает количество жёстких ссылок на файл;
- Значения root root указывают имя владельца и его группу;
- В конце указываются размер файла, дата последнего изменения и его имя.
Каждый файл в системе связан с конкретным пользователем и группой. По умолчанию владельцем становится тот, кто создал файл, а группа назначается автоматически. В Linux права доступа разделяются на три категории: владелец, группа и остальные пользователи. Для каждой из них можно отдельно задать разрешения на чтение, запись и выполнение. Управление этими правами осуществляется с помощью утилиты chmod при наличии соответствующих полномочий.
Права также можно задавать в числовом формате, где каждому действию соответствует значение: 4 — чтение, 2 — запись, 1 — выполнение. Комбинируя их, задают итоговый уровень доступа:
chmod 755 interfacesЕсли требуется полностью закрыть доступ к файлу для всех категорий пользователей, применяется следующая команда:
chmod 000 interfacesКоманда chmod поддерживает не только числовой, но и символьный формат. Например, команда chmod u+w filename добавляет владельцу право на запись. Здесь u обозначает владельца, g — группу, o — остальных пользователей, а a — всех сразу. Символы +, – и = используются для добавления, удаления или точного задания прав.
chmod u+rwx interfaces && chmod go-rwx interfacesАналогичного результата можно добиться, используя оператор равенства:
chmod u=rwx, go= interfacesВ ситуациях, когда необходимо оставить возможность записи для группы и других пользователей, но запретить удаление файлов, применяется sticky bit:
chmod +t interfacesПрактические примеры
Ниже — несколько типовых сценариев, где права доступа в Linux действительно решают: от защиты конфигов до корректной работы веб-сервера и автоматизации.
Пример 1 — Защитить конфигурационный файл (доступ только для root)
Если конфигурация содержит пароли, токены или ключи, логично закрыть её от чтения другими пользователями:
chmod 600 /etc/app/config.confТакой режим оставляет чтение/запись только владельцу (обычно root), а всем остальным запрещает доступ.
Пример 2 — Правильные права для каталога сайта
Частая задача — чтобы владелец мог обновлять файлы, а веб-сервер — только читать их (без права изменять):
chmod 755 /var/www/sitechmod 644 /var/www/site/index.htmlВ итоге каталог доступен для обхода (execute), а файлы — читаются, но не перезаписываются посторонними.
Пример 3 — Сделать скрипт исполняемым
Когда вы добавляете утилиту или деплой-скрипт, ему нужно право на выполнение:
chmod +x deploy.shПроверьте результат:
ls -l deploy.shПример 4 — Общая папка для нескольких пользователей (группа + setgid)
Если несколько пользователей работают в одном каталоге (например, команда DevOps), удобно назначить группу и включить наследование группы для новых файлов:
chgrp -R devops /srv/sharedchmod 2775 /srv/sharedФлаг 2 (setgid) помогает сохранять единый групповой доступ внутри папки — новые файлы будут создаваться с группой devops.
Пример 5 — Защита от удаления в общем каталоге (sticky bit)
Если каталог общий и у всех есть запись, но вы хотите, чтобы каждый мог удалять только свои файлы:
chmod +t /srv/publicЭто типичный подход для временных и общих директорий (аналогично тому, как устроен /tmp).
Типичные ошибки при работе с правами доступа
Ошибки в chmod и правах доступа часто приводят либо к уязвимостям, либо к «сломавшимся» сервисам. Ниже — самые распространённые случаи и как их избежать.
Ошибка 1 — Назначать chmod 777 «на всякий случай»
chmod 777 filenameЭто открывает полные права всем пользователям и процессам — риск подмены файлов, внедрения вредоносного кода и компрометации сервера. Вместо этого задавайте минимально необходимые права, например 644 для файлов и 755 для каталогов.
Ошибка 2 — Убирать execute у каталогов и терять доступ
Для каталогов право x — это возможность «войти» внутрь и просматривать содержимое по пути. Если сделать так:
chmod 644 /var/www/siteкаталог станет недоступен для обхода. Для каталогов обычно используются 755 или 750.
Ошибка 3 — Случайно закрыть конфиг и сломать сервис
Иногда права делают слишком жёсткими, и сервисный пользователь больше не может читать конфигурацию:
chmod 600 /etc/nginx/nginx.confЕсли процесс не запускается под root, он потеряет доступ. Проверьте, под каким пользователем работает сервис, и задавайте права с учётом этого (или корректно настраивайте владельца/группу).
Ошибка 4 — Путать файл и каталог
Одинаковые числа для файлов и каталогов работают по-разному. Например, 644 обычно норм для файла, но для каталога — почти всегда проблема, потому что нет execute.
Ошибка 5 — Не проверять результат после изменений
После chmod лучше сразу убедиться, что права стали именно такими, как нужно:
ls -l /path/to/fileИ если речь о сервисах — перезапустить и проверить статус (например, systemctl status).
Краткий справочник по правам доступа
Права в Linux часто задают в числовом виде: каждое действие имеет «вес», а итоговая цифра получается их суммой.
| Значение | Право | Что означает на практике |
|---|---|---|
| 4 | Чтение (r) | Можно просматривать содержимое файла |
| 2 | Запись (w) | Можно изменять файл или записывать новые данные |
| 1 | Выполнение (x) | Можно запускать файл как программу/скрипт (для каталогов — «входить» внутрь) |
| 7 | rwx (4+2+1) | Полный доступ: чтение, запись и выполнение |
| 6 | rw- (4+2) | Чтение и запись без выполнения |
| 5 | r-x (4+1) | Чтение и выполнение без записи |
| 4 | r– | Только чтение |
| 0 | — | Нет доступа |
Пример: chmod 755 означает: владелец — 7 (rwx), группа — 5 (r-x), остальные — 5 (r-x).
Заключение
Понимание прав доступа и атрибутов файлов в Linux — основа безопасной и стабильной работы серверов. Грамотная настройка разрешений позволяет защитить систему от несанкционированного доступа, минимизировать риски удаления или изменения данных и упростить администрирование. Используя команды ls и chmod, можно гибко управлять доступом к файлам и каталогам, адаптируя систему под конкретные задачи. Эти навыки особенно важны при работе с серверной инфраструктурой, где ошибки в правах доступа напрямую влияют на безопасность и устойчивость всей системы.