欢迎来到天天文库
浏览记录
ID:37722534
大小:164.50 KB
页数:32页
时间:2019-05-29
《cm授权管理分析文档》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、Android平台授权管理分析文档Byjeffliu1.概述Android是一个权限分离的系统。这是利用Linux已有的权限管理机制,通过为每一个Application分配不同的uid和gid,从而使得不同的Application之间的私有数据和访问(native以及java层通过这种sandbox机制,都可以)达到隔离的目的。与此同时,Android还在此基础上进行扩展,提供了permission机制,它主要是用来对Application可以执行的某些具体操作进行权限细分和访问控制,同时提供了per-URIpermission机制,用来提供对某些特定的数据块进
2、行ad-hoc方式的访问。2.Permission实现机制分析2.1.uid、gid、gidsAndroid的权限分离的基础是建立在Linux已有的uid、gid、gids基础上的。lUid:UidAndroid在安装一个应用程序,就会为它分配一个uid(参考PackageManagerService中的newUserLP实现)。其中普通Android应用程序的uid是从10000开始分配(参见Process.FIRST_APPLICATION_UID),10000以下是系统进程的uid。lGid:对于普通应用程序来说,gid等于uid。由于每个应用程序的uid
3、和gid都不相同,因此不管是native层还是java层都能够达到保护私有数据的作用。lGIDS:gids是由框架在Application安装过程中生成,与Application申请的具体权限相关。如果Application申请的相应的permission被granted,而且中有对应的gids,那么这个Application的gids中将包含这个gids。Uid、gid、gids的设置过程在ActivityManagerService中的startProcessLocked。在通过zygote来启动一个process时,直接将uid传给给了gid。再通过zyg
4、ote来fork出新的进程(zygote.java中的forkAndSpecialize),最终在native层进行gid和uid和gids的设置。2.2.permission一个权限主要包含三个方面的信息:权限的名称;属于的权限组;保护级别。一个权限组是指把权限按照功能分成的不同的集合。每一个权限组包含若干具体权限,例如在COST_MONEY组中包含android.permission.SEND_SMS,android.permission.CALL_PHONE等和费用相关的权限。每个权限通过protectionLevel来标识保护级别:normal,dang
5、erous,signature,signatureorsystem。不同的保护级别代表了程序要使用此权限时的认证方式。normal的权限只要申请了就可以使用;dangerous的权限在安装时需要用户确认才可以使用;signature和signatureorsystem的权限需要使用者的app和系统使用同一个数字证书。Package的权限信息主要通过在AndroidManifest.xml中通过一些标签来指定。如标签,标签等标签。如果package需要申请使用某个权限,那
6、么需要使用标签来指定。【注:android包管理服务_PackageManagerService_源码分析.pdf(来自网络)】2.3cmpermission实现原理分析1.Cm将授权管理集成到android原生的applicationManager应用中。在进程及服务详情里禁用和启用相应的权限。2.CM设置里有一个该应用的开关。对应的代码为packages/apps/CMParts。3.从其AndroidManifest.xml中,可以看出它需要有system的权限,这样才能保证它可以操纵permission相关的framewo
7、rk提供的接口和服务。4.在frameworks/base/core/java/android/widget/中增加了处理permissionon/off的新的类:AppSecurityEditablePermissions。5.对PackageManager.java/PackageManagerService.java等frameworks/base/core/的PM的逻辑进行了修改GrantedPermissions/SharedUserSetting中增加了新的revokedPermissions和effectivePermissions用来进行perm
8、ission扩展的属性。
此文档下载收益归作者所有