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. 烂泥:利用awstats分析nginx日志
  2. H5移动端中必备技能
  3. SQL查询~ 存在一个表而不在另一个表中的数据
  4. 求解区间最值 - RMQ - ST 算法介绍
  5. PHP的错误报错级别设置原理简析
  6. Logback常用配置详解
  7. [英语学习]国外的在线广播网站,类似喜马拉雅和荔枝FM
  8. JavaWeb项目开发案例精粹-第6章报价管理系统-002辅助类及配置文件
  9. Oracle排序BUG
  10. AndroidManifest.xml中的android:name是否带.的区别
  11. 通过 Xftp5 管理 centOS 7 文件
  12. MM32/STM32中断和事件梳理
  13. SpringMVC数据绑定
  14. JaveScript基础(1)之变量和数据类型
  15. Java 安全套接字编程以及keytool 使用最佳实践
  16. 20155217《网络对抗》Exp02 后门原理与实践
  17. 在django项目中自定义manage命令(转)
  18. I NETWORK [thread1] waiting for connections on port 27017
  19. C#例题集
  20. C语言调用正则表达式

热门文章

  1. Asp.net 检测到有潜在危险的 Request.From值
  2. Memcached的特点和使用
  3. Java map简介
  4. hdu 2087 kmp
  5. Android开发中java.lang.RuntimeException: Unable to start activity ComponentInfo{xxx}
  6. 计算机网络【六】:传输层-TCP概述 【转】
  7. toggle input radio
  8. JDBC操作简单实用了IOUtils
  9. Nodejs-RESTFul架构
  10. sql-多表查询JOIN与分组GROUP BY