在Android上向系统用户添加组

时间:2016-07-19 15:06:13

标签: android linux android-source

我正在开发一个应用程序以及一个自定义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源代码中的哪个位置适合将用户系统添加到现有组? (或者如何与系统所属的其他组完成)

1 个答案:

答案 0 :(得分:1)

我发现可以在运行时通过请求Android系统权限来请求GID。运行应用程序的用户(如在linux用户中)将暂时拥有该权限。并非所有权限都授予gids。

以下是来自AOSP项目源的platform.xml示例,其中列出并部分映射了授予gids的系统权限(gid名称也需要映射到android_filesystem_config.h中的数字)。

https://android.googlesource.com/platform/frameworks/base/+/cd92588/data/etc/platform.xml

E.g。 创建一个系统应用程序并将 android.permission.BLUETOOTH 添加到AndroidManifest.xml。这将导致 uid = 1000(系统)以及 gid = ****(net_bt)以及最有可能被包含为默认值的其他gid。 请求 android.permission.BLUETOOTH 将为您提供gid net_bt ,后者又映射到平台源代码中的数字(我不知道net_bet的默认值)这就是为什么我掩盖了它。)

我在另一篇文章中触及了这个主题,在那里我解释了如何创建权限和gid以及如何将它们相互映射。 https://stackoverflow.com/a/39775558/2815572