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

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 estoy cambiando al directorio donde configureestá mi archivo, 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 adb).

También he intentado usar chmodpero no veo ninguna diferencia antes y después de ejecutar este comando ( ls -la), así 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ía 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.

¿En qué parte del sistema de archivos del emulador de Android se encuentra el archivo de configuración? es decir, ¿cuál es la ruta al archivo?
La ruta del archivo es /sdcard/net-snmp-5.7.2/configure
chmod 0777 ./configureintente eso, luego intente ejecutar.
Ese es probablemente el problema. /sdcardgeneralmente se monta con la noexecbandera 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). A ver si eso soluciona el problema.
Además, cópielo en el directorio (el directorio /usr/local/tmpcompleto en formato . net-snmp-5.7.2/sdcard
Gracias por tu comentario pero no funciona. Antes de chmod 0777: "----rwxr-x [...] configure" y después de chmod 0777: "----rwxr-x [...] configure". Es por eso que digo que tal vez mi problema esté en el comando "chmod".
@grattmandu03 Es porque está en la tarjeta SD: las tarjetas SD no admiten permisos de archivo :)
Ok, está bien. Entonces, traté de copiar el directorio net-snmp en /data/local/tmp, luego traté directamente de ejecutar mi archivo de configuración, pero obtuve un permiso denegado. Así que estoy usando el comando "chmod 0777". Y ahora tengo algo extraño, cuando estoy ejecutando de nuevo mi archivo de configuración, obtengo "archivo no encontrado", pero todavía puedo ver este archivo en el directorio /data/local/tmp. que estoy haciendo mal??
¿Cuál es el contenido del configurescript? Está buscando un archivo para ejecutar... ¿Estás seguro de que sabes lo que estás haciendo? configurepara que sirve ¡Estos detalles faltan en la pregunta! :)
El archivo "configure" es el script de configuración proporcionado por el paquete de fuentes net-snmp. Estoy intentando portar el paquete net-snmp a un teléfono Android. Por ahora estoy usando el script de busybox para ejecutar el script de configuración y parece funcionar (solo tengo algunos errores debido a que un sistema Linux no es como un sistema Android, pero esto es lo que estoy buscando). Gracias a todos ustedes.
Constrúyalo en la caja de Linux, no en Android... ¡debería haber dicho eso desde el principio! :)
Sí, lo he hecho, pero creo que la arquitectura entre un sistema Linux y un teléfono Android es diferente, por lo que no puedo usar el resultado de Linux directamente en mi teléfono Android. Por cierto, sé que hay algunas bibliotecas de Java para usar net-snmp, pero mi jefe quiere compilar la fuente original de net-snmp en una plataforma Android.
compilación cruzada de palabras clave en Linux con el objetivo de admitir el conjunto de chips ARM...
¡Tal como está ahora y transpira, esta es más bien una cuestión de desarrollo! Votar para cerrar ya que esto está fuera de tema.
@ t0mm13b No estoy del todo seguro de 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.
@LiamW claramente, el OP estaba tratando de construir sobre Android ejecutando un configurescript relacionado con el desarrollo y adoptando el enfoque equivocado por completo.
OK gracias. Mi pregunta aquí era más sobre cómo puedo ejecutar un script sh con adb Shell que una pregunta de desarrollo. Pero ahora tengo la solución: "/sdcard está montada 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 Ya tengo ;)

Respuestas (2)

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 archivo, 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 raíz.
  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 :)

Obtengo: /system/bin/sh: /data/local.../filename: No existe tal archivo o directorio.

Como se explica en 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 serlo), aún puede engañarlo para que se ejecute:

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

shes el intérprete de Shell, y ese binario debe estar ubicado en /system/bin, donde los archivos son ejecutables. Al pasar su secuencia de comandos como primer argumento, esto abrirá un nuevo proceso de shell que ejecuta su secuencia de configurecomandos.

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