Когда я подключаю свой телефон к компьютеру, я использую команду "adb shell" для связи с моим телефоном и ввода команды ps для вывода информации о процессах, которая в настоящее время выполняется на моем телефоне, я нахожу двух специальных пользователей: один - это root, другое - это, насколько мне известно, андроид, основанный на Linux, поэтому пользователь root - самый большой пользовательский пользователь, но я путаюсь с пользователем системы, возможно, я могу считать его обычным пользователем в Linux-системе, но он особенный в Android, у него есть много разрешений, связанных с Android, поэтому может ли кто-то сказать мне, что между разными пользователями root и пользователем системы, и почему андроид должен добавить пользователя системы? спасибо:)
Какая разница между пользователем системы Android и пользователем root linux
Ответ 1
Что касается 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
[email protected]:/ $ 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 (в основном, родные демоны).
Ответ 2
Системный пользователь не может получить доступ к другим пользовательским файлам.
Если вы выполните: ls -l/data/data/com.google.android.gm/shared_prefs/
У вас будет "разрешение отклонено"
Если вы пользователь root, вы можете сделать что угодно. Вы можете получить доступ ко всей файловой системе, стереть все данные.
Вы также можете перезагрузить телефон и т.д.