В зависимости от того, как ваше устройство было рутировано и какой у вас установлен Android ROM, будет зависеть, как вы можете его отключить. Первое, что нужно попробовать, это:
adb shell su 0 setenforce 0
Это НЕ то же самое, что:
adb shell setenforce 0
Выполнение su вызывает переход домена из оболочки (который не может использовать setenforce) в домен su (который может вызывать setenforce). Например, запустите:
$ adb shell id -Z
context=u:r:shell:s0
в сравнении с:
$ adb shell su 0 id -Z
context=u:r:su:s0
Это может не сработать по трем причинам:
- У вас нет исполняемого файла su
- Исполняемый файл su имеет неправильную метку
- Правила домена su не были скомпилированы в загрузочный образ
Чтобы исправить проблему 2, вы можете (при условии, что adb является корнем):
adb remount
adb shell chcon /system/xbin/su u:object_r:su_exec:s0
Это может привести к сбою, что, скорее всего, укажет на проблему 3. Чтобы исправить проблему 3, вам необходимо перекомпилировать boot.img, содержащий файлы политики su. Если вы компилируете AOSP, просто запустите версию userdebug или eng вашего устройства.
Другой подход состоит в том, чтобы удалить функциональность из init.c, и, как и в случае с проблемой 3, требуется перекомпилировать boot.img. Перейдите в system/core/init/init.c (или .cpp) и удалите все вызовы security_setenforce().
Кроме того, у XDA есть приложение, которое может помочь автоматизировать этот процесс и упростить его, однако я не могу говорить о качестве приложения: http://www.xda-developers.com/easyly-change-ваш-android-selinux-mode/
person
William Roberts
schedule
30.06.2015