Подтвердить что ты не робот

Какая разница между пользователем системы Android и пользователем root linux

Когда я подключаю свой телефон к компьютеру, я использую команду "adb shell" для связи с моим телефоном и ввода команды ps для вывода информации о процессах, которая в настоящее время выполняется на моем телефоне, я нахожу двух специальных пользователей: один - это root, другое - это, насколько мне известно, андроид, основанный на Linux, поэтому пользователь root - самый большой пользовательский пользователь, но я путаюсь с пользователем системы, возможно, я могу считать его обычным пользователем в Linux-системе, но он особенный в Android, у него есть много разрешений, связанных с Android, поэтому может ли кто-то сказать мне, что между разными пользователями root и пользователем системы, и почему андроид должен добавить пользователя системы? спасибо:)

4b9b3361

Ответ 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, вы можете сделать что угодно. Вы можете получить доступ ко всей файловой системе, стереть все данные.

Вы также можете перезагрузить телефон и т.д.