Android: adb: odmowa pozwolenia


91

Cokolwiek napiszę po adb shelltym, nie powiedzie się 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

Jakieś pomysły?


Gdzie próbujesz uruchomić powłokę adb, w emulatorze lub urządzeniu docelowym; jeśli na urządzeniu docelowym nie możesz uzyskać dostępu do folderu / data, dopóki nie masz uprawnień administratora.
Vamsi,

20
po adb root>> adbd cannot run as root in production buildsco robić?
d.popov

3
Myślę, że potrzebujesz zrootowanego telefonu, aby móc to uruchomić
Caner

tak, wiem. Ale jak widzisz obecnie nie mam reputacji komentowania postu Autora, ale miałem ten problem, więc jedynym sposobem było dodanie nowego posta lub otwarcie zduplikowanego wątku, więc zdecydowałem się dodać post.
d.popov,

1
telefon jest zrootowany, ale coś poszło nie tak z systemem operacyjnym. Zamarzał po załadowaniu ekranu głównego przy ponownym uruchomieniu. W każdym razie - nandroid flashowanie telefonu z zapasowym ROMem rozwiązało problem.
d.popov,

Odpowiedzi:


129

Według adb help:

adb root                     - restarts the adbd daemon with root permissions

Co rzeczywiście rozwiązało problem.


2
Będziesz także musiał włączyć dostęp roota dla adb, jeśli jeszcze tego nie zrobiłeś - zobacz odpowiedź @ Macarse.
Paul Whittaker,

Właściwie natychmiastowym problemem jest to, że android nadal nie jest dostępny (dwa lata po napisaniu przez ciebie) z findpoleceniem. To powiedziawszy, bez adb działającego jako root, prawdą jest, że nie będziesz w stanie zejść z partycji / data za pomocą żadnego innego polecenia (chociaż nadal możesz mieć dostęp do jawnych lokalizacji w niej).
Chris Stratton

1
To nie jest prawda. Musisz tylko przełączyć się na właściwego użytkownika. Zobacz moją odpowiedź poniżej: stackoverflow.com/a/38292436/342947
Fabian Zeindl

2
Twoja odpowiedź nie jest jasna. Czy ten komentarz powinien zostać wykonany na urządzeniu czy na komputerze?
Sauron

20
adbd cannot run as root in production buildsjest tym, co otrzymujesz, kiedy biegasz adb root. Dotyczy to ostatniej instalacji systemu MacOS z aktualnym zestawem SDK systemu Android. Nie sądzę, aby ta odpowiedź była w ogóle poprawna i widziałem, jak inni ludzie wspominali o tym problemie. Skąd tyle głosów za?
Andrew Koster

39

Bez rootowania : jeśli nie możesz zrootować telefonu, użyj run-as <package>polecenia, aby uzyskać dostęp do danych aplikacji.

Przykład:

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

exec-out wykonuje polecenie bez uruchamiania powłoki i zniekształcania danych wyjściowych.


9
Działa to tylko w przypadku aplikacji stworzonych do debugowania - tj. Możesz go używać w aplikacjach, które tworzysz, ale nie powinno działać w przypadku wersji produkcyjnych Twojej aplikacji ani aplikacji innych osób.
Chris Stratton,

2
To wraca run-as: Could not set capabilities: Operation not permitteddla mnie
Tom M

Działa dla emulatora API 29 i nie zapomnij umieścić .debugprefiksu na końcu pakietu aplikacji dla aplikacji do debugowania:
ultraon

19

Powodem „odmowy uprawnień” jest to, że Twój komputer z Androidem nie został poprawnie zrootowany. Widziałeś $po rozpoczęciu adb shell? Jeśli poprawnie zrootowałeś swój komputer, zobaczyłbyś #zamiast tego.

Jeśli widzisz $, spróbuj wejść w tryb superużytkownika, wpisując su. Jeśli Root jest włączony, zobaczysz #- bez pytania o hasło.


2
Po prawidłowym zrootowaniu komputera musisz włączyć dostęp do roota adb i uruchomić adb w trybie root, zanim twój sukrok będzie mógł działać - zobacz odpowiedzi @ Macarse i @ Roman.
Paul Whittaker,

1
Nie. Powodem „odmowy pozwolenia” jest brak findpolecenia.
Chris Stratton

@ChrisStratton Uratowałeś mi życie, ja też pisałem już polecenie powłoki z wnętrza powłoki adb
Divyanshu Kushwaha

1
Próbuję zobaczyć pliki w symulatorze Androida. Wpisuję „su” po „$” i jest napisane: su: nie znaleziono
Pete Alvin

5

Może być konieczne aktywowanie katalogu głównego adb z menu ustawień programisty. Jeśli uruchomisz adb rootz linii cmd, możesz uzyskać:

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

Po aktywowaniu opcji root (tylko ADB lub aplikacje i ADB) adb uruchomi się ponownie i będziesz mógł używać roota z linii cmd.


3
Jeśli nie widzisz elementu „Opcje programisty” w menu Ustawienia, zapoznaj się z tą odpowiedzią, aby dowiedzieć się, jak go wyświetlić. (W skrócie: Ustawienia> Informacje o telefonie> Numer kompilacji> Stuknij 7 razy (!).)
Paul Whittaker,

1
Ale kiedy już jestem, nic tu nie widzę! Co to powinno powiedzieć?
JohnyTex

35
Ta opcja nie istnieje w standardowych kompilacjach Androida - jeśli w ogóle istnieje, byłaby ograniczona do czyjegoś ROM z rynku wtórnego.
Chris Stratton

Czy można to zrobić bez GUI? Wydaje mi się, że jest na to opcja /system/build.prop, ale nie mogę jej znaleźć.
Jeroen

Gdzie znajdę menu do szukania ustawień?
martinkunev

0

Uważaj na ukośnik, zmień „\” na „/”, na przykład: adb.exe push SuperSU-v2.79-20161205182033.apk / storage


0

data partycja niedostępna dla użytkownika innego niż root, jeśli chcesz uzyskać do niej dostęp, musisz zrootować telefon.

adb root nie działa dla wszystkich produktów i zależy od typu kompilacji telefonu.

w nowej wersji na Android Studio możesz zbadać /data/dataścieżkę dla aplikacji do debugowania.




Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.