Linux EACCESВысокая

Исправление ошибки EACCES при изменении прав в Linux

Статья расскажет, почему в Linux появляется ошибка EACCES при попытке изменить права доступа и как быстро её устранить с помощью простых команд.

Обновлено 18 июля 2026 г.
5-10 мин
Средняя
FixPedia Team
Применимо к:Ubuntu 22.04 LTSCentOS 8Debian 11Linux Mint 20

Что означает ошибка EACCES

Ошибка EACCES (также отображаемая как Permission denied) появляется, когда в Linux не удается изменить права доступа к файлу. Типичный текст сообщения:

chmod: cannot change permissions: Operation not permitted

Обычно это происходит, когда текущий пользователь не имеет необходимых привилегий, владелец файла или группа не совпадают, или действуют правила безопасности (SELinux/AppArmor). Ошибка может возникать как при использовании chmod, так и при попытке выполнения скрипта или доступа к системному ресурсу.

Причины возникновения

  • Недостаток прав пользователя – команда выполняется не от имени root или с insufficient правами sudo.
  • Несовпадение владельца/группы – файл принадлежит другому пользователю, и текущая группа не имеет прав на изменение.
  • Ограничительный бит umask – маска прав может блокировать установку необходимых прав доступа.
  • Контекст безопасности SELinux/AppArmor – системные политики запрещают изменение атрибутов файла.
  • Повреждённый inode или файловая система – редко, но также может вызывать ошибку доступа.

Способы решения

Способ 1: Использование sudo для повышения привилегий

Если вам не хватает прав, запустите chmod с sudo:

sudo chmod <options> <filename>

Например, чтобы открыть доступ на запись для владельца:

sudo chmod u+rwx /path/to/file

💡 Совет: Если вы регулярно работаете с правами, добавьте sudo в группу пользователей в /etc/sudoers, но делайте это осторожно.

Способ 2: Изменение владельца или группы файла

Когда файл принадлежит другому пользователю, измените владельца (или группу) перед изменением прав:

sudo chown user:group /path/to/file
sudo chmod <options> /path/to/file

⚠️ Важно: После изменения владельца убедитесь, что новая группа имеет необходимые разрешения.

Способ 3: Проверка и корректировка umask

Проверьте текущую маску прав:

umask

Если маска блокирует установку прав (например, 077), временно сбросьте её:

umask 022

Для постоянного изменения отредактируйте ~/.bashrc или /etc/profile.

Способ 4: Отключение или корректировка контекста SELinux/AppArmor

Для систем с SELinux:

sudo setsebool -P allow_execmod 1

Для AppArmor отключите профиль (если он не критичен):

sudo aa-teardown /etc/apparmor.d/usr.bin.python

🔎 Примечание: В продакшене изменяйте политики безопасности только после оценки рисков.

Способ 5: Восстановление доступа через ACL

Если стандартных прав недостаточно, используйте ACL для granularity:

sudo setfacl -m u:username:rwX /path/to/file
sudo chmod -R a+rX /path/to/file

Профилактика

  • Используйте sudo только для необходимых команд; не запускайте chmod от имени обычного пользователя, если вам действительно нужны права администратора.
  • Регулярно проверяйте ненужные SETUID- или SETGID- файлы: find / -type f -perm /4000 -ls.
  • Следите за контекстом безопасности (getsebool, aa-status) и обновляйте правила, если они становятся слишком ограничительными.
  • Обновляйте систему и ядро – новые версии часто исправляют баги, связанные с правами доступа.

Эти простые привычки помогут избежать ошибки EACCES в будущем и сохранить порядок в файловой системе.

Часто задаваемые вопросы

Почему в Linux появляется ошибка EACCES при попытке изменить права файла?
Как проверить текущие права доступа к файлу перед их изменением?
Что делать, если команда chmod всё равно не изменяет права?
Как предотвратить появление ошибки EACCES при выполнении скриптов?

Полезное

Проверьте текущие права доступа
Используйте sudo для изменения прав
Проверьте владельца и группу
Откорректируйте umask
Проверьте контекст безопасности