Erreur 'autorisations insuffisantes' sur la commande `adb push` le 12.04


57

Lorsque j'ai essayé d'insérer mon fichier apk dans une tablette, j'ai eu cette erreur. Aidez-moi s'il vous plaît.

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

Merci d'avance pour l'aide.


1
La réponse de user84207, qui s'appuie sur la référence à la documentation officielle du développeur Android, est bien meilleure que la réponse acceptée de Anwar Shah, car nous devrions éviter autant que possible de faire fonctionner des démons en tant que root. L'exécution de adb en tant que root rend l'ordinateur vulnérable à davantage d'attaques.
nealmcb

Réponses:


20

J'ai vu cette même erreur parfois sur Ubuntu. Une solution de contournement pour cela consiste à exécuter adb avec la sudocommande. Par exemple, si vous app.apkappuyez sur sdcard, la commande sera

sudo adb push app.apk /mnt/sdcard

Assurez-vous également que vous avez sélectionné le mode "Débogage USB" dans les paramètres de l'application (dans GingerBread) ou dans la section Développement (dans SandCream Sandwich et supérieur). Si adb est déjà en cours d'exécution, vous devez d'abord le tuer avec la commandesudo adb kill-server

J'espère que cela aidera.


Je l’ai compris mais j’essaierai toujours cette méthode aussi ... merci pour l’aide
Neha Sharad Umachigi

5
"Je l'ai eu" ... S'il vous plaît, faites preuve de la courtoisie si vous avez trouvé une solution, afin que d'autres puissent en bénéficier (comme vous avez cherché à en tirer profit lorsque vous avez posé la question). Par exemple, j'ai maintenant ce problème, mais je suis obligé de chercher ailleurs même s'il s'agit exactement du même problème que vous décrivez.
erjoalgo

2
Cette réponse est risquée car des bogues dans adb peuvent s’imposer à tout l’ordinateur. La réponse à l'aide des règles udev de user84207, prise en charge par la référence à la documentation officielle du développeur Android, évite ce problème.
nealmcb

Il s'agit de la solution de contournement du problème la plus simple et la plus simple et au moins une solution de contournement.
Anwar

Note: Cela a fonctionné pour moi car sudotrouve une version installée différente de adbcelle de non-sudo. C'est pourquoi cela fonctionne, non pas parce que adblui - même nécessite plus de privilèges.
Kevin Cooper

61

J'ai rencontré ce même problème. L'ajout d'une règle udev comme indiqué ici a permis de résoudre le problème:

Connectez-vous en tant que root, créez un fichier /etc/udev/rules.d/51-android.ruleset ajoutez une ligne comme celle-ci pour donner des autorisations à tous les plugdevmembres du groupe:

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

Dans cet exemple, l'ID du fournisseur est HTC. Vous devez utiliser l'ID de fournisseur de votre appareil. Vous pouvez l'obtenir en exécutant lsusbet en recherchant une ligne telle que

Bus 002 Device 009: ID 2a47:9e18

Dans cet exemple, votre identifiant de fournisseur serait 2a47, vous devrez donc remplacer 0bb4par 2a47. La ligne correcte se lirait donc comme suit:

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

Maintenant, attribuez des autorisations de lecture sur les fichiers, rechargez udev et rechargez le démon adb:

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

Vous devrez peut-être déconnecter et reconnecter votre appareil au port USB.


9
Vous pouvez obtenir l'identifiant du fournisseur USB par la commande lsusb. C'est la première partie de la paire séparée par deux points. Par exemple, 18d1: 4e22 signifierait que l'identifiant du fournisseur est 18d1.
Peter Lamberg

Vous devrez peut-être "déclencher" udev après avoir ajouté le nouveau fichier de règles (bien que je ne sois pas sûr). Voici un moyen de "déclencher" askubuntu.com/questions/82470/… .
user29020

2
et / ou vous devrez peut-être déconnecter et reconnecter l'appareil? Mais cette réponse a fonctionné pour moi et est bien meilleure que d’exécuter adb en tant que root. Votre utilisateur Ubuntu doit également faire partie du plugdevgroupe. Courez idpour le découvrir.
nealmcb

2
Ce référentiel est extrêmement utile si vous devez travailler avec beaucoup d'appareils. Github.com/M0Rf30/android-udev-rules
zamber


22

La réponse de Jorch914 sur StackOverflow a résolu ce problème pour moi:

Ok, donc j'ai finalement trouvé le problème, apparemment sur cet appareil, vous devez configurer pour vous connecter en tant qu'appareil photo (même après le débogage USB est déjà activé)

entrez la description de l'image ici

Aussi ce lien décrit le processus de mise en place


