Linux EACCESСредняя

Permission Denied в Linux: причины и быстрые решения

Статья подробно разбирает ошибку 'Permission Denied' в Linux, объясняет её причины и предлагает несколько рабочих способов исправить, от простого изменения прав до более сложных настроек.

Обновлено 16 февраля 2026 г.
5-10 мин
Низкая
FixPedia Team
Применимо к:Ubuntu 20.04+CentOS 7+Debian 10+Fedora 35+

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

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

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

Ошибка возникает по следующим распространенным причинам:

  1. Недостаточные права доступа: У пользователя нет необходимых разрешений (чтение r, запись w, выполнение x) для файла или каталога. Например, попытка запустить скрипт без права на выполнение.
  2. Неправильный владелец или группа: Файл принадлежит другому пользователю или группе, и текущий пользователь не входит в список тех, кому предоставлен доступ.
  3. Файловая система смонтирована с ограничениями: Раздел может быть смонтирован с опциями, запрещающими выполнение (noexec), изменение (nodev) или работу с setuid (nosuid). Часто встречается для внешних носителей или сетевых файловых систем.
  4. Активированные механизмы безопасности: SELinux (в CentOS, RHEL, Fedora) или AppArmor (в Ubuntu, Debian) могут блокировать доступ на уровне политик, даже если стандартные права настроены правильно.
  5. Установленный атрибут immutable: Файл имеет флаг i (установлен через chattr +i), который делает его неизменяемым для всех, включая root.
  6. Отсутствие права на выполнение для каталога: Для доступа к содержимому каталога (например, cd или ls) необходимо право на выполнение (x) для этого каталога.

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

Способ 1: Проверьте и измените права доступа с помощью chmod

Это самый частый способ. Сначала определите файл или каталог, вызывающий ошибку, и проверьте текущие права:

ls -l /путь/к/проблемному/файлу

Пример вывода: -rw-r--r-- 1 user group 1024 Feb 16 10:00 файл. Первые 9 символов — права для владельца, группы и остальных.

Чтобы добавить право на выполнение для владельца файла:

chmod u+x /путь/к/файлу

Для добавления прав на чтение и запись для группы:

chmod g+rw /путь/к/файлу

Для каталога обязательно установите право на выполнение (x), иначе доступ к его содержимому будет запрещен:

chmod +x /путь/к/каталогу

⚠️ Важно: Не назначайте права 777 (полный доступ для всех) без необходимости, особенно для системных файлов. Это серьезная уязвимость безопасности.

Способ 2: Смените владельца файла с помощью chown

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

sudo chown новый_пользователь:новая_группа /путь/к/файлу

Пример: сделать пользователя alex владельцем файла script.sh:

sudo chown alex:alex /home/alex/script.sh

Если нужно изменить только группу:

sudo chgrp группа /путь/к/файлу

Это полезно при совместной работе в группе.

Способ 3: Используйте sudo для выполнения команды

Если операция требует повышенных прав (например, изменение системного файла), выполните команду с sudo:

sudo команда аргументы

Например:

sudo apt update
sudo rm /var/log/старый_лог

💡 Совет: Настройте файл /etc/sudoers через visudo, чтобы разрешить выполнение конкретных команд без пароля для надежных пользователей, но делайте это осторожно.

Способ 4: Проверьте параметры монтирования файловой системы

Иногда проблема в том, что раздел смонтирован с опциями, ограничивающими доступ. Узнайте, как смонтирован раздел, содержащий проблемный файл:

mount | grep /путь/к/файлу

Или проверьте /etc/fstab для постоянных монтирований. Если в опциях есть noexec, nosuid или nodev, это может блокировать выполнение или изменение файлов. Например, внешние USB-накопители часто монтируются с noexec по умолчанию.

Для временного решения (требует sudo) перемонтируйте раздел без запрещающих опций:

sudo mount -o remount,exec /dev/sdXY /точка/монтирования

Но учтите, что это может нарушить безопасность. Лучше скопируйте файл на внутренний раздел, если возможно.

Способ 5: Проверьте и настройте SELinux/AppArmor

На дистрибутивах с SELinux (CentOS, RHEL, Fedora) проверьте контекст безопасности файла:

ls -Z /путь/к/файлу

Если контекст не соответствует ожидаемому (например, для исполняемого файла должен быть bin_t или usr_t), восстановите стандартный контекст:

sudo restorecon -v /путь/к/файлу

Или установите вручную:

sudo chcon -t тип /путь/к/файлу

Для AppArmor (Ubuntu, Debian) проверьте активные профили:

sudo apparmor_status

Логи AppArmor находятся в /var/log/kern.log или /var/log/syslog. Если профиль блокирует доступ, вы можете его отключить или настроить.

Способ 6: Удалите атрибут immutable

Файл может быть защищен флагом i (immutable), который предотвращает любые изменения, даже от root. Проверьте атрибуты:

lsattr /путь/к/файлу

Если в выводе есть i (например, ----i-------- файл), снимите атрибут:

sudo chattr -i /путь/к/файлу

После этого попробуйте выполнить операцию снова. Этот флаг часто используется для критических системных файлов или логов.

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

Чтобы минимизировать возникновение ошибки Permission denied:

  1. Настраивайте umask: Установите соответствующую маску umask в /etc/profile или ~/.bashrc, чтобы новые файлы создавались с правильными правами по умолчанию (например, 022 для чтения/выполнения всеми, но без записи).
  2. Следите за владельцем и группой: При создании файлов в многопользовательских каталогах (например, /var/www) сразу назначайте правильного владельца через chown или используйте setgid на каталоге (chmod g+s).
  3. Избегайте рутинного использования sudo: Выполняйте команды от обычного пользователя, прибегая к sudo только для административных задач. Это снижает риски случайных изменений системных файлов.
  4. Регулярно обновляйте систему: Обновления безопасности часто включают исправления для SELinux/AppArmor и других компонентов, связанных с доступом.
  5. Проверяйте монтирование критических разделов: Убедитесь, что системные разделы (например, /, /usr) смонтированы без излишних ограничений, если это не требуется по политике безопасности.
  6. Обучайте пользователей: Если вы администрируете сервер или рабочую станцию, объясните базовые принципы прав доступа (chmod, chown) и безопасного использования sudo.

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

Что означает ошибка 'Permission denied' в Linux?
Как исправить Permission Denied без прав администратора?
Почему возникает Permission Denied даже при использовании sudo?
Как предотвратить ошибку Permission Denied в будущем?

Полезное

Проверьте текущие права доступа
Измените права доступа
Используйте sudo для повышения прав
Проверьте владельца файла
Проверьте монтирование файловой системы