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实现这一机制的。