Android: Permiso denegado para / data / local / tmp / *

Estoy tratando de ejecutar un script de shell a través de una aplicación para Android. El script tiene un comando que sólo ejecuta un frasco en el dispositivo. Cuando ejecuto este comando directamente en el shell usando adb, todo funciona bien. Pero cuando lo ejecuto a través de la secuencia de comandos mediante la aplicación android, obtengo una excepción de permiso denegado (abierto falló: EACCES (Permiso denegado)) para los archivos creados en la carpeta / data / local / tmp. ¿Puede alguien orientar cómo resolver este problema?

Este es el aspecto de mi manifiesto

<manifest ….> <uses-sdk …> <uses-permission… .> … <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> … <application …> … </application> </manifest> 

Gracias.

4 Solutions collect form web for “Android: Permiso denegado para / data / local / tmp / *”

Si entiendo correctamente el escenario, se crea el script sobre la marcha y se utiliza /data/local/tmp como una ubicación fácil que es tanto publicable como ejecutable. Una vez, esto era posible. Pero en versiones recientes de Android, la seguridad se ha endurecido.

Su aplicación puede ejecutar archivos en /data/data/${your.package} . Puede utilizar getContext (). GetFilesDir () para obtener de forma fiable la ruta completa. Tenga en cuenta que todavía necesita usar chmod 500 para asegurarse de que el archivo tiene permiso ejecutable .

Si tienes algunos ejecutables fijos (binarios o scripts) que deben ser instalados con tu aplicación, hay un truco inteligente para que el instalador del paquete del sistema se encargue de todo eso para ti: asegúrate de que el archivo tenga el nombre " lib something .so "y ponerlo en el directorio /libs/armeabi bajo la raíz del proyecto Eclipse. Después de la instalación, los archivos estarán presentes en getContext (). GetApplicationInfo (). Directorio nativeLibraryDir con permisos ejecutables establecidos.


PS No necesitas el permiso WRITE_EXTERNAL_STORAGE para que esto funcione (tal vez lo necesites para otras cosas que haga tu aplicación).


PPS Puede ejecutar un script de shell desde cualquier lugar, incluyendo /sdcard , y no necesita permiso ejecutable para el script. En su lugar, use sh -c source full.path.to.script .

Creo que la razón es que tu Andorid no está arraigado. el "/ data" tiene el permiso de la raíz. Así que enríquelo primero y déle a su aplicación el permiso. usted puede intentar el comando: "su" int el cambio de la cáscara a la raíz.

Puede usar la interfaz de adb para copiar y / o enviar archivos a la carpeta /data/local/tmp pero si desea usar / verlos en la aplicación de terminal necesitará (en la interfaz de adb) primero

 cd /data/local/tmp 

luego haga una carpeta dentro de la carpeta. Ejemplo

 mkdir folder 

cambie los permisos

 chmod - R 777 folder 

Ahora tiene una carpeta a la que puede leer y escribir.

Algunas cosas que me gustaría saber es cómo hacer que el sistema piense que el /system/bin su está en la carpeta /system/bin (sin copiar) porque sólo puedo conseguir tmp … acceso root, porque incluso con acceso root, no puede volver a montar el directorio del sistema como rw porque el zte-paragon tiene su partición del sistema formateada como un sistema de archivos de sólo lectura

Asegúrese de que la ubicación /data/local/tmp sea ​​mundialmente ejecutable en su dispositivo:

 adb shell ls -ld /data/ /data/local/ /data/local/tmp/ drwxrwx--x system system XXXX-XX-XX XX:XX drwxr-x--x root root XXXX-XX-XX XX:XX drwxrwx--x shell shell XXXX-XX-XX XX:XX # ^ all x here == OK! 

Si no es así, no hay nada que puedas hacer, y necesitas usar el almacenamiento estándar (internal /data/data/{package} o external /sdcard/ ).

Asegúrese de que el archivo sea legible en todo el mundo.

 adb shell chmod o+r /data/local/tmp/myfile.txt 

No necesita ningún permiso.

  • ¿Por qué el comando SQLite 3 que usa la shell ADB de Android devuelve "permiso denegado"?
  • ADB Shell que da el modo incorrecto al ejecutar chmod (bajo su)
  • Activar / desactivar NFC con comando ADB
  • Propiedades del sistema de Android: deshabilitarlas en la línea de comandos
  • Android Shell EOF
  • ¿Cómo puedo ejecutar comandos de Linux en un dispositivo Android?
  • ¿Cómo ejecuto un binario compilado en Android?
  • Monte una tarjeta SD manualmente desde el shell de adb en android
  • Repo: comando no encontrado en la secuencia de comandos automatizada bash para crear cyanogenmod
  • Android adb shell permiso denegado
  • No se puede ejecutar el archivo ejecutable desde el shell de adb
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.