一、概述
Android 是一个权限分离的系统 。 利用 Linux 已有的权限管理机制,通过为每一个 Application 分配不同的 uid 和 gid , 从而使得不同的 Application 之间的私有数据和访问达到隔离的目的 。 与此 同时, Android 还在此基础上进行扩展,提供了 permission 机制,它主要是用来对 Application 可以执行的某些具体操作进行权限细分和访问控制,同时提供了 per-URI permission 机制,用来提供对某些特定的数据块进行 ad-hoc 方式的访问。
二、Permission机制的原理
Permission(权限许可机制)本质上是一种基于能力的访问控制机制。一个应用程序如果没有对应的Permission,将不能进行相应的操作。Android系统中提供了一系列Permission用以保护系统资源,并以API的形式向应用程序提供资源访问接口。当应用程序需要通过这些API访问系统资源时,必须得到相应的权限许可。
Android的Permission工作场景分为三个层次:权限定义层、权限分配层和访问控制实施层。权限定义层中的Permission只是一种能力标识,没有实际意义;权限分配层中将Permission与系统资源和应用程序绑定,形成了具体的访问控制策略;访问控制实施层根据权限分配层形成的策略进行系统资源的访问控制。
三、Permission机制的设计目标
通知用户:通过列出应用程序可能执行的所有敏感的操作,让用户更多地意识到安装这个应用存在的潜在风险。这假定用户会阅读在安装时弹出的权限列表,并基于这些信息来作出是否安装应用的决定。 降低风险:通过限制应用程序访问Android系统敏感的API接口,来降低应用程序对整个系统带来的伤害(比如病毒)。