问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

Android的权限都有哪些

发布网友 发布时间:2022-04-24 18:41

我来回答

1个回答

热心网友 时间:2023-11-03 00:07

(一)linux文件系统上的权限
-rwxr-x--x system system 4156 2010-04-30 16:13 test.apk
代表的是相应的用户/用户组及其他人对此文件的访问权限,与此文件运行起来具有的权限完全不相关。
比如上面的例子只能说明system用户拥有对此文件的读写执行权限;system组的用户对此文件拥有读、执行权限;其他人对此文件只具有执行权限。
而test.apk运行起来后可以干哪些事情,跟这个就不相关了。
千万不要看apk文件系统上属于system/system用户及用户组,或者root/root用户及用户组,就认为apk具有system或root权限
(二)Android的权限规则
(1)Android中的apk必须签名
这种签名不是基于权威证书的,不会决定某个应用允不允许安装,而是一种自签名证书。
重要的是,android系统有的权限是基于签名的。比如:system等级的权限有专门对应的签名,签名不对,权限也就获取不到。
默认生成的APK文件是debug签名的。
获取system权限时用到的签名,见:如何使Android应用程序获取系统权限
(2)基于UserID的进程级别的安全机制
大家都知道,进程有独立的地址空间,进程与进程间默认是不能互相访问的,是一种很可靠的保护机制。
Android通过为每一个安装在设备上的包(apk)分配唯一的linux userID来实现,名称为"app_"加一个数字,比如app_43
不同的UserID,运行在不同的进程,所以apk之间默认便不能相互访问。
Android提供了如下的一种机制,可以使两个apk打破前面讲的这种壁垒。
在AndroidManifest.xml中利用sharedUserId属性给不同的package分配相同的userID,通过这样做,两个package可以被当做同一个程序,
系统会分配给两个程序相同的UserID。当然,基于安全考虑,两个package需要有相同的签名,否则没有验证也就没有意义了。
(这里补充一点:并不是说分配了同样的UserID,两程序就运行在同一进程, 下面为PS指令摘取的,
显然,system、app_2分别对应的两个进程的PID都不同,不知Android到底是怎样实现它的机制的)
User PID PPID
system 953 883 187340 55052 ffffffff afe0cbcc S system_server
app_2 1072 883 100264 19564 ffffffff afe0dcc4 S com.android.inputmethod.
system 1083 883 111808 23192 ffffffff afe0dcc4 S android.process.omsservi
app_2 1088 883 156464 45720 ffffffff afe0dcc4 S android.process.acore
(3)默认apk生成的数据对外是不可见的
实现方法是:Android会为程序存储的数据分配该程序的UserID。
借助于Linux严格的文件系统访问权限,便实现了apk之间不能相互访问似有数据的机制。
例:我的应用创建的一个文件,默认权限如下,可以看到只有UserID为app_21的程序才能读写该文件。
-rw------- app_21 app_21 87650 2000-01-01 09:48 test.txt
如何对外开放?
<1> 使用MODE_WORLD_READABLE and/or MODE_WORLD_WRITEABLE 标记。
When creating a new file with getSharedPreferences(String, int), openFileOutput(String, int), or openOrCreateDatabase(String, int, SQLiteDatabase.CursorFactory), you can use the MODE_WORLD_READABLE and/or MODE_WORLD_WRITEABLE flags to allow any other package to read/write the file. When setting these flags, the file is still owned by your application, but its global read and/or write permissions have been set appropriately so any other application can see it.
(4)AndroidManifest.xml中的显式权限声明
Android默认应用是没有任何权限去操作其他应用或系统相关特性的,应用在进行某些操作时都需要显式地去申请相应的权限。
一般以下动作时都需要申请相应的权限:
A particular permission may be enforced at a number of places ring your program's operation:
At the time of a call into the system, to prevent an application from executing certain functions.
When starting an activity, to prevent applications from launching activities of other applications.
Both sending and receiving broadcasts, to control who can receive your broadcast or who can send a broadcast to you.
When accessing and operating on a content provider.
Binding or starting a service.
在应用安装的时候,package installer会检测该应用请求的权限,根据该应用的签名或者提示用户来分配相应的权限。
在程序运行期间是不检测权限的。如果安装时权限获取失败,那执行就会出错,不会提示用户权限不够。
大多数情况下,权限不足导致的失败会引发一个 SecurityException, 会在系统log(system log)中有相关记录。
(5)权限继承/UserID继承
当我们遇到apk权限不足时,我们有时会考虑写一个linux程序,然后由apk调用它去完成某个它没有权限完成的事情,很遗憾,这种方法是行不通的。
前面讲过,android权限是经营在进程层面的,也就是说一个apk应用启动的子进程的权限不可能超越其父进程的权限(即apk的权限),
即使单独运行某个应用有权限做某事,但如果它是由一个apk调用的,那权限就会被*。
实际上,android是通过给子进程分配父进程的UserID实现这一机制的。
(三)常见权限不足问题分析
首先要知道,普通apk程序是运行在非root、非system层级的,也就是说看要访问的文件的权限时,看的是最后三位。
另外,通过system/app安装的apk的权限一般比直接安装或adb install安装的apk的权限要高一些。
言归正传,运行一个android应用程序过程中遇到权限不足,一般分为两种情况:
(1)Log中可明显看到权限不足的提示。
此种情况一般是AndroidManifest.xml中缺少相应的权限设置,好好查找一番权限列表,应该就可解决,是最易处理的情况。
有时权限都加上了,但还是报权限不足,是什么情况呢?
Android系统有一些API及权限是需要apk具有一定的等级才能运行的。
比如 SystemClock.setCurrentTimeMillis()修改系统时间,WRITE_SECURE_SETTINGS权限好像都是需要有system级的权限才行。
也就是说UserID是system.
(2)Log里没有报权限不足,而是一些其他Exception的提示,这也有可能是权限不足造成的。
比如:我们常会想读/写一个配置文件或其他一些不是自己创建的文件,常会报java.io.FileNotFoundException错误。
系统认为比较重要的文件一般权限设置的也会比较严格,特别是一些很重要的(配置)文件或目录。

