Linux

Управление пользовательскими разрешениями в Linux: пошаговое руководство

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

Обновлено 16 февраля 2026 г.
10-15 мин
Средняя
FixPedia Team
Применимо к:Ubuntu 20.04+Debian 10+CentOS 7+Fedora 30+

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

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

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

Перед началом убедитесь, что у вас есть:

  • Доступ к терминалу Linux (физическая машина, виртуальная среда или WSL).
  • Базовые навыки работы с командной строкой (навигация, редактирование файлов).
  • Права суперпользователя (sudo) для операций, требующих изменения владельца или системных файлов.
  • Понимание структуры файловой системы (например, /home, /etc, /var).

💡 Совет: Если вы новичок, потренируйтесь на тестовых файлах в домашнем каталоге, чтобы случайно не нарушить работу системы.

Шаг 1: Понимание текущих разрешений

Первым делом нужно узнать, какие права доступа уже установлены. Используйте команду ls -l для детального списка файлов:

ls -l /path/to/directory

Вывод будет выглядеть примерно так:

-rwxr-xr-- 1 alice developers 2048 Feb 16 10:30 script.sh
drwxrwx--- 2 bob users      4096 Feb 16 10:35 shared_folder

Разберём первую строку:

  • Первый символ (- или d): тип файла (- — обычный файл, d — каталог).
  • Следующие 9 символов: права для владельца (первые 3), группы (следующие 3) и других пользователей (последние 3).
    • r — чтение (4), w — запись (2), x — выполнение (1), - — отсутствие права.
    • Например, rwx = 7 (4+2+1), r-x = 5 (4+0+1), r-- = 4 (4+0+0).
  • После идут количество ссылок, владелец (alice), группа (developers), размер, дата и имя файла.

Шаг 2: Изменение прав доступа с chmod

Команда chmod изменяет права доступа. Есть два основных режима: символьный (буквенный) и числовой (Octal).

Символьный режим

Указывайте, кому (u — владелец, g — группа, o — другие, a — все) и какие права (r, w, x) добавлять (+), удалять (-) или устанавливать (=).

Примеры:

# Добавить право выполнения для владельца
chmod u+x script.sh

# Удалить запись для группы и других
chmod go-w file.txt

# Установить права: владелец — полные, группа и другие — только чтение
chmod u=rwx,go=r file.txt

Числовой режим

Каждой категории (владелец, группа, другие) присваивается трёхбитное число, где биты соответствуют rwx. Сумма значений даёт цифру (0-7).

Примеры:

# 755: владелец rwx (7), группа и другие r-x (5)
chmod 755 script.sh

# 644: владелец rw- (6), группа и другие r-- (4)
chmod 644 config.conf

# 777: полные права для всех (не рекомендуется для безопасности!)
chmod 777 temp_file

⚠️ Важно: Избегайте 777 для важных файлов — это разрешает любому пользователю изменять их, что создаёт уязвимость.

Шаг 3: Смените владельца и группу с chown

Если нужно изменить владельца файла или каталога, используйте chown. Синтаксис: chown [владелец][:группа] файл.

Примеры:

# Сменить только владельца
chown alice file.txt

# Сменить и владельца, и группу
chown alice:developers file.txt

# Рекурсивно для каталога и его содержимого
chown -R bob:users /shared_folder

💡 Совет: Для смены группы без изменения владельца можно использовать chgrp groupname file.

Шаг 4: Управление группами пользователей

Группы позволяют централизованно управлять доступом для нескольких пользователей. Работа с группами выполняется от имени root или с sudo.

Создание и удаление групп

# Создать новую группу
sudo groupadd devteam

# Удалить группу (если она не используется)
sudo groupdel oldgroup

Добавление пользователя в группу

# Добавить пользователя в дополнительную группу (без выхода из текущих)
sudo usermod -aG devteam alice

# Проверить группы пользователя
groups alice

⚠️ Важно: Изменения групп вступают в силу после нового входа пользователя в систему или перезапуска сессии.

Шаг 5: Практические примеры

Пример 1: Настройка веб-сервера

Для файлов веб-сайта в /var/www/html:

# Установить владельца www-data (типичный для Apache/Nginx)
sudo chown -R www-data:www-data /var/www/html

# Дать права на чтение для всех, запись только для владельца
sudo chmod -R 755 /var/www/html
# Для загружаемых файлов (например, uploads) можно дать 775 для записи группы
sudo chmod 775 /var/www/html/uploads

Пример 2: Общий каталог для команды

Создадим каталог /projects, доступный для записи всем членам группы developers:

sudo mkdir /projects
sudo groupadd developers  # если группы нет
sudo chown :developers /projects
sudo chmod 775 /projects
# Теперь любой пользователь в группе developers может создавать файлы в /projects.

Пример 3: Скрипт с выполнением

Дадим скрипту backup.sh право выполнения только владельцу:

chmod 700 backup.sh  # rwx для владельца, нет для группы и других

Шаг 6: Проверка результата

После изменений всегда проверяйте права:

ls -l /path/to/file_or_directory

Убедитесь, что:

  • Владелец и группа указаны правильно.
  • Права соответствуют ожидаемым (например, rwxr-xr-x для исполняемых файлов).
  • Для каталогов обычно требуется право x (выполнение) для доступа к содержимому.

Также протестируйте функциональность: попробуйте прочитать/изменить файл от имени другого пользователя (используйте su - username или отдельный терминал).

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

Ошибка "Operation not permitted"

Причина: недостаточно прав (не запущено с sudo) или файл имеет флаг immutable (chattr +i). Решение:

# Снимите флаг immutable, если установлен
sudo chattr -i file
# Запустите команду с sudo
sudo chmod 755 file

Неправильные права после chmod

Если права не изменились, проверьте:

  • Правильность синтаксиса команды (например, не перепутаны + и =).
  • Не перезаписываются ли права другими механизмами (например, ACL через setfacl). Посмотрите ACL: getfacl file.

Пользователь не может записать в каталог, хотя в группе

Возможные причины:

  • Группа каталога не та, в которую добавлен пользователь (проверьте ls -ld directory).
  • Пользователь не вышел и заново вошёл в систему после добавления в группу.
  • У каталога нет права записи для группы (chmod g+w directory).

Рекурсивное изменение прав с chmod/chown затронуло симлинки

По умолчанию chmod -R и chown -R не следуют за символическими ссылками, но если ссылки указывают на важные файлы, убедитесь, что вы не изменили лишнее. Для обработки самих ссылок используйте -h (для chown) или будьте осторожны с путями.

💡 Совет: Для сложных сценариев используйте find с -exec для точечного применения прав, например:

find /var/log -type f -name "*.log" -exec chmod 640 {} \;

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

В чём разница между chmod и chown?
Как дать права на выполнение скрипту?
Что означает число 755 в chmod?
Как добавить пользователя в группу?

Полезное

Проверьте текущие права
Измените права доступа с chmod
Смените владельца и группу с chown
Управляйте группами пользователей
Практические примеры
Проверьте результат