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.