一、log出现avc: denied,确认是否由于SELinux致使的问题,简单粗暴有效可以直接关掉。
可先执行:
setenforce 0 (临时禁用掉SELinux)app
getenforce (获得结果为Permissive)dom
若是问题消失了,基本能够确认是SELinux形成的权限问题,须要经过正规的方式来解决权限问题。
二、实际案例。
1、我在device\rockchip\rk356x\init.rk356x.rc文件里面添加如下内容
2、然后在adb里面setprop chipsea.lapdop.fuck fuck ,没有任何反应,查看kernel log发现有下面的提示msg='avc: denied { read } for property=giada.lapdop.fuck pid=0 uid=0 gid=0 scontext=u:r:vendor_init:s0 tcontext=
3、解决原则:缺什么权限补什么。
4、我这里这样修改device\rockchip\common\sepolicy\vendor\vendor_init.te添加下面一行
allow vendor_init default_prop:file { read };
5、测试运行ok,log也没有相关的avc: denied提示。
三、扩展学习,上面这个案例中,cts_gts.status可以在没有加allow的情况下有效,为什么呢?
1、
2、因为device\rockchip\common\sepolicy\private\property_contexts里面有这么一行
3、而test_harness_prop在里面system/sepolicy/有配置,如果我把test_harness_prop全部替换上fuckyou_prop,然后property_contexts里面的test_harness_prop也换成fuckyou_prop,也是可以有效。至于如何实现,没有仔细研究,就知道这么测试是ok的。
四、参考文章
Android SELinux avc denied解决_pan0755的博客-CSDN博客
Android SELinux avc dennied权限问题解决方法 - 尚码园