Ошибки / Диагностика

Permission denied в Linux: диагностика доступа

Проверьте пользователя, права файла и каждого каталога пути. Разберите rwx, ACL и SELinux; отличите Permission denied от ошибок файловой системы.

Начальный8 минОбщие принципы LinuxGNU Coreutils · documented stable options

Симптом не указывает на единственную причину

Вы пытаетесь прочитать notes/private.txt, но cat сообщает Permission denied. Это значит, что операция не получила нужного доступа. Файл при этом может существовать и иметь корректное содержимое.

Не переходите сразу к sudo или chmod 777. Сначала установите, кто выполняет операцию и на каком участке пути возникает ограничение. Один и тот же текст ошибки встречается при разных политиках доступа.

Воспроизведите отказ в безопасной среде

Движок проверяет бит чтения владельца обычного файла. Отключим его только у специально созданной заметки. Все действия происходят в виртуальном snapshot.

Виртуальный терминал
echo private > notes/locked.txt
chmod 000 notes/locked.txt
cat notes/locked.txt

Проверка: Permission denied, ненулевой exit code.

Диагностика на своей системе

Сначала id показывает пользователя и группы; stat — объект; namei — компоненты пути, если утилита установлена. Не отправляйте полный вывод с внутренними именами в публичные каналы.

Локальная Linux-система
id
stat -- notes/private.txt
namei -l -- notes/private.txt
НаблюдениеСледующий шаг
Нет r у подходящего классаПроверить требуемую политику чтения
Нет x у каталога путиПроверить право прохода на этом компоненте
Биты выглядят достаточнымиПроверить ACL и SELinux/AppArmor
Сообщение Read-only file systemПроверить режим монтирования; chmod здесь не поможет

Если обычные биты не объясняют отказ

На системе с установленной getfacl выполните getfacl -- notes/private.txt. Найдите запись для нужного пользователя или группы и проверьте комментарий effective: маска ACL может ограничивать действие разрешений. Просматривайте ACL также у каталога, на котором namei показал проблему.

Если доступ запрещён только сервису, сравните его учётную запись с вашей. Для SELinux или AppArmor найдите в системном журнале отказ, совпадающий по времени, процессу и пути. Отсутствие такого сообщения не доказывает, что политика ни при чём: доступность и полнота журнала зависят от системы. Настройка конкретной политики требует отдельного разбора приложения.

Не смешивайте разные сообщения

Permission denied обычно соответствует EACCES, Operation not permitted — EPERM, а Read-only file system — EROFS. Сохраните точный текст и саму операцию: ошибка чтения файла и отказ создать новый файл могут возникать на разных объектах.

При Read-only file system посмотрите findmnt -T notes/private.txt -o TARGET,OPTIONS, подставив существующий путь. Опция ro у точки монтирования указывает режим только для чтения. Изменение rwx не сделает такую файловую систему доступной для записи. Эти команды просмотра предназначены для настоящей Linux-системы и не поддерживаются симулятором.

Минимальное исправление и откат

Если подтверждено, что владелец должен читать файл, верните ему нужный бит; не расширяйте доступ для остальных без основания. В нашем snapshot известен исходный режим 644, поэтому восстановление однозначно.

В реальной системе сохраните исходные mode, owner и ACL до правки. При неверном результате восстановите их. Отключать SELinux целиком ради одного файла нельзя считать исправлением политики.

Виртуальный терминал
chmod 644 notes/locked.txt
cat notes/locked.txt

Проверка: private

Предотвращение повторения

Создавайте данные от нужной учётной записи, проверяйте umask и группы запускающего сервиса. Документируйте целевой доступ и проверяйте его после развёртывания. Полная модель ACL, групп и каталогов выходит за пределы этого прототипа симулятора.

Технические источники

Использованы для проверки поведения. Объяснения и учебные сценарии созданы для проекта.

  • GNU Coreutils — документация утилит
  • Linux man-pages — коды errno
  • ACL — просмотр прав с getfacl
  • util-linux — namei и компоненты пути
  • util-linux — findmnt

Проверка текста: 2026-09-05. Нативное исполнение на всей матрице дистрибутивов ещё не подтверждено.

Основные понятия общие для Linux. Состав утилит, версии и системные настройки зависят от окружения.

От материала к практике

Выберите следующую тему в каталоге Linux или проверьте знакомые команды в учебном терминале.

Поиск по Linux

Поиск локальный. ↑ ↓ — перейти к результату, Enter — открыть.

Навигация