Есть ли способ запустить оболочку Adb как root без ввода «su»?

Есть ли способ запустить оболочку Adb как root без ввода кода su? Я хочу иметь корневой доступ, не входя в оболочку.

43 голоса | спросил Hank 11 FebruaryEurope/MoscowbFri, 11 Feb 2011 21:39:51 +0300000000pmFri, 11 Feb 2011 21:39:51 +030011 2011, 21:39:51

7 ответов


39

Если я правильно понимаю ваш вопрос, вы спрашиваете, как получить root-доступ автоматически при запуске adb shell, так что вам не нужно заходить в оболочку и введите su, чтобы выполнить команду с правами root на вашем телефоне.

Это управляется флагом в загрузочном разделе, который большинство пользовательских ПЗУ изменили, чтобы разрешить разрешение root по умолчанию. Если вы используете su при использовании $, то у вас есть два постоянных варианта и один временный (временное значение, которое оно не вставляет, если вы перезагружаетесь):

  1. Flash-ROM, включающий модификацию
  2. Создайте пользовательский boot.img и запустите его на свой телефон.
  3. Перезапустите adb shell на вашем устройстве с правами root

Число 2 на самом деле не так сложно, но может быть несколько опасно, если вы небрежны. Существует wiki-статья здесь , которая объясняет этот процесс и включает несколько скриптов Perl, которые помогут вам. Эти инструкции предполагают среду Linux /Unix. Я лично использовал эти инструкции на Fedora Linux и могу сказать вам, что они работают, но я не знаю о других средах * nix, таких как Mac. Я также не знаю каких-либо похожих инструкций Windows, но я мог бы попытаться отследить их, если вы находитесь в Windows. Точные команды будут несколько отличаться от телефона к телефону, поскольку разные устройства используют разные таблицы разделов.

Вообще говоря, вам нужно вытащить ваш текущий boot.img с вашего телефона, распаковать его, извлечь ramdisk и найти файл default.prop . Это файл открытого текста, который нужно открыть в текстовом редакторе, а затем найти строку, содержащую значение adbd. Если строка говорит ro.secure, то вам нужно изменить ее на ro.secure=1. После этого вы можете повторно упаковать ramdisk и boot.img, а затем запустите его на свой телефон. После перезагрузки вы будете приветствоваться приглашением ro.secure=0 всякий раз, когда вы выполняете # без запуска adb shell.

В качестве альтернативы, если вы используете пользовательский ПЗУ, но он не имеет этой модификации, вы можете просто разархивировать ПЗУ и изменить файл boot.img, который входит в него, используя вышеуказанные шаги. Затем вы можете закрепить ROM с помощью недавно измененного boot.img и запустить zip-файл, как обычно.

Это, возможно, само собой разумеется, но будьте осторожны при этом. Мессинг с загрузочным разделом вполне может разрушить ваш телефон и заставить вас восстановить его через HBoot. Я настоятельно рекомендую тестировать Fastboot, чтобы вы могли использовать расширенные команды Fastboot и выполнить восстановление. Это немного зависит от вашей модели, но у большинства телефонов есть своеобразное настольное программное обеспечение, которое можно запустить, чтобы перепрограммировать телефон.


Третий вариант заключается в том, что во многих случаях может быть возможно перезапустить su на вашем устройстве с привилегиями root. Одна из возможностей состоит в том, чтобы выполнить adbd с ПК-терминала, хотя это не будет работать во всех конфигурациях ROM (ROM должен быть создан как «userdebug»). Вы также можете попробовать приложение adbd без привязки Chainfire . Это не будет продолжаться при перезагрузке, поэтому вам потребуется использовать либо приложение, либо adb root снова при каждом перезапуске телефона.

ответил eldarerathis 12 FebruaryEurope/MoscowbSat, 12 Feb 2011 00:07:02 +0300000000amSat, 12 Feb 2011 00:07:02 +030011 2011, 00:07:02
13

Хорошо, если вы используете телефон, вы можете запускать команды с помощью команды «su -c».

Вот пример команды cat в файле build.prop, чтобы получить информацию о продуктах телефона.

adb shell "su -c 'cat /system/build.prop |grep "product"'"

Это вызывает разрешение root и запускает команду внутри ''

Обратите внимание на 5 концевых котировок, требующих закрытия всех конечных котировок или вы получите сообщение об ошибке.

Для пояснения формат выглядит следующим образом.

adb shell "su -c '[your command goes here]'"

Убедитесь, что вы вводите команду ТОЧНО, как обычно, при запуске в оболочке.

Попробуйте, надеюсь, это поможет.

ответил Ajster1989 14 MarpmFri, 14 Mar 2014 21:48:14 +04002014-03-14T21:48:14+04:0009 2014, 21:48:14
2

Просто установите adbd Insecure .

ответил linuxmaniax 24 FebruaryEurope/MoscowbSun, 24 Feb 2013 16:59:46 +0400000000pmSun, 24 Feb 2013 16:59:46 +040013 2013, 16:59:46
1

Для чего вы пытаетесь запустить root? Вы говорите, что хотите запустить оболочку ADB с помощью root, но вы не хотите использовать оболочку ADB? Вы можете уточнить?

Если приложение запрашивает доступ root, то приложение SuperUser на вашем телефоне должно обрабатывать разрешение или нет. Процесс, в котором вы внедряете свой телефон, должен включать приложение SuperUser.

ответил Bryan Denny 11 FebruaryEurope/MoscowbFri, 11 Feb 2011 22:01:10 +0300000000pmFri, 11 Feb 2011 22:01:10 +030011 2011, 22:01:10
1

В качестве альтернативы вы можете написать свой скрипт на телефоне и просто выполнить adb, например:

adb shell sh /sdcard/myscript.sh

Скрипт может поднять себя без вашего вмешательства (при условии, что SuperUser настроен на запоминание утверждения), например:

su
pm setInstallLocation 1

Я только что сделал это на своем телефоне с успехом, единственная проблема заключается в том, что я не совсем понял, как полностью завершить сеанс оболочки adb. Мне нужно Ctrl-C в моей оболочке Windows, чтобы вернуться в командную строку Windows, иначе adb просто сидит в приглашении # и не принимает ввода.

ответил Matthew Read 25 Jam1000000amWed, 25 Jan 2012 02:22:22 +040012 2012, 02:22:22
0

Я использую для устранения проблемы с домашней кнопкой ремонта


adb

adb shell su -c commands

или

adb root shell sqlite3 /data/data/com.android.providers.settings/databases/settings.db "INSERT INTO secure (name, value) VALUES ('device_provisioned', '1');"

adb kill-server

ответил mauro kit barcelona 28 +03002014-10-28T22:41:28+03:00312014bEurope/MoscowTue, 28 Oct 2014 22:41:28 +0300 2014, 22:41:28
-2

Вы также можете установить бит suid на свой «sh». Я использую BusyBox, поэтому инструкции могут не соответствовать вашей настройке:

  1. оболочка adb
  2. су
  3. mount -o remount, rw /system (или: adb remount)
  4. ls -la /system /bin /sh lrwxr-xr-x корневая оболочка 2012-11-10 15:20 sh -> МКШ
  5. chmod 4755 /system /bin /sh
  6. ls -la /system /bin /mksh
    -rwsr-xr-x корневая оболочка 157520 2012-11-10 09:54 mksh (обратите внимание, что бит suid установлен)
  7. ^ D
  8. оболочка adb

, и вы должны иметь корневое приглашение

ответил looneybits 27 22012vEurope/Moscow11bEurope/MoscowTue, 27 Nov 2012 14:00:35 +0400 2012, 14:00:35

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

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132