当前位置: 首页 > ops >正文

android 权限配置

在AOSP 14的ROM定制中,<exceptions><privapp-permissions>是用于管理特权应用权限的两种不同机制,主要区别在于作用范围、配置方式和权限授予逻辑。以下是具体分析:


1. <privapp-permissions> 标签

  • 作用
    用于显式声明特权应用(位于/system/priv-app/vendor/priv-app目录)所需的系统级权限。这些权限通常是signature|privilegedprivileged级别的,普通应用无法直接申请。
  • 配置方式
    /etc/permissions/privapp-permissions-*.xml文件中定义,例如:
    <permissions><privapp-permissions package="com.example.privilegedapp"><permission name="android.permission.ACCESS_FINE_LOCATION"/><permission name="android.permission.WRITE_SECURE_SETTINGS"/></privapp-permissions>
    </permissions>
    
  • 特点
    • 权限必须显式列出,未声明的权限不会被授予。
    • 适用于所有特权应用,无论其签名或分区(/system/vendor)。
    • 是AOSP推荐的标准化方式,兼容性更好。

2. <exceptions> 标签

  • 作用
    用于定义例外规则,允许或拒绝特定签名或分区的特权应用访问某些权限。通常用于更细粒度的控制,例如允许某些OEM预装应用使用系统级权限,但拒绝其他应用。
  • 配置方式
    /etc/permissions/privapp-permissions-*.xml文件中通过<exceptions>块定义,例如:
    <permissions><exceptions><exception package="com.oem.privilegedapp"><permission name="android.permission.PACKAGE_USAGE_STATS" allowed="true"/></exception><exception package="com.malicious.app" signing-key="malicious-key"><permission name="android.permission.WRITE_SECURE_SETTINGS" allowed="false"/></exception></exceptions>
    </permissions>
    
  • 特点
    • 基于签名(signing-key)或包名(package)进行例外控制。
    • 可以显式允许或拒绝特定权限,优先级高于默认的<privapp-permissions>
    • 适用于需要动态调整权限的场景(如OEM定制或安全策略)。

3. 核心区别

特性<privapp-permissions><exceptions>
作用声明特权应用所需的权限定义例外规则,允许或拒绝特定权限
配置粒度按包名全局声明权限按包名或签名细化控制权限
优先级较低(默认规则)较高(例外规则)
适用场景标准化特权应用权限分配OEM定制、安全策略、动态权限控制
权限范围仅支持<permission>标签支持allowed="true/false"显式控制

4. 使用建议

  • 优先使用<privapp-permissions>
    如果特权应用需要一组固定的权限,直接在<privapp-permissions>中声明即可,清晰且易于维护。
  • 使用<exceptions>处理特殊情况
    如果需要基于签名或包名动态调整权限(例如允许某些OEM应用使用高危权限,但拒绝其他应用),则使用<exceptions>
  • 避免重复配置
    <exceptions>中的规则会覆盖<privapp-permissions>中的默认规则,因此需谨慎设计。

5. 示例场景

假设需要为OEM预装的系统工具应用(com.oem.systemtool)授予WRITE_SECURE_SETTINGS权限,但拒绝其他应用使用该权限:

<permissions><!-- 默认规则:拒绝所有应用的WRITE_SECURE_SETTINGS --><exceptions><exception package="com.oem.systemtool"><permission name="android.permission.WRITE_SECURE_SETTINGS" allowed="true"/></exception></exceptions><!-- 其他特权应用的权限 --><privapp-permissions package="com.example.app1"><permission name="android.permission.ACCESS_FINE_LOCATION"/></privapp-permissions>
</permissions>

总结

  • <privapp-permissions>:标准化权限分配,适用于大多数特权应用。
  • <exceptions>:灵活的例外控制,适用于需要动态调整权限的场景。
  • 两者结合使用可以平衡安全性和灵活性,但需避免规则冲突。
http://www.xdnf.cn/news/5841.html

相关文章:

  • ThingsBoard(TODO)
  • 无人机失联保护模块技术解析!
  • 汽车工厂数字孪生实时监控技术从数据采集到三维驱动实现
  • 【神经网络与深度学习】通俗易懂的介绍非凸优化问题、梯度消失、梯度爆炸、模型的收敛、模型的发散
  • 【AI News | 20250513】每日AI进展
  • 贝叶斯优化Transformer融合支持向量机多变量时间序列预测,Matlab实现
  • 遨游卫星电话与普通手机有什么区别?
  • 【学习笔记】计算机操作系统(三)—— 处理机调度与死锁
  • 深入探讨 Java 性能术语与优化实践
  • TDengine 做为 Spark 数据源
  • 鸿蒙 PC 发布之后,想在技术上聊聊它的未来可能
  • 【redis】CacheAside的数据不一致性问题
  • 【Linux学习笔记】理解一切皆文件实现原理和文件缓冲区
  • MES管理系统构建智能制造时代下的全面质量管理体系
  • 半小时快速入门Spring AI:使用腾讯云编程助手CodeBuddy 开发简易聊天程序
  • 计算机视觉----时域频域在图像中的意义、傅里叶变换在图像中的应用、卷积核的频域解释
  • CSRF防范歪招
  • 互联网大厂Java求职面试:优惠券服务架构设计与AI增强实践-5
  • BlockMesh Ai项目 监控节点部署教程
  • 在 Linux 系统中过滤文件中的字符串
  • 尼康VR镜头防抖模式NORMAL和ACTIVE的区别(私人笔记)
  • supabase 怎么新建项目?
  • STM32H743输出50%的占空比波形
  • DevExpressWinForms-布局容器之SidePanel
  • Java基于SpringBoot的农产品智慧物流系统,附源码+文档说明
  • InfluxDB-数据看板实现流程:从数据采集到可视化展示
  • 图论part09dijkstra算法
  • 黑马Java跟学.最新AI+若依框架项目开发(一)
  • ubuntu部署supabase
  • 广告推荐算法入门 day1 --项目选型