Решение ошибки «No such file or directory» при запуске easyrsa в Termux под root

При настройке VPN-сервера через OpenVPN в Termux многие сталкиваются с необходимостью запуска утилиты easyrsa с правами суперпользователя. Однако переход в окружение root через sudo -u root часто приводит к ошибкам вроде «No such file or directory» или отсутствию OpenSSL, даже если пакеты установлены.

Проблема возникает из-за особенностей работы Termux: при смене пользователя сбрасываются переменные среды и пути, что нарушает работу скриптов. Разберёмся, как это исправить без переустановки пакетов и сложных манипуляций.

Почему окружение root «ломает» easyrsa

Termux, в отличие от стандартных Linux-дистрибутивов, хранит пользовательские данные в изолированном каталоге /data/data/com.termux. Когда вы выполняете команду через sudo -u root, система пытается найти бинарные файлы и библиотеки в стандартных путях вроде /usr/bin, которые в Termux не существуют. Например, OpenSSL здесь расположен в /data/data/com.termux/files/usr/bin, но root-окружение об этом не знает.

Дополнительная сложность возникает, если easyrsa пытается прочитать конфигурационные файлы (например, vars) или создать папку pki. Скрипт может ссылаться на относительные пути, которые в root-сессии ведут в несуществующие директории. Отмечу, что даже явное указание пути к easyrsa не всегда помогает — если скрипт внутри вызывает другие программы (вроде openssl), они тоже будут недоступны.

Пошаговое решение: настройка PATH и параметров easyrsa

Чтобы заставить easyrsa работать в root-окружении, нужно вручную задать корректные пути для переменных среды и параметров скрипта. Вот как это сделать:

1. Укажите правильный PATH

Переменная PATH определяет, где система ищет исполняемые файлы. В Termux она включает пути вроде /data/data/com.termux/files/usr/bin, но при переходе в root это сбрасывается. Исправьте это, добавив PATH прямо в команду через env:

env PATH=/data/data/com.termux/files/usr/bin sh /путь/к/easyrsa

2. Явно задайте каталог pki

Даже если в файле vars прописан путь к pki, root-окружение может его игнорировать. Используйте параметр --pki:

env PATH=... sh /путь/к/easyrsa --pki=/полный/путь/к/pki

Например:

env PATH=/data/data/com.termux/files/usr/bin sh /data/data/com.termux/files/home/openvpn/easy-rsa/easyrsa3/easyrsa --pki=/data/data/com.termux/files/home/openvpn/easy-rsa/easyrsa3/pki

3. Проверьте права доступа

Убедитесь, что root имеет доступ к файлам Termux. Иногда папки в /data/data/com.termux защищены правами доступа, которые запрещают чтение или запись другим пользователям. Выполните:

chmod -R 755 /data/data/com.termux/files/home/openvpn

Дополнительные рекомендации

  • Абсолютные пути везде — в скриптах и командах всегда используйте полные пути, включая вызовы внутри easyrsa (например, ./easyrsa замените на /полный/путь/к/easyrsa).
  • Проброс переменных — если easyrsa требует другие переменные (например, EASYRSA_ROOT), добавьте их через env:
env PATH=... EASYRSA_ROOT=/путь/к/корню sh /путь/к/easyrsa ...
  • Альтернатива sudo — вместо sudo -u root попробуйте tsu (аналог sudo для Termux), который может сохранять часть переменных среды.

Если после всех действий скрипт по-прежнему выдаёт ошибки, проверьте, установлены ли зависимости в Termux:

pkg install openssl-tool easy-rsa

И не забудьте — работа с root-правами в Termux требует осторожности. Любая ошибка в путях или командах может повредить данные приложения. Смело рекомендую тестировать команды в обычном окружении (без sudo), а затем адаптировать их для root, добавляя env PATH=... и абсолютные пути.

Готово! Теперь вы можете интегрировать easyrsa в автоматизированные панели управления или скрипты, работающие от имени root, без ошибок о пропавших файлах. Если столкнётесь с проблемами — напишите в комментарии, постараюсь помочь.

Добавить комментарий

Все поля обязательны к заполнению. Ваш адрес email не будет виден никому.

Новое
Интересное