SELinux用audio2allow生成添加权限的格式及neverallow解决方法
首先我们都知道,添加SELinux方法都是按这种格式来添加的语句格式为:allow scontex tcontex:class action,但是类型比较多,有时间添加到那个文件还是不够清晰啊,能不能有工具来告诉我们 把avc报错生成对应的权限格式添加到对应的文件呢?这里还真有,有了这个工具,我们再遇到AVC报错就不用愁了,废话不多说(一)我们还是先介绍下确定是否是SELinux的原因导致的问题,
首先我们都知道,添加SELinux方法都是按这种格式来添加的 语句格式为:allow scontex tcontex:class action,但是类型比较多,有时候添加到那个文件还是不够清晰啊,能不能有工具来告诉我们 把avc报错生成对应的权限格式添加到对应的文件呢?这里还真有,有了这个工具,我们再遇到AVC报错就不用愁了,废话不多说
(一)我们还是先介绍下确定是否是SELinux的原因导致的问题,虽然网上很多,当你怀疑是SELinux原因导致的问题,用userdebug版本或者eng版本的机器执行下面语句
adb shell getenforce
Enforcing
在Enforcing模式下,除安全策略允许外的操作都会被阻止;使用setenforce命令设置成Permissive
模式,只输出警告不阻止操作
$ adb shell setenforce 0
$ adb shell getenforce
Permissive
开发如果碰到怀疑是SELinux 可以通过这种方法关闭SELiunx( setenforce 0
),以确认是不是SELinux引起的,当为Permissive模式时再去看你的问题是否存在,如果现在依然存在,那就是SELiunx问题导致的了,你需要换方向了,相反的话就是了,当然你还可以再试一下改回Enforcing模式,再验证问题依然存在,确认是SELinux原因导致无疑
$ adb shell setenforce 1
$ adb shell getenforce
Enforcing
(二)下面说工具吧,android的工具 audit2allow生成安全策略,网上关于audit2allow的文章较少,可能是用这个工具的人不多吧
1. ubuntu下安装工具
sudo apt-get install policycoreutils
安装完工具你可能看到仅有的几篇文章说此时处理你的log文件
grep "avc: *denied" log.txt > denied.txt
(这一步早晚的事,把log中的avc都提取出来放到 denied.txt),然后执行
audit2allow -i denied.txt
(我看网上都这么说的,我也执行了,但是报错啊)
unable to open (null): Bad address
其实这里是你安装了python工具之后才可以执行这个命令
2. 我们需要再安装python
sudo apt-get install python2.7
好了 现在可以执行 audit2allow -i denied.txt(这里的denied.txt千万别看错成了你的log.txt,
否则又会报错You must specify the -p option with the path to the policy file)
如果你的avc只有一行,执行命令后不显示结果,复制avc多几行就好了
执行完结果见上图,其中#============= adpl ==============代表你要添加的te文件,这里我们需要找到adpl.te文件,然后添加allow adpl diag_device:chr_file { read write };,需要哪个添加那个即可
(三). 添加之后编译报neverallow错误(会引起CTS不过,需要跑CTS此方法不适用)
遇到一个avc报错 avc: denied { read } for name="libnative-api.so" dev="dm-8" ino=2495 scontext=u:r:untrusted_app_29:s0:c114,c256,c512,c768 tcontext=u:object_r:vendor_file:s0 tclass=file permissive=0 app=com.qualcomm.qti.qms.service.trustzoneaccess
1.我们先按上面方法添加untrusted_app_29.te文件
allow untrusted_app_29 vendor_file:file read;
2.如下图,提示system/sepolicy / public/domain.te里面,所以我们要在这个文件里面把我们添加的减去,就是不neverallow这个属性-untrusted_app_29
3.添加如下
再运行我们的程序,是ok的,不报错了
更多推荐
所有评论(0)