Linux EACCESСредняя

Исправляем ошибку Permission denied в Debian: пошаговое решение

Ошибка «Permission denied» в Debian возникает при попытке выполнить операцию без необходимых прав доступа. В материале вы найдёте точные причины сбоя и пошаговые команды для быстрого восстановления доступа к файлам и сервисам.

Обновлено 5 апреля 2026 г.
5-10 мин
Низкая
FixPedia Team
Применимо к:Debian 11 (Bullseye)Debian 12 (Bookworm)Debian 13 (Trixie)

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

Ошибка Permission denied (системный код EACCES) сообщает, что ядро Linux заблокировало вашу попытку выполнить операцию с файлом, каталогом или устройством. Полный текст в терминале обычно выглядит так: bash: ./setup.sh: Permission denied, cp: cannot create regular file '/etc/app.conf': Permission denied или ls: cannot open directory '/root': Permission denied.

Сообщение появляется сразу после ввода команды, запуска скрипта или попытки открыть файл в графическом интерфейсе. Система проверяет таблицу прав доступа (inode) перед каждым обращением к диску. Если ваша учётная запись не входит в список разрешённых пользователей или групп, операция прерывается мгновенно. Это базовый механизм безопасности Debian, предотвращающий случайное или злонамеренное изменение данных.

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

  • Отсутствие флага выполнения (x) у скачанных скриптов, бинарников или Python-файлов.
  • Попытка записать данные в системные директории (/etc, /var/log, /usr/local, /sys), которые по умолчанию доступны только для чтения обычным пользователям.
  • Файл принадлежит root или другому пользователю, а вы работаете под стандартной учётной записью.
  • Раздел смонтирован с флагом noexec (часто встречается на внешних USB-накопителях, в /tmp или при использовании политик безопасности fstab).
  • Конфликт с мандатными политиками безопасности (SELinux, AppArmor), которые ограничивают доступ на уровне контекста процесса, даже если стандартные права rwx выставлены верно.

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

Способ 1: Добавление прав на выполнение скрипта

Если терминал выдаёт ошибку при попытке запустить .sh, .py или скомпилированный файл, системе нужно явно разрешить его исполнение.

  1. Откройте терминал и перейдите в каталог с файлом:
    cd ~/загрузки
    
  2. Проверьте текущие метаданные:
    ls -l скрипт.sh
    
    Вы увидите что-то вроде -rw-r--r--. Флаг x отсутствует.
  3. Добавьте разрешение на выполнение:
    chmod +x скрипт.sh
    
  4. Запустите файл, указав относительный путь:
    ./скрипт.sh
    

💡 Совет: Если файл содержит некорректные окончания строк (CRLF вместо LF), Bash всё равно может отказать в запуске с похожей ошибкой. Конвертируйте файл через dos2unix скрипт.sh перед выполнением chmod.

Способ 2: Смена владельца ресурсов

Часто ошибка возникает при работе с проектами, скопированными из архива или созданными от имени root через sudo cp. Верните права вашему аккаунту.

sudo chown -R $USER:$USER /путь/к/рабочей/папке

Команда рекурсивно (-R) изменит владельца и группу на вашу текущую учётную запись. Переменная $USER автоматически подставит имя текущего пользователя, поэтому вам не нужно вводить его вручную. После этого любые программы, запущенные из-под вашего профиля, получат полный доступ к содержимому.

Способ 3: Временное повышение привилегий через sudo

Иногда доступ к файлу действительно требует прав администратора (например, редактирование конфигураций сетевых сервисов или лог-файлов). Используйте sudo только для конкретной команды, а не для запуска целой оболочки.

sudo nano /etc/nginx/nginx.conf

Если вам нужно скопировать файл в защищённую директорию, укажите полный путь или используйте sudo tee, чтобы избежать проблем с перенаправлением вывода:

echo "новое_значение=1" | sudo tee -a /etc/sysctl.conf

Способ 4: Проверка флагов монтирования раздела

Внешние диски или специальные директории могут монтироваться с ограничением noexec, которое запрещает запуск любых программ независимо от chmod.

  1. Проверьте параметры текущего раздела:
    mount | grep /media/ваш_диск
    
    Если в выводе присутствует noexec, запуск файлов будет заблокирован.
  2. Перемонтируйте раздел с флагом exec (требует прав root):
    sudo mount -o remount,exec /media/ваш_диск
    
  3. Для постоянного решения отредактируйте /etc/fstab, заменив noexec на exec в строке с нужным UUID, и выполните sudo mount -a.

⚠️ Важно: Включение флага exec на съёмных носителях снижает безопасность. Не запускайте файлы с неизвестным происхождением и используйте этот метод только для доверенных устройств.

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

  • Храните пользовательские проекты, скрипты и загрузки исключительно в домашней директории (~/), где Debian автоматически назначает вас владельцем.
  • Добавляйте свою учётную запись в специализированные группы вместо использования постоянного sudo. Например, для доступа к Docker выполните sudo usermod -aG docker $USER, а для управления принтерами — sudo usermod -aG lpadmin $USER.
  • Проверяйте настройки монтирования внешних накопителей в /etc/fstab. Указывайте uid=1000,gid=1000,exec для дисков, которые вы используете для разработки.
  • Регулярно сканируйте рабочие директории на наличие файлов с подозрительными правами: find ~ -type f -perm -o+w покажет объекты, доступные для записи всем пользователям, что требует немедленного ограничения через chmod go-w.

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

Почему возникает ошибка Permission denied при запуске скрипта?
Безопасно ли постоянно использовать `sudo` для обхода ошибки?
Как проверить текущие права доступа к файлу в Debian?

Полезное

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