dud*_*udu 6 service android selinux seandroid
我想在启动时在 Android 5.1 的目标板上执行一个可执行文件,所以我在 init.rc 中添加了这个:
on boot
start myservice
service myservice /system/bin/myservice
#class main
user root
group root
#oneshot
Run Code Online (Sandbox Code Playgroud)
我做了拆包和重新打包的工作。
但是,当进行更改时,屏幕会继续打印:
init warning: Service myservice needs a SELinux domain defined. Please fix.
type=1400 ... avc:denied ... scontext ... tcontext ... #some annoying warning messages like this
Run Code Online (Sandbox Code Playgroud)
SELinux 对我来说似乎是一个巨大的项目。我只是想避免这种情况。我尝试了两种方法:
1. setenv kernelargs 'console=ttyS0,115200n8 rootdelay=1 selinux=0' and saveenv
2. set enforce 0
Run Code Online (Sandbox Code Playgroud)
对于方法1,printenv给出结果:
kernelargs=console=ttyS0,115200n8 rootdelay=1 selinux=0
Run Code Online (Sandbox Code Playgroud)
所以你看,已经发生了变化。但是警告消息在重新启动后继续打印。
对于方法 2,它说:
Could not set enforce status. Permission denied.
Run Code Online (Sandbox Code Playgroud)
所以现在我陷入困境不知道去哪里。我的问题:
此外,ls -Z /system/bin/myservice给出了这个:
u:object_r:system_file:s0
Run Code Online (Sandbox Code Playgroud)
小智 3
您需要 su 来设置宽容模式。或者您需要源代码来禁用SELinux,例如在内核配置中禁用SELinux,或者在device/vendor_name/product_name/BoardConfig.mk中的BOARD_KERNEL_CMDLINE中禁用SELinux。
如果您有源代码,您可以根据需要定义新域。
请参考Android官方文档:https://source.android.com/security/selinux/device-policy
部分:标记新服务并解决拒绝问题