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源代码中的哪个位置适合将用户系统添加到现有组中?(或者系统所属的其他组是如何完成的)
我发现可以在运行时通过请求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/
| 归档时间: |
|
| 查看次数: |
6939 次 |
| 最近记录: |