我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Android 修改 SELinux avc 权限的方法

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Android 修改 SELinux avc 权限的方法

系统版本:Android 11.0    

平         台:RK3568

在 Android 系统的开发及适配过程中,我们常常需要对 SELinux avc  权限进行修改,以下是我对 SELinux avc  权限修改总结的方法。

一、验证功能是否存在 selinux 权限问题

#进入Android终端

adb shell

#获取root权限

su

#查看系统当前 selinux 的工作模式

getenforce

#将 selinux 切换为 Enforcing 强制模式(如果已经是Enforcing模式可省略)

setentforce 1

#验证功能并打印log

logcat | grep avc

这么做的目的是为了能够在app报错时及时发现avc权限问题。例如,在app中通过接口对节点进行读写操作时发现了log报以下selinux avc权限错误:

type=1400 audit(0.0:875): avc: denied { read } for name="value" dev="sysfs" ino=29545 scontext=u:r:system_server:s0 tcontext=u:object_r:sysfs:s0 tclass=file permissive=0


type=1400 audit(0.0:876): avc: denied { write } for name="value" dev="sysfs" ino=29545 scontext=u:r:system_server:s0 tcontext=u:object_r:sysfs:s0 tclass=file permissive=0

二、SELinux avc权限规则快速生成配置

(1) 将上述avc 权限的 log 信息收集起来并保存到文件中

例如:log.txt

(2) 在平台代码根目录下打开终端,执行以下命令 :

#初始化参数设置

source build/envsetup.sh

#通过lunch命令选择需要编译的分支

lunch

(3) 生成的selinux avc权限配置信息

#将 log.txt 文件拷贝到以下路径中,然后在终端中切换到路径所在的位置:

external/selinux/prebuilts/bin

#生成 selinux avc 权限配置信息,命令格式如下:

./audit2allow -i [log文件] > [生成文件]

如果生成的信息不全或者为空的话(如上图),可以在 log.txt 文件中重复放多几行 avc log 信息,再执行生成命令即可,例如:

(4) 加上open和getattr权限

注意,读写等 avc 权限的配置往往还需要加上 open 和 getattr 权限,例如:

 allow system_server sysfs:file {read write open getattr};

如果不加就可能报以下错误:

type=1400 audit(0.0:604): avc: denied { getattr } for path="/sys/devices/platform/fdd60000.gpio/gpiochip0/gpio/gpio27/value" dev="sysfs" ino=29545 scontext=u:r:system_server:s0 tcontext=u:object_r:sysfs:s0 tclass=file permissive=0

(5) selinux avc权限配置信息添加位置

device/rockchip/common/sepolicy/vendor/

例如,这里是在该目录下的 system_server.te 文件添加。此外,还需要对对应api等级的相同文件进行一样的修改:

system/sepolicy/prebuilts/api/30.0/private/coredomain.te

或者在 system/sepolicy 目录下找到相应文件添也行,这里是:

system/sepolicy/public/system_server.te


三、编译及验证

(1) 编译

在根目录下编译 /system/sepolicy/ 中的文件,编译命令如下:

mmm /system/sepolicy/

(2) 验证

将编译好的文件从电脑推送到Android设备中,以下推送命令(注意,需要删掉mapping目录及其包含的文件才能push成功):

