记录Android开发中SELINUX权限问题

2023-11-06

记录Android开发中SELINUX权限和用户权限问题

在安卓开发中,当linux内核中配置了SELINUX权限管理,访问硬件相关的设备文件(led tty等)时,如果没有对文件和访问文件的程序设置selinux的权限,就有可能报如下错误。

报错

错误查看方式

adb shell logcat -v gime 

或者

adb shell cat /dev/kmsg

确定selinux报错

type=1400 audit(0.0:136): avc: denied { search } for name="leds" dev="sysfs" ino=16378 scontext=u:r:mm-pp-daemon:s0 tcontext=u:object_r:sysfs_leds:s0 tclass=dir permissive=0
zhong type=1400 audit(0.0:2748): avc: denied { write } for name="brightness" dev="sysfs" ino=29345 scontext=u:r:system_app:s0 tcontext=u:object_r:sysfs:s0 tclass=file permissive=0

实际是android app控制/sys/class/leds/button-backlight/brightness 导致的错误。

解决办法

$grep -nr sysfs_leds ./device/
添加的所有内容,共有三个文件file.te platform_app.te file_contexts

./device/qcom/sepolicy/common/file.te:61:#type sysfs_leds, sysfs_type, fs_type;
./device/qcom/sepolicy/common/file.te:70:type sysfs_leds, fs_type, sysfs_type;
./device/qcom/sepolicy/common/platform_app.te:35:allow system_app sysfs_leds:file { getattr open read write };
./device/qcom/sepolicy/common/platform_app.te:36:allow system_app sysfs_leds:lnk_file { getattr open read write };
./device/qcom/sepolicy/common/platform_app.te:37:allow system_app sysfs_leds:dir { search };
./device/qcom/sepolicy/common/platform_app.te:39:allow mm-pp-daemon sysfs_leds:file { getattr open read write };
./device/qcom/sepolicy/common/platform_app.te:40:allow mm-pp-daemon sysfs_leds:lnk_file { getattr open read write };
./device/qcom/sepolicy/common/platform_app.te:41:allow mm-pp-daemon sysfs_leds:dir { search };
./device/qcom/sepolicy/common/platform_app.te:44:allow system_server sysfs_leds:file { getattr open read write };
./device/qcom/sepolicy/common/platform_app.te:45:allow system_server sysfs_leds:lnk_file { getattr open read write };
./device/qcom/sepolicy/common/platform_app.te:46:allow system_server sysfs_leds:dir { search };
./device/qcom/sepolicy/common/file_contexts:82:/sys/class/leds/button-backlight/brightness                           u:object_r:sysfs_leds:s0
./device/qcom/sepolicy/common/file_contexts:83:/sys/devices/soc/soc:gpio-leds/leds(/.*)?       u:object_r:sysfs_leds:s0

1.注意system_app 和mm-pp-daemon是需要访问leds的应用程序和守护进程
2./sys/class/leds是/sys/devices/soc/soc:gpio-leds/leds的一个链接,所以只在file_contexts添加./sys/class/leds是不能成功的,查看软件接的方式是在主板上执行
ls -la sys/class/leds

确定linux用户权限报错

/sys/class/leds/button-backlight/brightness (Permission denied)

vim ./system/core/rootdir/init.rc
增加代码修改用户权限

chmod 0666  /sys/class/leds/button-backlight/brightness
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

记录Android开发中SELINUX权限问题 的相关文章

