Android: общий доступ к папке между приложением linux и приложением Android - PullRequest
2 голосов
/ 15 декабря 2011

Привет, я новичок в Android ... Пожалуйста, расскажите немного о следующей проблеме ..

У меня есть файл, созданный приложением linux (написанный на C) с разрешением S_IRWXU | S_IRWXG, и файл принадлежит пользователю root и корневой группе.

Теперь я хотел бы читать / писать в этот файл как приложение Android от другого пользователя (скажем, app_41). Это невозможно для приложения Android, потому что у него нет разрешения для файла.

Каков наилучший способ реализации этого (без разрешения «другим» доступа к файлу / папке)?

Причина в том, что у меня есть демон, написанный на C, который создает именованные каналы и управляет ими для других процессов. Я пытаюсь записать в именованный канал из приложения Android (используя собственный код), и у меня нет прав на это.

Я не удивлюсь, если кто-то скажет ... "Эй, это очень просто ... сделай это ..."

Спасибо за вашу помощь !!

1 Ответ

0 голосов
/ 16 декабря 2011

Я нашел решение, и оно работает ... Пожалуйста, дайте мне знать, если у кого-нибудь есть лучшее решение ..

Чтобы приложение для Android могло делиться файлом, связанным с процессом root, нам нужно сделатьследующее

  1. Сделать приложение Android принадлежащим "системному" пользователю, используя

    android:sharedUserId="android.uid.system"
    
  2. Позвольте другой платформе обрабатывать (владеть файлом) остаются в качестве пользователя root, но добавьте его в группу «system».

  3. Теперь вопрос заключается в том, как добавить процесс в группу «system».на наш взгляд, это добавить процесс в init.rc, использовать ключевое слово «group» и запустить его.Но Android не позволяет этому случиться.

  4. Чтобы добавить процесс в групповую «систему», процесс должен запросить groupid изнутри процесса.То есть используйте системный вызов setgid (1000) изнутри процесса, чтобы добавить его в группу "system" ..

И он прекрасно работает!

...