10 votes

adb "Permission refusée" pour exécuter un fichier "./configure".

J'ai besoin d'exécuter un configure dans mon téléphone Android. Je pense donc que le meilleur moyen de le faire est d'utiliser la fonction adb shell commandement.

J'exécute un émulateur Android sur une plate-forme Windows-7, et là, j'exécute l'application adb shell dans une fenêtre DOS. En utilisant le cd je change le répertoire dans lequel mon configure et ensuite j'exécute la commande suivante : ./configure . J'obtiens l'erreur suivante :

./configure: permission denied

J'essaie donc de lancer adb en mode racine avec adb root -- mais apparemment mon adb est déjà en mode Root (De plus j'ai le caractère "#" avant chaque ligne de mon shell adb).

J'ai également essayé d'utiliser chmod mais je ne vois pas de différence avant et après l'exécution de cette commande ( ls -la ), donc peut-être que le problème se situe ici (Comment puis-je exécuter la fonction chmod commande ?).

Peut-être que quelqu'un ici peut m'aider avec mon problème, et si vous avez également une explication sur la raison pour laquelle je n'ai pas la permission d'exécuter ma configure fichier, ce sera génial.

Gracias.

PS : Mon but ici est d'utiliser le paquet net-snmp sur une plateforme Android en compilant les sources de ce projet directement sur la plateforme.

11voto

Liam W Points 8336

Cela est dû à deux choses :

  1. Le fichier n'a pas les droits d'exécution [ET]
  2. Le fichier ne peut pas obtenir de droits d'exécution car il se trouve sur la carte SD. Le système de fichiers de la carte SD peut accepter des permissions de fichier, mais il est monté avec l'attribut noexec drapeau, comme indiqué dans un commentaire. Cela empêche l'exécution des fichiers.

Solution :

  1. Copiez le net-snmp-5.7.2 dans le répertoire /data/local/tmp en tant que Root.
  2. Définissez le configure pour qu'il soit exécutable en exécutant chmod 0777 /data/local/tmp/net-snmp-5.7.2/configure en tant que racine.
  3. Vous devriez maintenant être capable d'exécuter le script de configuration en tapant /data/local/tmp/net-snmp-5.7.2/configure et en appuyant sur la touche Entrée.

Note

Tout cela doit être fait en tant qu'utilisateur racine :)

9voto

Milner Points 533

Comme l'expliquent les commentaires et Réponse de Liam Ceci est dû à la noexec drapeau utilisé par le système lors du montage de la carte SD. Si votre configure est un script shell (comme c'est généralement le cas), vous pouvez toujours faire en sorte qu'il soit exécuté :

cd dans le répertoire comme vous l'avez décrit ci-dessus, puis exécutez sh configure .

sh est l'interpréteur Shell, et ce binaire doit être situé dans le répertoire /system/bin où les fichiers sont exécutable. En passant votre script comme premier argument, ceci ouvrira un nouveau processus shell qui exécutera votre configure script.

androidalle.com

AndroidAlle est une communauté de androiders où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X