随机推荐

  • 安装golang项目的 GVM

    GITHUB地址 https github com moovweb gvm bash lt lt curl s S L https raw githubusercontent com moovweb gvm master binscript
  • keras fine-tune方法

    https blog csdn net jdzwanghao article details 80697104
  • lzma算法分析

    lzma算法分析 这几天在公司主要在做压缩相关 记录一下所得 目前业界主流的压缩算法感觉并不多 好用的就Huffman lz系列 其他的像差分编码 vlq编码 感觉只能做个数据预处理 或者一种小范围的压缩 lz系列有很多 主要有lz77 l
  • 禁用系统【快应用】,停止【快应用】自动弹出

    快应用 九大厂商同时宣布建立即时应用生态发展联盟 通过统一标准让开发者低成本接入 快应用 在研发接口 场景接入 服务能力和接入方式上建设标准平台 以平台化的生态模式对个人开发者和企业开发者全品类开放 此次九大厂商共建 快应用 标准和平台 最
  • C语言:操作符以及部分表达式介绍

    目录 1 操作符 1 1 算数操作符 1 2 移位操作符 1 3 位操作符 1 4 1 赋值操作符 1 4 2 复合赋值符 1 5 单目操作符 1 6 关系操作符 1 7 逻辑操作符 1 8 条件操作符 1 9 逗号操作符 1 10 下标引
  • udp发包结合tkinter

    import socket import tkinter from tkinter import filedialog from tkinter filedialog import def action 获取输入框内容 date entry
  • 深度学习双显卡配置_更新深度学习装备:双(1080Ti)显卡装机实录

    前言 之前一直在装有一张1080Ti的服务器上跑代码 但是当数据量超过10W 图像数据集 的时候 训练时就稍微有点吃力了 速度慢是一方面 关键显存存在瓶颈 导致每次训练的batch size不敢调的过高 batch size与训练结果存在一
  • 播放器实战22 解决花屏与卡顿问题

    1 内存对齐 1 1什么是内存对齐 在C语言中 结构是一种复合数据类型 其构成元素既可以是基本数据类型 如int long float等 的变量 也可以是一些复合数据类型 如数组 结构 联合等 的数据单元 在结构中 编译器为结构的每个成员按
  • 小熊派笔记2

    GPIO案例 GPIO接口函数 初始化 wifiiot gpio h接口 wifiiot gpio ex h接口 扩展函数 设置GPIO拉力和驱动器强度 LED对应的gpio引脚是gpio2通过控制gpio2输出的电平信号来实现闪烁 设置
  • 三极管和场效应管-易错点

    NPN三极管是电流控制器件 共发射极电路中 放大区 Ice Ib x Vbe正偏 Vbc反偏 电势 Vc Vb Ve 饱和区 Ice Ib x 两个都正偏 电势 Vb Vc Ve Vce之间是饱和管压降Vces 截止区 Ice 0 两个都反
  • VerilogHDL实现除法操作

    硬件电路中实现除法操作一般基于两种方式 乘法操作和减法操作 基于减法的除法器 对于32位的无符号除法 被除数a除以除数b 他们的商和余数位数一定不超过32位 首先将a转换为32位 b也转换为32位 在每周期的开始 先将a左移一位 末尾补0
  • 如何知道你的Linux内核占用的内存大小?

    如何知道你的Linux内核占用的内存大小 1 代码段等 2 kernel heap 2 1 kmalloc 2 2 vmalloc 3 进程的页表 4 内核占用内存大小总和 1 代码段等 内核所需的代码段 bss段 内核栈等 dmesg g
  • 双调排序算法的实现(C++)

    双调排序算法的实现 C 双调排序 Bitonic Sort 是一种并行排序算法 它在某些情况下比传统的排序算法具有更好的性能 该算法的特点是可以通过并行比较和交换操作来对元素进行排序 适用于并行计算环境 本文将介绍双调排序算法的实现 并提供
  • subList截图数据集合,便于分页或分批次保存至数据库

    import java util ArrayList import java util List public class subList param list 待切割集合 param len 集合按照多大size来切割 param
  • ZNYQ初体验,持续记录中...

    首先在VIVADO中创建zynq PS核 步骤如下 如下新建工程 新建 block design add ip 选择zynq7 processing system 如下图所示 双击打开配置界面如下 下面我们简要地介绍一下页面导航面板中各个页
  • 解决页面禁止拷贝的问题

    众所周知 像这种禁止的动作一般都是网页中的javascript在作怪 那么 我们直接把他禁用就好了吖 其实 最简单的 在你前面网页的导航栏里面输入javascript void 就可以尽情的白嫖了
  • go语言 FindWindow

    Go 语言中的 FindWindow 函数是用于查找窗口句柄的函数 它是由 Windows API 提供的 在 Go 中通过 syscall 包来调用 用法示例 packagemain import fmt syscall unsafe v
  • 有趣的数据结构算法5——利用循环链表解决Josephus问题

    有趣的数据结构算法5 利用循环链表解决Josephus问题 题目复述 解题思路 实现代码 GITHUB下载连接 本次教程主要讲述如何利用循环链表解决Josephus问题 题目复述 据说著名犹太历史学家 Josephus有过以下的故事 在罗马
  • Selenium碰到的异常记录

    Java版本的Selenium异常记录 1 没有找到类的异常 NoClassDefFoundError 异常如下 Exception in thread main java lang NoClassDefFoundError com goo
  • 记录Android开发中SELINUX权限问题

    记录Android开发中SELINUX权限和用户权限问题 在安卓开发中 当linux内核中配置了SELINUX权限管理 访问硬件相关的设备文件 led tty等 时 如果没有对文件和访问文件的程序设置selinux的权限 就有可能报如下错误