android 权限与 linux 权限

android permissions vs linux permissions

android 权限(您在清单中请求并在安装时显示的权限)是否与 root 用户在 root [=] 上获得的 linux 权限相同20=]?

更确切地说:如果我在我的 phone 上有 root 权限并且我有一个可以调用的应用程序但没有在清单中请求权限,调用会成功还是应用程序会崩溃?

谢谢。

root phone 不会影响 Android 权限。换句话说,如果某个应用 "something" 需要某些权限,而该应用未在 AndroidManifest 中声明它们,则该应用将崩溃。

更多内容在 documentation

一些 Android 权限被实现为 Linux 权限(例如,外部存储或网络各自授予允许执行这些操作的 Unix 组的成员资格),而其他的则完全实现在 Android 层内。

"Root" 与此关系不大,因为对于 Android 应用程序(可以访问各种 Android 级别的服务)的主进程来说,这几乎是闻所未闻的) 到 运行 作为 root。相反,当人们在他们的设备上安装 root hack 时,他们所做的是添加一个 shim,它可以让 helper 程序 运行 作为 root - 而不是应用程序本身。如果助手程序想要做的是基于 Linux API,并受 Linux 权限限制,那么这可能会起作用,在某种程度上它是传统的 [=21] =] 的执行,并且没有被 SELinux 阻止(为了解决这个问题,一些 hacks 从守护进程启动助手,该守护进程本身在 SELinux 完全启动之前就已初始化已激活)。

但是对于必须通过 Android APIs 完成的事情,root 几乎是无关紧要的,因为通常执行任务的代码不会 运行ning根。一些通过启动不同的 VM 实例与 Android API 交互的命令行工具可能在那里具有增强的特权——但这与尝试做同样的事情有很大不同在您的应用进程中。

人们有时也利用 root 访问权限将他们的 .apk 放到系统分区上(如果他们可以将其挂载为可写),这允许授予一些清单权限,如果在同一个 .apk 的清单中找到这些权限将被忽略当它以正常方式安装在数据分区上时。

应用会崩溃。有趣的是,您在 "androidmanifest" 中声明的权限实际上是在原生 android 框架中实现的,主要是 java 框架层和 cpp 原生中的一点点这种框架的实现。您可以通过查看 Android 开源项目代码来证实这一点。这些权限实际上是在 Android 上实现的不同层的安全策略,android 的有趣之处在于 ti 继承了很多基于 linux 的权限,一个例子是使用用户,andrd 用户组权限封装运行个应用程序(每个运行个应用程序有不同的组和用户),并且从android 5开始,SELinux也正在启用。

可以说,所有这些机制共同作用加强了 android 的整体安全性。