adb "Autorizzazione negata" per eseguire un file "./configure"


9

Devo eseguire un configurefile sul mio telefono Android, quindi penso che il modo migliore per farlo sia usare il adb shellcomando.

Sto eseguendo un emulatore Android su una piattaforma Windows 7 e lì sto eseguendo il adb shellcomando in una finestra DOS. Utilizzando il cdcomando di sto cambiando la directory in cui il mio configurefile è, e quindi sto eseguendo il comando seguente: ./configure. Ricevo il seguente errore:

./configure: permission denied

Quindi provo ad eseguire adb in modalità root con adb root- ma a quanto pare il mio adb è già in modalità root (inoltre ho il carattere "#" prima di ogni riga della mia shell adb).

Ho anche provato a usare chmodma non vedo alcuna differenza prima e dopo aver eseguito questo comando ( ls -la), quindi forse il problema è qui (Come posso eseguire il chmodcomando?).

Forse qualcuno qui può aiutarmi con il mio problema, e se hai anche una spiegazione sul perché non ho l'autorizzazione per eseguire il mio configurefile, sarà fantastico.

Grazie.

PS: Il mio obiettivo qui è usare il pacchetto net-snmp su una piattaforma Android compilando le fonti di questo progetto direttamente sulla piattaforma.


3
Questo è probabilmente il problema. /sdcardin genere è montato con il noexecflag in Android, quindi non è possibile eseguire binari da esso. Consiglierei di provare a spostarlo da qualche altra parte (spesso /data/localviene utilizzato per cose del genere). Vedi se questo risolve il problema.
— eldarerathis,

3
Inoltre, copiarlo nella /usr/local/tmpdirectory (l'intera net-snmp-5.7.2directory in /sdcard.
— Liam W

1
@ t0mm13b Non sono del tutto sicuro se questo è fuori tema, in quanto potrebbe essere utile per le persone che devono eseguire un file sul proprio dispositivo, come un exploit root.
— Liam W,

1
Ok grazie. La mia domanda qui era più su come posso eseguire uno script sh con la shell adb che una domanda di sviluppo. Ma ora ho la soluzione: "/ sdcard è montato con il flag noexec", quindi se eldarerathis o Liam W vogliono mettere il loro commento in una vera risposta, lo convaliderò. O forse puoi spiegarmi come posso chiudere la mia domanda?
— grattmandu03,

1
@ grattmandu03 ho già;)
— Liam W

Risposte:


10

Ciò è dovuto a 2 cose:

  1. Il file non ha autorizzazioni di esecuzione [AND]
  2. Il file non può ottenere le autorizzazioni eseguibili come è sulla scheda SD. Il filesystem della scheda SD può accettare i permessi dei file, tuttavia è montato con il noexecflag, come indicato in un commento. Ciò interrompe l'esecuzione dei file.

Soluzione:

  1. Copia la net-snmp-5.7.2directory nella /data/local/tmpdirectory come root.
  2. Imposta il configurefile come eseguibile eseguendolo chmod 0777 /data/local/tmp/net-snmp-5.7.2/configurecome root.
  3. Ora dovresti essere in grado di eseguire lo script di configurazione digitando /data/local/tmp/net-snmp-5.7.2/configuree premendo invio.

Nota

Questo dovrebbe essere fatto come utente root :)


8

Come spiegato dai commenti e dalla risposta di Liam , ciò è dovuto alla noexecbandiera utilizzata dal sistema durante il montaggio della scheda SD. Se il tuo configurefile è uno script di shell (come di solito), puoi comunque ingannarlo per essere eseguito:

cdnella directory come descritto sopra, quindi eseguire sh configure.

shè l'interprete Shell, e quel binario dovrebbe trovarsi /system/bin, dove i file sono eseguibili. Passando lo script come primo argomento, si aprirà un nuovo processo di shell che esegue lo configurescript.


Grazie per la tua risposta. Lo sh configurefa il trucco.
— grattmandu03,

1
Grazie per la conferma! E felice di essere stato in grado di aiutare. Di tanto in tanto uso questo trucco su macchine Linux / Unix :)
— Izzy
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.