如何在 Android 上增加 SELinux 权限

SELinux(Security-Enhanced Linux)是一种强制访问控制(MAC)机制,它为 Android 系统提供了额外的安全层。通过 SELinux,系统管理员可以定义细粒度的安全策略,限制进程对文件、网络和其他资源的访问。本文将详细介绍如何在 Android 上增加 SELinux 权限。

1. 了解 SELinux 模式

在开始之前,了解 SELinux 的不同模式是很重要的:

  1. Enforcing 模式:SELinux 策略被强制执行,违反策略的行为会被阻止。
  2. Permissive 模式:SELinux 策略被记录但不强制执行,违反策略的行为会被记录但不会阻止。
  3. Disabled 模式:SELinux 被禁用,不执行任何策略。

注意: Android 里面临时关闭selinux命令:setenforce 0

2.识别需要增加权限的地方

2.1 查看日志

在 Permissive 模式下,SELinux 会记录所有违反策略的行为。你可以通过查看日志来识别需要增加权限的地方。

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

2.2 编写 SELinux 策略

分析过程:
缺少什么权限: { excute } 权限
谁缺少该权限: scontext = u:r:platform_app:s0
对哪个文件缺少权限: tcontext = u:object_r:app_data_file
什么类型的文件:tclass = file
完整意思:platform_app进程对app_data_file类型的file缺少excute权限。
解决办法:
在SEpolicy目录下,找到platform_app.te这个文件,加入以下内容:
allow platform_app app_data_file:file excute;
如果存在大量报错,可以用如下方法(某些语句会识别不出来,可用根据上面的方法,自己写)
1、日志中搜索 "avc",存在类似如下的报错


2、将所有报错保存到一个文件中,例如avc.txt,并放到源码根目录
3、在源码目录先source lunch
4、利用原生自带功能生成 avc.te 权限文件
audit2allow -i avc.txt -o avc.te

2.3 增加权限过程

这个需要通过先type定义,但大多数情况是已经存在了,只需要增加权限就好了

1、device.te里面添加一个标签(以下为举例,具体根据报错添加)
type demura_spi_device, dev_type;
2、file_contexts里面添加节点
/dev/spidev0.0 u:object_r:demura_spi_device:s0
3、XXXXXX.te添加允许规则(一般只需要这个步骤,除非是未定义的标签和节点)
allow XXXXX demura_spi_device:chr_file { ioctl read write open map getattr }

2.4 特殊情况

(1)增加 ioctl 权限
增加ioctl权限规则的时候,若代码中已经存在allow语句,且avc log中包含 ioctlcmd = xxxx 字段的时候,则需要使用allowxperm。
查找对应的16进制代码,在te文件中增加
allowxperm A B:class ioctl ioctlcmd;
(2)ioctl cmd集合
若是需要很多ictol cmd,可以参考以下两个文件,定义一个ictol cmd集合,一次性加多个io权限

/system/sepolicy/public/ioctl_defines

/>system/sepolicy/public/ioctl_macros

  • _ ioctl_macros中定义ictol cmd集合,集合中的ictol cmd权限可以在ioctl_defines中找到
  • 在te文件中增加ictol cmd集合权限_
相关推荐
用户2018792831674 小时前
ANR之RenderThread不可中断睡眠state=D
android
煤球王子4 小时前
简单学:Android14中的Bluetooth—PBAP下载
android
小趴菜82274 小时前
安卓接入Max广告源
android
齊家治國平天下4 小时前
Android 14 系统 ANR (Application Not Responding) 深度分析与解决指南
android·anr
ZHANG13HAO4 小时前
Android 13.0 Framework 实现应用通知使用权默认开启的技术指南
android
【ql君】qlexcel4 小时前
Android 安卓RIL介绍
android·安卓·ril
写点啥呢4 小时前
android12解决非CarProperty接口深色模式设置后开机无法保持
android·车机·aosp·深色模式·座舱
IT酷盖4 小时前
Android解决隐藏依赖冲突
android·前端·vue.js
努力学习的小廉5 小时前
初识MYSQL —— 数据库基础
android·数据库·mysql
风起云涌~6 小时前
【Android】浅谈androidx.startup.InitializationProvider
android