adb „Odmowa zezwolenia” na uruchomienie pliku „./configure”

9

Muszę uruchomić configureplik na moim telefonie z Androidem, więc myślę, że najlepszym sposobem na to jest użycie adb shellpolecenia.

Korzystam z emulatora Androida na platformie Windows-7 i tam uruchamiam adb shellpolecenie w oknie DOS. Używając cdpolecenia Mam zmieniającą się do katalogu, w którym mój configureplik jest, a potem mam wykonując następujące polecenie: ./configure. Otrzymuję następujący błąd:

./configure: permission denied

Próbuję więc uruchomić adb w trybie root z adb root- ale najwyraźniej mój adb jest już w trybie root (ponadto mam znak „#” przed każdą linią mojej powłoki adb).

Próbowałem także użyć, chmodale nie widzę żadnej różnicy przed i po wykonaniu tego polecenia ( ls -la), więc może problem jest tutaj (Jak mogę uruchomić chmodpolecenie?).

Może ktoś tutaj może mi pomóc z moim problemem, a jeśli masz wyjaśnienie, dlaczego nie mam pozwolenia na uruchomienie mojego configurepliku, będzie świetnie.

Dzięki.

PS: Moim celem jest użycie pakietu net-snmp na platformie Android poprzez kompilację źródeł tego projektu bezpośrednio na platformę.

grattmandu03
źródło
3
To prawdopodobnie problem. /sdcardjest zwykle montowany z noexecflagą w systemie Android, więc nie można z niego wykonywać plików binarnych. Poleciłbym spróbować przenieść go w inne miejsce (często /data/localjest używany do takich rzeczy). Sprawdź, czy to rozwiąże problem.
eldarerathis,
3
Skopiuj go również do /usr/local/tmpkatalogu (cały net-snmp-5.7.2katalog w /sdcard.
Liam W
1
@ t0mm13b Nie jestem do końca pewien, czy jest to nie na temat, ponieważ może być przydatne dla osób, które muszą wykonać plik na swoim urządzeniu, na przykład exploit roota.
Liam W
1
Ok dzięki. Moje pytanie dotyczyło raczej tego, jak uruchomić skrypt sh z powłoką adb, niż pytanie programistyczne. Ale teraz mam rozwiązanie: „/ sdcard jest zamontowany z flagą noexec”, więc jeśli eldarerathis lub Liam W chcą umieścić swój komentarz w prawdziwej odpowiedzi, zweryfikuję go. A może możesz mi wyjaśnić, jak mogę zamknąć pytanie?
grattmandu03,
1
@ grattmandu03 Już mam;)
Liam W

Odpowiedzi:

10

Wynika to z 2 rzeczy:

  1. Plik nie ma uprawnień do wykonywania [I]
  2. Plik nie może uzyskać uprawnień do wykonywania, tak jak jest na karcie SD. System plików karty SD może akceptować uprawnienia do plików, jednak jest zamontowany z noexecflagą, jak podano w komentarzu. Zatrzymuje to wykonywanie plików.

Rozwiązanie:

  1. Skopiuj net-snmp-5.7.2katalog do /data/local/tmpkatalogu jako root.
  2. Ustaw configureplik tak, aby był wykonywalny, uruchamiając go chmod 0777 /data/local/tmp/net-snmp-5.7.2/configurejako root.
  3. Powinieneś być teraz w stanie wykonać skrypt konfiguracyjny, wpisując /data/local/tmp/net-snmp-5.7.2/configurei naciskając enter.

Uwaga

Wszystko to należy zrobić jako użytkownik root :)

Liam W.
źródło
8

Jak wyjaśniono w komentarzach i odpowiedzi Liama , wynika to z noexecflagi używanej przez system podczas montowania karty SD. Jeśli Twój configureplik jest skryptem powłoki (jak zwykle), możesz go oszukać, aby go wykonać:

cddo katalogu, jak opisano powyżej, a następnie uruchom sh configure.

shjest interpreterem powłoki i ten plik binarny powinien znajdować się w miejscu /system/bin, w którym można wykonywać pliki. Podanie skryptu jako pierwszego argumentu spowoduje otwarcie nowego procesu powłoki, który wykonuje configureskrypt.

Izzy
źródło
Dzięki za odpowiedź. To sh configurezałatwia sprawę.
grattmandu03,
1
Dziękuję za potwierdzenie! I cieszę się, że mogłem pomóc. Od czasu do czasu używam tej sztuczki na maszynach z systemem Linux / Unix :)
Izzy