2

こんにちは、私は Android の初心者です...次の問題に光を当ててください..

S_IRWXU|S_IRWXG 権限を持つ Linux アプリケーション (C で記述) によって作成されたファイルがあり、そのファイルは root ユーザーと root グループに属しています。

ここで、このファイルを別のユーザー (app_41 など) として Android アプリケーションとして読み書きしたいと思います。ファイルに対する権限がないため、Android アプリケーションでは使用できません。

これを実装する最良の方法は何ですか (ファイル/フォルダーへの「その他」のアクセス許可を許可せずに)?

その理由は、他のプロセスで使用する名前付きパイプを作成および管理する C で書かれたデーモンを持っているからです。Android アプリケーション (ネイティブ コードを使用) から名前付きパイプに書き込もうとしていますが、それを行うための適切な権限がありません。

誰かが...「ねえ、とても簡単だ..これをやって...」と言ったとしても、私は驚かないでしょう.

ご協力いただきありがとうございます!!

4

1 に答える 1

0

私は解決策を見つけ出し、それは機能します...誰かがより良い解決策を持っているかどうか教えてください..

ルート プロセスが所有するファイルを Android アプリケーションで共有するには、次の手順を実行する必要があります。

  1. を使用して、Android アプリケーションを「システム」ユーザーに所属させます。

    android:sharedUserId="android.uid.system"
    
  2. 他のプラットフォーム プロセス (ファイルを所有している) は root のままにしますが、それをグループ "system" に追加します。

  3. ここで問題は、プロセスをグループ「システム」に追加する方法です。頭に浮かぶ簡単なことの 1 つは、プロセスを init.rc に追加し、「グループ」キーワードを使用して開始することです。しかし、Android はそれを許しません。

  4. プロセスをグループ「システム」に追加するには、プロセスはプロセス内からグループ ID を要求する必要があります。つまり、プロセス内から setgid(1000) システム コールを使用して、グループ「system」に追加します。

そして、それはうまくいきます!

于 2011-12-16T14:47:58.690 に答える