avc:denied
有些时候在eng版本会出现类似错误,可能导致在user版本无法使用:
1)avc: denied { getattr } for path=”/sbin/cbd” dev=”rootfs” ino=1182 scontext=u:r:cbd:s0 tcontext=u:object_r:rootfs:s0 tclass=file permissive=0
2)avc: denied { getattr } for path=”/sbin/rfsd” dev=”rootfs” ino=1184 scontext=u:r:rfsd:s0 tcontext=u:object_r:rootfs:s0 tclass=file permissive=0
3) init: avc: denied { set } for property=persist.prop.temtemperature pid=2052 uid=1000 gid=1000 scontext=u:r:system_server:s0 tcontext=u:object_r:default_prop:s0 tclass=property_service permissive=0
这是由于Selinux权限导致,可对其添加权限:
1)allow cbd rootfs:file getattr
scontext=u:r:cbd
object_r:rootfs
tclass=file
avc: denied { getattr }
2)allow rfsd rootfs:file read
3)allow system_server default_prop:property_service { set };
再去domain.te里面 把冲突的权限去掉。
neverallow { domain -init -rild -shell -system_app -system_server } default_prop:property_service set;
找到对应的*.te文件, find -iname cbd.te ; find -iname rfsd.te ;find -iname system_server.te
会出现很多,找到对应项目分支下的那个,在里面添加权限即可。
neverallow 权限冲突的问题
当我们在一个文件添加好权限之后,编译的时候有可能会报neverallow权限的错误。
这是由于添加的权限和别的文件里面的权限有冲突:
错误:
libsepol.report_failure: neverallow on line 65 of system/sepolicy/logd.te (or line 12367 of policy.conf) violated by allow system_app misc_logd_file:file { read open };
我们找到
system/sepolicy/logd.te 第65 行:
neverallow { domain userdebug_or_eng(-logd -dumpstate') -shell -adbd } misc_logd_file:file no_rw_file_perms;
-logd -dumpstate’) -shell -adbd -system_app } misc_logd_file:file no_rw_file_perms;
修改为:
neverallow { domain userdebug_or_eng(
添加去除 -system_app 权限冲突
文献参考:
1)漫谈android系统(3) SELinux报错修改篇
http://blog.csdn.net/u013983194/article/details/50462694
2)快速解决Android中的selinux权限问题
http://blog.csdn.net/mike8825/article/details/49428417