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

9

Je dois exécuter un configurefichier sur mon téléphone Android, donc je pense que la meilleure façon de le faire est d'utiliser la adb shellcommande.

J'exécute un émulateur Android sur une plate-forme Windows-7, et là j'exécute la adb shellcommande dans une fenêtre DOS. En utilisant la cdcommande que je change le répertoire où mon configurefichier, puis j'exécutant la commande suivante: ./configure. J'obtiens l'erreur suivante:

./configure: permission denied

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

J'ai également essayé d'utiliser chmodmais je ne vois aucune différence avant et après l'exécution de cette commande ( ls -la), donc peut-être que le problème est là (comment puis-je exécuter la chmodcommande?).

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 mon configurefichier, ce sera génial.

Merci.

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

grattmandu03
la source
3
Voilà probablement le problème. /sdcardest généralement monté avec l' noexecindicateur dans Android, vous ne pouvez donc pas exécuter de binaires à partir de celui-ci. Je recommanderais d'essayer de le déplacer ailleurs (souvent /data/localutilisé pour des choses comme ça). Voyez si cela résout le problème.
eldarerathis
3
Copiez-le également dans le /usr/local/tmprépertoire (le net-snmp-5.7.2répertoire entier en /sdcard.
Liam W
1
@ t0mm13b Je ne suis pas tout à fait sûr que ce soit hors sujet, car cela pourrait être utile pour les personnes qui ont besoin d'exécuter un fichier sur leur appareil, comme un exploit root.
Liam W
1
OK merci. Ma question ici était plus sur la façon dont je peux exécuter un script sh avec le shell adb qu'une question de développement. Mais maintenant j'ai la solution: "/ sdcard est monté avec le drapeau noexec", donc si eldarerathis ou Liam W veut mettre leur commentaire dans une vraie réponse je le validerai. Ou peut-être pouvez-vous m'expliquer comment puis-je fermer ma question?
grattmandu03
1
@ grattmandu03 J'ai déjà;)
Liam W

Réponses:

10

Cela est dû à 2 choses:

  1. Le fichier ne dispose pas des autorisations d'exécution [ET]
  2. Le fichier ne peut pas obtenir d'autorisations exécutables tel qu'il se trouve sur la carte SD. Le système de fichiers de la carte SD peut accepter des autorisations de fichiers, mais il est monté avec l' noexecindicateur, comme indiqué dans un commentaire. Cela empêche l'exécution des fichiers.

Solution:

  1. Copiez le net-snmp-5.7.2répertoire dans le /data/local/tmprépertoire en tant que root.
  2. Définissez le configurefichier pour qu'il soit exécutable en exécutant en chmod 0777 /data/local/tmp/net-snmp-5.7.2/configuretant que root.
  3. Vous devriez maintenant pouvoir exécuter le script de configuration en tapant /data/local/tmp/net-snmp-5.7.2/configureet en appuyant sur Entrée.

Remarque

Tout cela devrait être fait en tant qu'utilisateur root :)

Liam W
la source
8

Comme expliqué par les commentaires et la réponse de Liam , cela est dû au noexecdrapeau utilisé par le système lors du montage de la carte SD. Si votre configurefichier est un script shell (comme c'est généralement le cas), vous pouvez toujours le tromper pour qu'il soit exécuté:

cddans le répertoire comme décrit ci-dessus, puis exécutez sh configure.

shest l'interpréteur Shell, et ce binaire doit être situé dans /system/bin, où les fichiers sont exécutables. En passant votre script comme premier argument, cela ouvrira un nouveau processus shell qui exécute votre configurescript.

Izzy
la source
Merci pour votre réponse. Le sh configurefait l'affaire.
grattmandu03
1
Merçi pour la confirmation! Et heureux d'avoir pu aider. J'utilise cette astuce sur les machines Linux / Unix de temps en temps :)
Izzy