Как установить SELinux в 0 или разрешительный режим в android 4.4.4 и выше?

Я хочу установить режим SELinux (Security Enhanced Linux) в разрешительный или (0) на android 4.4.4 (и выше, если это возможно). Я использую следующую команду: setenforce 0, setenforce permissive и setenforce Permissive под root (мое устройство укоренено). Но выход getenforce всегда Enforcing. Теперь я устал от этой проблемы.

может кто-нибудь дать мне решение? Спасибо заранее.

3 ответов


видимо Google удалил CONFIG_SECURITY_SELINUX_DEVELOP флаг ядра из многих их Stock ядра. Таким образом, стандартный трюк, упомянутый Уильямом (ниже), вероятно, не работает. Примером этих устройств является Samsung примечание 4 (см-n910f) запуск AOS 4.4.4.

ссылка выше гласит:

CONFIG_SECURITY_SELINUX_DEVELOP aka глобальный разрешительный режим, это полезно для когда ты первый разработка политики устройства для платы (add 'androidboot.selinux=разрешение на BOARD_KERNEL_CMDLINE). Это также разрешения переходные setenforce 0 на -userdebug или -eng сборки, которые могут будьте полезны для разработчиков.

если загрузчик заблокирован, то вы не можете изменить cmdline ядра

" кроме того, код в программе init для обработки составлен только в -userdebug и -eng строит, поэтому даже помимо блокировки загрузчика, вы не можете использовать androidboot.selinux=permissive на -user построить."

способ проверить, какой тип сборки у вас есть:

$ getprop ro.build.type
user

в зависимости от того, как ваше устройство было укоренено и какой Android ROM ваш запуск определит, как вы можете отключить его. Первое, что нужно попробовать:

adb shell su 0 setenforce 0

Это не то же, что:

adb shell setenforce 0

выполнение на su вызывает переход домена из оболочки (которая не может setenforce) в домен su (который может вызвать setenforce). Например, run:

$ adb shell id -Z
context=u:r:shell:s0

против:

$ adb shell su 0 id -Z
context=u:r:su:s0

Это может не сработать для трех причины:

  1. у вас нет исполняемого файла su
  2. исполняемый файл su имеет неправильную метку
  3. правила домена su не были скомпилированы в bootimage

чтобы исправить проблему 2, Вы можете (предполагая, что adb является root):

adb remount
adb shell chcon /system/xbin/su u:object_r:su_exec:s0

Это может не сработать, что, вероятно, укажет на проблему 3. Чтобы исправить проблему 3, вам нужно перекомпилировать загрузку.img, содержащий файлы политики su. Если вы компилируете AOSP, просто обедайте userdebug или eng вариант вашего устройства.

другим подходом было бы удаление функциональности из init.c и, как проблема 3, требует перекомпиляции загрузки.НВФ. Перейдите в system / core/init / init.c (or .cpp) и удалить все вызовы security_setenforce ().

кроме того, XDA имеет приложение, которое может помочь автоматизировать этот процесс и сделать его проще, однако я не могу говорить о качестве приложение: http://www.xda-developers.com/easily-change-your-android-selinux-mode/


ДОЛЖНЫ БЫТЬ УКОРЕНЕНЫ! Не уверен, что это работает на KitKat (это должно), но я использую это на своем Nexus 6. Выполните следующие действия в терминале или оболочке ADB:

su
mount -o remount,rw /system
mkdir /system/su.d
echo "#!/system/bin/sh" > /system/su.d/permissive.sh
echo "echo 0 > /sys/fs/selinux/enforce" >> /system/su.d/permissive.sh
chmod 755 /system/su.d/permissive.sh

и проверьте его после перезагрузки следующим образом:

su
/system/bin/getenforce