Linux EACCESСредняя

Ошибка Permission denied в Linux: полное руководство по исправлению

Разбираем причины возникновения ошибки Permission denied в Linux и предлагаем 5 эффективных способов её решения — от изменения прав доступа до настройки sudo.

Обновлено 9 апреля 2026 г.
10-15 мин
Средняя
FixPedia Team
Применимо к:Ubuntu 20.04/22.04Debian 11/12CentOS 7/8Linux Mint 20/21Any Linux дистрибутив

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

Ошибка Permission denied (отказано в доступе) — это стандартное сообщение об ошибке в Linux, которое сигнализирует о том, что у текущего пользователя недостаточно прав для выполнения запрошенной операции с файлом или директорией. В системном коде ошибки она соответствует коду EACCES (Error Access).

Типичные сообщения, которые вы можете увидеть:

bash: ./script.sh: Permission denied
bash: /var/www/index.html: Permission denied
cp: cannot create regular file '/root/file': Permission denied

Ошибка возникает при попытках:

  • Запустить исполняемый файл без бита выполнения (x)
  • Записать данные в файл или директорию без права записи (w)
  • Прочитать файл без права чтения (r)
  • Изменить права или владельца файла без прав суперпользователя

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

  1. Отсутствие бита выполнения — файл не помечен как исполняемый. Особенно часто встречается при запуске скачанных скриптов.
  2. Недостаточные права на файл — файл имеет права r-- или r-x, а требуется запись.
  3. Файл принадлежит другому пользователю — даже при правах 777 доступ может быть ограничен SELinux или AppArmor.
  4. Нет доступа к родительской директории — система проверяет права на все директории по пути к файлу.
  5. Файловая система смонтирована только для чтения — например, DVD-диск или раздел с опцией ro.
  6. Ограничения SELinux/AppArmor — в CentOS и Ubuntu могут блокировать доступ даже при корректных правах.
  7. Попытка работы с системными файлами — файлы в /etc, /var, /root требуют прав root.

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

Способ 1: Проверка и изменение прав доступа (chmod)

首先 определите текущие права на файл:

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

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

chmod 644 /путь/к/файлу

Для исполняемых файлов и скриптов:

chmod +x /путь/к/скрипту.sh
chmod 755 /путь/к/скрипту.sh

Для директорий, где нужно создавать файлы:

chmod 755 /путь/к/директории

💡 Совет: Права 755 означают полный доступ для владельца и чтение/выполнение для остальных. Права 777 дают полный доступ всем, но не рекомендуются по соображениям безопасности.

Способ 2: Смена владельца файла (chown)

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

# Смена владельца и группы
sudo chown пользователь:группа /путь/к/файлу

# Смена только владельца
sudo chown пользователь /путь/к/файлу

# Рекурсивно для директории
sudo chown -R пользователь:группа /путь/к/директории

Например, чтобы передать права на веб-сервер:

sudo chown -R www-data:www-data /var/www/html

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

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

sudo ./script.sh
sudo cp source.txt /etc/config.conf
sudo nano /etc/hosts

При первом использовании система запросит пароль. Если ваш пользователь не добавлен в группу sudo, см. Способ 5.

Способ 4: Добавление пользователя в группу sudo

Если вы получаете ошибку «user is not in the sudoers file», необходимо добавить вашего пользователя в группу sudo:

# Для Debian/Ubuntu/Mint
sudo usermod -aG sudo имя_пользователя

# Для CentOS/RHEL
sudo usermod -aG wheel имя_пользователя

После этого потребуется перелогин или выполнение:

newgrp sudo    # для Ubuntu
newgrp wheel   # для CentOS

Способ 5: Проверка и исправление ограничений SELinux

В дистрибутивах на базе Red Hat (CentOS, Fedora, RHEL) причиной ошибки могут быть политики SELinux. Проверьте текущий режим:

getenforce

Если установлен режим Enforcing, временно переключите на Permissive для диагностики:

sudo setenforce 0

⚠️ Важно: Отключение SELinux — временная мера для диагностики. Для постоянного решения настройте правильные контексты SELinux:

sudo chcon -R -t httpd_sys_content_t /var/www/html

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

Чтобы избежать ошибок Permission denied в будущем:

  1. Работайте в своей домашней директории — файлы в ~/ автоматически принадлежат вам с полными правами.
  2. Проверяйте права перед скачиванием скриптов — всегда добавляйте бит выполнения через chmod +x после загрузки.
  3. Используйте виртуальные окружения для Python-проектов, чтобы избежать конфликтов с системными правами.
  4. Не запускайте приложения от root без необходимости — это создаёт файлы с владельцем root, к которым у обычного пользователя нет доступа.
  5. Изучите базовые права доступа: чтение (r=4), запись (w=2), выполнение (x=1). Суммируйте их: 7 = полные права, 6 = чтение+запись, 5 = чтение+выполнение.

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

Почему появляется ошибка Permission denied даже с правами sudo?
Чем отличаются ошибки Permission denied и Operation not permitted?
Как дать права на выполнение скрипта в Linux?
Ошибка возникает при работе с Docker — как исправить?

Полезное

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

Эта статья помогла вам решить проблему?