我正在开发一个应用程序以及一个自定义 Android ROM,它要求我访问 Android 文件系统中的某个文件夹。该应用程序具有系统权限和用户 执行时系统打印如下
id
输出:
uid=1000(system) gid=1000(system) groups=1001(radio),1002(bluetooth),1003(graphics),1004(input),1005(audio),1006(camera),1007(log),1008(compass),1009(mount),1010(wifi),1018(usb)
我需要访问的文件夹是由另一个用户(Libraries 层上的 Android 应用程序)创建的,并且仅限于我不属于的组。
所以我的问题是: Android 源代码中的哪个位置适合将用户 System 添加到现有组? (或者系统所属的其他组是如何完成的)
最佳答案
我发现可以在运行时通过请求 Android 系统权限来请求 GID。运行该应用程序的用户(如 linux 用户)将暂时拥有该权限。并非所有权限都授予 gids。
这是来自 AOSP 项目源的 platform.xml 示例,其中列出并部分映射了授予 gid 的系统权限(gid 名称也需要映射到 android_filesystem_config.h 中的数字)。
https://android.googlesource.com/platform/frameworks/base/+/cd92588/data/etc/platform.xml
例如 创建系统应用程序并将 android.permission.BLUETOOTH 添加到您的 AndroidManifest.xml。这将导致 uid=1000(system) 和 gid=****(net_bt) 以及其他很可能作为默认值包含在内的 gid。 请求 android.permission.BLUETOOTH 会给你 gid net_bt ,它又映射到平台源代码中的一个数字(我不知道 net_bet 的默认值是为什么我掩盖了它)。
我在另一篇文章中谈到了这个主题,我在其中解释了如何创建权限和 gid 以及如何将它们相互映射。 https://stackoverflow.com/a/39775558/2815572
关于android - 在 Android 上为系统用户添加组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38462262/