在android 4.4.4及以上版本中,如何将SELinux设置为0或许可模式?

在android 4.4.4及以上版本中,如何将SELinux设置为0或许可模式?,android,android-4.4-kitkat,selinux,Android,Android 4.4 Kitkat,Selinux,我想在android 4.4.4(如果可能的话,还可以更高版本)上将SELinux(安全增强Linux)模式设置为Permissive或(0)。我使用以下命令:setenforce 0、setenforce permissive和根目录下的setenforce permissive(我的设备是根目录)。但是getenforce的输出总是Enforcing。现在我对这个问题已经精疲力尽了 有谁能给我一个解决办法吗?提前感谢。这取决于设备的根目录以及运行的Android ROM将决定如何禁用它。首先

我想在android 4.4.4(如果可能的话,还可以更高版本)上将SELinux(安全增强Linux)模式设置为Permissive或(0)。我使用以下命令:
setenforce 0
setenforce permissive
和根目录下的
setenforce permissive
(我的设备是根目录)。但是
getenforce
的输出总是
Enforcing
。现在我对这个问题已经精疲力尽了


有谁能给我一个解决办法吗?提前感谢。

这取决于设备的根目录以及运行的Android ROM将决定如何禁用它。首先要尝试的是:

adb shell su 0 setenforce 0
这与:

adb shell setenforce 0
su上的execute导致域从shell(不能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是root):

    这可能会失败,这可能表明问题3。要修复问题3,需要重新编译包含su策略文件的boot.img。如果您正在编译AOSP,只需使用设备的userdebug或eng变体即可

    另一种方法是从init.c中删除该功能,就像问题3一样,需要重新编译boot.img。进入system/core/init/init.c(或.cpp)并删除对security_setenforce()的所有调用

    此外,XDA有一个应用程序可以帮助自动化此过程并使其更容易,但是,我不能谈论应用程序的质量:

    谷歌已经从许多库存内核中删除了
    CONFIG\u SECURITY\u SELINUX\u DEVELOP
    内核标志。因此,William(下面)提到的标准技巧可能不起作用。这些设备的一个例子是运行AOS 4.4.4的三星Note 4(SM-N910F)

    上面的链接说明:

    CONFIG_SECURITY_SELINUX_develope又称全局许可模式,用于 当您第一次为电路板开发特定于设备的策略时(添加 “androidboot.selinux=permissive”可用于板(内核(CMDLINE))。它也 允许在-userdebug-eng生成中执行临时设置0,可以 对开发者有帮助

    如果引导加载程序已锁定,则无法修改内核cmdline

    另外,init程序中用于处理
    androidboot.selinux=
    选项仅在
    -userdebug
    -eng
    版本中编译,因此即使除了引导加载程序锁定之外,您也不能使用
    androidboot.selinux=permissive
    -用户
    构建。”

    检查生成类型的方法是:

    $ getprop ro.build.type
    user
    

    一定要扎根!不确定这是否适用于KitKat(它应该),但我在Nexus6上使用它。在终端或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
    

    chmod 755/system/su.d/permissive.sh
    在我的例子中,自上次供应商升级以来,
    u:r:su:s0
    上下文不再存在。如何将其添加到
    /sepolicy
    su
    /system/bin/getenforce