1、概述
我们在Android安全机制(1)中介绍过基于UID和GID的Android进程隔离机制。 这是利用 Linux 已有的权限管理机制,通过为每一个 Application 分配不同的 uid 和 gid , 从而使得不同的 Application 之间的私有数据和访问( native 以及 java 层通过这种 sandbox 机制,都可以)达到隔离的目的 。 与此同时, Android 还 在此基础上进行扩展,提供了 permission 机制,一个GIDS就是一个Permission的集合,它主要是用来对 Application 可以执行的某些具体操作进行权限细分和访问控制,同时提供了 per-URI permission 机制,用来提供对某些特定的数据块进行 ad-hoc 方式的访问.
2、Android Permission机制
2.1 权限基本信息
一个权限主要包含三个方面的信息:权限的名称;属于的权限组;保护级别。一个权限组是指把权限按照功能分成的不同的集合。每一个权限组包含若干具体权限,例如在 android.permission-group.CONTACTS 组中包含 android.permission.WRITE_CONTACTS , android.permission.GET_ACCOUNTS,android.permission.READ_CONTANTS 等和联系人相关的权限。可以通过pm list 命令去获取相应的permission信息。也可以通过查看/data/sytem/packages.xml文件来获取。
$ adb shell pm list permissions -f
All Permissions:
+ permission:android.permission.REAL_GET_TASKS
package:android
label:null
description:null
protectionLevel:signature|privileged
+ permission:android.permission.REMOTE_AUDIO_PLAYBACK
package:android
label:null
description:null
protectionLevel:signature
--snip--
$adb shell pm list permissions -g -d
Dangerous Permissions:
group:android.permission