我想在启动时为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
。
有什么建议吗?
答案 0 :(得分:2)
不是放入init.rc,而是通过向内核命令行添加一些参数(BOARD_KERNEL_CMDLINE)来使其变得宽松
例如:在enforcing=0 androidboot.selinux=permissive
device/<manufacturer>/<target>/BoardConfig.mk
答案 1 :(得分:1)
好吧,我想您可以为“ 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)
现在,将以下行添加到设备/制造商/设备名称/ 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是允许的,而系统的其余部分将被强制执行,因此您可以让守护程序运行而没有任何问题,并且仍然保持系统安全性。
答案 2 :(得分:0)
之后
setenforce 0
enforce属性将是imissivediately。