Permission denied в Linux: диагностика доступа
Проверьте пользователя, права файла и каждого каталога пути. Разберите rwx, ACL и SELinux; отличите Permission denied от ошибок файловой системы.
Симптом не указывает на единственную причину
Вы пытаетесь прочитать 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 — компоненты пути, если утилита установлена. Не отправляйте полный вывод с внутренними именами в публичные каналы.
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 или проверьте знакомые команды в учебном терминале.