119 votes

Android : adb : Permission refusée

Ce que je tape après adb shell il échoue avec 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

Des idées ?

0 votes

Où essayez-vous d'exécuter l'interpréteur de commandes adb, dans l'émulateur ou sur le périphérique cible ? Si vous êtes sur le périphérique cible, vous ne pouvez pas accéder au dossier /data à moins d'avoir la permission de Root.

37 votes

Après adb root >> adbd cannot run as root in production builds que faire ?

3 votes

Je suppose que vous avez besoin d'un téléphone rooté pour être en mesure d'exécuter cela.

166voto

Roman Points 1468

Selon adb help :

adb root                     - restarts the adbd daemon with root permissions

Ce qui a effectivement résolu le problème pour moi.

3 votes

Vous devrez également activer l'accès Root pour adb si vous ne l'avez pas déjà fait -- voir la réponse de @Macarse.

1 votes

Ce n'est pas vrai. Vous devez simplement passer au bon utilisateur. Voir ma réponse ci-dessous : stackoverflow.com/a/38292436/342947

57voto

Fabian Zeindl Points 1093

Sans enracinement : Si vous n'arrivez pas à Rooter votre téléphone, utilisez la fonction run-as <package> pour pouvoir accéder aux données de votre application.

Ejemplo:

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

exec-out exécute la commande sans démarrer un shell et sans altérer la sortie.

11 votes

Cela ne fonctionne que pour les applications construites pour être déboguables - c'est-à-dire que vous pouvez l'utiliser pour les applications que vous développez, mais cela ne devrait pas fonctionner pour les versions de production de votre application, ou des applications de quelqu'un d'autre.

3 votes

Ce retour run-as: Could not set capabilities: Operation not permitted pour moi

1 votes

Cela fonctionne pour l'API 29 de l'émulateur, et n'oubliez pas de mettre .debug à la fin du paquet de l'application pour les applications de débogage :

23voto

wind Points 215

La raison de la "permission refusée" est que votre machine Android n'a pas été correctement enracinée. Avez-vous vu $ après avoir commencé adb shell ? Si vous avez correctement enraciné votre machine, vous auriez vu # à la place.

Si vous voyez le $ essayez d'entrer en mode super utilisateur en tapant su . Si l'option Root est activée, vous verrez apparaître le message suivant # - sans demander de mot de passe.

3 votes

Une fois que vous avez correctement enraciné votre machine, vous devrez avoir activé l'accès racine d'adb et exécuter adb en mode racine avant que votre su peut fonctionner - voir les réponses de @Macarse et @Roman.

1 votes

Non. La raison de "permission refusée" est qu'il n'y a pas de find commandement.

0 votes

@ChrisStratton Vous m'avez sauvé la vie, j'écrivais déjà des commandes shell à l'intérieur du shell adb.

6voto

Macarse Points 36519

Vous devrez peut-être activer adb Root à partir du menu des paramètres du développeur. Si vous exécutez adb root de la ligne cmd que vous pouvez obtenir :

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

Une fois que vous avez activé l'option Root (ADB seulement ou Apps et ADB), adb va redémarrer et vous serez en mesure d'utiliser Root à partir de la ligne cmd.

4 votes

Si vous ne voyez pas l'élément "Options du développeur" dans le menu "Paramètres", consultez la page suivante cette réponse pour plus de détails sur la façon de le rendre visible. (En bref : Paramètres > À propos du téléphone > Numéro de bâtiment > Appuyez 7 fois ( !).

1 votes

Mais une fois dedans, je ne vois rien ici ! Qu'est-ce que ça devrait dire ?

48 votes

Cette option n'existe pas dans les versions standard d'Android. - si elle existe, elle serait confinée à la ROM de quelqu'un d'autre.

4voto

Golil Points 372

data La partition n'est pas accessible aux utilisateurs non rootés, si vous voulez y accéder, vous devez rooter votre téléphone.

adb root ne fonctionne pas pour tous les produits et dépend du type de téléphone.

dans la nouvelle version d'Android studio, vous pouvez explorer /data/data pour les applications déboguables.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X