两种方式:
1.根据log报错来手动添加,这种方法有一定风险,不熟悉语法添加的新手可能报错
根据log手动添加selinux权限
2.自动获取缺少的权限的输出的方法
快速获取需要添加的selinux权限
我比较支持使用第二种方法,不易出错,一次成功。
语法总结:
报错log = avc: denied { 缺少的权限} for path="这里不用关心" dev="不用管" ino=不用管 scontext=u:r:缺少权限的对象:s0 tcontext=u:object_r:添加权限后需要访问的文件:s0 tclass=文件类型 permissive=0
如上描述:最后一句permissive=0代表无权限
添加的位置:AOSP下找到文件名为“缺少权限的对象.te”
注意:安卓原生的权限添加,只需要在/system/sepolicy/下找到.te文件,若是有供应商自定义的内容,则还需要同时在/device/xxx/seplociy/下找到同名文件添加同样的内容
我们需要添加的权限语法为:allow 缺少权限的对象 添加权限后需要访问的文件:文件类型 缺少的权限
例子:
log报错:
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
语法梳理:
缺少的权限:execute
缺少权限的对象:platform_app
需要访问的文件:app_data_file
文件类型:file
添加的文件位置:platform_app.te
添加的语句:allow platform_app app_data_file:file execute;