Android12 Framework读写prop属性selinux报错解决

文章目录

  • 问题描述
  • 解决过程
  • 相关文章

问题描述

Android读prop值时,就算是system应用, 也需要selinux权限,否则会报错。
java代码如下

 SystemProperties.get("ro.input.resampling", "")

selinux报错如下

2025-06-28 17:57:25.971  6575-6575     com.xx  W  type=1400 audit(0.0:167): avc: denied { read } for name="u:object_r:default_prop:s0" dev="tmpfs" ino=22315 scontext=u:r:system_app:s0:c512,c768 tcontext=u:object_r:default_prop:s0 tclass=file permissive=0

在这里插入图片描述

解决过程

假设是test.te是system应用其对应test这个app的selinux的配置文件,test如果要读prop属性则需要在system_app.te中修改,不同的系统可能会不一样。
展锐

allow system_app vendor_default_prop:property_service { set };

mtk

allow system_app default_prop:file { read };

光改这里,编译固件是会报错:

neverallow check failed at out/target/product/uis7861_6h10_go_32b/obj/ETC/plat_pub_versioned.cil_intermediates/plat_pub_versioned.cil:9955(neverallow base_typeattr_219_31_0 default_prop_31_0 (file (ioctl read write create setattr lock relabelfrom append unlink link rename open watch watch_mount watch_sb watch_with_perm watch_reads)))<root>allow at out/target/product/uis7861_6h10_go_32b/obj/ETC/vendor_sepolicy.cil_intermediates/vendor_sepolicy.cil:5566(allow system_app default_prop_31_0 (file (read)))neverallow check failed at out/target/product/uis7861_6h10_go_32b/obj/ETC/plat_sepolicy.cil_intermediates/plat_sepolicy.cil:22867 from system/sepolicy/private/property.te:46(neverallow base_typeattr_222 base_typeattr_749 (file (ioctl read write create setattr lock relabelfrom append unlink link rename open watch watch_mount watch_sb watch_with_perm watch_reads)))<root>allow at out/target/product/uis7861_6h10_go_32b/obj/ETC/vendor_sepolicy.cil_intermediates/vendor_sepolicy.cil:5566(allow system_app default_prop_31_0 (file (read)))neverallow check failed at out/target/product/uis7861_6h10_go_32b/obj/ETC/plat_sepolicy.cil_intermediates/plat_sepolicy.cil:14268 from system/sepolicy/public/property.te:221(neverallow base_typeattr_222 default_prop (file (ioctl read write create setattr lock relabelfrom append unlink link rename open watch watch_mount watch_sb watch_with_perm watch_reads)))<root>allow at out/target/product/uis7861_6h10_go_32b/obj/ETC/vendor_sepolicy.cil_intermediates/vendor_sepolicy.cil:5566(allow system_app default_prop_31_0 (file (read)))

同时修改
system/sepolicy/private/property.te
system/sepolicy/prebuilts/api/31.0/private/property.te
搜索关键字“default_prop:property_service”

neverallow {domain-init-vendor_init
} default_prop:property_service set;

改成

neverallow {domain-init-vendor_init-system_app
} default_prop:property_service set;

搜索关键字“Neverallow coredomain to set vendor properties”

