- Home »

Как задавать права доступа в Linux
Если ты когда-нибудь сталкивался с Linux — а если ты читаешь этот пост, то наверняка сталкивался — то знаешь, что права доступа тут не просто формальность, а фундаментальная штука. Без правильной настройки прав твой сервер может превратиться в проходной двор или, наоборот, в неприступную крепость, где даже ты сам не сможешь ничего сделать. В этой статье разберём, как устроены права доступа в Linux, как их быстро и правильно настраивать, и какие грабли тут встречаются чаще всего. Будет много практики, примеры, схемы, лайфхаки и даже немного магии автоматизации. Если хочешь, чтобы твой сервер был и надёжным, и удобным — читай до конца.
Как это работает? — Внутренности прав доступа в Linux
Всё начинается с того, что в Linux каждый файл и каталог имеет три типа прав: для владельца (user), для группы (group) и для всех остальных (others). Для каждой из этих категорий можно задать три действия: чтение (r), запись (w) и выполнение (x). В сумме — девять флагов, которые определяют, кто и что может делать с файлом.
- Чтение (r) — можно просматривать содержимое файла или список файлов в каталоге.
- Запись (w) — можно изменять файл или добавлять/удалять файлы в каталоге.
- Выполнение (x) — можно запускать файл как программу или заходить в каталог.
Права отображаются в виде строки из 10 символов, например: -rwxr-xr--
. Первый символ — тип файла (-
для обычного файла, d
для каталога), дальше идут три триады прав: для владельца, группы и остальных.
Всё это можно посмотреть командой:
ls -l
Результат будет примерно такой:
-rw-r--r-- 1 user group 4096 Jun 1 12:34 example.txt
Здесь rw-
— права владельца (чтение и запись), r--
— права группы (только чтение), r--
— права остальных (тоже только чтение).
Как быстро и просто всё настроить?
Всё управление правами в Linux крутится вокруг двух команд: chmod
(смена прав) и chown
(смена владельца/группы). Есть ещё chgrp
, но она нужна реже — для смены только группы.
chmod — твой главный инструмент
chmod
позволяет задавать права двумя способами: символьным (буквы) и числовым (октальный режим). Второй — любимый всеми гиками, потому что быстрее и короче.
- Символьный способ:
chmod u+x file.sh
— добавить владельцу право на выполнение. - Числовой способ:
chmod 755 file.sh
— установить права rwxr-xr-x.
Как работает числовой режим? Каждое право — это бит:
- Чтение (r) — 4
- Запись (w) — 2
- Выполнение (x) — 1
Суммируем для каждой триады:
Владелец | Группа | Остальные | Числовое значение | Права |
---|---|---|---|---|
rwx | r-x | r-x | 755 | Чтение, запись, выполнение для владельца; чтение и выполнение для остальных |
rw- | r– | r– | 644 | Чтение и запись для владельца; только чтение для остальных |
rwx | rwx | rwx | 777 | Полный доступ для всех (опасно!) |
Для каталогов всё то же самое, но чтобы зайти в каталог, нужно право на выполнение (x
).
chown и chgrp — меняем владельца и группу
Иногда нужно не только поменять права, но и владельца или группу файла. Для этого:
chown newuser:newgroup file.txt
или только группу:
chgrp newgroup file.txt
Если нужно рекурсивно (для всех файлов в каталоге):
chown -R newuser:newgroup /path/to/dir
chmod -R 755 /path/to/dir
Примеры, схемы, практические советы
Положительный кейс: безопасный веб-сервер
Ты поднимаешь сайт на VPS (кстати, если ищешь хороший вариант — вот тут). Важно, чтобы веб-сервер (например, nginx или apache) мог читать файлы сайта, но не мог их менять. Для этого:
chown -R www-data:www-data /var/www/html
chmod -R 755 /var/www/html
Это даст право на чтение и выполнение (для каталогов) всем, но только владелец (www-data) сможет что-то менять. Если сайт должен загружать файлы, для папки upload можно дать права на запись:
chmod 775 /var/www/html/upload
Отрицательный кейс: chmod 777 — зло
Самая частая ошибка новичков: если что-то не работает, дать всем полный доступ:
chmod -R 777 /var/www/html
Это открывает файлы для записи и выполнения вообще всем пользователям системы. Если на сервере есть другие пользователи или процессы, они могут делать с файлами что угодно. В худшем случае — получить доступ к конфиденциальным данным или внедрить вредоносный код.
Рекомендация: Никогда не используйте 777 без крайней необходимости. Лучше разобраться, кто и какие права реально нужны.
Таблица сравнения: когда какие права использовать
Сценарий | Рекомендуемые права | Пояснение |
---|---|---|
Конфигурационные файлы | 600 или 640 | Только владелец (или группа) может читать/писать |
Веб-контент | 644 (файлы), 755 (каталоги) | Чтение для всех, запись только для владельца |
Скрипты, исполняемые файлы | 750 или 755 | Выполнение для владельца (и, если нужно, для группы/всех) |
Временные каталоги (upload) | 770 или 775 | Запись для владельца и группы |
Практические советы
- Проверяй права перед деплоем:
find . -type f -perm 777
— покажет все файлы с опасными правами. - Используй
umask
для задания прав по умолчанию при создании новых файлов. - Для автоматизации — добавь команды
chmod
иchown
в скрипты деплоя. - Не забывай про скрытые файлы (начинаются с точки) — у них тоже должны быть правильные права.
Расширенные возможности: setuid, setgid, sticky bit
Для гиков и тех, кто хочет больше контроля, есть специальные флаги:
- setuid (s) — запуск программы с правами владельца файла (часто используется для системных утилит).
- setgid (s) — запуск с правами группы файла или автоматическое присвоение группы новым файлам в каталоге.
- sticky bit (t) — только владелец файла может его удалить из каталога (например, /tmp).
Пример установки sticky bit:
chmod +t /tmp
Аналогично для setuid/setgid:
chmod u+s /usr/bin/somebinary
chmod g+s /var/shared
Подробнее — официальная документация GNU.
Автоматизация и скрипты: новые возможности
Когда ты понимаешь, как работают права, можно автоматизировать рутину:
- Пишешь скрипты деплоя, которые сами выставляют нужные права и владельцев.
- Используешь
find
для массового изменения прав:
find /var/www -type d -exec chmod 755 {} \;
find /var/www -type f -exec chmod 644 {} \;
- Встраиваешь проверки прав в CI/CD пайплайны (например, через
ls -lR
и анализ вывода). - Используешь
ACL
(Access Control Lists) для более гибкой настройки (например, дать доступ отдельному пользователю без смены группы):
setfacl -m u:username:rwx file.txt
Подробнее — man acl.
Сравнение с другими системами и интересные факты
- В Windows права доступа реализованы через ACL, и они гораздо сложнее (и запутаннее), чем в Linux. Но в Linux всё можно сделать одной строкой.
- В macOS (тоже Unix-like) права работают почти так же, но есть свои нюансы с владельцами и группами.
- В современных файловых системах (например, ext4, xfs, btrfs) поддерживаются расширенные ACL, что позволяет делать тонкую настройку доступа.
- Интересный факт: если у файла нет права на выполнение, даже root не сможет его запустить напрямую (но сможет поменять права).
- Можно сделать “ловушку” для злоумышленников, создав каталог с правами 700 и sticky bit — никто, кроме владельца, не сможет удалить или изменить файлы.
Программы и утилиты для управления правами
- Midnight Commander (mc) — удобный файловый менеджер, где можно менять права через интерфейс (F9 → Файл → Изменить права).
- ranger — консольный файловый менеджер с поддержкой изменения прав.
- setfacl/getfacl — для работы с ACL.
- lsattr/chattr — для управления атрибутами файлов (например, сделать файл неизменяемым).
Вывод — заключение и рекомендации
Права доступа в Linux — это не просто формальность, а мощный инструмент для защиты и управления сервером. Грамотно настроенные права позволяют избежать кучи проблем: от случайного удаления файлов до взлома сайта. Используй chmod
, chown
, chgrp
и не забывай про расширенные возможности вроде ACL и специальных флагов. Автоматизируй рутину с помощью скриптов и интегрируй проверки в свои пайплайны. Не гонись за универсальными решениями вроде 777 — лучше потрать пару минут на анализ, чем потом разгребать последствия.
Если ты только начинаешь работать с серверами, рекомендую поэкспериментировать на тестовой машине или VPS (например, тут). Для более серьёзных задач — выделенный сервер (ссылка). В любом случае, понимание прав доступа — это must-have для любого админа, девопса или просто человека, который хочет держать свой сервер под контролем.
Прокачивай свои навыки, не бойся экспериментировать и помни: правильные права — залог безопасности и стабильности твоего Linux-сервера.
В этой статье собрана информация и материалы из различных интернет-источников. Мы признаем и ценим работу всех оригинальных авторов, издателей и веб-сайтов. Несмотря на то, что были приложены все усилия для надлежащего указания исходного материала, любая непреднамеренная оплошность или упущение не являются нарушением авторских прав. Все упомянутые товарные знаки, логотипы и изображения являются собственностью соответствующих владельцев. Если вы считаете, что какой-либо контент, использованный в этой статье, нарушает ваши авторские права, немедленно свяжитесь с нами для рассмотрения и принятия оперативных мер.
Данная статья предназначена исключительно для ознакомительных и образовательных целей и не ущемляет права правообладателей. Если какой-либо материал, защищенный авторским правом, был использован без должного упоминания или с нарушением законов об авторском праве, это непреднамеренно, и мы исправим это незамедлительно после уведомления. Обратите внимание, что переиздание, распространение или воспроизведение части или всего содержимого в любой форме запрещено без письменного разрешения автора и владельца веб-сайта. Для получения разрешений или дополнительных запросов, пожалуйста, свяжитесь с нами.