Android 5.x 及以上系统权限问题解决方法
一、
android 5.x 开始,引入了非常严格的 selinux 权限管理机制,我们经常会遇到因为
selinux 权限问题造成的各种 avc denied 困扰。本文结合具体案例,讲解如何根据 log 来快
速解决 90%的权限问题。>
遇到权限问题,在 logcat 或者 kernel 的 log 中一定会打印 avc denied 提示缺少什么权限,
Command:>
cat /proc/kmsg | grep avc 或>dmesg | grep avc
解决原则是:缺什么补什么,一步一步补到没有 avc denied 为止。
下面给出四个案例:>>
1、
audit(0.0:67): avc: denied { write } for path="/dev/block/vold/93:96" dev="tmpfs" ino=1263
scontext=u:r:kernel:s0 tcontext=u:object_r:block_device:s0 tclass=blk_file permissive=0
分析过程:>
缺少什么权限:>>>>>>>>>>>{ write }权限,>
谁缺少权限:>>>>>>>>>>>>>>scontext=u:r:kernel:s0,>
对哪个文件缺少权限:tcontext=u:object_r:block_device
什么类型的文件:>>>>>>>>tclass=blk_file
解决方法:kernel.te
allow kernel block_device:blk_file write;
2、
audit(0.0:53): avc: denied { execute } for
path="/data/data/com.mofing/qt-reserved-files/plugins/platforms/libgnustl_shared.so"
dev="nandl" ino=115502 scontext=u:r:platform_app:s0
tcontext=u:object_r:app_data_file:s0 tclass=file permissive=0
解决方法>:platform_app.te
allow platform_app app_data_file:file execute;