在Android上将组添加到系统用户

Gil*_*Col 4 linux android android-source

我正在开发一个应用程序以及一个自定义 Android ROM,它要求我访问 Android 文件系统中的某个文件夹。该应用程序具有系统权限,并且用户系统在执行时打印以下内容

id
Run Code Online (Sandbox Code Playgroud)

输出:

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)
Run Code Online (Sandbox Code Playgroud)

我需要访问的文件夹是由另一个用户(库层上的 Android 应用程序)创建的,并且仅限于我不属于的组。

所以我的问题是:Android源代码中的哪个位置适合将用户系统添加到现有组中?(或者系统所属的其他组是如何完成的)

Gil*_*Col 5

我发现可以在运行时通过请求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 中。除了很可能默认包含的其他 gid 之外,这将导致uid=1000(system)gid=****(net_bt) 。请求android.permission.BLUETOOTH会给你 gid net_bt,它又映射到平台源代码中的一个数字(我不知道 net_bet 的默认值,这就是我屏蔽它的原因)。

我在另一篇文章中谈到了这个主题,其中解释了如何创建权限和 gids 以及如何将它们相互映射。 /sf/answers/2784289091/