Android 修改 SELinux avc 权限的方法

这篇具有很好参考价值的文章主要介绍了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

Android 修改 SELinux 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权限配置信息

Android 修改 SELinux avc 权限的方法

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

external/selinux/prebuilts/bin

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

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

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

Android 修改 SELinux avc 权限的方法

(4) 加上open和getattr权限

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

Android 修改 SELinux avc 权限的方法

 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行。所以,对以上报错的修改如下:文章来源地址https://www.toymoban.com/news/detail-494382.html

--- 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;

到了这里,关于Android 修改 SELinux avc 权限的方法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 键盘灯功能。开放底层节点操作所需权限和se权限。avc权限问题

    frameworks/base/services/core/java/com/android/server/policy/PhoneWindowManager.java 在public intinterceptKeyBeforeQueueing(KeyEvent event, int policyFlags) {方法中处理按键 加入 所需方法 新开一个mHandler3,避免之前的mHandler已经移除了消息或执行了什么消息。 这里面是去掉了一些侧键和音量键,通过写底层键

    2024年01月18日
    浏览(30)
  • Android所有版本的存储权限适配

                 第一步:在Manifest文件添加如下权限          uses-permission android:name=\\\"android.permission.WRITE_EXTERNAL_STORAGE\\\" android:maxSdkVersion=\\\"28\\\" tools:ignore=\\\"ScopedStorage\\\"/              uses-permission android:name=\\\"android.permission.MANAGE_EXTERNAL_STORAGE\\\"/          uses-permission android:name=\\\"android.p

    2024年01月17日
    浏览(27)
  • Android :user版本赋予su权限

    1. userdebug和user版本 2. 关闭selinux system/core 3. 修改su.cpp,注释用户组权限检测 system/extras/su/su.cpp 4. 给 su 文件默认授予 root 权限 system/core/libcutils/fs_config.cpp frameworks/base/core/jni/com_android_internal_os_Zygote.cpp kernel/security/commoncap.c 5. user版本需要把su编进系统 build/core

    2024年02月02日
    浏览(42)
  • android 高版本sd卡目录读写权限

    1、从安卓11不允许访问sd目录,官方说明如下: https://developer.android.com/about/versions/11/privacy/storage?hl=zh-cn 2、使用MediaStore方法 一手遮天 Android - 存储: Android 11 通过 MediaStore 管理文件 - webabcd - 博客园 (cnblogs.com)  3、关于权限的文章 (31条消息) Android 10、11分区存储适配踩坑总结_安

    2024年02月15日
    浏览(33)
  • Android版本实现root权限(本办法适用于所有android平台)

    本方法适用于所有Android版本 userdebug和user版本 关闭selinux system/core 修改su.cpp,注释用户组权限检测 system/extras/su/su.cpp diff --git a/su/su.cpp b/su/su.cpp index 1a1ab6bf..af3d2a68 100644 --- a/su/su.cpp +++ b/su/su.cpp @@ -80,8 +80,8 @@ void extract_uidgids(const char* uidgids, uid_t* uid, gid_t* gid, gid_t* gids, i } int ma

    2024年02月06日
    浏览(30)
  • 一篇文章搞定Android权限问题(全版本)

    文章内容如下: 如果你只是想快速的完成你Android权限申请的工作,那么直接上工具PermissionX 如果是想真正的了解Android的权限问题,那么建议你用15分钟通读一下本文。(可以不去实验,收藏以备后用) 首先了解Android版本和SDK的关系,帮助我们分辨后面的权限版本。 其次把最常

    2023年04月20日
    浏览(42)
  • 一篇文章搞定《Android权限问题(全版本)》

    文章内容如下: 如果你只是想快速的完成你Android权限申请的工作,那么直接上工具PermissionX 如果是想真正的了解Android的权限问题,那么建议你用15分钟通读一下本文。(可以不去实验,收藏以备后用) 首先了解Android版本和SDK的关系,帮助我们分辨后面的权限版本。 其次把最常

    2024年02月03日
    浏览(40)
  • Linux:文件权限详解及修改方法

    1.1、如何查看到文件权限 使用 ls -l 或者 ll 指令可以直接查看到如下的标记,这些标记代表的相关文件或文件夹的权限类型及所属: 其中分四段: 第一段,为文件/文件夹权限,其中首个bit位字符为文件类型,一共有如下的七种: 前三种为常见类型 类型 说明 - 普通文件。

    2024年04月17日
    浏览(26)
  • 修改 Windows 文件访问权限的多种方法

    提示:本文修改后包含编程方法以及附注的工具方法,传统的资源管理器交互方法等等。 由于文件是安全对象,因此访问它们受访问控制模型控制,该模型控制对 Windows 中所有其他安全对象的访问。  更改文件或目录对象的安全描述符,需要调用 SetNamedSecurityInfo 或 SetSec

    2024年02月05日
    浏览(26)
  • Android9.0及以上版本,开启Http的访问权限

    前言: 在android 9.0及以上版本中,cleartextTrafficPermitted默认设置为false阻止了从应用程序发送的任何http请求,官方说明:行为变更:以 API 级别 28 及更高级别为目标的应用  |  Android 开发者  |  Android Developers 1.在res新增xml文件:network_security_config.xml,内容如下: 全部: 过滤:

    2024年02月13日
    浏览(35)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包