Fehler "Unzureichende Berechtigungen" beim Befehl "adb push" am 12.04


57

Als ich versucht habe, meine apk-Datei auf ein Tablet zu übertragen, ist dieser Fehler aufgetreten. Bitte helfen Sie mir.

adb server is out of date.  killing... 
* daemon started successfully * 
error: insufficient permissions for device.

Vielen Dank im Voraus für die Hilfe.


1
Die Antwort von user84207, die durch den Verweis auf die offizielle Android-Entwicklerdokumentation unterstützt wird, ist viel besser als die von Anwar Shah akzeptierte Antwort, da wir vermeiden sollten, Daemons als root auszuführen, wann immer dies möglich ist. Wenn Sie adb als root ausführen, ist der Computer anfällig für weitere Angriffe.
Nealmcb

Antworten:


20

Ich habe den gleichen Fehler manchmal auf Ubuntu gesehen. Ein Workaround dafür ist das Ausführen von adb with sudocommand. Zum Beispiel, wenn Sie app.apkauf SD-Karte drücken, wäre der Befehl

sudo adb push app.apk /mnt/sdcard

Stellen Sie außerdem sicher, dass Sie in den Anwendungseinstellungen (in GingerBread) oder im Abschnitt "Entwicklung" (in IceCream Sandwich und höher) den Modus "USB-Debugging" ausgewählt haben. Wenn adb bereits läuft, sollten Sie es zuerst mit dem Befehl beendensudo adb kill-server

Hoffe das wird helfen.


Ich habe es verstanden, versuche es aber trotzdem ... danke für die Hilfe
Neha Sharad Umachigi

5
"Ich habe es verstanden" ... Bitte teilen Sie uns mit, ob Sie eine Lösung gefunden haben, von der andere profitieren können (da Sie versucht haben, von sich selbst zu profitieren, als Sie die Frage gestellt haben). Zum Beispiel habe ich jetzt dieses Problem, aber ich bin gezwungen, woanders hinzuschauen, obwohl es genau dasselbe Problem ist, das Sie beschreiben.
Erjoalgo

2
Diese Antwort ist riskant, da Fehler in adb den gesamten Computer übernehmen können. Die Antwort unter Verwendung der udev-Regeln von user84207, die durch den Verweis auf die offizielle Dokumentation für Android-Entwickler unterstützt wird, vermeidet dieses Problem.
Nealmcb

Dies ist die einfachste und am einfachsten zu handhabende Lösung für das Problem.
Anwar

Hinweis: Dies hat bei mir funktioniert, da sudoeine andere installierte Version adbals Nicht-Sudo gefunden wurde. Das ist der Grund, warum dies funktioniert, und nicht, weil adbes mehr Privilegien erfordert.
Kevin Cooper

61

Ich bin auf dasselbe Problem gestoßen. Das Hinzufügen einer udev-Regel, wie hier angegeben , hat den Trick bewirkt:

Melden Sie sich als root an, erstellen Sie eine Datei /etc/udev/rules.d/51-android.rulesund fügen Sie eine Zeile wie die folgende hinzu, um allen Mitgliedern der plugdevGruppe Berechtigungen zu erteilen :

SUBSYSTEM=="usb", ATTR{idVendor}=="0bb4", MODE="0666", GROUP="plugdev"

In diesem Beispiel lautet die Hersteller-ID HTC. Sie müssen die Hersteller-ID für Ihr Gerät verwenden, die durch Ausführen lsusbund Suchen einer Zeile wie erhalten werden kann

Bus 002 Device 009: ID 2a47:9e18

In diesem Beispiel würde Ihre Hersteller - ID sein 2a47, so würden Sie ersetzen müssen 0bb4mit 2a47. Die richtige Zeile würde also lauten:

SUBSYSTEM=="usb", ATTR{idVendor}=="2a47", MODE="0666", GROUP="plugdev"

Vergeben Sie nun Leserechte für die Dateien, laden Sie udev neu und laden Sie den adb-Daemon neu:

sudo chmod a+r /etc/udev/rules.d/51-android.rules
sudo udevadm control --reload-rules
adb kill-server
adb start-server

Möglicherweise müssen Sie das Gerät vom USB-Anschluss trennen und wieder anschließen.


