是否可以将 SELinux 策略与 Android 权限相关联?

Is it possible to connect SELinux policy with Android permissions?

我想授予 Android 权限(例如 android.permission.DELETE_PACKAGES,它具有 protectionLevel=system|signature)给由具有给定包名称的给定签名 and/or 签名的应用程序来自 SELinux 策略,但到目前为止我还没有找到可行的方法。 mac_permissions.xml 文件曾经接受一个 allow-permission 标签,该标签接受 Android 权限字符串,但 based on the Lollipop code 解析它,该标签似乎不再受支持。无论如何我都尝试使用它,而且它似乎肯定被系统忽略了。

理想情况下,我只需要 add/modify SELinux 策略文件而不是核心 Android 声明受限权限并指定其保护级别的清单文件。假设具有给定 signature/package 的应用程序不会被 PackageManager 授予所述权限,因为它们缺少 Android 权限保护级别识别的任何特殊权限(由平台证书签名,安装在 /system 中,等),并且该权限是在 OS 构建时声明的系统权限(即由 frameworks/base/core/res AndroidManifest 声明)。

有没有办法允许给定的应用 signature/package 使用来自 SELinux 的给定 Android 权限?

SE 放弃了 Android 项目的所有 MMAC 工作,因为其中 none 已被上游接受。目前,不支持将包权限关联到 SE Linux 策略的机制。如果您的建筑物 Android,可以在他们的树中恢复该工作,那么从这里的 seandroid 分支开始的分支:https://bitbucket.org/seandroid/frameworks-base/branches/

但是,带有代码的最新分支已经超过一年了。所以你可能有移植问题。

此外,该代码使用 mac_permissions.xml 文件来控制访问,但 EOPS、扩展操作更改也很有用,您可以在其配置文件中阅读相关信息: https://bitbucket.org/seandroid/external-sepolicy/src/ccb97c52cda2bac69c0499b3c76bc8e0d28d636c/eops.xml?at=seandroid-5.1.1&fileviewer=file-view-default

请记住,安装时权限检查和 eops 更改,虽然提供了一种强制访问控制形式,但并未真正使用核心 SE Linux 技术。这样,无论有没有启用 selnux 的内核,它都可以使用。

如果真的想将 SE Linux 与权限字符串耦合,则需要付出大量努力来标记权限,并拥有包管理器服务 (PMS) 和 Activity 管理器服务 (AMS)计算是否允许访问。

但是,现在每个应用程序 android 权限控制可用,大部分工作都不再需要了。