Введение / Зачем это нужно
Управление правами доступа — фундамент безопасности Linux. Без правильной настройки любой пользователь или фоновый процесс может прочитать конфиденциальные данные, изменить системные конфигурации или запустить нежелательный скрипт. Понимание атрибутов файлов позволяет разделять доступ между учётными записями, веб-серверами и системами резервного копирования. После выполнения этого гайда вы будете уверенно работать с chmod, chown и umask, разберётесь в цифровой и символьной записи разрешений и сможете защитить свои проекты от несанкционированного вмешательства.
Требования / Подготовка
- Доступ к терминалу с правами обычного пользователя или
root. - Для изменения системных файлов или чужих каталогов потребуется
sudo. - Базовое знание навигации по файловой системе (
cd,ls). - Рекомендуется проводить все эксперименты в отдельной папке
~/test_perms, чтобы случайно не нарушить работу ОС.
Пошаговая инструкция
Шаг 1: Чтение текущих разрешений
Перед изменением атрибутов всегда проверяйте их текущее состояние. Выполните команду:
ls -la ~/test_perms
В первой колонке вывода вы увидите строку вида -rwxr-xr--. Первый символ указывает тип объекта (- — файл, d — каталог, l — символьная ссылка). Далее следуют три группы по три символа: права владельца (u), группы (g) и остальных пользователей (o). r означает чтение, w — запись, x — выполнение. Позиции без прав обозначаются дефисом.
Шаг 2: Смена владельца и группы
Права доступа бесполезны, если файл принадлежит не тому пользователю или процессу. Используйте chown для передачи владения. Синтаксис: chown [пользователь]:[группа] объект.
# Передаём владение пользователю www-data и группе www-data
sudo chown www-data:www-data ~/test_perms/index.html
💡 Совет: Чтобы изменить только группу, оставьте имя пользователя пустым:
sudo chown :www-data файл.
Шаг 3: Точная настройка разрешений через chmod
Утилита chmod поддерживает символьный и восьмеричный режимы. Восьмеричный формат удобнее для массовой настройки. Каждая цифра складывается из битов: 4 (чтение) + 2 (запись) + 1 (выполнение).
7=4+2+1(rwx) — полные права5=4+0+1(r-x) — чтение и выполнение4=4+0+0(r--) — только чтение
Пример безопасных прав для публичного каталога с данными:
# Владелец: rwx (7), Группа: r-x (5), Остальные: r-x (5)
chmod 755 ~/test_perms
# Для вложенных файлов обычно достаточно 644
find ~/test_perms -type f -exec chmod 644 {} \;
Шаг 4: Настройка маски по умолчанию через umask
Новые файлы часто создаются с правами 666 или 777, которые потом приходится урезать вручную. umask задаёт маску вычитания при создании объектов. Стандартное значение 022 убирает запись для группы и остальных, оставляя 644 для файлов.
# Проверка текущей маски
umask
# Установка более строгой маски (добавьте в ~/.bashrc)
umask 027
С маской 027 новые файлы получат права 640, а каталоги — 750. Это идеально для рабочих сред, где требуется полная изоляция от других пользователей системы.
Проверка результата
Убедитесь, что изменения вступили в силу, снова запустив ls -la. Создайте новый тестовый файл в директории с настроенной маской и проверьте его атрибуты:
touch ~/test_perms/new_config.conf
ls -l ~/test_perms/new_config.conf
Вывод должен соответствовать заданным вами значениям (например, -rw-r----- для umask 027). Попробуйте открыть файл от имени другого пользователя через su - другой_пользователь, чтобы убедиться в корректности изоляции. Если Permission denied появляется для неавторизованных пользователей — настройка прошла успешно.
Возможные проблемы
- Ошибка
Operation not permitted: Возникает при попытке изменить атрибуты у файлов с установленным immutable-флагом. Снимите его командойsudo chattr -i файл, затем повторитеchmod. - Рекурсивное применение
chmod -Rсломало навигацию: Если вы случайно дали644каталогам, они потеряют битxи станут недоступны для входа. Восстановите структуру командами:find /путь -type d -exec chmod 755 {} +иfind /путь -type f -exec chmod 644 {} +. - Права не применяются к символическим ссылкам: Ядро Linux игнорирует
chmodиchownдля ссылок, изменяя только целевой объект. Это стандартное поведение безопасности. Всегда работайте напрямую с оригинальными файлами.