Linux 126Низкая

Исправляем ошибку отсутствия прав на выполнение в Linux

Ошибка возникает при попытке запуска скрипта или программы без флага выполнения. Вы получите пошаговое руководство по восстановлению прав и проверке файловых систем.

Обновлено 7 апреля 2026 г.
5-10 мин
Низкая
FixPedia Team
Применимо к:Ubuntu 20.04/22.04/24.04Debian 10/11/12RHEL/CentOS 8/9Fedora 38+

Что означает ошибка отсутствия прав на выполнение

При попытке запустить файл из терминала система возвращает сообщение bash: ./имя_файла: Permission denied или код завершения 126. Ядро Linux блокирует исполнение, если файл не помечен как исполняемый или размещён на носителе, где запуск программ запрещён политикой безопасности. Это базовый механизм защиты, предотвращающий случайное выполнение вредоносных скриптов или повреждённых бинарных файлов.

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

  • Отсутствует бит выполнения (x) в POSIX-правах файла.
  • Файл скопирован из Windows или загружен через браузер без сохранения атрибутов.
  • Раздел диска смонтирован с опцией noexec (часто применяется на /tmp, внешних USB-накопителях или сетевых шарах).
  • Модули безопасности SELinux или AppArmor блокируют запуск из определённых директорий.
  • Архитектура файла не совпадает с системой (например, попытка запустить ARM-бинарник на x86_64).

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

Способ 1: Выдача прав через chmod

Самый быстрый и безопасный метод — добавить бит выполнения для владельца, группы или всех пользователей.

  1. Откройте терминал и перейдите в папку с файлом: cd /путь/к/директории
  2. Проверьте текущие атрибуты: ls -l имя_файла
  3. Если в первой строке вывода нет символа x, примените команду:
    chmod +x имя_файла
    
  4. Для системных скриптов или утилит, доступных всем пользователям, используйте строгие права:
    sudo chmod 755 имя_файла
    

💡 Совет: После изменения прав запустите файл через ./имя_файла. Убедитесь, что в первой строке скрипта указан корректный shebang (например, #!/bin/bash или #!/usr/bin/env python3).

Способ 2: Прямой вызов через интерпретатор

Если вы работаете с текстовым скриптом и не хотите менять файловые атрибуты, вызовите оболочку напрямую.

bash ./скрипт.sh
python3 ./скрипт.py

Этот метод игнорирует проверку флага выполнения, так как интерпретатор читает файл как обычные данные, а система запускает саму программу-оболочку.

Способ 3: Перемонтирование раздела с опцией exec

Если chmod не даёт результата, вероятно, файловая система смонтирована с запретом на выполнение программ.

  1. Проверьте текущие параметры монтирования:
    mount | grep $(df --output=source /путь/к/файлу | tail -n 1) | grep -o 'noexec'
    
  2. Если вывод возвращает noexec, временно разрешите запуск:
    sudo mount -o remount,exec /точка/монтирования
    

⚠️ Важно: Опция noexec часто используется для защиты от вирусов. Включайте exec только на доверенных носителях и возвращайте оригинальные параметры после завершения работы.

Способ 4: Диагностика модулей безопасности

На серверных дистрибутивах политики безопасности могут блокировать запуск даже при корректных правах доступа.

  • Для RHEL/CentOS/Fedora: проверьте логи audit и временно переведите SELinux в режим предупреждений:
    sudo setenforce 0
    
  • Для Ubuntu/Debian: проверьте статус AppArmor:
    sudo aa-status | grep имя_файла
    

Если профиль блокирует файл, добавьте его в исключения или сгенерируйте локальную политику через aa-genprof ./имя_файла.

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

Чтобы ошибка не повторялась, соблюдайте простые правила при работе с файлами и скриптами:

  • Настраивайте umask на уровне 0022 или 0027 в ~/.bashrc, чтобы новые файлы не получали права на выполнение без вашего явного указания.
  • При копировании архивов или файлов между системами используйте tar или rsync с флагом --perms для строгого сохранения POSIX-атрибутов.
  • Размещайте пользовательские скрипты в директории ~/bin или /usr/local/bin, которые по умолчанию поддерживают запуск и автоматически добавлены в переменную $PATH.
  • Проверяйте тип скачанных файлов командой file ./программа, чтобы убедиться в совместимости архитектуры и отсутствии битых заголовков.

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

Почему появляется ошибка Permission denied при запуске скрипта?
Помогает ли команда chmod 777 для решения проблемы?
Что делать, если права выданы, но файл всё равно не запускается?

Полезное

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