Android SELinux 权限问题总结
SELinux TE 添加权限不生效的解决方法
==============================================
selinux security level引起的denied u:r:untrusted_app:s0:c512,c768问题,可以查看:https://blog.csdn.net/nuanhua209/article/details/56481783
如果报错中有c512,c768 错误提示,可采用本方法
avc: denied { read } for name="ttyHSL1" dev="tmpfs" ino=5215 scontext=u:r:priv_app:s0:c512,c768 tcontext=u:object_r:device:s0 tclass=chr_file permissive=0
avc: denied { getattr } for path="/dev/ttyHSL0" dev="tmpfs" ino=8322 scontext=u:r:untrusted_app:s0:c512,c768 tcontext=u:object_r:console_device:s0 tclass=chr_file permissive=0
全局搜索 目标类型,找到对应设备的te文件
如tcontext=u:object_r:console_device:s0 报错:grep -nR console_device
system/sepolicy/device.te:17:type console_device, dev_type;
添加 MSL权限,如:
- type console_device, dev_type;
+ type console_device, dev_type, mlstrustedobject;
有时候应用程序是内置的app,输入private权限,这时可能无法在private目录下面找到对应的.te文件。
但是不要慌,private的type类型声明会与public共用,只需要在public目录下面的.te文件里添加即可。如果遇到编译报错,需要按照报错提示进行修改,
如果遇到重复声明的提示,那么应该是配置共用导致。
SELinux 添加TE权限
===============================
avc: denied { getattr } for path="/dev/ttyHSL0" dev="tmpfs" ino=8322 scontext=u:r:untrusted_app:s0:c512,c768 tcontext=u:object_r:console_device:s0 tclass=chr_file permissive=0
内容分析:
avc: denied { getattr } 文件权限:getattr
scontext=u:r:untrusted_app:s0:c512,c768 源类型: untrusted_app
tcontext=u:object_r:console_device:s0 目标类型:console_device
tclass=chr_file permissive=0 访问类型:chr_file
因此需要修改文件untrusted_app.te,添加以下内容:
allow untrusted_app 目标类型:访问类型 文件权限;
当需要多个文件权限时可以用花括号括起来。
allow untrusted_app 目标类型:访问类型 { 文件权限1 文件权限2 文件权限3 };
allow untrusted_app console_device:chr_file { write open ioctl };
根据logcat日志快速生成权限配置:
安装分析工具:sudo apt install policycoreutils
avc.txt
-----------------
avc: denied { create } for name="hsdi_tmp" scontext=u:r:system_app:s0 tcontext=u:object_r:protect_f_data_file:s0 tclass=dir permissive=0
avc: denied { create } for name="hsdi_tmp" scontext=u:r:system_app:s0 tcontext=u:object_r:protect_f_data_file:s0 tclass=dir permissive=0
avc: denied { create } for name="hsdi_tmp" scontext=u:r:system_app:s0 tcontext=u:object_r:protect_f_data_file:s0 tclass=dir permissive=0
avc: denied { create } for name="hsdi_tmp" scontext=u:r:system_app:s0 tcontext=u:object_r:protect_f_data_file:s0 tclass=dir permissive=0
avc: denied { create } for name="hsdi_tmp" scontext=u:r:system_app:s0 tcontext=u:object_r:protect_f_data_file:s0 tclass=dir permissive=0
avc: denied { create } for name="hsdi_tmp" scontext=u:r:system_app:s0 tcontext=u:object_r:protect_f_data_file:s0 tclass=dir permissive=0
avc: denied { create } for name="hsdi_tmp" scontext=u:r:system_app:s0 tcontext=u:object_r:protect_f_data_file:s0 tclass=dir permissive=0
avc: denied { create } for name="hsdi_tmp" scontext=u:r:system_app:s0 tcontext=u:object_r:protect_f_data_file:s0 tclass=dir permissive=0
avc: denied { create } for name="hsdi_tmp" scontext=u:r:system_app:s0 tcontext=u:object_r:protect_f_data_file:s0 tclass=dir permissive=0
avc: denied { write } for pid=1 comm="init" name="export" dev="sysfs" ino=3486 scontext=u:r:init:s0 tcontext=u:object_r:sysfs:s0 tclass=file permissive=0
allow system_app protect_f_data_file:dir
audit2allow -i avc.txt > avc.te
运行audit2allow工具(external/selinux/prebuilts/bin/audit2allow)之后得到的avc.te文件
avc.te
-------------------
#============= system_app ==============
allow system_app protect_f_data_file:dir create;
avc: denied { open } for path="/dev" dev="tmpfs" ino=15567 scontext=u:r:platform_app:s0:c512,c768 tcontext=u:object_r:device:s0 tclass=dir permissive=0
allow platform_app device:dir open;
前面的#============= system_app ==============
就是在告诉你在那个文件里面,你可以找到你们系统真正起作用的system_app.te文件是那个目录的。然后在文件的末尾处添加里面的那句话
allow system_app protect_f_data_file:dir create;
注意 这个权限问题是要一个个慢慢来的,也就是说你这个权限加了 等会你运行进去还有可能出现其他的权限问题。这就需要大家要有耐心慢慢的去一个个加好。
有的时候权限明明加进去了却还是报相同的错误 这个时候你就得检查你是否加对地方了。另外,解析工具可能会漏权限,所以当解析工具没有解析出来时,需要手动添加。
把你编译的这个文件拷贝出来
out/target/product/angler/obj/ETC/sepolicy.recovery_intermediates/policy_recovery.conf
Android SELinux 权限问题总结的更多相关文章
- Android安全机制(2) Android Permission权限控制机制
http://blog.csdn.net/vshuang/article/details/44001661 版权声明:本文为博主原创文章,未经博主允许不得转载. 目录(?)[+] 1.概述 Andro ...
- selinux权限问题【转】
本文转载自:https://blog.csdn.net/u011386173/article/details/83339770 版权声明:本文为博主原创文章,未经博主允许不得转载. https://b ...
- Android : SELinux 简析&修改
一 SELinux背景知识 SELinux出现之前,Linux上的安全模型叫DAC,全称是Discretionary Access Control,翻译为自主访问控制.DAC的核心思想很简单,就是: ...
- Android的权限检查
Application的权限: 可以在AndroidManifest.xml中用<permission>定义运行Application需要的权限. 用<uses-permission ...
- Android PermissionChecker 权限全面详细分析和解决方案
原文: http://www.2cto.com/kf/201512/455888.html http://blog.csdn.net/yangqingqo/article/details/483711 ...
- Android 访问权限设置
Android开发应用程序时,有时我们要用到很多权限, 今天我就收集了一些开发时可能用到的开启权限设置. 这些权限都是在 AndroidManifest.xml设置. 设置方法 <uses-pe ...
- 大约Android 了解权限管理
如Android应用程序开发人员.为android权限机制一直觉得很奇怪.为什么要这个东西权限?为什么要AndroidManifest里面写的uses-permission 这样的事情?我一直搞不清楚 ...
- Android系统权限及签名
Android系统权限及签名 2015-03-23 19:13:33CSDN-chen52671-点击数:50 Android权限及签名 引子 现象:系统中的一个定制Service,服务是 ...
- checkSelfPermission 找不到 Android 动态权限问题
checkSelfPermission 找不到 Android 动态权限问题 最近写了一个Demo,以前好好地.后来手机更新了新系统以后,不能用总是闪退.而且我的小伙伴的是android 7.0系统 ...
- 对Android系统权限的认识
Android系统是运行在Linux内核上的,Android与Linux分别有自己的一套严格的安全及权限机制 Android系统权限相关的内容 (一)linux文件系统上的权限 -rwxr-x--x ...
随机推荐
- Vue2.x 常用功能和方法
Vue 生命周期 beforeCreate (组件实例刚被创建,组件属性计算之前,如 data 属性等) created (组件实例创建完成, 属性已绑定,但 DOM 还未生成, $el 属性不存在) ...
- AI辅助动画制作,现实到虚拟仅需要一个摄像头。多种AI技术融合赋能传统行业,或是产业趋势?
图源:youtube authour autodesk media & entertainment 不是元宇宙,是动画. 2024年10.30日.美国加利福尼亚公司 Wonder dynami ...
- OpenAI使用AI编程给出了数数问题的解决方案 —— 如何解决ChatGPT不会数数的问题
总所周知的一个问题,那就是ChatGPT不会数数,不过今天突然发现OpenAI给出了一个神奇的解决方法,那就是AI编程. 问题案例如下: The text provided will be analy ...
- .NET 全功能流媒体管理控制接口平台
前言 视频会议.在线教育.直播娱乐还是远程监控,流媒体平台的性能和稳定性直接影响着用户体验. 给大家推荐一个基于 C# 开发的全功能流媒体管理控制接口平台. 项目介绍 AKStream是一个基于 C# ...
- 8.Jenkins+Docker+SpringCloud微服务持续集成
前言 通过前几章的学习,了解了持续集成概念以及相关技术的学习和使用 接下来学习构建一整套SpringCloud微服务+Docker+Jenkins的持续集成案例 环境 架构图 流程说明: 开发人员将代 ...
- Air780E如何发送SMS?一文详解!
今天一起来学习使用合宙低功耗4G模组Air780E发送SMS短消息: 一.SMS简介 SMS(短消息服务,ShortMessageService)功能主要用于在蜂窝网络中传输短消息. 在4G网络中 ...
- token、cookie、session的区别
token是验证用户身份的令牌,通常是用于接口的身份验证,一般获取之后放在请求头中 cookie和session的区别: cookie是服务器发送到客户端然后存储在客户端的,可以用来保持用户的登录信息 ...
- shell最简单的办法实现进度条
一直很好奇shell命令行安装脚本的时候怎么实现自动增长进度条而且不增加新输出的问题.以前一直觉得是不断print出来东西,但是已经输出到命令行终端的为什么也能被覆盖呢,于是看到别人写的进度条,不断尝 ...
- confd+Nacos实现nginx配置文件管理
场景: 由于公司内部站点保护的需求, 将部分的站点添加白名单, 这边的操作是在nginx配置文件中添加如下代码 allow 127.0.0.1: deny all; 但随之问题也出现了, 需要添加一个 ...
- MySQL底层概述—9.ACID与事务
大纲 1.ACID之原子性 2.ACID之持久性 3.ACID之隔离性 4.ACID之一致性 5.ACID的关系 6.事务控制演进之排队 7.事务控制演进之排它锁 8.事务控制演进之读写锁 9.事务控 ...