Android权限的理解

来源:互联网 发布:cf老是网络出现异常23 编辑:程序博客网 时间:2024/06/05 09:58

Android APK应用程序运行时的权限与Linux的文件系统权限。

APK运行时的权限是Dalvik授权的,文件系统权限是Linux内核授权。


1)Linux的文件系统权限

就比如 /system/app 里面某一个apk

-rwxr-xr-x system    system     2646964 2013-03-13 10:26 Mp3Player.apk

代表的是相应的用户/所在用户组/其他用户对此文件的访问权限,与此文件运行起来具有的权限完全不相关。

上面的例子只能说明system用户拥有对此文件的读写执行权限;system组的用户对此文件拥有读、执行权限;其他人对此文件只具有执行权限。而apk运行起来后可以干哪些事情,跟这个就不相关了。不是看apk文件系统上属于system/system用户及用户组,或者root/root用户及用户组,就认为apk具有system或root权限


2)APK的运行权限


Android系统有的权限是基于签名的。比如:system等级的权限有专门对应的签名,签名不对,权限也就获取不到。默认生成的APK文件是debug签名的。

另一个APK运行权限规则就是基于UserID的进程级别的安全机制。Android通过为每一个安装在设备上的包(APK)分配唯一的linux userID来实现,名称为"app_"加一个数字。不同的UserID,运行在不同的进程,所以apk之间默认便不能相互访问。


Android权限是经营在进程层面的,也就是说一个apk应用启动的子进程的权限不可能超越其父进程的权限(即apk的权限), 即使单独运行某个应用有权限做某事,但如果它是由一个apk调用的,那权限就会被限制。Android是通过给子进程分配父进程的UserID实现这一机制的。