在 Android 上将组添加到系统用户
Add group to system user on Android
我正在开发一个应用程序以及一个自定义 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)
我需要访问的文件夹是由另一个用户创建的(库层上的 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 的默认值,这就是我屏蔽它的原因)。
我在另一个 post 中谈到了这个主题,我在其中解释了如何创建权限和 gid 以及如何将它们相互映射。
我正在开发一个应用程序以及一个自定义 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)
我需要访问的文件夹是由另一个用户创建的(库层上的 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 的默认值,这就是我屏蔽它的原因)。
我在另一个 post 中谈到了这个主题,我在其中解释了如何创建权限和 gid 以及如何将它们相互映射。