1
Oui, c'était ça! Je devais "Sélectionner la configuration USB" sur Android N, qui était réglé par défaut sur "Charge".
Dan Dascalescu

1
pour une raison quelconque, j'étais toujours capable de brancher mon pixel sur un mac et de commencer à travailler, mais lorsque je suis passé sur une station de travail dev CentOS, je devais le faire pour qu'il demande une autorisation de débogage. Merci
bsautner

2
Travaillé pour moi Le truc semble être de changer de "Charge" à autre chose, pourquoi.
Bim


10

Je viens de parcourir le même problème, mais voici comment j'ai pu le lire:

  • vous devez tuer le serveur adb existant en lançant la commande suivante: adb kill-server(cela peut être faux, mais je l'ai émis avec AND sans sudo
  • démarrez le serveur adb avec les autorisations appropriées en émettant: sudo adb start-server
  • le tour est joué vous savez peut-être exécuter toutes les commandes dont vous avez besoin

Je ne sais pas si vous savez, mais il existe un package qui inclut adb. Je mentionne cela parce que j'ai remarqué que vous obtenez une référence à une version plus ancienne de adb. Vous pouvez installer le système en tapant la commande suivante:sudo apt-get install android-tools-adb

J'espère que ça aide.


la BAD des outils de la plateforme pourrait être plus récente; ces outils sont même disponibles en téléchargement séparé, en attendant.
Martin Zeitler

2

Aujourd'hui, j'ai rencontré l' insufficient permissions for deviceerreur, même si adbelle fonctionnait comme prévu quelques minutes auparavant. Maintenant je reçois:

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

$ adb shell
error: insufficient permissions for device

Peu de temps avant d'avoir rencontré l'erreur, j'avais désactivé Media device (MTP), car je pensais que je n'aurais pas besoin de l'utiliser MTP. Cependant, il semble que le débogage USB, ou du moins certaines adbcommandes, nécessitent Media device (MTP)son activation.

Pour activer Media device (MTP)sur Android 4.4, allez à:

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

Lorsque MTPest désactivé, lsusbaffiche les éléments suivants:

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

Après l'activation MTP, lsusb affiche les éléments suivants:

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

IdVendor et idProduct changent en fonction de l' MTPactivation ou non de l' activation ou non.

Je ne suis pas un expert Android, il est donc possible que le comportement ci-dessus soit spécifique à mon modèle de téléphone.


0

Cela pourrait venir d'une autre raison. Je viens de recevoir cette erreur en essayant d'installer un apk sur le périphérique:

$ 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 -

C'est arrivé parce que l'appareil n'était pas prêt dans le bon mode. L'appareil partageait sa connexion 4G via USB.

On peut le savoir comme ça:

$ 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

Il suffisait donc de désactiver le partage de connexion sur le téléphone et de recommencer.

En général, assurez-vous d'avoir le résultat suivant via la adb devicecommande avant d'essayer de transférer des fichiers sur le périphérique

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

Dans ces cas, pas besoin de tuer ou de redémarrer le serveur adb.

Ce serait probablement la même situation si vous avez monté l'appareil pour le transfert de données via USB


0

J'ai eu le même problème et j'ai reçu des autorisations insuffisantes. Ce que j'ai fait a été de révoquer les autorisations USB pour mon ordinateur portable. Puis arrêté et commencé le débogage USB. Rebranchez-le à l'ordinateur portable et accordez des autorisations de débogage USB.


1
Pouvez-vous s'il vous plaît fournir plus d'informations sur ce processus? Le pas à pas serait idéal pour que le PO puisse suivre votre exemple. :)
ThatGuy

0

J'ai le même problème et j'ai résolu le problème en ajoutant le chemin de your_android_sdk_path à la variable d'environnement comme

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

son votre souhait que vous voulez ajouter à votre compte ou l' ensemble du système en modifiant ces fichiers ~/.bashrcfichier ou ~/.profile ou /etc/profile, /etc/bash.bashrc, or /etc/environmentsi u voulez ajouter au système d' accès large.

puis créer le lien de cela dans bin

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

si vous avez utilisé des périphériques adb ou une commande, commencez par tuer le serveur comme

adb kill-server

puis démarrez le serveur comme

adb start-server
adb devices

vous pouvez maintenant voir que vos appareils sont listés correctement sans problème


0

La réponse à ce problème est ici: https://github.com/snowdream/51-android

En tant que développeur Android, je vous suggère de ne PAS utiliser "sudo" pour forcer l'utilisation d'adb n'importe où. Ce n'est pas ce que nous devrions faire. Les règles, les politiques et les restrictions sont là pour notre propre sécurité.


0

Encore une autre possibilité: le partage de connexion USB entre également en conflit avec adb. Le désactiver résout le problème pour moi.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.