1 背景
基于Android10,在进行sd卡读取权限配置时候,发现只配置AndroidManifest.xml不能解决权限问题,经过多方查找发现当前版本的Android还需要配置SELinux,废话不多说,请看下面的分析。
2 Android的权限问题
AndroidManifest.xml是Android应用的入口文件,它描述了package中暴露的组件(activities,services,等等),他们各自的实现类,各种能被处理的数据和启动位置。除了能声明程序中的Activities,ContentProviders,Services和Intent Receivers,还能指定permissions和instrumentation(安全控制和测试)。
比如需要加入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的问题。SELinux是Google从android 5.0开始,强制引入的一套非常严格的权限管理机制,主要用于增强系统的安全性。
SELinux出现之前,Linux上的安全模型叫DAC,全称是Discretionary Access Control,翻译为自主访问控制。DAC的核心思想:进程理论上所拥有的权限与执行它的用户的权限相同。比如,以root用户启动Browser,那么Browser就有root用户的权限,在Linux系统上能干任何事情。
显然,DAC太过宽松了,应用获得的权限过多容易造成安全问题。SELinux在DAC之外,设计了一个新的安全模型,叫MAC(Mandatory Access Control),翻译为强制访问控制。MAC的核心思想:即任何进程想在SELinux

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

被折叠的 条评论
为什么被折叠?



