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‑модуль.
- Создайте файл
myapp.teс описанием правил. - Скомпилируйте модуль.
# Установите необходимые пакеты (только в терминале с 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‑политик и обучению сотрудников. Свяжитесь с нами, чтобы вывести ваш проект на новый уровень надёжности.