We detected you are likely not from a Russian-speaking region. Would you like to switch to the international version of the site?

  Назад к списку статей

Расширенные возможности SELinux в Termux‑окружении

Security‑Enhanced Linux (SELinux) – это система мандатного контроля доступа, встроенная в Android с версии 4.3. В контексте Termux она определяет, какие операции могут выполнять приложения и скрипты, защищая систему от нежелательного доступа к файлам, сокетам и другим ресурсам.

Проверка текущего статуса SELinux

Для начала убедитесь, что SELinux активен на вашем устройстве. Выполните в Termux:

getenforce

Команда вернёт одно из трёх значений:

  • Enforcing – политики применяются строго.
  • Permissive – нарушения фиксируются, но не блокируются.
  • Disabled – SELinux отключён (в Android почти невозможно).

Переключение в permissive режим

Для отладки иногда удобно временно перевести SELinux в режим Permissive. Для этого необходим root‑доступ.

su
setenforce 0   # переключить в permissive
getenforce      # проверить результат

Чтобы вернуть режим Enforcing, выполните setenforce 1. Помните, что постоянное использование permissive режима снижает уровень безопасности.

Создание и загрузка пользовательских модулей

Если стандартные политики ограничивают работу вашего скрипта, можно написать собственный SELinux‑модуль.

  1. Создайте файл myapp.te с описанием правил.
  2. Скомпилируйте модуль.
# Установите необходимые пакеты (только в терминале с root‑правами)
apt update && apt install -y policycoreutils selinux-policy-dev

# Пример содержимого myapp.te
module myapp 1.0;
require {
    type untrusted_app;
    class file { read write execute open };
}
# Разрешаем приложению myapp читать и выполнять файлы в /data/data/com.example.myapp
allow untrusted_app myapp_data_file:file { read execute open };

# Компиляция
checkmodule -M -m -o myapp.mod myapp.te
semodule_package -o myapp.pp -m myapp.mod

# Установка модуля (root)
su
semodule -i myapp.pp

# Проверка загрузки
semodule -l | grep myapp

После установки модуля SELinux будет учитывать новые правила, и ваш Termux‑скрипт получит необходимые привилегии.

Отладка и журналирование

Все нарушения политик записываются в журнал аудита. Для их анализа удобно использовать утилиту audit2allow:

# Просмотр последних сообщений SELinux
logcat -b security | grep avc

# Преобразование в правила allow
logcat -b security | grep avc | audit2allow -M myapp_fix

# Сгенерированный модуль myapp_fix.pp можно установить как описано выше.

Автоматизация через скрипты Termux

Чтобы не выполнять каждую команду вручную, создайте bash‑скрипт selinux-setup.sh:

#!/data/data/com.termux/files/usr/bin/bash
# Проверяем, запущен ли скрипт от root
if [ "$(id -u)" -ne 0 ]; then
    echo "Требуется root. Запустите: su -c \"$(realpath $0)\""
    exit 1
fi

# Переключаем в permissive для отладки
setenforce 0

# Компилируем и устанавливаем пользовательский модуль
checkmodule -M -m -o myapp.mod myapp.te
semodule_package -o myapp.pp -m myapp.mod
semodule -i myapp.pp

# Возвращаем Enforcing
setenforce 1

echo "SELinux конфигурирован успешно."

Сделайте скрипт исполняемым (chmod +x selinux-setup.sh) и запускайте при необходимости.

Ограничения и совместимость

  • Не все Android‑устройства позволяют менять режим SELinux без разблокировки загрузчика.
  • В некоторых прошивках (OEM‑custom) политика уже сильно модифицирована, и пользовательские модули могут конфликтовать.
  • Termux работает в пользовательском пространстве, поэтому доступ к системным каталогам (например, /system) всё равно будет ограничен, независимо от SELinux.

Заключение

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

Если вы хотите внедрить безопасные решения на базе Termux в ваш бизнес, настроить автоматизированные скрипты SELinux или получить консультацию по оптимизации мобильных инфраструктур, команда RybinskLab готова помочь. Мы предоставляем услуги по аудиту безопасности Android, разработке кастомных SELinux‑политик и обучению сотрудников. Свяжитесь с нами, чтобы вывести ваш проект на новый уровень надёжности.

* Текст статьи подготовлен и структурирован с использованием технологий искусственного интеллекта. Проверен экспертом RybinskLab.

Поделиться знанием:

Нужна профессиональная помощь?

Меня зовут Усачёв Денис Евгеньевич. Я оказываю IT-услуги в Рыбинске и Ярославской области: настройка серверов, безопасность, автоматизация бизнеса.

Связаться со мной