android - 在 Android 上为系统用户添加组

标签 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 源代码中的哪个位置适合将用户 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 的默认值是为什么我掩盖了它)。

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

关于android - 在 Android 上为系统用户添加组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38462262/

相关文章:

java - 如何在另一个 ImageView 之上创建一个 ImageView(在嵌套的 LinearLayout 中)

c - 是否有跨体系结构的方法来检测 Linux 上的 CPU 功能?

linux shell 脚本 sed

android - 构建 gradle 系统应用作为 AOSP 构建的一部分

android - java.lang.NoClassDefFoundError : Failed resolution of: Lcom/facebook/R$style 错误

android - 为什么 Android Studio 不识别这个依赖库?

android - PendingIntent 恢复 Activity

android - 如何在 Android Studio 中使用 retrofit2 获取 json 日志?

linux - 如何使用 putty 在 linux 服务器上安装 node.js

java - Android 源无法编译?