init进程是Android内核启动的第一个用户进程,其中的SELinux也是在init进程中启动的,代码位置在system/core/init/init.cpp中。

开机自动关闭SELinux权限_开机默认关闭SELinux权限

 通过代码我们可以看出,初始化时会通过security_getenforce()和selinux_is_enforcing()的值是否一致来判断是否开启SELinux,当不一致的时候会设置security_setenforce的值为is_enforcing。

security_getenforce()是读取驱动节点enforce,节点路径为sys/fs/selinux/enforce。

selinux_is_enforcing()是通过接受命令行的值,默认返回true,所以我们将里面注释掉直接返回false即可,注意黄色框函数也要注释掉,不然编译的时候会报错有未使用的函数。

开机自动关闭SELinux权限_linux_02

 然后重新编译,重新烧录boot.img即可,开机后查看SE权限就是Permissive了。

开机自动关闭SELinux权限_linux_03