電話をコンピューターに接続すると、「adb shell」コマンドを使用して電話と通信し、ps コマンドを入力して、電話で現在実行されているプロセス情報を出力します。1 人はルート、もう 1 人はシステムです。私が知る限り、Android は Linux ベースなので、root ユーザーが最大の権限を持つユーザーですが、システム ユーザーと混同しがちです。おそらく、Linux システムでは通常のユーザーと見なすことができますが、Android では特別なユーザーです。 Androidに関連する多くの権限があるので、ルートユーザーとシステムユーザーの本当の違いと、Androidがシステムユーザーを追加する必要がある理由を誰か教えてもらえますか?ありがとう:)
14895 次
2 に答える
28
Linux に関する限り、system
ユーザーは通常のユーザー (UID 1000) です。ただし、Android サービスでは特別な権限が付与され、ほとんどすべてにアクセスできます。ほとんどのサービスには、次のようなコードがどこかにあります。
private static final void enforceSystemOrRoot(String message) {
final int uid = Binder.getCallingUid();
if (uid != Process.SYSTEM_UID && uid != 0) {
throw new SecurityException(message);
}
}
それは、ルートまたはsystem
. shell
ユーザー (UID 2000) (実行時に得られるもの) は、多くの権限を持つ別のadb shell
ユーザー (多くのグループのメンバー) です。参照。
system
:
$ su 1000
$ id
uid=1000(system) gid=1000(system)
groups=1003(graphics),1004(input),1007(log),1009(mount),
1011(adb),1015(sdcard_rw),1028(sdcard_r),3001(net_bt_admin),
3002(net_bt),3003(inet),3006(net_bw_stats)
shell
:
$ adb shell
shell@android:/ $ id
uid=2000(shell) gid=2000(shell)
groups=1003(graphics),1004(input),1007(log),1009(mount),
1011(adb),1015(sdcard_rw),1028(sdcard_r),3001(net_bt_admin),
3002(net_bt),3003(inet),3006(net_bw_stats)
Android はアプリごとに個別のユーザーを使用し、システム サービスにも専用のユーザー ( media
、radio
、wifi
など) があります。root として実行されるものはほとんどありません (主にネイティブ デーモン)。
于 2013-06-05T09:24:25.920 に答える
-1
システム ユーザーは、他のユーザーのファイルにアクセスできません。
実行する場合: ls -l /data/data/com.google.android.gm/shared_prefs/
「許可が拒否されました」というメッセージが表示されます
root ユーザーであれば、何でもできます。すべてのファイル システムにアクセスし、すべてのデータを消去できます。
電話などを再起動することもできます。
于 2013-09-09T22:24:00.547 に答える