Почему я не могу получить root-доступ из оболочки?

> adb shell
sh-4.1$ su
Permission denied

Я успешно рутировал свой телефон. Я знаю это, потому что могу устанавливать приложения на SD-карту, и у меня есть программа SD Maid , которая может работать с правами суперпользователя.

Для установки приложений на SDCard не обязательно требуется root, и SDMaid также (частично) работает без него, так что это не доказательство. С другой стороны, ваша цитата из оболочки, похоже, доказывает, что вы не добились успеха с рутированием. При проверке установленных приложений доступны ли SuperUser или SuperSU? Получаете ли вы такие запросы, как «SDMaid запросил root-права», которые вам необходимо подтвердить?
@Izzy Я получаю уведомления типа SD Maid has been granted super root permissions? Кроме того, я только что установил play.google.com/store/apps/… , и он запрашивает у меня подтверждение суперпользователя, которое было успешно предоставлено.
@ Иззи, я бы попросил не согласиться. Установка приложений на SDCard требует рутирования телефона. Не могли бы вы привести противоположный пример?
Конечно: перейдите в « Настройки» -> «Приложения» -> «Управление приложениями » и просмотрите их. Поддерживающие его приложения можно просто перемещать, нажав соответствующую кнопку. Во-вторых: взгляните на AppMonster , прямо на первом снимке экрана, под «значком луны» «Таймера сна»: это приложение поддерживает App2SD без рута. AppMonster может переместить его (не требуя рута) и даже предложит это сделать. App2SD изначально поддерживается с Android 2.2. Следите за тегом FAQ: App2SD
К предыдущему комментарию: ОК, значит полный акк, чтобы рут сработал. Еще раз проверьте свои приложения на наличие SuperUser/SuperSU, на этот раз запустите приложение. В своей конфигурации он должен показывать вам, какие разрешения он сохранил; возможно, вы однажды случайно отметили «запомнить» и нажали кнопку «запретить» для оболочки adb. Если вы найдете соответствующую запись, просто удалите ее. В следующий раз, когда вас спросят снова, убедитесь, что вы нажали правильную кнопку :)
@Izzy У меня Superuser v2.3.6.3на вкладке настроек в Superuser не отображаются сохраненные настройки разрешений. Кроме того, AFAIK Superuser подтверждает root-доступ только для приложений, запускаемых с телефона. Я пытаюсь suиз bashоболочки внутри adb.
Да, я это понял (я никогда не проверял, что делает SuperUser в этом случае, но предполагал, что «adb» будет «запрашивающим приложением»). Отсутствие сохраненных разрешений по-прежнему заставляет меня задаться вопросом, как выше вы заявили, что он предоставил su для SDMaid: вы всегда утверждаете это вручную или вы установили флажок «запомнить»? В последнем случае должны быть сохранены разрешения.
Вы пробовали запускать adb как root? Попробуйте ввести adb rootкоманду в командной строке/терминале.

Ответы (4)

Отсюда : _

Возможно, вам потребуется активировать adb root в меню настроек разработчика. Если вы запустите adb root из строки cmd, вы можете получить:

root-доступ отключен настройкой системы - включить в настройках -> параметры разработки

корневой доступ отключен системной настройкой — включите в настройках -> параметры разработки. После того, как вы активируете корневой вариант (только ADB или приложения и ADB), adb перезапустится, и вы сможете использовать root из строки cmd.

Этот параметр доступен не во всех прошивках (не удалось найти его, например, в моем LG Optimus 4X , который, конечно же, имеет root-права). ИМХО это особенность CyanogenMod.
Что ты знаешь об Android, чувак? > root-доступ отключен системной настройкой - включите в настройках -> параметры разработки. После того, как вы активируете root-опцию (только ADB или приложения и ADB), adb перезапустится, и вы сможете использовать root из строки cmd.

В настоящее время Magisk обычно используется для рутирования.

Я обнаружил, что на моем Oneplus 5 (ОС Oxygen, Nougat) было достаточно зайти в приложение Magisk Manager, открыть экран разрешений суперпользователя и переключить Shell (com.android.shell), чтобы решить проблему отказа в разрешении adb su.

Не удалось найти Shell (com.android.shell) в Magisk. Вероятно, это изменилось в более поздних версиях Magisk, так как сейчас нет полного списка приложений на выбор.

В Google Play есть приложение ADBD Insecure от Chainfire . Это приложение позволяет вам запускать adbd в корневом режиме, если ваше устройство имеет root-права при запуске устройства Stock ROM. Я только недавно узнал об этом приложении.

Версия в Google Play не является бесплатной, но доступна бесплатная версия. Ссылка на бесплатную версию указана в описании приложения в Google Play.

Что хорошего в этом приложении, так это то, что оно работает с рутированными стоковыми прошивками. Если вы используете собственное ядро ​​или собственное ПЗУ, вам, вероятно, не понадобится это приложение. Но если вы все еще используете стоковую прошивку, только что рутированную, то вы можете получить это приложение для своего устройства.

adbd Insecure позволяет вам запускать adbd в режиме root, если ваше устройство рутировано. (Обратите внимание, что если вы используете собственное ядро, вполне вероятно, что оно уже реализует эту функциональность)

Если на вашем устройстве установлено стандартное (сделанное производителем телефона) ядро, скорее всего, adbd работает в «безопасном» режиме, даже если у вас есть root-права. Это приложение позволяет вам запускать adbd в «небезопасном» режиме, который дает вам root-доступ в «оболочке adb», разрешает доступ к системным файлам и каталогам через «adb push/pull» и позволяет запускать команду «adb remount», чтобы сделать ваш раздел /system доступен для записи.

введите описание изображения здесь

Я попробовал бесплатное приложение ADBD Insecure из оригинальной ветки XDA на моем Oneplus 5 Nougat с рутированием с помощью Magisk, но это не помогло, а также нарушило подключение MTP в режиме отладки USB, пока телефон не был перезагружен.

Включите root-доступ для adb в меню настроек разработчика. Затем подключите USB-кабель и введите:

adb root

Он должен вернуться

restarting adbd as root

Теперь перезапустите оболочку

adb shell
Стандартный Android не предоставляет «root-доступ для adb» в параметрах разработчика. adb rootвозможно только на userdebugПЗУ: почему «adb root» ничего не делает?
Для корневых ПЗУ Android без «корневого доступа для adb» в параметрах разработчика существует плагин Magisk adb_root , который обеспечивает эквивалент. (Отключить, когда не используется, из-за ограничений безопасности.)