avc: denied 权限问题

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;
修改为:
neverallow { domain userdebug_or_eng(
-logd -dumpstate’) -shell -adbd -system_app } misc_logd_file:file no_rw_file_perms;

添加去除 -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

你可能感兴趣的:(Framework)