| Предыдущий | Следующий |
| ENOENT |
EPERM
Что обычно означает этот errno
EPERM означает, что операция не разрешена в текущем контексте безопасности или владения. Это не просто ещё одно написание «доступ запрещён»: различие важно, поскольку ожидаемые биты чтения или записи могут присутствовать, а правило всё равно требует владельца, capability или допуска к неизменяемому объекту.
Например, удаление или замена имени в каталоге со sticky bit может быть разрешена только владельцу файла, владельцу каталога или привилегированному процессу. В Linux операции также регулируются capabilities и файловыми атрибутами immutable и append-only. Создание жёсткой ссылки может быть запрещено политикой для целевого файла.
Как расследовать
- Определите точный системный вызов и целевой объект:
EPERMимеет конкретный смысл только в контексте API. - Проверяйте владельца и правила каталога, а не только биты режима конечного файла. Решение может принимать родительский каталог или sticky bit.
- Для служб и контейнеров проверьте эффективную учётную запись, набор capabilities, параметры монтирования, атрибуты файловой системы и применимую политику безопасности.
- Не обходите отказ запуском всего приложения от root. Выдайте процессу только полномочия, необходимые документированной операции.
Ссылки
Нужно найти другой код? Найти другой код состояния или ошибки.