9
Sie können die USB-Hersteller-ID mit dem Befehl lsusb abrufen. Es ist der erste Teil des durch Doppelpunkte getrennten Paares. Zum Beispiel 18d1: 4e22 würde bedeuten, dass die Lieferanten-ID 18d1 ist.
Peter Lamberg

Möglicherweise müssen Sie udev "auslösen", nachdem Sie die neue Regeldatei hinzugefügt haben (obwohl ich nicht sicher bin). Hier ist eine Möglichkeit, askubuntu.com/questions/82470/… "auszulösen" .
user29020

2
und / oder müssen Sie das Gerät möglicherweise trennen und erneut anschließen? Aber diese Antwort hat bei mir funktioniert und ist viel besser, als adb als root auszuführen. Ihr Ubuntu-Benutzer muss ebenfalls Teil der plugdevGruppe sein. Lauf id, um es herauszufinden.
Nealmcb

2
Dieses Repo ist sehr hilfreich, wenn Sie mit vielen Geräten arbeiten müssen. Github.com/M0Rf30/android-udev-rules
zamber

In den Dokumenten befindet sich auch eine Liste der Anbieter-IDs .
Keith

22

Jorch914s Antwort auf StackOverflow löste dieses Problem für mich:

Ok also ich habe endlich das problem gefunden, anscheinend musst du auf diesem gerät einstellen, dass eine verbindung als kamera hergestellt wird (auch nachdem das usb debuggen schon aktiviert ist)

Bildbeschreibung hier eingeben

Auch dieser Link beschreibt den Einrichtungsprozess


1
Ja, das war es! Ich musste auf Android N "USB-Konfiguration auswählen", das standardmäßig auf "Aufladen" eingestellt war.
Dan Dascalescu

1
Aus irgendeinem Grund war ich immer in der Lage, mein Pixel an einen Mac anzuschließen und zu arbeiten, aber als ich zu einer CentOS-Entwickler-Workstation wechselte, musste ich dies tun, um die Debug-Erlaubnis einzuholen. Danke
bsautner

2
Hat für mich gearbeitet. Der Trick scheint zu sein, es von "Aufladen" auf etwas anderes zu ändern, warum auch immer.
Bim

11

Diese beiden einfachen Befehle haben das Problem für mich gelöst:

adb kill-server
adb start-server

Beachten Sie, dass ich im Gegensatz zu Semi-Neulingen keine Antwort brauche sudo.


1
Das hat bei mir
funktioniert

Funktionierte nicht für ein Nexus 5X, das mit Ubuntu 16.04 verbunden war, als ich versuchte zu laufen adb shell ls.
Dan Dascalescu

10

