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