Android7关闭selinux (设置为永久模式)
若要将selinux设定为“容忍模式”,必须修改以下两个文件:
Android/system/core/init/Android.MK
安卓/系统/酷睿/init/init.CPP
虽然网上也有文章称要修改cmdline,但如果修改cmdline后仍然无效,则参考本文修改Android/system/core/init/Android.MK可能会生效。 本文不解释如何修改cmdline。 因为我也不会这么做[掩面笑]
------------- 2019---- 12---- 31补充
这次补充没有本人验证,不保证正确
cmdline是设备/qcom /平台/BoardConfig.mk,例如高通的8953平台:
设备/qcom/MSM 8953 _ 64/board config.MK
IFEQ($ ) target_quectel_build_fastboot ),userfastboot ) ) ) ) )。
board _ kernel _ cmdline :=console=tty HSL 0,115200,n8 Android boot.console=tty HSL0quietandroidboot.hardware=
else
board _ kernel _ cmdline :=console=tty HSL 0,115200,n8 Android boot.console=tty HSL0Android boot.hardware=qcom mom
最终幻想
相关的c文件: bootable/boot loader/lk/app/aboot/aboot.c
------------- 2019---- 12---- 31补充
区别如下。 我会详细说明的,请继续往下看
diff-- gita/system/core/init/Android.mkb/system/core/init/Android.MK
index fbb3a28.8d68f72 100644
--- a/system/core/init/Android.MK
b/system/core/init/Android.mk
@ @-7,77,7 @ @ local _ path :=$ (call my-dir )
ifneq (,$ ) $ (过滤器用户调试eng,$ ) $(TARGET_BUILD_VARIANT ) )
init _ options=-dallow _ local _ prop _ override=1- dallow _ permissive _ selinux=1
else
- init _ options=-dallow _ local _ prop _ override=0- dallow _ permissive _ selinux=0
init _ options=-dallow _ local _ prop _ override=0- dallow _ permissive _ selinux=1
最终幻想
init_options =-DLOG_UEVENTS=0
diff-- gita/system/core/init/init.cppb/system/core/init/init.CPP
索引23fa FBA . 8010 fa9 100755
--- a/system/core/init/init.cpp
b/system/core/init/init.cpp
@ @-421,7421,7 @ @ staticvoidselinux _ init _ all _ handles (void ) () ) ) ) ) ) 0
enum selinux _ enforcing _ status { selinux _ permissive,SELINUX_ENFORCING };
静态selinux _ enforcing _ status selinux _ status _ from _ cmdline (
- selinux _ enforcing _ status status=selinux _ enforcing;
selinux _ enforcing _ status status=selinux _ permissive;
import_kernel_cmdline(false,[ (常数STD 33603360 string key,常数STD : string value,bool in_qemu ) ) )
if (key==' Android boot.selinux ' value==' permissive ' )。
首先浏览system/core/init/init.cpp
enum selinux _ enforcing _ status { selinux _ permissive,SELINUX_ENFORCING };
静态selinux _ enforcing _ status selinux _ status _ from _ cmdline (
selinux _ enforcing _ status status=selinux _ permissive; //标记1
import_kernel_cmdline(false,[](constSTD33603360stringkey,const std:string value,bool in_qemu ) )/STD
if (key==' Android boot.selinux ' value==' permissive ' )//标记3
status=SELINUX_PERMISSIVE;
}
);
返回状态;
}
(saticboolselinux _ is _ enforcing (void ) ) ) ) ) ) ) ) 65
{
if(allow_permissive_selinux(//标记4 )
return selinux _ status _ from _ cmdline (==selinux _ enforcing;
}
返回真; //标记5
}
代码说明:
注释1 :此处的原始值为SELINUX_ENFORCING,如果更改为SELINUX_PERMISSIVE,则默认情况下处于容忍模式
注释2 :现在从cmdline读取参数
注释3 )从cmdline导入到androidboot.selinux时,status处于容忍模式,cmdline的默认androidboot.selinux值为空,因此更改前的默认值为selinus
注意4 :如果此处为真,则调用selinux_status_from_cmdline。 否则,默认情况下返回ture,如果返回ture,则打开selinux
注意5 :如果在此处将其更改为false,则可以直接更改为容忍模式,但不建议进行此类更改,因此在此保留为true
请看system/core/init/Android.mk
ifneq (,$ ) $ (过滤器用户调试eng,$ ) $(TARGET_BUILD_VARIANT ) )
init _ options=-dallow _ local _ prop _ override=1- dallow _ permissive _ selinux=1
else
init _ options=-dallow _ local _ prop _ override=0- dallow _ permissive _ selinux=1#标记1
最终幻想
代码说明:
注释1 :其中-DALLOW_PERMISSIVE_SELINUX定义ALLOW_PERMISSIVE_SELINUX的值。 该值最初为0,在编译user版本时,该值为0,该值位于system/core/iinux中,system/core/init/init.cpp为selinux _ status, 否则,对system/core/init/init.cpp的更改没有任何意义
完成以上修改后,编译并写入设备,在设备端执行“获得增强”(getenforce ),如果结果为Permissive,则修改成功
$ getenforce
永久的