adb "Permiso denegado" para ejecutar un archivo "./configure"

9

Necesito ejecutar un configurearchivo en mi teléfono Android, así que creo que la mejor manera de hacerlo es usar el adb shellcomando.

Estoy ejecutando un emulador de Android en una plataforma Windows-7, y allí estoy ejecutando el adb shellcomando en una ventana de DOS. Usando el cdcomando voy a cambiar al directorio en mi configurearchivo, y luego estoy ejecutando el siguiente comando: ./configure. Recibo el siguiente error:

./configure: permission denied

Así que trato de ejecutar adb en modo raíz con adb root, pero aparentemente mi adb ya está en modo raíz (Además, tengo el carácter "#" antes de cada línea de mi shell de adb).

También he intentado usar, chmodpero no veo ninguna diferencia antes y después de ejecutar este comando ( ls -la), por lo que tal vez el problema esté aquí (¿Cómo puedo ejecutar el chmodcomando?).

Tal vez alguien aquí pueda ayudarme con mi problema, y ​​si también tiene una explicación sobre por qué no tengo permiso para ejecutar mi configurearchivo, será genial.

Gracias.

PD: Mi objetivo aquí es usar el paquete net-snmp en una plataforma Android compilando las fuentes de este proyecto directamente en la plataforma.

grattmandu03
fuente
3
Ese es probablemente el problema. /sdcardPor lo general, se monta con el noexecindicador en Android, por lo que no puede ejecutar binarios desde él. Recomendaría intentar moverlo a otro lugar (a menudo /data/localse usa para cosas como esa). Vea si eso resuelve el problema.
eldarerathis
3
Además, cópielo en el /usr/local/tmpdirectorio (todo el net-snmp-5.7.2directorio en /sdcard.
Liam W
1
@ t0mm13b No estoy del todo seguro si esto está fuera de tema, ya que podría ser útil para las personas que necesitan ejecutar un archivo en su dispositivo, como un exploit de raíz.
Liam W
1
OK gracias. Mi pregunta aquí era más sobre cómo puedo ejecutar un script sh con el shell adb que una pregunta de desarrollo. Pero ahora tengo la solución: "/ sdcard está montado con el indicador noexec", así que si eldarerathis o Liam W quieren poner su comentario en una respuesta real, lo validaré. ¿O tal vez me puedas explicar cómo puedo cerrar mi pregunta?
grattmandu03
1
@ grattmandu03 ya tengo;)
Liam W

Respuestas:

10

Esto se debe a 2 cosas:

  1. El archivo no tiene permisos de ejecución [Y]
  2. El archivo no puede obtener permisos ejecutables ya que está en la tarjeta SD. El sistema de archivos de la tarjeta SD puede aceptar permisos de archivos, sin embargo, está montado con la noexecbandera, como se indica en un comentario. Esto detiene la ejecución de archivos.

Solución:

  1. Copie el net-snmp-5.7.2directorio al /data/local/tmpdirectorio como root.
  2. Configure el configurearchivo para que sea ejecutable ejecutándolo chmod 0777 /data/local/tmp/net-snmp-5.7.2/configurecomo root.
  3. Ahora debería poder ejecutar el script de configuración escribiendo /data/local/tmp/net-snmp-5.7.2/configurey presionando enter.

Nota

Todo esto debe hacerse como usuario root :)

Liam W
fuente
8

Según lo explicado por los comentarios y la respuesta de Liam , esto se debe a la noexecbandera utilizada por el sistema al montar la tarjeta SD. Si su configurearchivo es un script de shell (como suele ser), aún puede engañarlo para que se ejecute:

cdal directorio como describió anteriormente, y luego ejecute sh configure.

shes el intérprete de Shell, y ese binario debe ubicarse en /system/bindonde los archivos son ejecutables. Al pasar su script como primer argumento, se abrirá un nuevo proceso de shell que ejecuta su configurescript.

Izzy
fuente
Gracias por tu respuesta. El sh configurehace el truco.
grattmandu03
1
¡Gracias por la confirmación! Y me alegro de haber podido ayudar. Uso este truco en máquinas Linux / Unix de vez en cuando :)
Izzy