Ошибка permission denied в Termux появляется, когда оболочка пытается выполнить файл без флага исполнения, записать данные в защищённый каталог или обратиться к системным ресурсам Android, к которым у приложения нет доступа. Типичный сценарий: вы скачали скрипт, ввели ./script.sh — и получили отказ вместо результата.
Терминал Termux работает в изолированной среде Android, поэтому причины отказа делятся на две группы: внутренние (права на файлы внутри окружения Termux) и внешние (ограничения самой системы Android). Ниже разберём обе группы и дадим безопасные способы диагностики и исправления.
Что означает ошибка permission denied
Сообщение «Permission denied» (доступ запрещён) — это ответ ядра Linux на попытку выполнить действие, на которое у процесса нет прав. В Unix-подобных системах у каждого файла есть набор разрешений: чтение, запись и выполнение — для владельца, группы и остальных пользователей.
Если файл не помечен как исполняемый, команда вида ./myscript.sh завершится отказом. Аналогично запись в каталог, доступный только для чтения, вызовет ту же ошибку. Проверить текущие разрешения можно командой ls -l имя_файла — в начале строки вы увидите набор символов вроде -rw-r--r--.
- 🔍 r — право на чтение файла;
- ✏️ w — право на запись и изменение;
- ▶️ x — право на выполнение (запуск как программы);
- 📁 для каталогов x означает возможность входа в него.
Отсутствие флага выполнения — самая частая причина
Файлы, скачанные через браузер или распакованные из архива, обычно не имеют флага исполнения. Это нормальное поведение, а не сбой. Чтобы скрипт можно было запустить напрямую, необходимо добавить разрешение на выполнение.
Используйте команду chmod. Она меняет права доступа к файлу:
chmod +x script.sh
./script.sh
Альтернативный вариант — запустить скрипт через интерпретатор напрямую, тогда флаг выполнения не нужен:
bash script.sh
python script.py
Обратите внимание: команда chmod +x сработает только внутри окружения Termux — в каталоге /data/data/com.termux/files/home. На общем хранилище Android (карта памяти, папка Download) флаг исполнения установить нельзя, об этом подробнее ниже.
Доступ к общей памяти Android
По умолчанию Termux не видит содержимое общего хранилища устройства. Попытка перейти в /sdcard или /storage/emulated/0 и поработать с файлами приведёт к отказу, пока приложению не выдано соответствующее разрешение Android.
Для запроса доступа существует специальная команда:
termux-setup-storage
После её выполнения система покажет стандартный диалог запроса разрешения. Подтвердите доступ — и в домашнем каталоге появится папка ~/storage со ссылками на downloads, dcim, shared и другие разделы общей памяти.
⚠️ Внимание: даже после выдачи разрешения файловая система общего хранилища Android не поддерживает права на исполнение. Командаchmod +xтам не сработает — копируйте исполняемые файлы в домашний каталог Termux командойcpи запускайте их оттуда.
Ошибки при запуске бинарных файлов
Отдельный случай — запуск чужих исполняемых файлов, например скачанных из интернета утилит. Здесь permission denied может возникать даже при выставленном флаге +x. Возможные причины: файл собран для другой архитектуры процессора, повреждён при загрузке или лежит в разделе, где выполнение запрещено.
Проверьте тип файла командой file имя_файла — она покажет, является ли файл исполняемым бинарником и для какой платформы он собран. Узнать архитектуру устройства можно командой uname -m. Если архитектуры не совпадают, файл физически не сможет запуститься.
Почему бинарник из интернета может не запуститься
Termux работает на Android с ядром Linux, но бинарные файлы для обычного десктопного Linux часто используют другую библиотеку C (glibc вместо bionic) и другие пути к загрузчику. Такие файлы в Termux не запустятся без дополнительных прослоек вроде proot. Безопаснее устанавливать пакеты из официального репозитория через pkg install.
Ошибки доступа при установке пакетов
Иногда отказ в доступе появляется при работе пакетного менеджера pkg или apt. Например, после экспериментов с sudo или запуска команд от root права на служебные каталоги внутри $PREFIX могут оказаться испорчены, и обычные операции начнут завершаться ошибкой.
Что можно проверить в такой ситуации:
- 🔄 обновите списки пакетов:
pkg update; - 📂 убедитесь, что вы не работаете внутри системного каталога — вернитесь командой
cd ~; - 🧹 очистите кэш пакетов:
apt clean; - 🔎 проверьте владельца файлов в домашнем каталоге через
ls -la.
Если окружение повреждено серьёзно и ошибки повторяются, радикальный вариант — очистить данные приложения Termux в настройках Android. Учтите, что это удалит все установленные пакеты и файлы внутри окружения, поэтому важные данные заранее скопируйте в общую память.
☑️ Базовая диагностика permission denied
Таблица типовых ситуаций и решений
| Ситуация | Вероятная причина | Решение |
|---|---|---|
| ./script.sh не запускается | Нет флага исполнения | chmod +x script.sh |
| Нет доступа к /sdcard | Не выдано разрешение Android | termux-setup-storage |
| chmod не работает в памяти телефона | Ограничение файловой системы | Скопировать файл в ~ |
| Бинарник не запускается с +x | Другая архитектура или glibc | Установить пакет из репозитория |
| Ошибки при pkg install | Повреждены права в $PREFIX | Очистка данных приложения |
Когда нужен root и почему это не всегда выход
Часть операций в Termux принципиально недоступна без root-прав: изменение системных файлов Android, доступ к данным других приложений, работа с некоторыми сетевыми интерфейсами. Если команда упирается в отказ именно из-за системного ограничения, никакие chmod внутри Termux не помогут.
⚠️ Внимание: получение root-доступа снимает гарантийные ограничения системы и может нарушить работу банковских приложений и механизмов защиты устройства. Выполняйте такие действия только при полном понимании рисков и следуйте инструкциям именно для вашей модели устройства.
Во многих случаях root не требуется: подавляющее большинство задач в Termux решается внутри собственного окружения приложения, где у пользователя и так полные права. Сначала проверьте, не запускаете ли вы команду в неправильном каталоге или не пытаетесь ли изменить файл, принадлежащий системе.
Часто задаваемые вопросы
Почему chmod +x не работает в папке Download?
Общее хранилище Android монтируется с параметрами, запрещающими исполнение файлов. Скопируйте файл в домашний каталог Termux командой cp и выполните chmod +x уже там.
Что делать, если termux-setup-storage не помогает?
Проверьте в настройках Android, что у приложения Termux выдано разрешение на доступ к файлам. На новых версиях Android разрешение может называться «Файлы и медиа». После выдачи разрешения перезапустите Termux.
Можно ли исправить ошибку без root-прав?
Да, в большинстве случаев. Ошибки с флагом исполнения, доступом к памяти и установкой пакетов решаются штатными средствами: chmod, termux-setup-storage, pkg update. Root нужен только для операций над самой системой Android.
Почему скачанный файл не запускается даже с chmod +x?
Проверьте тип файла командой file и архитектуру устройства командой uname -m. Файл может быть собран для другой платформы или повреждён при загрузке. Надёжнее устанавливать программы из официального репозитория Termux через pkg install.
Ошибка появляется при записи в системный каталог — что делать?
Каталоги вроде /system или /data защищены Android, и без root-прав запись туда невозможна. Перенесите рабочие файлы в домашний каталог Termux — для большинства задач этого достаточно.