当我将手机连接到电脑时,我使用“adb shell”命令与手机通信并输入ps命令输出当前在手机上运行的进程信息,我发现两个特殊用户,一个是root,另一个是系统,据我所知,android是基于linux的,所以root用户是最大权限的用户,但是我和system用户混淆了,也许我可以认为是linux系统中的普通用户,但是在android中是特殊的,它有很多与android相关的权限,所以有人可以告诉我root用户和系统用户之间的真正区别,以及为什么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);
}
}
这样做是拒绝任何非 root 或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 回答