Справочник системных ошибок и решений

Windows Server, Active Directory, 1С:Предприятие, СУБД, Linux, Cisco, MikroTik, Asterisk.

⚠️ Важная информация Все материалы, инструкции, команды и скрипты на сайте предоставлены исключительно в ознакомительных целях. Их применение может повлиять на работу операционной системы, программного обеспечения, баз данных, сетевого оборудования и других компонентов инфраструктуры. Перед выполнением действий создайте резервную копию и по возможности протестируйте изменения в безопасной среде. Пользователь самостоятельно оценивает риски и несет ответственность за результат. При отсутствии необходимых знаний обратитесь к квалифицированному ИТ-специалисту.

Permission-denied Linux / DevOps

Ошибка Bash 'Permission denied': как выдать права на запуск (chmod +x)

Обновлено: 26.08.2026 · Официальная документация ↗

Почему Linux не дает запустить созданный скрипт

Типичная ситуация для новичка: вы написали или скачали Bash-скрипт backup.sh, вводите в терминале команду ./backup.sh, но вместо выполнения получаете раздражающую ошибку: bash: ./backup.sh: Permission denied (Отказано в доступе). Даже запуск через sudo ./backup.sh иногда выдает ту же проблему.

Архитектура прав безопасности в Linux

В Linux по соображениям безопасности любой вновь созданный текстовый файл создается без права на исполнение. Система воспринимает его как обычный документ для чтения, блокируя попытку запустить его как бинарный файл или исполняемую программу.

Бит праваБукваЧислоЧто разрешает
Readr4Чтение содержимого файла
Writew2Изменение и сохранение файла
Executex1Запуск файла как программы (исполнение)

Пошаговое исправление ошибки доступа

Шаг 1: Проверка текущих прав на файл

Посмотрим права на ваш скрипт с помощью команды ls -l:

ls -l backup.sh

Вы увидите строку вида: -rw-r--r-- 1 user user 154 Nov 10 12:00 backup.sh. Обратите внимание: буквы x (Execute) в строке нет. Файл нельзя запускать.

Шаг 2: Выдача бита исполнения (chmod +x)

Добавьте файлу флаг исполняемости для всех пользователей:

chmod +x backup.sh

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

sudo chmod +x backup.sh

Шаг 3: Проверка и запуск скрипта

Снова введите ls -l backup.sh. Права изменятся на -rwxr-xr-x, а имя файла в большинстве терминалов подсветится зеленым цветом. Теперь запустите скрипт:

./backup.sh

Шаг 4: Проверка заголовка Shebang внутри скрипта

Если скрипт все еще падает, откройте его в редакторе (nano backup.sh) и убедитесь, что самой первой строкой файла прописан правильный интерпретатор:

#!/bin/bash

Типовые ошибки администраторов

  • Выдача опасных прав chmod 777: Неопытные пользователи часто ставят полные права chmod 777 на всю систему. Это делает файлы уязвимыми для записи любым вирусом или неавторизованным пользователем. Для скриптов достаточно chmod 755 или chmod +x.
  • Запуск без указания пути (./): Если написать просто backup.sh, Linux будет искать команду в системных папках PATH и выдаст ошибку command not found. Точка со слешем ./ явно указывает: запустить файл из текущей директории.
Пишете скрипты автоматизации и боитесь проблем с безопасностью прав доступа?
Эксперты ITSTM проведут аудит информационной безопасности, настроят правила sudoers и автоматизируют рутинные задачи вашей компании.
💡 Практика специалистов: Если скрипты запускаются планировщиком Cron, обязательно прописывайте внутри скрипта абсолютные пути ко всем утилитам (например, '/usr/bin/tar' вместо просто 'tar') и экспортируйте переменную PATH в начале скрипта, так как окружение cron крайне урезано по правам и путям.

Частые вопросы (FAQ)

Чем отличается запуск 'bash script.sh' от './script.sh'?

Команда 'bash script.sh' передает файл как аргумент напрямую в интерпретатор bash, поэтому флаг исполнения +x не требуется (нужны только права на чтение). Команда './script.sh' запускает файл как самостоятельную системную программу.

Как выдать права на запуск сразу всем .sh скриптам в папке?

Используйте маску: chmod +x *.sh

Что означают цифры в правах chmod 755?

Первая цифра (7 = 4+2+1 = rwx) — полные права владельца. Вторая цифра (5 = 4+1 = r-x) — чтение и запуск для группы. Третья цифра (5 = r-x) — чтение и запуск для всех остальных.

Почему после chmod +x скрипт выдает '/bin/bash^M: bad interpreter'?

Скрипт был создан или отредактирован в Windows. В нем присутствуют невидимые DOS-окончания строк. Исправьте это командой: sed -i -e 's/\r$//' script.sh или утилитой dos2unix.

Полезные материалы
Рекомендуем