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

时间:2016-02-17 16:38:25

标签: android permissions selinux

我想向给定签名和/或来自SELinux政策的给定包名称签名的应用授予Android权限(例如android.permission.DELETE_PACKAGES,其中包含protectionLevel = system | signature),但到目前为止我还没有找到一种有效的方法。 mac_permissions.xml文件用于接受接受Android权限字符串的allow-permission标记,但解析它的based on the Lollipop code,该标记似乎不再受支持。无论如何我尝试使用它,它似乎被系统忽略了。

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

有没有办法允许给定的应用程序签名/包使用SELinux的给定Android权限?

1 个答案:

答案 0 :(得分:2)

SE for Android项目放弃了所有MMAC工作,因为它们都没有被上游接受。目前,没有支持将程序包权限与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与权限字符串相结合,则需要花费大量精力来标记权限,并让Package Manager Service(PMS)和Activity Manager Service(AMS)计算是否允许访问。

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