- Home »

Введение в права доступа в Linux
Если ты только начинаешь разбираться с Linux-серверами, то, скорее всего, уже сталкивался с загадочными rwxr-xr-x, chmod 755, chown root:root и прочими штуками, которые выглядят как магия из старых манускриптов. Но на самом деле — это не магия, а система прав доступа, которая защищает твой сервер от случайных (и не очень) косяков, а иногда и от самого себя. В этой статье разберёмся, как устроены права доступа в Linux, почему это важно, как быстро и просто всё настроить, и как не наступить на грабли, которые уже проверили на себе тысячи админов. Будет много практики, примеры, схемы, кейсы и даже немного гиковских лайфхаков. Погнали!
Как это работает? — Простыми словами о правах доступа в Linux
Всё в Linux — это файл. Даже процессы, устройства и каталоги. И у каждого файла есть три важных параметра: владелец (user), группа (group) и остальные (others). Для каждого из них можно задать три типа прав:
- r — read (чтение)
- w — write (запись)
- x — execute (исполнение)
Выглядит это примерно так:
-rwxr-xr-- 1 user group 4096 Jun 1 12:34 myscript.sh
Что это значит?
- user (владелец) — может читать, писать и запускать файл
- group (группа) — может читать и запускать, но не писать
- others (остальные) — могут только читать
Права доступа — это твой первый и самый важный firewall. Если ты не хочешь, чтобы кто-то случайно (или специально) удалил твой сайт, базу данных или скрипт, — правильно настраивай права. Это не только про безопасность, но и про удобство: если у тебя есть команда, ты можешь дать каждому ровно столько доступа, сколько нужно для работы, и не больше.
Как быстро и просто всё настроить?
Окей, теория — это хорошо, но как этим пользоваться на практике? Вот тебе пошаговый гайд, который реально работает.
1. Проверяем текущие права
ls -l /путь/к/файлу_или_каталогу
Ты увидишь что-то вроде:
drwxr-x--- 2 admin www-data 4096 Jun 1 12:34 /var/www/html
2. Меняем права доступа (chmod)
Команда chmod позволяет быстро выставить нужные права. Есть два способа: символьный и числовой.
- Символьный:
chmod u+x myscript.sh
— добавить право на исполнение владельцу - Числовой:
chmod 755 myscript.sh
— rwxr-xr-x (владелец: всё, группа и остальные: только чтение и исполнение)
Таблица соответствия числовых и символьных прав:
Число | Права | Описание |
---|---|---|
7 | rwx | Чтение, запись, исполнение |
6 | rw- | Чтение, запись |
5 | r-x | Чтение, исполнение |
4 | r– | Только чтение |
0 | — | Нет доступа |
3. Меняем владельца и группу (chown, chgrp)
chown user:group /путь/к/файлу
chgrp group /путь/к/файлу
Это важно, если ты хочешь, чтобы, например, веб-сервер (обычно www-data) мог читать твои файлы, но не мог их менять.
4. Рекурсивное изменение прав
chmod -R 755 /var/www/html
chown -R www-data:www-data /var/www/html
Внимание! Не делай chmod -R 777 /
— это мгновенный билет в ад для любого сервера. Подробнее — ниже в кейсах.
Примеры, схемы, практические советы
Кейс 1: Веб-сервер и права на сайт
Ты разворачиваешь сайт на VPS (заказать VPS). Файлы сайта лежат в /var/www/html
. Веб-сервер работает от пользователя www-data
.
- Правильно:
chown -R www-data:www-data /var/www/html
иchmod -R 755 /var/www/html
- Почему: Веб-сервер может читать и исполнять файлы, но не может их менять (если не нужно).
- Неправильно:
chmod -R 777 /var/www/html
- Почему плохо: Любой пользователь (и любой скрипт) может делать с файлами что угодно. Это дыра в безопасности размером с Марс.
Кейс 2: Разработка и деплой
У тебя есть команда разработчиков, которые пушат код через git. Ты хочешь, чтобы они могли обновлять файлы, но не могли менять конфиги сервера.
- Создай группу
devs
и добавь туда всех разработчиков. - Сделай
chown -R root:devs /var/www/project
- Дай группе права на запись:
chmod -R 775 /var/www/project
- Конфиги (
/etc/nginx/nginx.conf
) оставь только для root:chmod 600 /etc/nginx/nginx.conf
Результат: Разработчики могут работать с кодом, но не могут случайно (или специально) сломать сервер.
Кейс 3: Ловушка для новичков — chmod 777
Очень часто на форумах советуют: “Не работает? Сделай chmod 777
— и всё заработает!”. Это ловушка.
Действие | Результат | Комментарий |
---|---|---|
chmod 777 /var/www/html | Всё работает, но дырка в безопасности | Любой пользователь и процесс может читать, писать и запускать файлы. Взлом — вопрос времени. |
chmod 755 /var/www/html | Работает только то, что нужно | Владелец может всё, остальные — только читать и запускать. Безопасно. |
Кейс 4: SFTP-доступ для клиента
Клиенту нужен доступ только к папке с его сайтом. Решение:
- Создай пользователя
client1
- Ограничь домашнюю директорию:
usermod -d /var/www/client1 client1
- Поставь права:
chown -R client1:www-data /var/www/client1
иchmod -R 750 /var/www/client1
Результат: Клиент может работать только со своими файлами, не видит чужие сайты.
Полный список команд для работы с правами доступа
# Проверка прав
ls -l /путь/к/файлу
# Изменение прав (символьный и числовой режим)
chmod u+x file.sh
chmod 755 file.sh
# Рекурсивное изменение прав
chmod -R 755 /var/www/html
# Изменение владельца и группы
chown user:group file.txt
chown -R www-data:www-data /var/www/html
# Изменение только группы
chgrp group file.txt
# Проверка владельца и группы
stat file.txt
# Создание пользователя и группы
adduser newuser
groupadd newgroup
usermod -aG newgroup user
# Установка прав только на чтение
chmod 444 file.txt
# Установка прав только на исполнение
chmod 111 file.sh
# Установка прав только на запись
chmod 222 file.txt
Похожие решения, программы и утилиты
- setfacl — расширенные списки контроля доступа (ACL), если стандартных прав мало. Документация
- getfacl — просмотр расширенных прав. Документация
- sudo — временное повышение прав для выполнения команд от имени другого пользователя. Официальный сайт
- su — переключение на другого пользователя (например, root).
- umask — установка маски по умолчанию для новых файлов. man-страница
Статистика и сравнение с другими системами
В отличие от Windows, где права доступа часто запутаны и завязаны на реестр, в Linux всё просто и прозрачно. По статистике W3Techs, более 70% веб-серверов в мире работают на Linux, и грамотная настройка прав — это must-have для любого админа.
В macOS (тоже Unix-подобная система) права работают аналогично, но есть свои нюансы с ACL и системой безопасности SIP.
В FreeBSD и других *nix системах — всё очень похоже, но иногда встречаются дополнительные флаги (например, immutable).
Интересные факты и нестандартные способы использования
- Можно сделать файл неизменяемым даже для root:
chattr +i file.txt
(работает на ext4, подробнее — man chattr). - Можно сделать каталог “sticky” — только владелец файла может его удалить, даже если у всех есть права на запись:
chmod +t /tmp
(см. Sticky bit). - Можно автоматически выставлять группу для новых файлов в каталоге:
chmod g+s /var/www/html
— все новые файлы будут принадлежать группе каталога. - umask — твой друг для автоматизации: если ты часто создаёшь файлы через скрипты, выставь нужную маску прав, чтобы не было сюрпризов.
- Можно использовать ACL для тонкой настройки доступа, например, дать одному пользователю право только на чтение файла, а другому — только на запись.
Новые возможности: автоматизация и скрипты
Грамотная настройка прав — это не только про безопасность, но и про автоматизацию. Если ты пишешь скрипты для деплоя, бэкапов или обслуживания, всегда добавляй команды chmod
и chown
в свои пайплайны. Это поможет избежать ситуаций, когда скрипт работает только под root, а потом ломается у обычного пользователя.
- В Ansible, Chef, Puppet и других системах управления конфигурациями есть модули для работы с правами (
file
,copy
,template
). - Можно автоматически выставлять права при создании новых пользователей или сайтов.
- Можно делать аудит прав с помощью скриптов и утилит (
find / -perm 777
— ищет все файлы с дырявыми правами).
Вывод — заключение и рекомендации
Права доступа в Linux — это твой первый и самый надёжный щит. Не ленись разбираться, не копируй слепо советы с форумов, всегда думай, кому и зачем ты даёшь доступ. Используй chmod
, chown
, setfacl
и другие инструменты для гибкой настройки. Не забывай про автоматизацию — это экономит время и нервы. Если хочешь надёжный сервер для своих проектов — смотри VPS или выделенный сервер на этом блоге.
Прокачивай свои навыки, экспериментируй, не бойся ошибаться (но делай бэкапы!). И помни: правильные права — это не только про безопасность, но и про удобство работы. Удачи!
В этой статье собрана информация и материалы из различных интернет-источников. Мы признаем и ценим работу всех оригинальных авторов, издателей и веб-сайтов. Несмотря на то, что были приложены все усилия для надлежащего указания исходного материала, любая непреднамеренная оплошность или упущение не являются нарушением авторских прав. Все упомянутые товарные знаки, логотипы и изображения являются собственностью соответствующих владельцев. Если вы считаете, что какой-либо контент, использованный в этой статье, нарушает ваши авторские права, немедленно свяжитесь с нами для рассмотрения и принятия оперативных мер.
Данная статья предназначена исключительно для ознакомительных и образовательных целей и не ущемляет права правообладателей. Если какой-либо материал, защищенный авторским правом, был использован без должного упоминания или с нарушением законов об авторском праве, это непреднамеренно, и мы исправим это незамедлительно после уведомления. Обратите внимание, что переиздание, распространение или воспроизведение части или всего содержимого в любой форме запрещено без письменного разрешения автора и владельца веб-сайта. Для получения разрешений или дополнительных запросов, пожалуйста, свяжитесь с нами.