Home » Как задавать права доступа в Linux
Как задавать права доступа в Linux

Как задавать права доступа в 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-сервера.


В этой статье собрана информация и материалы из различных интернет-источников. Мы признаем и ценим работу всех оригинальных авторов, издателей и веб-сайтов. Несмотря на то, что были приложены все усилия для надлежащего указания исходного материала, любая непреднамеренная оплошность или упущение не являются нарушением авторских прав. Все упомянутые товарные знаки, логотипы и изображения являются собственностью соответствующих владельцев. Если вы считаете, что какой-либо контент, использованный в этой статье, нарушает ваши авторские права, немедленно свяжитесь с нами для рассмотрения и принятия оперативных мер.

Данная статья предназначена исключительно для ознакомительных и образовательных целей и не ущемляет права правообладателей. Если какой-либо материал, защищенный авторским правом, был использован без должного упоминания или с нарушением законов об авторском праве, это непреднамеренно, и мы исправим это незамедлительно после уведомления. Обратите внимание, что переиздание, распространение или воспроизведение части или всего содержимого в любой форме запрещено без письменного разрешения автора и владельца веб-сайта. Для получения разрешений или дополнительных запросов, пожалуйста, свяжитесь с нами.

Leave a reply

Your email address will not be published. Required fields are marked