SElinux avc dennied权限问题解决方法

SElinux avc权限不足问题:

1.编译debug版本.
2.抓log:adb shell --> dmesg | grep avc
3.补充相对应的.te文件;.te文件也可以自己写,要先去system/sepolicy/file_contexts文件下声明;

总体原则就是缺什么权限就补什么权限!!!


一,根据日志中的报错,纯手动添加

1. 系统原有的.te文件

比如打印出的错误信息如下:
在这里插入图片描述
log分析:

read/write: 表示没有read/write权限;
system_app:system_app中缺少权限,文件名与此相同,xxx.te;
serial_device : serial_device文件系统缺少权限;
chr_file :chr_file类型的文件;

修改方案:

在system_app.te文件中,添加下面语句:
allow system_app serial_device:chr_file read;
allow system_app serial_device:chr_file write;
2. 重新添加.te文件
  1. 先去system/sepolicy/file_contexts文件下声明:(以adb.te举例)
    在这里插入图片描述
    指定abc的路径,并指定一个名字,一定要以service名(abc)+_exec结尾。
  2. 创建.te文件:
    SElinux avc dennied权限问题解决方法_第1张图片
    以上赋予的权限全部是根据avc denied的log缺什么一步一步补什么来的。
3. 编写user版本看结果。

二,用audio2allow生成添加权限的格式(方便快捷)

android的工具 audit2allow生成安全策略

1. ubuntu下安装工具:
sudo apt-get install policycoreutils
sudo apt-get autoremove                    # 安装有问题时执行
2. 提取所有的avc log:
adb shell dmesg | grep avc > avc_log.txt
3. 使用工具生成policy语句:
audio2allow -i avc_log.txt

SElinux avc dennied权限问题解决方法_第2张图片
执行完结果见上图,其中#============= adpl ==============代表你要添加的te文件,这里我们需要找到adpl.te文件,然后添加
allow adpl diag_device:chr_file { read write };,需要哪个添加那个即可;


三,关于编译时遇到neverallow报错问题

报错:
在这里插入图片描述解决方法:
关于编译时遇到neverallow报错问题,可到提示对应脚本处添加相应的权限;
SElinux avc dennied权限问题解决方法_第3张图片


你可能感兴趣的:(selinux相关,android,selinux,经验分享,.te,安全策略,avc)