一开始并没有注意到android8.0以后和之前有多大区别,知道最近有需求要求增加一个自定义服务,一直没有生效报avc权限问题
在SystemServer startOthreService中
ServiceManager.addService () 出现了AVC权限:
SELinux: avc denied {add} for service=gesture pid=1274 uid =1000 scontext=u:r:system_server:s0 tcontxt=u:object_r:xxx_service:s0 tclass=service_manager permissive =0
android 8.0之后在只能在device/xxx/sepoilcy中添加avc权限
/sysetm/sepolicy/Android.mk 编译的out生成路径在 out/target/product/xxx/vendor/etc/selinux/
修改方法
一:
修改文件: devices/设备名称/sepolicy/
platform_app.te 增加 : allow platform_app xxx_serivce:service_manager find;
priv_app.te 增加 : allow priv_app xxx_serivce:service_manager find;
radio.te 增加 : allow radio xxx_serivce:service_manager { add find };
service.te 增加 : type xxx_service, service_manager_type;
system_app.te 增加 : allow system_app xxx_serivce:service_manager add;
system_server.te 增加 : allow system_server xxx_serivce:service_manager { add find };
private/service_contexts 增加 : test u:object_r:xxx_service:s0 //test 是Context 中定义的名字
网友评论