2

嗨,我是 Android 的新手...请对以下问题有所了解..

我有一个由具有 S_IRWXU|S_IRWXG 权限的 linux 应用程序(用 C 编写)创建的文件,该文件属于 root 用户和 root 组。

现在我想以不同的用户(比如 app_41)作为 Android 应用程序读/写这个文件。android 应用程序不可能,因为它没有文件的权限。

实现这一点的最佳方法是什么(不允许文件/文件夹的“其他”权限)?

原因是我有一个用 C 编写的守护进程,它创建和管理命名管道以供其他进程使用。我正在尝试从 Android 应用程序(使用本机代码)写入命名管道,但我没有这样做的正确权限。

我不会感到惊讶,如果有人说......“嘿,这很简单......做这个......”

谢谢你的帮助!!

4

1 回答 1

0

我想出了一个解决方案并且它有效......如果有人有更好的解决方案,请告诉我......

为了让一个android应用程序共享一个root进程拥有的文件,我们需要执行以下操作

  1. 使Android应用程序属于“系统”用户使用

    android:sharedUserId="android.uid.system"
    
  2. 让其他平台进程(拥有该文件)保持为根,但将其添加到组“系统”。

  3. 现在的问题是如何将进程添加到组“系统”。我们想到的一件快速的事情是将进程添加到 init.rc 并使用“组”关键字并启动它。但Android不允许它发生。

  4. 要将进程添加到“系统”组,进程必须从进程内部请求 groupid。也就是说,使用进程内部的 setgid(1000) 系统调用将其添加到组“system”中。

而且效果很好!

于 2011-12-16T14:47:58.690 回答