Android的权限机制

一、Android的权限机制

Android是目前最流行的智能手机软件平台之一,在智能移动终端如火如荼发展的同时,其安全态势也日益严峻。有调查表明,恶意软件的数量在持续的上升,Google在Android安全机制上面也做了很多工作,并且一直在持续的更新,其Android的安全模型由3个部分组成:Linux安全机制、Android本地库及运行环境安全与Android特有的安全机制,如下图:

  

本文只涉及到其中的权限机制介绍,其他的部分如果有感兴趣的,我们可以后续一起探讨。

Android的权限管理遵循的是“最小特权原则”,即所有的Android应用程序都被赋予了最小权限。一个Android应用程序如果没有声明任何权限,就没有任何特权。因此,应用程序如果想访问其他文件、数据和资源就必须在AndroidManifest.xml文件中进行声明,以所声明的权限去访问这些资源。否则,如果缺少必要的权限,由于沙箱的保护,这些应用程序将不能够正常提供所期望的功能与服务。

所有应用程序对权限的申请和声明都被强制标识于AndroidManifest.xml文件之中,通过,,等标签指定。如果需要申请某个权限,可以通过指定。应用程序申请的权限在安装时提示给用户,用户可以根据自身需求和隐私保护决定是否允许对该应用程序授权。

二、权限基本知识

2.1 权限的类别

由于基于Linux内核,Android系统中的权限分为以下3类。

(1)Android手机所有者权限

这个和厂商相关,可以理解为系统权限。

(2)Android ROOT权限

类似于Linux,这是Android系统中的最高权限。如果拥有该权限,就可以对Android系统中的任何文件、数据、资源进行任意操作。所谓“越狱”,就是令用户获得最高的ROOT权限。

(3)Android应用程序权限

该权限在AndroidManifest文件中由程序开发者声明,在程序安装时由用户授权,共有下述4类不同的权限保护级别(Protection Level)。

2.2 Protection level

我们经常在AndroidManifest中使用权限,如果我们想让应用程序可以发短信,那么应该这样写:

其权限的定义是在frameworks/base/core/res/AndroidManifest.xml中,如下:

android:permissionGroup="android.permission-group.COST_MONEY" 

android:protectionLevel="dangerous" 

android:label="@string/permlab_sendSms" 

android:description="@string/permdesc_sendSms" /> 

这个XML可以认为是系统APK使用的AndroidManifest.xml,该APK使用系统的私钥进行签名。

下面分别简单介绍下各个标签的含义:

android:name:权限的名字,uses-permisson使用的。

android:permissionGroup:权限的分类,在提示用户安装时会把某些功能差不多的权限放到一类。

android:protectionLeve:分为Normal、Dangerous、Signature、SignatureOrSystem。

android:label:提示给用户的权限名。

android:description:提示给用户的权限描述。

其中android:protectionLevel各个属性说明如下:

(1)Normal

风险较低的权限,任何应用都可以申请,在安装应用时,不会直接提示给用户,点击全部才会展示。

(2)Dangerous

风险较高的权限,任何应用都可以申请,安装时需要用户确认才能使用。

(3)Signature

仅当申请该权限的应用程序与声明该权限的程序使用相同的签名时,才赋予该权限。

(4)SignatureOrSystem

仅当申请该权限的应用程序位于相同的Android系统镜像中,或申请该权限的应用程序与声明该权限的程序使用相同的签名时,才赋予该权限。

可以这样理解:

1)和该APK(定义了这个权限的APK)用相同的私钥签名的应用。

2)在/system/app目录下的应用。

2.3 进程的权限表现

Android是一个多进程系统,在这个系统中,应用程序会在自己的进程中运行,系统和应用之间的安全性是通过Linux进程级别来强制实现的,会给应用程序分配userID和GroupID。

比如我们查看qqdownload这个进程,adb shell后查看下其进程id(红色部分):

根据id,执行下查看状态,如下:

我们关注如下三行࿱

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值