Введение / Зачем это нужно
Правильные права доступа — основа безопасности и удобства работы в Linux. Они защищают конфиденциальные данные, предотвращают случайные изменения и позволяют администраторам управлять доступом пользователей к системным ресурсам. После выполнения этого гайда вы сможете вручную и автоматически устанавливать нужные права, изменять владельцев и безопасно выполнять привилегированные команды.
Требования / Подготовка
- Любая из поддерживаемых дистрибутивов: Ubuntu 20.04 LTS, Ubuntu 22.04 LTS, Debian 11, CentOS 8.
- Права обычного пользователя с возможностью повышения привилегий (
sudo). - Доступ к терминалу (SSH, консоль или удалённый десктоп).
- Базовое знакомство с Bash и файловой системой.
Понимание базовых понятий прав доступа
В Linux для каждого файла или каталога используются три permission бита для владельца, группы и остальных пользователей:
- r — чтение (просмотр содержимого или списка файлов)
- w — запись (изменение или удаление)
- x — исполнение (запуск для исполняемых файлов или переход внутрь для каталогов)
💡 Совет: Если вы не уверены в текущих правах, используйте
ls -l <file>для краткого вывода.
Установка прав с помощью chmod
Команда chmod позволяет изменять permission биты.
# Пример: сделать скрипт исполняемым для всех
chmod 755 myscript.sh
После выполнения chmod 755 владелец получает rwx (7), группа и остальные — r-x (5). Для более наглядного управления можно использовать символьный режим:
# Добавить исполнение для владельца
chmod u+x myscript.sh
Изменение владельца и группы с chown
Когда вам нужно передать ответственность за файл или каталог, используйте chown.
# Изменить владельца и группу
chown alice:developers project_folder
Для рекурсивного изменения прав внутри каталога добавьте -R:
chown -R alice:developers /var/www
⚠️ Важно: Изменение владения может повлиять на работу сервисов, которые используют эти файлы. Перед изменениями убедитесь, что понимаете последствия.
Безопасное выполнение команд с sudo
Команда sudo позволяет временно повысить привилегии до root (или других пользователей). Для работы с sudo пользователь должен быть добавлен в группу sudo (или wheel в некоторых дистрибутивах).
# Добавить пользователя bob в группу sudo
usermod -aG sudo bob
После перелогина bob может выполнять привилегированные действия:
sudo systemctl restart nginx
💡 Совет: Храните пароли для sudo в
/etc/sudoersс помощьюvisudo, чтобы ограничить доступ к sensitive командам.
Настройка umask для автоматического назначения прав
Umask определяет права, которые вычитаются из дефолтных прав при создании нового файла или каталога. Для большинства серверов рекомендуемая маска — 027:
# Добавление в ~/.bashrc
echo "umask 027" >> ~/.bashrc
source ~/.bashrc
Теперь новые файлы получат права 640 (rw‑‑‑‑‑), а новые каталоги — 750 (rwx‑‑‑‑‑). Для изменения маски временно используйте команду:
umask 027
Проверка результата
- Файловые права:
ls -l /path/to/file - Владелец и группа:
stat /path/to/file - Umask текущего сеанса:
umask - Sudo права:
sudo -l(показывает разрешённые команды для текущего пользователя)
Если всё отображается как ожидалось, настройка прав завершена успешно.
Возможные проблемы
- Доступ запрещён (Permission denied): Проверьте права с помощью
ls -l. Возможно, вам не хватаетexecuteбита на родительском каталоге (chmod 755 parent_dir). - Команда sudo не найдена: Убедитесь, что пользователь добавлен в группу sudo и что группа разрешена в
/etc/group. - Новые файлы имеют неправильные права: Убедитесь, что
umaskнастроен правильно и что конфигурация загружена (source ~/.bashrc). - Чрезмерно открытые права (777): Избегайте их использования. Используйте
chmod 755для исполняемых каталогов иchmod 644для обычных файлов.
С помощью этих рекомендаций вы сможете быстро устранять типичные ошибки и поддерживать порядок в файловой системе Linux.