compatible_property_only(`# Neverallow coredomain to set vendor propertiesneverallow {coredomain-init-system_writes_vendor_properties_violators} {property_type-system_property_type-extended_core_property_type}:property_service set;
')

改成

compatible_property_only(`# Neverallow coredomain to set vendor propertiesneverallow {coredomain-init-system_writes_vendor_properties_violators-system_app} {property_type-system_property_type-extended_core_property_type}:property_service set;
')

只改这两处不够,否则会报错如下图:
在这里插入图片描述

neverallow check failed at out/target/product/uis7861_6h10_go_32b/obj/ETC/plat_sepolicy.cil_intermediates/plat_sepolicy.cil:22877 from system/sepolicy/private/property.te:46(neverallow base_typeattr_600 base_typeattr_754 (property_service (set)))<root>allow at out/target/product/uis7861_6h10_go_32b/obj/ETC/vendor_sepolicy.cil_intermediates/vendor_sepolicy.cil:5666(allow system_app_31_0 vendor_default_prop_31_0 (property_service (set)))

根据错误提示定位到46行
在这里插入图片描述
就是treble_sysprop_neverallow括号包含的内容导致冲突的。

treble_sysprop_neverallow(`enforce_sysprop_owner(`neverallow domain {property_type-system_property_type-product_property_type-vendor_property_type}:file no_rw_file_perms;
')neverallow { domain -coredomain } {system_property_typesystem_internal_property_type-system_restricted_property_type-system_public_property_type
}:file no_rw_file_perms;neverallow { domain -coredomain } {system_property_type-system_public_property_type
}:property_service set;# init is in coredomain, but should be able to read/write all props.
# dumpstate is also in coredomain, but should be able to read all props.
neverallow { coredomain -init -dumpstate } {vendor_property_typevendor_internal_property_type-vendor_restricted_property_type-vendor_public_property_type
}:file no_rw_file_perms;neverallow { coredomain -init } {vendor_property_type-vendor_public_property_type
}:property_service set;')

把-system_app加上,改成

treble_sysprop_neverallow(`enforce_sysprop_owner(`neverallow domain {property_type-system_property_type-product_property_type-vendor_property_type}:file no_rw_file_perms;
')neverallow { domain -coredomain -system_app } {system_property_typesystem_internal_property_type-system_restricted_property_type-system_public_property_type
}:file no_rw_file_perms;neverallow { domain -coredomain -system_app } {system_property_type-system_public_property_type
}:property_service set;# init is in coredomain, but should be able to read/write all props.
# dumpstate is also in coredomain, but should be able to read all props.
neverallow { coredomain -init -dumpstate } {vendor_property_typevendor_internal_property_type-vendor_restricted_property_type-vendor_public_property_type
}:file no_rw_file_perms;neverallow { coredomain -init -system_app } {vendor_property_type-vendor_public_property_type
}:property_service set;')

system/sepolicy/public/property.te
system/sepolicy/prebuilts/api/31.0/public/property.te

system_internal_prop(default_prop)

改成

system_public_prop(default_prop)

修改public/domain.te
同时修改
system/sepolicy/public/domain.te
system/sepolicy/prebuilts/api/31.0/public/domain.te

neverallow { domain -init -vendor_init } vendor_default_prop:property_service set;

改成

neverallow { domain -init -vendor_init -system_app } vendor_default_prop:property_service set;

如下图:
在这里插入图片描述

相关文章

MTK Android为某个APP单独添加selinux配置文件
MTK Android修改selinux允许system APP可读写sys与proc
Android获取selinux的setprop权限修改SystemProperties
Android13配置selinux让system应用可读sys,proc,SN号
作者:帅得不敢出门

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/pingmian/94066.shtml
繁体地址,请注明出处:http://hk.pswp.cn/pingmian/94066.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【图文版】AIOT 小智 AI 聊天机器人 ESP32 项目源码图解

前言 小智 AI 聊天机器人是最近一个很火的开源项目&#xff0c;它借助LLM大模型以及TTS等AI的能力&#xff0c;通过自然语言来与其对话实现交互。它可以回答任何问题、播放音乐、背诵古诗&#xff0c;颇有未来AI机器人的雏形。 因为最近工作上的需要对其进行了研究&#xff0c;…

250821-RHEL9.4上Docker及Docker-Compose的离线安装

在 离线环境下 在 RHEL (Red Hat Enterprise Linux) 系统上安装 Docker 和 Docker Compose&#xff0c;需要提前在有网络的环境中下载相关 RPM 包及依赖&#xff0c;然后在目标机器上进行安装。以下是比较完整的步骤&#xff1a; 1. Docker及Docker-Compose离线安装 在 RHEL 9.…

react相关知识

1.类组件和函数组件&#xff08;1&#xff09;类组件import React, { Component } from react;class UserProfile extends Component {constructor(props) {super(props);this.state {userData: null,isLoading: true,};this.timerId null;}componentDidMount() {// 模拟 API…

算法第五十五天:图论part05(第十一章)

并查集理论基础并查集主要有两个功能&#xff1a;将两个元素添加到一个集合中。判断两个元素在不在同一个集合class UnionFind:def __init__(self, n):"""初始化并查集"""self.n nself.father list(range(n)) # 每个节点自己是根self.rank […

雨雾天气漏检率骤降80%!陌讯多模态车牌识别方案实战解析

一、行业痛点&#xff1a;车牌识别的天气敏感性据《智慧交通系统检测白皮书》统计&#xff0c;雨雾环境下传统车牌识别漏检率高达42.7%&#xff08;2024年数据&#xff09;。主要存在三大技术瓶颈&#xff1a;1.​​水膜干扰​​&#xff1a;挡风玻璃水渍导致车牌区域纹理模糊2…

PostgreSQL15——查询详解

PostgreSQL15查询详解一、简单查询1.1、单表查询1.2、无表查询1.3、消除重复结果1.4、使用注释二、查询条件2.1、WHERE子句2.2、模式匹配2.3、空值判断2.4、复杂条件三、排序显示3.1、单列排序3.2、多列排序3.3、空值排序四、限定结果数量4.1、Top-N查询4.2、分页查询4.3、注意…

03-容器数据卷

卷就是目录或文件&#xff0c;存在于一个或多个容器中&#xff0c;由 docker 挂载到容器&#xff0c;但不属于联合文件系统&#xff0c;因此能够绕过 UnionFS&#xff0c;提供一些用于持续存储或共享数据。 特性&#xff1a;卷设计的目的就是数据的持久化&#xff0c;完全独立于…

Linux内核进程管理子系统有什么第三十三回 —— 进程主结构详解(29)

接前一篇文章&#xff1a;Linux内核进程管理子系统有什么第三十二回 —— 进程主结构详解&#xff08;28&#xff09; 本文内容参考&#xff1a; Linux内核进程管理专题报告_linux rseq-CSDN博客 《趣谈Linux操作系统 核心原理篇&#xff1a;第三部分 进程管理》—— 刘超 《…

从代码学习深度强化学习 - 目标导向的强化学习-HER算法 PyTorch版

文章目录 1. 前言:当一个任务有多个目标 2. 目标导向的强化学习 (GoRL) 简介 3. HER算法:化失败为成功的智慧 4. 代码实践:用PyTorch实现HER+DDPG 4.1 自定义环境 (WorldEnv) 4.2 智能体与算法 (DDPG) 4.3 HER的核心:轨迹经验回放 4.4 主流程与训练 5. 训练结果与分析 6. 总…

前端 H5分片上传 vue实现大文件

用uniapp开发APP上传视频文件&#xff0c;大文件可以上传成功&#xff0c;但是一旦打包为H5的代码&#xff0c;就会一提示链接超时&#xff0c;我的代码中是实现的上传到阿里云 如果需要看全文的私信我 官方开发文档地址 前端&#xff1a;使用分片上传的方式上传大文件_对象…

Linux服务器Systemctl命令详细使用指南

目录 1. 基本语法 2. 基础命令速查表 3. 常用示例 3.1 部署新服务后&#xff0c;设置开机自启并启动 3.2 检查系统中所有失败的服务并尝试修复 3.3 查看系统中所有开机自启的服务 4. 总结 以下是 systemctl 使用指南&#xff0c;涵盖服务管理、单元操作、运行级别控制、…

【JVM内存结构系列】二、线程私有区域详解:程序计数器、虚拟机栈、本地方法栈——搞懂栈溢出与线程隔离

上一篇文章我们搭建了JVM内存结构的整体框架,知道程序计数器、虚拟机栈、本地方法栈属于“线程私有区域”——每个线程启动时会单独分配内存,线程结束后内存直接释放,无需GC参与。这三个区域看似“小众”,却是理解线程执行逻辑、排查栈溢出异常的关键,也是面试中高频被问的…

红帽认证升级华为openEuler证书活动!

如果您有红帽证书&#xff0c;可以升级以下相应的证书&#xff1a;&#x1f447; 有RHCSA证书&#xff0c;可以99元升级openEuler HCIA 有RHCE证书&#xff0c;可以99元升级openEuler HCIP 有RHCA证书&#xff0c;可以2100元升级openEuler HCIE 现金激励&#xff1a;&#x1f4…

迭代器模式与几个经典的C++实现

迭代器模式详解1. 定义与意图迭代器模式&#xff08;Iterator Pattern&#xff09; 是一种行为设计模式&#xff0c;它提供一种方法顺序访问一个聚合对象中的各个元素&#xff0c;而又不暴露该对象的内部表示。主要意图&#xff1a;为不同的聚合结构提供统一的遍历接口。将遍历…

epoll 陷阱:隧道中的高级负担

上周提到了 tun/tap 转发框架的数据通道结构和优化 tun/tap 转发性能优化&#xff0c;涉及 RingBuffer&#xff0c;packetization 等核心话题。我也给出了一定的数据结构以及处理逻辑&#xff0c;但竟然没有高尚的 epoll&#xff0c;本文说说它&#xff0c;因为它不适合。 epo…

微前端架构常见框架

1. iframe 这里指的是每个微应用独立开发部署,通过 iframe 的方式将这些应用嵌入到父应用系统中,几乎所有微前端的框架最开始都考虑过 iframe,但最后都放弃,或者使用部分功能,原因主要有: url 不同步。浏览器刷新 iframe url 状态丢失、后退前进按钮无法使用。 UI 不同…

SQL Server更改日志模式:操作指南与最佳实践!

全文目录&#xff1a;开篇语**前言****摘要****概述&#xff1a;SQL Server 的日志模式****日志模式的作用****三种日志模式**1. **简单恢复模式&#xff08;Simple&#xff09;**2. **完整恢复模式&#xff08;Full&#xff09;**3. **大容量日志恢复模式&#xff08;Bulk-Log…

git的工作使用中实际经验

老输入烦人的密码 每次我git pull的时候都要叫我输入三次烦人的密码&#xff0c;问了deepseek也没有尝试成功 出现 enter passphrase for key ‘~/.ssh/id_rsa’ 的原因: 在生成key的时候,没有注意,不小心设置了密码, 导致每次提交的时候都会提示要输入密码, 也就是上面的提示…

科技赋能,宁夏农业绘就塞上新“丰”景

在贺兰山的巍峨身影下&#xff0c;在黄河水的温柔滋养中&#xff0c;宁夏这片古老而神奇的土地&#xff0c;正借助农业科技的磅礴力量&#xff0c;实现从传统农耕到智慧农业的华丽转身&#xff0c;奏响一曲科技与自然和谐共生的壮丽乐章。一、数字农业&#xff1a;开启智慧种植…

imx6ull-驱动开发篇36——Linux 自带的 LED 灯驱动实验

在之前的文章里&#xff0c;我们掌握了无设备树和有设备树这两种 platform 驱动的开发方式。但实际上有现成的&#xff0c;Linux 内核的 LED 灯驱动采用 platform 框架&#xff0c;我们只需要按照要求在设备树文件中添加相应的 LED 节点即可。本讲内容&#xff0c;我们就来学习…