-r--r----- bluetooth bluetooth 935 2010-07-09 20:21 dbus.conf
drwxrwx--x system system 2010-07-07 02:05 data
dbus.conf好像是蓝牙的配置文件,从权限上来看,根本就不可能改动,非bluetooth用户连读的权利都没有。
/data目录下存的是所有程序的私有数据,默认情况下android是不允许普通apk访问/data目录下内容的,通过data目录的权限设置可知,其他用户没有读的权限。
所以adb普通权限下在data目录下敲ls命令,会得到opendir failed, Permission denied的错误,通过代码file.listfiles()也无法获得data目录下的内容。
android 运行时权限常见的有哪些

(1)Linux权限:以test.apk为例,system用户有读写执行权限,system组用户有读和执行权限,其他人只有执行权限。这并不意味着apk运行时就具有这些权限,每个apk的运行权限与文件权限是分开的。(2)Android权限规则:Android应用必须签名,但签名并非权威证书,不会决定安装权限,而是自签名。重要的是,某些...

Android 的权限管理是怎么实现的?

(1)Android 手机所有者权限:自用户购买 Android 手机后,用户不需要输入任何密码,就具有安装一般应用软件、使用应用程序等的权限;(2)Android root 权限:该权限为 Android 系统的最高权限,可以对所有系统中文件、数据进行任意操作。出厂时默认没有该权限,需要使用 z4Root 等软件进行获取,然而,并...

Android手机权限怎么回事?

在Android操作系统中,权限分为几种不同的级别,包括正常权限、危险权限和签名权限。正常权限是应用程序在运行时自动获得的,这些权限通常不会对用户的隐私或安全造成威胁。危险权限则需要用户在安装或更新应用程序时手动授权,因为这些权限可能会涉及到用户的隐私或安全。例如,访问用户的相机、麦克风、位置信...

Android中常见的权限

1.Android中的常见权限分为两种:(1).普通权限 (2).危险权限 2.Android6.0前后权限解决方案 Android 6.0 (API 23) 之前应用的权限在安装时全部授予,运行时应用不再需要询问用户。在 Android 6.0 或更高版本对权限进行了分类,对某些涉及到用户隐私的权限可在运行时根据用户的需要动态授予。这...

Android权限有哪些?

01. —appops 权限 在 Android 系统中存在一个叫做「appops」的系统服务,该服务定义了一系列的「应用操作」。其中部分「应用操作」与「权限」对应(如 OP_CAMERA 与相机权限)。原生 Android 系统使用「appops」来追踪权限使用,「appops」也部分被用于权限控制。每个应用都有自己的「appops」设置,...

Android系统权限设置?

1. 存储权限的作用 在Android手机中,我们使用应用程序来完成各种各样的任务,如发送短信、浏览网页、收发邮件等等。这些应用程序需要访问和使用手机的不同部分,如网络连接、拍照功能、存储设备等。因此,对这些功能的访问必须经过用户的授权才能使用。存储权限允许特定的应用程序在设备上读取和写入文件。当一...

