Вопрос по android, su, root – Как работает su на Android? И каковы предпосылки для его работы? Что такое рутинг на Android?

8

Возможный дубликат:что означает su: process = Runtime.getRuntime (). exec (& quot; su & quot;);

Я устал пробовать все разные вещи, но до сих пор не могу понять, когда все будет работать. Что такое рутирование устройства в Android? Кто-нибудь, пожалуйста, помогите мне с этим.

Я ответил на следующий вопрос. Решение, которое я разместил там, я проверил, и это тоже сработало.

Добавление полного разрешения для файла изображения в Android.

Here is my question :

Я пытался подписаться.

Скопировано su.

Установил SuperUser.apk,

Из программы я назвал su, а затем, используя только что созданный процесс, выполнил необходимые операции.

Это имеет 2 результаты.

1) Когда устройство рутировано (как, например, выполнение параметра Постоянный корень в z4root), оно работает, оно меняет права доступа к системному файлу.

2) Когда устройство не рутировано, оно не работает.

Пожалуйста, объясните, что делает z4root, что делает задачу возможной. Объясни вкратце, пожалуйста.

Дайте мне знать, если мой вопрос не ясен. Благодаря тонну..

Возможный дубликатwhat does the su mean: process = Runtime.getRuntime().exec("su"); Cœur

Ваш Ответ

3   ответа
0

Когда вы рутируете устройство, вы перезаписываете или изменяете образ ОС в ПЗУ, чтобы предоставить вам повышенные разрешения. Установка приложений в пользовательском режиме не может дать вам повышение привилегий в любой версии Linux где-либо. Если какой-либо пользователь сможет получить права root, "скопировав su" не было бы такого понятия, как безопасность.

& quot; Установка приложений ... не может дать вам повышение привилегий & quot; Я согласен, что это не так, но, как правило, так работают методы рутирования устройства. Эксплуатация уязвимости безопасности выполняется для эскалации текущего некорневого процесса до корневого, а затем вносятся некоторые постоянные изменения, чтобы позднее было проще повысить привилегии (например, копирование su в файловую систему system, доступную только для чтения).
Что именно различия в образе ОС, это то, что я пытаюсь понять .. Спасибо за ответ mk..
-1

Я не уверен, что вы спрашиваете, но это кажется простой вещью. Вы пытаетесь стать "суперпользователем" или делаете что-то с правами суперпользователя. Вы можете сделать это только в том случае, если у вас есть реальные права на это, предоставленные учетной записи пользователя, которая в данный момент работает на вашем устройстве. Обычно вы не имеете этого права.

Имейте в виду, что «суперпользователь» такой же, как «root»

  • If you "root" your device it means you give yourself the right to become superuser. You can do stuff that requires to be super user: "su" is one of those commands, as it says "log me in as superuser". You obviously need superuser permissions to become that user.
  • If you haven't rooted the device, you don't have the rights to do the stuff superuser can. So calling su won't work.

Так что вы можете сделать толькоroot вещи, если выrooted твое устройство.

& quot; Таким образом, вы можете выполнять рутирование только в том случае, если вы рутировали свое устройство & quot; В чем разница между до и после рутирования устройства, это то, что я пытаюсь понять. Внутри ОС что-то добавлено, что заставит su работать? или что это? mk..
Посмотрите на это так: вы вошли в систему & quot; на вашем устройстве, как пользователь, так же, как на любом другом компьютере. Этот пользователь не имеет права делать суперпользовательские вещи. Все, что вы запускаете (приложения и т. Д.), Запускается с вашими правами. Внесенное вами изменение заключается в том, что вы позволяете случайным пользователям (например, вам) стать пользователем root. Посмотрите на это так: обычно вы входите в библиотечный компьютер: вы не администратор. & Quot; укоренение & Quot; будет означать «взлом» компьютер, чтобы пользователь по умолчанию стал администратором.
23

Что делает z4root (или любая другая программа рутирования), он запускает какой-то эксплойт, чтобы изменить свой собственный uid (user-id) на 0 (root). Вы можете думать об этом как о совершении какого-то взлома и обмана ядра, заставляя его думать, что оно действительно имеет право быть пользователем root (тогда, если z4root был вирусом, он мог бы делать все с вашим телефоном, начиная от установки клавиатурных шпионов и заканчивая его брикетом). Конечно, если возможно обмануть ядро таким образом, чтобы предоставить вам доступ с правами root, это считается уязвимостью безопасности (любое приложение может сделать это и выполнять некоторые вредоносные действия) и обычно исправляется в будущих обновлениях ядра (именно поэтому z4root может не работать, если вы обновите прошивку).

Когда z4root установил свой uid в 0, он делает следующее: remounts/system раздел как доступный для записи (по умолчанию он доступен только для чтения), копирует поверх su bin, Superuser.apk и busybox, а затем перемонтирует/system назад как только для чтения.

Так как же двоичный файл su дает вам доступ с правами суперпользователя без "взлома"? вещь, когда обычно приложения имеют такой же UID, как родительский процесс? Это потому, что су бинарный имеетнабор-UID флаг установлен и всегда запускается как uid 0 (root).

Теперь, если вы скопировали бинарный файл su в/system/bin тогда у вас должен был быть root-доступ, что означает, что вы просто забыли сменить владельца / права доступа (chown root:root /system/bin/su; chmod 6755 /system/bin/su) но вам все еще нужен root-доступ для этого.

Спасибо .. Но какая-нибудь подсказка, как программно изменить Uid на 0? mk..
@WuYongzheng Этому ответу уже более двух лет, и в то время я вполне уверен, что Android использовал флаг setuid, так как я рутировал свой телефон (скачать изображение -> распаковать -> добавить su бинарный, setuid -> пакет -> вспышка)
@ matix2267 Не заметил дату. Только что проверил. Бит setuid был реализован в Android 4.3 и выше.
@ happy2Help Вы не можете изменить свой uid, если вы не являетесь пользователем root (uid 0). Только root может изменять uid, иначе любой пользователь может предоставить себе повышенные привилегии. Ответ: вызовите исполняемый файл, для которого установлен флаг setuid (в большинстве Linux-систем по умолчанию есть только su и sudo, но вы можете создать свой - вам, однако, понадобится root-доступ, чтобы установить его как root).
Я думаю, что третий абзац и ниже неверны. В Android не используется флаг setuid, поскольку Android не уважает этот флаг. Вместо этого Android su связывается с демоном процесса daemonu, который напрямую разветвляется init. Таким образом, программа, которую вы запускаете с помощью su, не является дочерним процессом su, а является дочерним процессом daemonsu.

Похожие вопросы