adb "Berechtigung verweigert" zum Ausführen einer "./configure" -Datei

9

Ich muss eine configureDatei auf meinem Android-Handy ausführen, daher denke ich, dass der beste Weg, dies zu tun, die Verwendung des adb shellBefehls ist.

Ich führe einen Android-Emulator auf einer Windows-7-Plattform aus und führe dort den adb shellBefehl in ein DOS-Fenster aus. Mit dem cdBefehl wechsle ich in das Verzeichnis, in dem sich meine configureDatei befindet, und führe dann den folgenden Befehl aus : ./configure. Ich erhalte die folgende Fehlermeldung:

./configure: permission denied

Also versuche ich, adb im Root-Modus mit auszuführen adb root- aber anscheinend befindet sich mein adb bereits im Root-Modus (außerdem habe ich vor jeder Zeile meiner adb-Shell das Zeichen "#").

Ich habe auch versucht, zu verwenden, chmodaber ich sehe keinen Unterschied vor und nach dem Ausführen dieses Befehls ( ls -la), daher liegt das Problem möglicherweise hier (Wie kann ich den chmodBefehl ausführen ?).

Vielleicht kann mir hier jemand bei meinem Problem helfen, und wenn Sie auch eine Erklärung haben, warum ich nicht die Berechtigung habe, meine configureDatei auszuführen , ist das großartig.

Vielen Dank.

PS: Mein Ziel hier ist es, das net-snmp-Paket auf einer Android-Plattform zu verwenden, indem die Quellen dieses Projekts direkt auf der Plattform kompiliert werden.

grattmandu03
quelle
3
Das ist wahrscheinlich das Problem. /sdcardwird normalerweise mit dem noexecFlag in Android gemountet , sodass Sie keine Binärdateien ausführen können. Ich würde empfehlen, es an einen anderen Ort zu verschieben (wird oft /data/localfür solche Dinge verwendet). Überprüfen Sie, ob das Problem dadurch behoben wird.
Eldarerathis
3
Kopieren Sie es auch in das /usr/local/tmpVerzeichnis (das gesamte net-snmp-5.7.2Verzeichnis in /sdcard.
Liam W
1
@ t0mm13b Nicht ganz sicher, ob dies nicht zum Thema gehört, da dies für Benutzer nützlich sein kann, die eine Datei auf ihrem Gerät ausführen müssen, z. B. einen Root-Exploit.
Liam W
1
OK danke. Meine Frage hier war mehr darüber, wie ich ein Skript sh mit der ADB-Shell ausführen kann, als eine Entwicklungsfrage. Aber jetzt habe ich die Lösung: "/ sdcard ist mit dem noexec-Flag versehen". Wenn also eldarerathis oder Liam W ihren Kommentar in eine echte Antwort umsetzen möchten, werde ich ihn validieren. Oder können Sie mir vielleicht erklären, wie ich meine Frage schließen kann?
Grattmandu03
1
@ grattmandu03 habe ich schon;)
Liam W

Antworten:

10

Dies ist auf zwei Dinge zurückzuführen:

  1. Die Datei hat keine Ausführungsberechtigungen [AND]
  2. Die Datei kann keine ausführbaren Berechtigungen erhalten, wie sie sich auf der SD-Karte befindet. Das Dateisystem der SD-Karte kann Dateiberechtigungen akzeptieren, wird jedoch noexecwie in einem Kommentar angegeben mit dem Flag versehen. Dies verhindert, dass Dateien ausgeführt werden.

Lösung:

  1. Kopieren Sie das Verzeichnis als root net-snmp-5.7.2in das /data/local/tmpVerzeichnis.
  2. Legen Sie fest, dass die configureDatei ausführbar ist, indem Sie sie chmod 0777 /data/local/tmp/net-snmp-5.7.2/configureals root ausführen .
  3. Sie sollten nun in der Lage sein, das Konfigurationsskript auszuführen, /data/local/tmp/net-snmp-5.7.2/configureindem Sie die Eingabetaste eingeben und drücken.

Hinweis

Dies sollte alles als Root-Benutzer erfolgen :)

Liam W.
quelle
8

Wie aus den Kommentaren und der Antwort von Liam hervorgeht , ist dies auf das noexecFlag zurückzuführen, das das System beim Mounten der SD-Karte verwendet. Wenn es sich bei Ihrer configureDatei um ein Shell-Skript handelt (wie es normalerweise der Fall ist), können Sie die Ausführung dennoch austricksen:

cdin das oben beschriebene Verzeichnis wechseln und dann ausführen sh configure.

shist das Shell - Interpreter, und die binären sollte in lokalisiert werden /system/bin, wo die Dateien sind ausführbar. Wenn Sie Ihr Skript als erstes Argument übergeben, wird ein neuer Shell-Prozess geöffnet, der Ihr configureSkript ausführt .

Izzy
quelle
Danke für deine Antwort. Das sh configuremacht den Trick.
grattmandu03
1
Danke für die Bestätigung! Und froh, dass ich helfen konnte. Ich benutze diesen Trick von Zeit zu Zeit auf Linux / Unix-Maschinen :)
Izzy