Android:在Linux应用程序和Android应用程序之间共享一个公共文件夹

时间:2011-12-15 13:26:56

标签: android root sharing uid

嗨,我是Android的新手...请注意以下问题..

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

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

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

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

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

感谢您的帮助!!

1 个答案:

答案 0 :(得分:0)

我找到了一个解决方案并且有效......请让我知道是否有人有更好的解决方案..

对于Android应用程序共享由根进程支持的文件,我们需要执行以下操作

  1. 使用

    使Android应用程序属于“系统”用户
    android:sharedUserId="android.uid.system"
    
  2. 让其他平台进程(拥有该文件)保留为root用户,但将其添加到“system”组中。

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

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

  5. 它很棒!