Android扩展了Linux内核安全模型的用户与权限机制,将多用户操作系统的用户隔离机制巧妙地移植为应用程序隔离。在linux中,一个用户标识(UID)识别一个给定用户;在Android上,一个UID则识别一个应用程序。在安装应用程序时向其分配UID。应用程序在设备上存续期间内,其UID保持不变。仅限用于允许或限制应用程序(而非用户)对设备资源的访问。如此,Android的安全机制与Linux内核的安全模型完美衔接!不同的应用程序分别属于不同的用户,因此,应用程序运行于自己独立的进程空间,与UID不同的应用程序自然形成资源隔离,如此便形成了一个操作系统级别的应用程序“沙箱”

应用程序进程之间,应用程序与操作系统之间的安全性由Linux操作系统的标准进程级安全机制实现。在默认状态下,应用程序之间无法交互,运行在进程沙箱内的应用程序没有被分配权限,无法访问系统或资源。因此,无论是直接运行于操作系统之上的应用程序,还是运行于Dalvik虚拟机的应用程序都得到同样的安全隔离与保护,被限制在各自“沙箱”内的应用程序互不干扰,对系统与其他应用程序的损害可降至最低。Android应用程序的“沙箱”机制如下图,互相不具备信任关系的应用程序相互隔离,独自运行:

在很多情况下,源自同一开发者同一开发机构的应用程序,相互间存在信任关系。Android系统提供一种所谓共享UID(SharedUserID)机制,使具备信任关系的应用程序可以运行于同一进程空间。通常 ,这种信任关系由应用程序的数字签名确定,并且需要应用程序在manifest文件中使用相同的UID。共享UID的应用程序进程空间如下图(应用程序数字签名将在后面详细讲述):

应用程序安装时都分配有一个用户标志(UID)以区别于其他应用程序,保护自己的数据不被其他应用获取。Android根据不同的用户和组,

分配不同权限,比如访问网络、访问GPS数据等,这些Android权限在底层映射为Linux的用户与组权限。

权限的保护级别分为Normal、Danderous、Signature与Signatureorsystem四种,不同的级别限定了应用程序行使此权限时的认证方式。

Normal:只要申请就可用

Dangerous:在安装时经用户确认才可用

Signature与Signatureorsystem 需要应用程序必须为系统用户,如OEM制造商或ODM制造商等

更多相关文章

  1. 从源码角度分析Android中UID与GID的分配
  2. Android(安卓)Training - 建立你的第一个应用程序
  3. 快速的APK厂商快速和免费的Android应用软件,而无需编码技巧
  4. 中国的 Android:尚未发掘的应用市场?
  5. Android应用程序线程消息循环模型分析
  6. Android(安卓)M 新的运行时权限开发者需要知道的一切
  7. Android(安卓)***测试学习手册(三)Android(安卓)应用的逆向和审计
  8. 怎样用 C/C++ 开发一个原生程序运行在 Android(安卓)下而不用 AD
  9. Android(安卓)应用程序基础(Application Fundamentals)

随机推荐

  1. XPath 11个实例
  2. XML 问题: 超越DOM(轻松使用 DOM 的技巧
  3. 从xml中获取城市,省份名称
  4. 使用 XML 文件记录操作日志
  5. XMLTextReader和XmlDocument读取XML文件
  6. XML和XSLT结合使网站设计浑然一体
  7. 对于任意的XML的遍历
  8. 如何使用XML实现多渠道接入网站的构架
  9. 灵活调用xsl来解析xml文档(js异步)
  10. FireFox对XML的处理兼容IE的节点处理方法