Android: adb: Дозвіл відмовлено


91

Що б я не вводив, після adb shellцього не вдається Permission denied:

D:\android-sdk-windows\platform-tools>adb shell find /data -name *.db
find: permission denied

D:\android-sdk-windows\platform-tools>adb shell test
test: permission denied

D:\android-sdk-windows\platform-tools>adb remount
remount failed: No such file or directory

Будь-які ідеї?


Де ви намагаєтесь запустити оболонку adb, в емуляторі або цільовому пристрої; якщо на цільовому пристрої ви не можете отримати доступ до папки / data, поки у вас немає дозволу root.
Vamsi

20
після adb root>> adbd cannot run as root in production buildsщо робити?
d.popov

3
Думаю, вам потрібен кореневий телефон, щоб мати змогу це запустити
Канер

так, я знаю. Але, як ви бачите в даний час, я не маю репутації коментувати публікацію автора, але у мене була ця проблема, тому єдиним способом було додати нову публікацію або відкрити дублікат теми, тому я вирішив додати публікацію.
д.попов

1
телефон був укорінений, але з ОС щось пішло не так. Замерзало після завантаження головного екрану при перезавантаженні. У будь-якому випадку - нандроїд прошивав телефон за допомогою стандартного ПЗУ вирішив проблему.
д.попов

Відповіді:


129

Відповідно до adb help:

adb root                     - restarts the adbd daemon with root permissions

Що справді вирішило проблему для мене.


2
Вам також потрібно буде ввімкнути кореневий доступ для adb, якщо ви цього ще не зробили - див. Відповідь @ Macarse.
Paul Whittaker,

Насправді, безпосередньою проблемою є те, що Android все ще (через два роки після написання) не надсилає findкоманду. Тим не менш, якщо adb не працює як root, це правда, ви також не зможете спустити розділ / data за допомогою будь-якої іншої команди (хоча ви все одно можете отримати доступ до явних розташувань у ньому).
Кріс Страттон,

1
Це не правда. Вам просто потрібно перейти до правильного користувача. Дивіться мою відповідь нижче: stackoverflow.com/a/38292436/342947
Fabian Zeindl

2
Ваша відповідь не чітка. Чи слід виконувати цей коментар на пристрої чи на комп’ютері?
Саурон,

20
adbd cannot run as root in production buildsце те, що ви отримуєте, коли біжите adb root. Це стосується нещодавньої інсталяції MacOS із сучасною версією Android SDK. Я вважаю, що ця відповідь зовсім не правильна, і я бачив, як інші люди згадували цю проблему. Чому так багато голосів?
Ендрю Костер

40

Без вкорінення : Якщо ви не можете скористатися телефоном, скористайтеся run-as <package>командою, щоб отримати доступ до даних вашої програми.

Приклад:

$ adb exec-out run-as com.yourcompany.app ls -R /data/data/com.yourcompany.app/

exec-out виконує команду без запуску оболонки та маніпулювання результатом.


9
Це працює лише для додатків, створених для налагодження, тобто ви можете використовувати його для програм, які розробляєте, але він не повинен працювати для робочих версій вашої програми чи будь-яких інших програм.
Chris Stratton

2
Це повертається run-as: Could not set capabilities: Operation not permittedдля мене
Том М,

Він працює для API емулятора 29, і не забудьте додати .debugпрефікс до кінця пакету програми для налагоджувальних програм:
ультраон

19

Причиною "відмови у дозволі" є те, що ваш пристрій Android не коректно вкорінено. Ви бачили $після початку adb shell? Якби ви правильно вкорінили свою машину, то #натомість побачили б .

Якщо ви бачите $, спробуйте ввести режим суперкористувача, набравши su. Якщо увімкнено Root, ви побачите #- без запитання пароля.


2
Після того, як ви правильно вкорінили свою машину, вам потрібно буде ввімкнути кореневий доступ adb і запустити adb у кореневому режимі, перш ніж ваш suкрок зможе працювати - див. Відповіді @ Macarse та @ Roman
Paul Whittaker,

1
Ні. Причиною "дозволу відмовлено" є відсутність findкоманди.
Chris Stratton

@ChrisStratton Ти врятував мені життя, я також вже
писав

1
Я намагаюся побачити файли в симуляторі Android. Я
Піт Елвін

5

Можливо, вам доведеться активувати корінь adb у меню налаштувань розробника. Якщо ви запускаєте adb rootз рядка cmd, ви можете отримати:

root access is disabled by system setting - enable in settings -> development options

Після активації кореневої опції (лише ADB або Програми та ADB) adb перезапуститься, і ви зможете використовувати root із рядка cmd.


3
Якщо ви не можете побачити пункт "Параметри розробника" у меню налаштувань, див. Цю відповідь, щоб дізнатись, як зробити його видимим. (Коротше: Налаштування> Про телефон> Номер збірки> Натисніть 7 разів (!).)
Paul Whittaker

1
Але потрапивши, я тут нічого не бачу! Що це повинно сказати?
JohnyTex

35
Цей параметр відсутній у складі збірок Android - якщо він взагалі існує, він буде обмежений чиїмсь запасним ПЗУ.
Chris Stratton

Чи є спосіб зробити це без графічного інтерфейсу? Я гадаю, є варіант для цього /system/build.prop, але я не можу його знайти.
Jeroen

Де знайти меню для пошуку налаштувань?
martinkunev

0

Будьте обережні з косою рисою, змініть "\" на "/", наприклад: adb.exe push SuperSU-v2.79-20161205182033.apk / storage


0

data розділ, недоступний для некореневого користувача, якщо ви хочете отримати до нього доступ, вам потрібно укорінити телефон.

adb root не працює для всіх продуктів і залежить від типу збірки телефону.

в новій версії на андроїд-студії ви можете вивчити /data/dataшлях для налагоджуваних додатків.



-4

Запустіть cmdадміністратора, це вирішить мої проблеми. Дякую.


Ні. Питання стосується відмови від Android, а не від Windows.
Chris Stratton

-5

Рішенням для мене було (thx до повідомлення Девіда Люнга Медісона )

  1. Вкорініть телефон і переконайтеся, що він укорінений
  2. Сервер Adb (adbd) не запускався як root, тому завантажили та встановили незахищений додаток adbd
  3. Перезапустіть adb adb kill-server
  4. Запусти його і працював як квітка!
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.