安卓权限 vs Linux权限

4

安卓权限(在清单文件中请求并在安装时呈现的权限)和根用户在已获取root权限的手机上获得的Linux权限是相同的吗?

更确切地说,如果我在手机上拥有root权限,并且有一个应用程序想要打电话但在清单文件中没有请求此权限,那么通话会成功还是应用程序会崩溃?

谢谢。

3个回答

4

一些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时发现,则会被忽略。


2

拥有root权限的手机不会影响Android权限。换句话说,如果一个应用程序执行需要某些权限的“某些操作”,但该应用程序没有在AndroidManifest中声明这些权限,则该应用程序将崩溃。

详见文档


0
应用程序会崩溃。有趣的是,您在“androidmanifest”中声明的权限实际上是在本机Android框架中实现的,这主要是Java框架层和一些cpp本地实现的框架。您可以通过查看Android开源项目代码来证实这一点。这些权限实际上是Android上实施的不同安全策略层,有趣的是Android继承了许多基于Linux的权限,其中一个例子是使用用户和andrd用户组权限封装运行的应用程序(每个运行的应用程序都有不同的组和用户),并且从Android 5开始,还启用了SELinux。
可以说,所有这些机制共同作用以加强整个Android的安全性。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接