由于SELinux造成的权限问题分析与解决

本文详细解析了在Android10中配置SD卡读写权限的方法,不仅需要在AndroidManifest.xml中添加权限,还需调整SELinux设置,包括修改system_app.te和app.te文件,确保正确授予进程对sysfs的读权限。

1 背景

基于Android10,在进行sd卡读取权限配置时候,发现只配置AndroidManifest.xml不能解决权限问题,经过多方查找发现当前版本的Android还需要配置SELinux,废话不多说,请看下面的分析。

2 Android的权限问题

AndroidManifest.xmlAndroid应用的入口文件,它描述了package中暴露的组件(activitiesservices,等等),他们各自的实现类,各种能被处理的数据和启动位置。除了能声明程序中的ActivitiesContentProvidersServicesIntent Receivers,还能指定permissionsinstrumentation(安全控制和测试)。

比如需要加入SD卡的读取权限,则需要添加:

1.	<uses-permission android:name="android.permission.INTERNET"/>  
2.	<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>  
3.	<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>  

注意:6.0后的版本即使添加了权限还是会报错,但是权限声明是必须要加的

Android10中除了要注意在AndroidManifest.xml中添加权限,还需要关注SELinux的问题。SELinuxGoogleandroid 5.0开始,强制引入的一套非常严格的权限管理机制,主要用于增强系统的安全性。

SELinux出现之前,Linux上的安全模型叫DAC,全称是Discretionary Access Control,翻译为自主访问控制。DAC的核心思想:进程理论上所拥有的权限与执行它的用户的权限相同。比如,以root用户启动Browser,那么Browser就有root用户的权限,在Linux系统上能干任何事情。

显然,DAC太过宽松了,应用获得的权限过多容易造成安全问题。SELinuxDAC之外,设计了一个新的安全模型,叫MACMandatory Access Control),翻译为强制访问控制。MAC的核心思想:即任何进程想在SELinux

评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值