Permission denied при запуске скрипта: как исправить
Ошибка значит, что у файла скрипта нет права x — права на выполнение. Его даёт команда chmod u+x. Ниже — что делать, если и после неё скрипт не запускается, и чем эта ошибка отличается от похожих.
Содержание 9
Что сделать прямо сейчас
Дайте скрипту право на выполнение — вместо script.sh подставьте имя своего файла:
chmod u+x script.shИ запустите его снова:
./script.shЕсли chmod ответил Operation not permitted, файл принадлежит другому пользователю: поставьте sudo перед chmod. Если скрипт и после этого не запускается — смотрите ниже.
Как выглядит ошибка
-bash: ./script.sh: Permission deniedПервое слово — кто сообщает об ошибке: bash, программа, которая выполняет команды в терминале. Минус перед bash значит, что это оболочка входа — та, что запустилась при подключении к серверу по SSH. В других случаях строка начинается с bash: — смысл тот же.
Почему так происходит
Чтобы запустить файл как программу — командой ./script.sh, — у него должно быть право x. Без него bash отказывается. Права покажет команда:
ls -l script.sh-rw-r--r-- 1 ivan ivan 210 Oct 10 12:00 script.shВ правах rw-r--r-- нет буквы x — запускать файл нельзя. Это нормально для нового файла: созданный в редакторе или скачанный из интернета файл получает права без x, пока их не дали явно. Что значат буквы, рассказано в справочнике Права на файлы в Linux: rwx, 644 и 755.
Способ 1. Дайте право на выполнение
chmod u+x script.shu+x разрешает запуск владельцу файла — вам. Если скрипт должны запускать и другие пользователи сервера, напишите chmod a+x script.sh — право получат все.
Проверьте командой ls -l script.sh: в правах появится x — -rwxr--r--.
Если файл не ваш, chmod напишет Operation not permitted: поставьте sudo перед командой. Если система спросит пароль, введите пароль своего пользователя на сервере. Символы при вводе не видны — так и должно быть: наберите пароль и нажмите Enter.
Способ 2. Запустите через bash
bash script.shТак bash читает файл сам, и право x не нужно — достаточно права на чтение. Способ подходит для скриптов, которые вы запускаете один-два раза. Если скрипт на Python — в первой строке #!/usr/bin/env python3, — запускайте его так:
python3 script.pyЕсли после chmod ошибка осталась
Диск подключён с запретом запуска
Диск или папку можно подключить к системе с настройкой noexec — она запрещает запускать с него программы, какие бы права ни были у файлов. Перейдите в папку со скриптом и проверьте:
findmnt -T .Команда покажет диск, на котором лежит текущая папка, и его настройки — колонка OPTIONS. Если там есть слово noexec, перенесите скрипт в домашнюю папку командой mv script.sh ~/ или запускайте его через bash — способ 2.
У папки на пути нет права x
Чтобы запустить файл, право x нужно и всем папкам на пути к нему. Права на всём пути покажет команда namei — подставьте полный путь к скрипту:
namei -l /home/ivan/scripts/script.shКак читать её ответ, рассказано в разборе 403 Forbidden: там такая же проверка для файлов сайта.
Похожие ошибки
| Сообщение | Что значит | Что делать |
|---|---|---|
./script.sh: No such file or directory | Файла с таким именем нет в текущей папке | Сверьте имя с ответом ls, перейдите в папку скрипта командой cd |
./script.sh: cannot execute: required file not found | Нет программы из первой строки скрипта | Разбор ниже |
script.sh: command not found | Скрипт запустили без ./ в начале | Запускайте так: ./script.sh |
cannot execute: required file not found
bash нашёл файл, но не нашёл программу, которая должна его выполнить. Путь к ней записан в первой строке скрипта после #!, например #!/bin/bash. Посмотрите первую строку:
head -n 1 script.shЕсли в пути опечатка или такой программы на сервере нет, исправьте строку в редакторе или установите программу. Проверить, есть ли файл, можно командой ls -l с путём из первой строки.
Если путь верный и программа есть, проверьте, не сохраняли ли файл в Windows. Там каждая строка заканчивается невидимым символом, и bash ищет программу /bin/bash с этим символом на конце. Уберите лишние символы:
tr -d '\r' < script.sh > script-unix.sh
mv script-unix.sh script.sh
chmod u+x script.shПервая команда создаёт копию без лишних символов, вторая заменяет ею исходный файл, третья возвращает право на выполнение — у новой копии его нет.
Команды сверены со справкой Ubuntu 24.04, тексты ошибок — с исходным кодом coreutils 9.4 и bash 5.2.
Источники
- Исходный код bash 5.2: execute_cmd.c — тексты Permission denied и cannot execute: required file not found.
- Исходный код bash 5.2: shell.c — минус перед именем у оболочки входа.
- Справка chmod для Ubuntu 24.04 — буквы ugoa, rwxX, права числом и ключи -R, -v и -c.
- Справка Linux: path_resolution(7) — право x на каждую папку пути и права root.
- Справка findmnt для Ubuntu 24.04 — ключ -T находит диск, к которому относится папка.
- Справка mount для Ubuntu 24.04 — настройка noexec запрещает запускать программы с диска.
- Справка tr для Ubuntu 24.04 — ключ -d и символ \r.
Сверено 10 октября 2026 года.
Что почитать дальше
- Cron не запускает скрипт — что проверить, если задача по расписанию не выполняется.
- Права на файлы в Linux: rwx, 644 и 755.
- Команда chmod.
- Permission denied в Linux.
Проверено и обновлено: 10.10.2026