Ich habe gerade das gleiche Problem durchlaufen, aber hier ist, wie ich es durchgehen konnte:

  • Sie müssen den vorhandenen AdB-Server mit dem folgenden Befehl beenden: adb kill-server(Es kann falsch sein, aber ich habe es mit UND ohne Sudo ausgegeben
  • Starten Sie den ADB-Server mit den entsprechenden Berechtigungen, indem Sie Folgendes eingeben: sudo adb start-server
  • voila. Sie können alle Befehle ausführen, die Sie benötigen

Ich bin mir nicht sicher, ob Sie es wissen, aber es gibt ein Paket, das adb enthält. Ich erwähne dies, weil mir aufgefallen ist, dass Sie einen Verweis auf eine ältere Version von adb erhalten. Sie können installieren, indem Sie Folgendes in Ihrer Befehlszeile eingeben:sudo apt-get install android-tools-adb

Ich hoffe das hilft.


Die ADB der Plattformtools ist möglicherweise neuer. Diese Tools sind mittlerweile sogar als separater Download erhältlich.
Martin Zeitler

2

Heute bin ich auf den insufficient permissions for deviceFehler gestoßen , obwohl ich adberst ein paar Minuten zuvor wie erwartet gearbeitet hatte. Jetzt bekomme ich:

$ adb devices
List of devices attached 
????????????    no permissions

$ adb shell
error: insufficient permissions for device

Kurz bevor ich auf den Fehler stieß, hatte ich ihn deaktiviert Media device (MTP), da ich dachte, dass ich ihn nicht verwenden müsste MTP. Es scheint jedoch, dass für das USB-Debugging oder zumindest für einige adbBefehle die Aktivierung erforderlich Media device (MTP)ist.

Zum Aktivieren Media device (MTP)unter Android 4.4 gehen Sie zu:

Settings
Storage
The "..." menu (in the upper right corner)
USB computer connection
Media device (MTP)

Wenn MTPdeaktiviert ist, lsusbwird Folgendes angezeigt:

Bus 002 Device 071: ID [idVendor1]:[idProduct1] Google Inc.

Nach der MTPAktivierung zeigt lsusb Folgendes an:

Bus 002 Device 072: ID [idVendor2]:[idProduct2] [idVendor string]

Der idVendor und das idProduct ändern sich je nachdem, ob MTPaktiviert oder deaktiviert ist.

Ich bin kein Android-Experte, daher ist es möglich, dass das oben genannte Verhalten für mein bestimmtes Telefonmodell spezifisch ist.


0

Es könnte aus einem anderen Grund sein. Ich bekomme gerade diese Fehlermeldung beim Versuch, eine apk auf dem Gerät zu installieren:

$ adb install platforms/android/build/outputs/apk/android-armv7-release.apk 
* daemon not running. starting it now on port 5037 *
* daemon started successfully *
error: insufficient permissions for device
- waiting for device -

Es ist passiert, weil das Gerät im richtigen Modus nicht bereit war. Das Gerät hat seine 4G-Verbindung über USB freigegeben.

Es kann so bekannt sein:

$ adb devices -l
List of devices attached
* daemon not running. starting it now on port 5037 *
* daemon started successfully *

33332EF19F3D00EC       no permissions usb:1-1.2

Es genügte also, die Verbindungsfreigabe auf dem Telefon zu deaktivieren und erneut zu starten.

Stellen Sie im Allgemeinen sicher, dass Sie über den adb deviceBefehl das folgende Ergebnis erhalten, bevor Sie versuchen, Dateien auf das Gerät zu übertragen

$ adb devices -l
List of devices attached
33332EF19F3D00EC       device usb:1-1.2

In diesen Fällen muss der AdB-Server nicht beendet oder neu gestartet werden.

Dies ist wahrscheinlich auch der Fall, wenn Sie das Gerät für die Datenübertragung über USB aktiviert haben


0

Ich hatte das gleiche Problem und erhielt die unzureichenden Berechtigungen. Ich habe die USB-Berechtigungen für meinen Laptop widerrufen. Dann wurde das USB-Debugging gestoppt und gestartet. Steckte es wieder in den Laptop und erteilte USB-Debugging-Autoritäten.


1
Können Sie uns bitte nähere Informationen zu diesem Vorgang geben? Schritt für Schritt wäre ideal, damit das OP Ihrem Beispiel folgen kann. :)
ThatGuy

0

Ich habe das gleiche Problem gegenübergestellt und ich habe dieses gelöst, indem ich den Pfad von your_android_sdk_path der Umgebungsvariablen wie hinzufügte

sudo export $PATH:/your_android_sdk_path/platform-tools/adb

seiner Wunschliste , wie Sie dies auf Ihr Konto oder systemweit und bearbeite diese Datei hinzufügen möchten ~/.bashrcDatei oder ~/.profile oder , /etc/profile, /etc/bash.bashrc, or /etc/environmentwenn u wollen systemweiten Zugriff hinzuzufügen.

und erstelle dann den link dazu in bin

sudo ln -s /your_android_sdk_path/platform-tools/adb /bin/adb

Wenn Sie ADB-Geräte oder einen Befehl verwendet haben, dann töten Sie zuerst den Server wie

adb kill-server

dann starte den server wie

adb start-server
adb devices

Jetzt können Sie sehen, dass Ihre Geräte ohne Probleme richtig aufgelistet sind


0

Die Antwort auf dieses Problem finden Sie hier: https://github.com/snowdream/51-android

Als Android-Entwickler schlage ich vor, dass Sie NICHT "sudo" verwenden, um die Verwendung von adb zu erzwingen. Wir sollten das nicht tun. Regeln, Richtlinien und Einschränkungen dienen unserer eigenen Sicherheit.


0

Noch eine andere Möglichkeit: USB-Tethering widerspricht auch adb. Das Deaktivieren löst das Problem für mich.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.