秒懂Android开发之权限总结

Android系统权限设计的核心是限制应用未经许可的越权行为,如访问、修改其他应用数据、擅自链接网络或唤醒系统。权限根据App类型分为系统应用和第三方应用,后者是我们开发的主流。第三方应用权限包含关键属性如名称和保护级别,次要属性如标签和描述,以及权限组。例如,读写外部存储权限会作为同一组,当请求时...

深入解析permission——Android程序的权限管理系统

Android将每个权限都分配给一组字符串常量,称为权限名称。应用程序需要在AndroidManifest.xml文件中声明所需的权限。Android的权限名称在以下格式中定义:&lt;permission-tree android:description="string" android:icon="drawable" android:label="string" android:name="...

android中的权限各起什么作用?

账户管理 android.permission.ACCOUNT_MANAGER,获取账户验证信息,主要为GMail账户信息,只有系统级进程才能访问的权限 验证账户 android.permission.AUTHENTICATE_ACCOUNTS,允许一个程序通过账户验证方式访问账户管理ACCOUNT_MANAGER相关信息 电量统计 android.permission.BATTERY_STATS,获取电池电量统计信息 绑定小插件 android....

哪些Android权限不能被用户应用程序使用

基带(Radio)解锁 在Android系统中,基带是上层软件与手机中无线设备(手机网络,Wi-Fi,蓝牙等)的驱动程序之间的中介。控制Android权限的优势 用户可以自主地减小风险,仅使用官方市场的应用程序,也可以自主地解除安全限制,从而获得更多自由。几乎所有的Android安全软件都能对来电、信息进行控制,以减少骚扰。...

Android权限 Android 文件权限 Android存储权限 Android设置存储权限 android权限处理 android权限管理 Android root android申请权限 android10权限变更
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
新轩逸保养一次多少钱? ...每个小长方形的周长是多少厘米?(你能想出几 铅的正常是多少合适 两个同样的长方形,长是8分米,宽4分米。把它们拼成一个长方形,它的周长... ...拼成一个大长方形拼成的长方形的周长是多少分米 ...长8分米,宽是4分米,如果把它们拼成一个长方形,这个长方形的周长是... ...如果把它们拼成长方形,这个长方形的周长是多少? ...把它们拼成一个正方形,周长是___分米;把它们拼成一个长方... 把两个边长是4分米的正方形拼成一个长方形,这个长方形的周长是___ ...长是8分米,宽是4分米.如果把它们拼成一个长方形,这个长方形的周长是... 什么是geoportal android应用如何在有需要时申请root权限 esso如何实现单点认证? Android开发中怎么主动请求权限 安卓手机的各种权限申请怎么选择? 如何用PS将一张图片上的logo转移到另一张图片上? 电脑睡眠模式怎么设置 电脑模式怎么改? q1小天才电话手表怎样拨号? q2小天才电话手表怎么更新 小天才电话手表QlR跟QlC有什么区别 在win7系统里不小心删除了回收站文件夹,怎样找回文件 回收站里面的文件在哪里找回? 怎样能把已从回收站中删除的文件找回来? 企业期末盘点的步骤有哪些? 金丝利通库存盘点的最后一步是 仓库盘点,该如何做 仓库盘点方法 存货盘点制度的程序步骤 怎样做仓库年终盘点?年终盘点的五大实施步骤和流程 安卓7.0root权限申请问题 windows 10 怎么删除inode单点登录账户 手机无法获取权限 安卓6.0的 怎么办 谁能推荐一个国内的ITSM软件或者IT服务管理软件? android 自定义的launcher在6.0后需要动态申请权限? android华为手机申请权限如图,是如何实现的? 瞩目电脑上如何锁定? android6.0+多个权限申请问题 cocos2d-x3.2中怎么做ShareSdk的步骤,cocos2dx3.0 安卓开发,关于root权限请求的问题,高手进来。 android 怎么给android root权限 android哪个版本开始可以自己设置权限 怎么让安卓程序不在开始运行的时候自动申请权限 要古代青楼女子的名字 古代青楼女子姓名?如小翠.多说几个吧 隋唐时期妓女名,我想知道在这一时期,比较著名的青楼女子的姓名。 求古代青楼女子的名字别号,要四个字的,比如XX公主,XX妃子,等等。自己创造即可,谢谢! 古代青楼里的女人名字 古代青楼女子两个字的名字 古代青楼女子的名字