Все статьи
Администрирование Редакционная политика

Права доступа в Linux: chmod, chown и umask без путаницы

Права Linux проще понимать как ответ на три вопроса: кто обращается к файлу, какое действие он выполняет и какое правило действует для этой категории пользователя.

Автор
Дмитрий Соколов Дмитрий Соколов Ведущий программист
Проверил эксперт/редактор
Ольга Миронова Ольга Миронова Главный редактор
Права доступа в Linux: chmod, chown и umask без путаницы

Три категории пользователей и три действия

У файла есть владелец и группа. Проверка идет по одной категории: owner, group или others. Если процесс запущен от имени владельца, права группы уже не добавляются поверх прав владельца. Поэтому важно знать не только режим файла, но и пользователя процесса.

Буквы r, w и x означают чтение, запись и выполнение. Для каталога смысл отличается: r позволяет получить список имен, w — создавать и удалять элементы, x — проходить внутрь и обращаться к известным именам. Каталог с чтением без x виден, но работать с файлами внутри не получится.

Как читать вывод ls -l

Строка -rwxr-x--- разбивается на тип объекта и три тройки прав. В примере владелец может читать, менять и запускать файл, группа — читать и запускать, остальные не имеют доступа. Команда stat показывает те же данные вместе с числовым режимом и идентификаторами владельца.

Перед изменением прав проверьте путь через realpath и владельца через ls -ld. Ошибка в одном символе или рекурсивный запуск из неверного каталога способны открыть либо закрыть доступ к большому дереву файлов.

Символьный и числовой chmod

Символьная запись описывает изменение: chmod g+w shared добавляет группе запись, chmod o-r secret убирает чтение у остальных. Она удобна, когда нужно сохранить остальные флаги. Числовая запись задает полный режим: r равно 4, w — 2, x — 1; сумма для каждой категории образует цифру.

Режим 640 означает rw- для владельца, r-- для группы и отсутствие прав у остальных. Не используйте 777 как универсальное лечение Permission denied: оно скрывает причину, расширяет доступ и часто создает новую проблему безопасности.

  • 600 — приватный файл владельца;
  • 640 — файл читает владелец и группа;
  • 750 — каталог или команда для владельца и группы;
  • 644 и 755 — частые режимы публично читаемых файлов и каталогов.

За что отвечает chown

chmod меняет разрешения, а chown — владельца и группу. Команда chown app:app storage полезна, если сервис должен писать в каталог от пользователя app. Сначала определите пользователя процесса через systemctl, ps или настройки контейнера, затем меняйте владельца только нужного пути.

Рекурсивный chown -R применяйте после проверки списка файлов. Для совместной работы чаще безопаснее назначить рабочую группу и настроить групповые права, чем передавать владение каждому новому пользователю.

Почему новые файлы получают другие права

umask вычитает запрещенные биты из базового режима новых файлов и каталогов. Поэтому chmod существующего файла не объясняет, с какими правами появится следующий. Значение umask зависит от оболочки, службы и контейнера; проверяйте его в том же контексте, где создается объект.

Для диагностики последовательно проверьте пользователя процесса, владельца каждого каталога в пути, режимы каталогов и файла, ACL и ограничения безопасности системы. Такой чек-лист надежнее случайного перебора chmod.

Источники

Содержание