安卓权限(在清单文件中请求并在安装时呈现的权限)和根用户在已获取root权限的手机上获得的Linux权限是相同的吗?
更确切地说,如果我在手机上拥有root权限,并且有一个应用程序想要打电话但在清单文件中没有请求此权限,那么通话会成功还是应用程序会崩溃?
谢谢。
安卓权限(在清单文件中请求并在安装时呈现的权限)和根用户在已获取root权限的手机上获得的Linux权限是相同的吗?
更确切地说,如果我在手机上拥有root权限,并且有一个应用程序想要打电话但在清单文件中没有请求此权限,那么通话会成功还是应用程序会崩溃?
谢谢。
一些Android权限是作为Linux权限实现的(例如,外部存储或网络都授予Unix组成员身份,允许执行这些操作),而另一些完全在Android层中实现。
"Root"与此关系不大,因为Android应用程序的主进程(可以访问各种Android级别服务)很少以root身份运行。相反,当人们在设备上安装root hack时,他们所做的是添加一个shim,可以让helper程序以root身份运行 - 而不是应用本身。如果helper程序想要执行的操作基于Linux API,并受到Linux权限限制,那么这可能会起作用,只要它是基于传统用户/组的强制执行,并且没有被SELinux阻止(为了绕过这个问题,一些hack从一个守护程序启动helper,在SELinux完全激活之前就初始化)。
但对于必须通过Android API完成的任务,root几乎无关紧要,因为通常执行任务的代码不会以root身份运行。有可能一些通过启动不同VM实例与Android API交互的命令行工具在那里拥有增强的特权 - 但这与尝试在您的应用程序进程内执行相同的操作非常不同。
人们有时也利用root访问权限将他们的.apk放在系统分区上(如果他们可以将其挂载为可写),这允许授予一些清单权限,如果在数据分区上以正常方式安装相同的.apk时发现,则会被忽略。
拥有root权限的手机不会影响Android权限。换句话说,如果一个应用程序执行需要某些权限的“某些操作”,但该应用程序没有在AndroidManifest中声明这些权限,则该应用程序将崩溃。
详见文档。