如何在init.rc文件中完全禁用Android L中的SELinux?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在init.rc文件中完全禁用Android L中的SELinux?相关的知识,希望对你有一定的参考价值。

我想在启动时为android L或5禁用SELinux。原因是因为SELinux问题,我的守护程序在启动时不会开始执行。我在init.rc文件中有以下内容:

su 0 setenforce 0
service my_daemon /system/bin/my_daemon 
    class main     # Also tried: class core (but it didn't make a difference)
    user root
    group root

但是,在启动时,我使用adb shell来检查SELinux是否被禁用(使用getenforce)并返回Enforcing。我希望SELinux在启动时完全禁用。如果没有完全禁用,那么至少Permissive

有什么建议?

答案

setenforce 0

enforce属性将立即为Permissive。

另一答案

而不是放入init.rc,你可以通过向内核命令行添加一些参数(BOARD_KERNEL_CMDLINE)来实现它

例如:在enforcing=0 androidboot.selinux=permissive中添加device/<manufacturer>/<target>/BoardConfig.mk

另一答案

好吧,我猜你可以为你的“my_daemon”创建一个新的域策略。例如,您可以在AOSP的device / manufacturer / device-name / sepolicy /创建mydomain.te文件,其中包含以下内容:

# mydomain policy here
type mydomain, domain;
permissive mydomain;
type mydomain_exec, exec_type, file_type;

init_daemon_domain(mydomain)

现在将以下行添加到device / manufacturer / device-name / sepolicy / file_contexts:

/system/bin/my_daemon   u:object_r:mydomain_exec:s0

这是你的init.rc文件:

service my_daemon /system/bin/my_daemon
    class core

所以这里的好处是只有mydomain才会允许,并且系统的其余部分都会强制执行,因此你可以让你的守护进程运行没有任何问题并且仍然保持系统安全性。

以上是关于如何在init.rc文件中完全禁用Android L中的SELinux?的主要内容,如果未能解决你的问题,请参考以下文章

android init.rc修改问题

mtk平台修改init.rc后如何快速编译啊

android中init.rc文件的解析问题

Android init.rc文件浅析

Android 4.4 Init进程分析二:init.rc文件的解析

Android 12 init rc脚本解析和事件执行流程