Linux

Настройка прав доступа к файлам в Linux: пошаговый гайд

Разберёмся, как работает система прав доступа в Linux и какие команды использовать для точной настройки разрешений. Вы научитесь безопасно управлять файлами и каталогами без ошибок доступа.

Обновлено 6 апреля 2026 г.
10-15 мин
Средняя
FixPedia Team
Применимо к:Ubuntu 20.04+Debian 11+CentOS / RHEL 8+Fedora 36+

Введение / Зачем это нужно

Система прав доступа в Linux — фундамент безопасности сервера и рабочей станции. Без её понимания легко столкнуться с ошибкой Permission denied или случайно открыть доступ к конфигурационным файлам всему серверу. После выполнения этого гайда вы сможете точно управлять тем, кто может читать, изменять или запускать ваши файлы, используя терминал без сторонних утилит. Вы научитесь читать разрешения, применять их массово и автоматизировать создание защищённых объектов.

Требования / Подготовка

  • Доступ к терминалу (локально или по SSH).
  • Права суперпользователя (sudo) для изменения прав системных файлов или смены владельца.
  • Базовое понимание структуры файловой системы Linux. Все команды проверены на современных дистрибутивах на базе ядра 5.15+.

Шаг 1: Анализируем текущие права доступа

Перед изменениями нужно понять текущее состояние. Выполните команду ls -la в нужной директории. Вы увидите вывод вроде:

-rwxr-xr-- 1 admin users 4096 апр  5 14:20 report.txt

Разберём структуру:

  • Первый символ: - (файл), d (директория) или l (символическая ссылка).
  • Следующие 9 символов делятся на три тройки: права владельца, группы и всех остальных. r — чтение, w — запись, x — выполнение, - — отсутствие права.
  • Далее идут имя владельца, имя группы, размер и дата изменения.

Запомните: система проверяет права строго слева направо. Совпадение идёт по цепочке: владелец → группа → остальные. Если вы владелец, права для группы и остальных игнорируются.

Шаг 2: Настраиваем разрешения через chmod

Для изменения разрешений используется утилита chmod. Работать можно в символьном или числовом режиме. Числовой точнее и быстрее для пакетных изменений. Цифры соответствуют сумме битов: r=4, w=2, x=1. Например, 7 (4+2+1) даёт полные права, 5 (4+0+1) — чтение и выполнение.

# Дать владельцу чтение/запись/выполнение, группе и остальным только чтение
chmod 744 my_script.sh

# Добавить право на выполнение только владельцу (символьный режим)
chmod u+x my_script.sh

# Убрать право на запись у группы и остальных
chmod go-w my_script.sh

💡 Совет: Для директорий обычно устанавливают 755 (полные права владельцу, чтение и вход остальным), а для обычных файлов — 644. Это отраслевой стандарт безопасности.

Шаг 3: Меняем владельца и группу файлов

Иногда нужно передать файл другому пользователю или привязать к специфичной группе проекта. Используйте chown (change owner) и chgrp (change group).

# Сменить владельца на user1, группу оставить без изменений
sudo chown user1 файл.txt

# Сменить и владельца, и группу одновременно
sudo chown user1:developers проект/

# Рекурсивно применить ко всем вложенным файлам и папкам
sudo chown -R user1:developers /var/www/html/

⚠️ Важно: Флаг -R (рекурсия) применяет изменения ко всем вложенным объектам. Используйте его с осторожностью в системных директориях вроде /etc или /usr, чтобы не нарушить работу ОС.

Шаг 4: Автоматизируем создание безопасных файлов

По умолчанию Linux создаёт файлы с определённой маской umask. Она определяет, какие биты будут запрещены при создании. Стандартное значение 022 означает, что новые файлы получат права 644, а папки 755.

# Проверить текущую маску
umask

# Временно установить более строгую маску (027 запрещает доступ "остальным")
umask 027

Чтобы сохранить настройку после перезагрузки, добавьте строку umask 022 в конец файла ~/.bashrc или /etc/profile. Все новые сессии будут наследовать это правило.

Проверка результата

После внесения изменений убедитесь, что правила сработали корректно. Снова выполните ls -la /путь/к/файлу и сверьте вывод с ожидаемым. Попробуйте открыть, изменить или запустить файл от имени тестового пользователя, чтобы убедиться в изоляции:

# Тест от имени другого пользователя
sudo -u guest_user cat /путь/к/файлу

Если команда вернёт Permission denied, значит, защита работает. Успешный вывод текста подтвердит, что доступ настроен верно.

Возможные проблемы

  • Права не меняются и появляется Operation not permitted: Файл может быть защищён атрибутом immutable. Снимите его командой sudo chattr -i файл, измените права и верните защиту sudo chattr +i файл.
  • Изменения не применяются рекурсивно или ломают структуру: Убедитесь, что используете регистр -R правильно. Для сложных сценариев лучше использовать find с флагом -exec, чтобы отдельно обрабатывать файлы и директории: find . -type f -exec chmod 644 {} +.
  • Скрипт запускается, но терминал выдаёт bad interpreter: Это не ошибка прав, а проблема с кодировкой или интерпретатором. Проверьте первую строку файла (#!/bin/bash) и формат переноса строк (должен быть LF, а не CRLF).

Часто задаваемые вопросы

Что означает ошибка Permission denied при запуске скрипта?
Чем отличается `chown` от `chmod`?
Безопасно ли использовать `chmod 777` для каталогов?

Полезное

Просмотр текущих прав
Изменение прав доступа
Смена владельца и группы
Настройка umask по умолчанию

Эта статья помогла вам решить проблему?