android系统用户和linux root用户之间有什么区别

当我将手机连接到计算机时,我使用“adb shell”命令与我的手机通信并输入ps命令输出当前在手机上运行的进程信息,我find两个特殊用户,一个是root,另一个是系统,据我所知,android基于linux,所以root用户是bigest权限用户,但我与系统用户混淆,也许我可以认为它是linux系统中的普通用户,但它在Android中很特别,它有很多与android相关的权限,所以有人能告诉我root用户和系统用户之间真正的不同,以及为什么android需要添加系统用户?谢谢:)

Solutions Collecting From Web of "android系统用户和linux root用户之间有什么区别"

就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时获得的)是另一个具有强大function的用户(许多组的成员)。 参看

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为每个应用程序使用单独的用户,系统服务也有他们的专用用户( mediaradiowifi等)。 很少有东西以root身份运行(主要是原生守护进程)。

系统用户无法访问其他用户的文件。

如果你这样做:ls -l /data/data/com.google.android.gm/shared_prefs/

你会得到’许可被拒绝’

如果您是root用户,则可以执行任何操作。 您可以访问所有文件系统,擦除所有数据。

你也可以重启电话等。