adb push odm/etc/selinux/* odm/etc/selinux


adb push product/etc/selinux/* product/etc/selinux


adb push system/etc/selinux/* system/etc/selinux


adb push system_ext/etc/selinux/* system_ext/etc/selinux


adb push vendor/etc/selinux/* vendor/etc/selinux


adb reboot

四、常见编译错误

例如:

libsepol.report_failure: neverallow on line 99 of system/sepolicy/private/coredomain.te (or line 36611 of policy.conf) violated by allow system_server sysfs:file { read write open };

libsepol.check_assertions: 1 neverallow failures occurred
Error while expanding policy


即上述修改的权限被 neverallow,具体位置在 /system/sepolicy/private/coredomain.te 中第99行。所以,对以上报错的修改如下:

--- a/sepolicy/private/coredomain.te+++ b/sepolicy/private/coredomain.te@@ -111,6 +111,7 @@ full_treble_only(`    # /sys    neverallow {    coredomain     -init     -ueventd     -vold+    -system_server     -system_app   } sysfs:file no_rw_file_perms;

来源地址:https://blog.csdn.net/jppipai/article/details/129093013

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Android 修改 SELinux avc 权限的方法

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Android中修改设备权限的方法

本文实例讲述了Android中修改设备权限的方法。分享给大家供大家参考。具体如下: 有时我们编写了驱动后,在上层程序中要访问设备,但android代码编译后的设备权限是root的,其他用户不可访问(包括system),只是就需要在andro
2022-06-06

discuz批量修改论坛版块权限和用户组权限的方法

1.批量开通各版块多编程客栈媒体添加权限和HTML代码权限复制代码代码如下:UPDATE `pre_forum_forum` SET allowmediacode=1,allowhtawuUQzml=1 2.批量开通各用户组多媒体添加权限和
2022-06-12

touch shell脚本并修改为777权限的方法

mksh.sh#!/bin/bashfor i in "$@" dotouch ${i}chmod 777 ${i}echo "#!/bin/bash">${i} donemkcpptest.sh#!/bin/bashfor i in "$
2022-06-04

win8系统hosts文件突破权限修改方法

在Win8系统中直接修改hosts文件的时候 会提示:你没有权限在此位置中保存文件。 请与管理员联系以获得相应权限。其实用一个小小的方法就可以修改windows8的hosts文件,修改方法如下打开hosts的文件目录( C:WindowsS
2022-06-04

Linux系统修改文件权限的具体方法是什么

Linux系统修改文件权限的具体方法是什么,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。Linux系统中一切皆为文件,所以文件的管理非常重要,每一个文件都有特定
2023-06-28

Android 的Bitmap的修改方法

Android的Bitmap和J2ME的Image比较类似。   如果我想从resource里读入一个图片,然后在这个图片上draw一点自己的信息,比如文字。再画到屏幕上怎么做呢?J2ME里只要Image.getGraphic() 拿到 G
2022-06-06

win7修改hosts和service文件提示无权限的解决方法

win7的用户权限管理比较严格,默认情况下你是无法直接修改hosts和service这样的文件,提示无权限。网上有很多教程www.cppcns.com,讲解如何获取管理员或文件权限,如果你只是想修改类似这样的文件,不用动那么大的干戈,一py
2023-06-02

Android需要提升权限的操作方法

权限提升方法:一种方法:1、在AndroidManifest.xml中的manifest节点中添加 android:sharedUserId="android.uid.system"。2、添加后程序在虚拟机上是不可以直接用的。但可以用ecl
2022-06-06

通过修改Win7的系统权限来达到随意修改系统文件的方法(图文)

Windows 7系统之所以比XP安全性更好,一个重要原因就是对系统文件的权限掌控,在未经授权的情况下不能随意修改系统文件。很多从XP升级到Win7的用户很不习惯这一点,在对系统文件进行操作时会遇到诸如“拒绝访问”的
2023-05-26

阿里云服务器更改文件权限的方法

简介在阿里云服务器上,更改文件权限是一项常见的操作。通过更改文件权限,您可以控制对文件的访问和修改权限,以确保服务器的安全性和稳定性。本文将介绍如何在阿里云服务器上更改文件权限的方法。步骤一:登录到阿里云服务器首先,您需要登录到您的阿里云服务器。您可以使用SSH客户端(如PuTTY)通过SSH协议连接到服务器。输入服务
阿里云服务器更改文件权限的方法
2024-01-31

修改Android App样式风格的方法

android中可以自定义主题和风格。风格,也就是style,我们可以将一些统一的属性拿出来,比方说,长,宽,字体大小,字体颜色等等。可以在res/values目录下新建一个styles.xml的文件,在这个文件里面有resource根节点
2022-06-06

编程热搜

目录