No hay permisos para que Termux acceda al almacenamiento interno, incluso para leer

19

Usando el programa de emulación de terminal termux ( https://termux.com ), escribo el siguiente comando:

ls /sdcard

Obtuve el siguiente error:

ls: can't open '/sdcard': Permission denied

Al darme cuenta de que el directorio / sdcard en Android es un enlace simbólico, intenté encontrar la ubicación del directorio real, aprendiendo que no es solo un enlace simbólico, sino un enlace simbólico a otro enlace simbólico, y el directorio real es / storage / emulated / 0 0

Entonces, finalmente, escribí:

ls -ld /storage/emulated/0

El resultado que obtuve fue:

drwxrwx--x   63 root     sdcard_r      4096 Aug 10 12:04 /storage/emulated/0

En resumen, no sé si termux solía ejecutarse con los permisos del grupo sdcard_r o si los permisos o solían permitir lectura-escritura, pero necesito saber cuál de los dos solía ser y cómo arreglar las cosas, porque poder acceder a los contenidos de la tarjeta SD interna es algo crítico.

No, mi dispositivo no está rooteado, ni planeo rootearlo, por lo que no puedo proporcionar ninguna información para obtenerlo. Sin embargo, no haber sido rooteado nunca en el pasado me impidió tener acceso de lectura al directorio / sdcard, por lo que esto es nuevo (e inquietante).

Por supuesto, han pasado unos meses desde que intenté hacer esto anteriormente, pero esta nueva limitación de Android obstaculiza seriamente la usabilidad de termux y quién sabe qué más, ya que necesito tener acceso a archivos que son en mi tarjeta SD. (Todavía puedo hacer mucho, incluso si no todo, incluso sin permisos de escritura, pero estoy bastante atrapado en el agua si no puedo obtener permisos de lectura, como es el caso actualmente).

usuario3080003
fuente
Hmm, parece que tiene el READ_EXTERNAL_STORAGEpermiso, por lo que debería tener acceso.
Matthew leyó el
3
Sí --- pero aparentemente se había apagado. Me di cuenta cuando fui a Preferencias del sistema> General> Aplicaciones> Termux ----- y descubrí que había un interruptor para acceder a los archivos que de alguna manera se habían apagado. No hace falta decir que lo volví a encender y el problema se resolvió. ------ Por supuesto - la crisis inmediata ha terminado --- pero todo esto plantea la pregunta de qué causó que se apagara en primer lugar. (Sé que nunca hice eso)
User3080003
Tuve el mismo problema, y ​​su respuesta aquí me lo solucionó. EDITAR: Estúpido enter-to-submit. Estaba tratando de crear una nueva línea. Esto es lo que creo que sucedió: Android 7 ahora permite denegar permisos (¡sí!), Pero, en el caso de Termux, por cualquier razón, no solicita permiso como lo hacen otros programas. Entonces, el problema no es que de alguna manera se apagó, pero nunca se encendió. Sin embargo, esto es especulación.
Andrew
3
Se puede ejecutar termux-setup-storage para que la aplicación solicite permisos de almacenamiento. Ver termux.com/storage.html .
fornwall

Respuestas:

5

Las versiones más recientes de Android requieren que las aplicaciones soliciten permiso durante el tiempo de ejecución. Puede que ya lo hayas notado. Un ejemplo es Chrome que solicita el permiso de Almacenamiento cuando intenta descargar algo por primera vez. Para Termux, esto es un problema. Los permisos predeterminados son "no permitidos", por lo que cuando Termux necesita un permiso para una tarea, porque Termux no se ha actualizado para solicitar estos permisos, en su lugar intenta realizar la tarea de todos modos y arroja un error como resultado. Desafortunadamente, los desarrolladores tienen que arreglar esto por sí mismos. Afortunadamente, Android te ofrece formas de administrar los permisos de la aplicación manualmente. Hasta que los desarrolladores actualicen Termux en consecuencia, esta es probablemente la única forma.

Paso 1: vaya a la página de información de la aplicación de Termux

Existen múltiples métodos para llegar a esta página. Debido a que diferentes teléfonos pueden tener diferentes comportamientos, incluí todos los que conozco.

Método 1: usar el menú multitarea

  1. Abrir Termux.
  2. Presione el botón multitarea para abrir el menú multitarea. Esto debería estar al lado del botón de inicio a la izquierda.
  3. En la lista de aplicaciones, Termux debería ser el primero. Toque y mantenga presionado su icono.

    En algunos teléfonos, ya estará en la página de información. En otros teléfonos, verás el cambio de la aplicación de Termux en la parte superior, con un ícono de información (ℹ) que aparece en alguna parte. Otros teléfonos pueden ofrecerle un menú contextual con la opción "Información de la aplicación". En ambos casos, toca estos.

Método 2: usar el panel de notificaciones

  1. Abrir Termux. Desea que aparezca la notificación de Termux.
  2. Despliegue el panel de notificaciones y encuentre la notificación de Termux.
  3. Pruebe uno de los siguientes:

    • Deslice la notificación hacia la izquierda o hacia la derecha y busque una rueda dentada (⛭) o un icono de información (ℹ) y tóquelo. No puede descartar la notificación de Termux, así que no se preocupe por eso.
    • Mantenga presionada la notificación y busque un engranaje (⛭), un ícono de información (ℹ) o un menú contextual con la opción "Información de la aplicación" y tóquelo.
    • Busque el ícono y / o nombre de la aplicación. Es posible que deba deslizar hacia abajo la notificación. Toque y mantenga presionado. Puede aparecer una rueda dentada (⛭), un icono de información (ℹ) o un menú contextual. Toque en consecuencia.

Método 3: usar el Administrador de aplicaciones

  1. Vaya a configuración> aplicaciones.
  2. Busque una opción etiquetada como "Administrador de aplicaciones" o similar. Parece depender de su dispositivo.
  3. Busque la entrada de Termux y tóquela. Es posible que deba cambiar su filtro a "aplicaciones instaladas" o "aplicaciones descargadas".

Paso 2: cambiar los permisos

Ahora debería estar en una página con el nombre, el icono y el número de versión de Termux con dos botones etiquetados "Desinstalar" y "Forzar detención". a continuación debería haber varias otras opciones.

  1. Busque una opción etiquetada "Permisos" (puede que tenga que desplazarse). Toca en él.
  2. Debe haber una entrada para el permiso de Almacenamiento. Enciéndelo haciendo clic en el interruptor al lado. Si el permiso de Almacenamiento no aparece en la lista, use un comando relacionado con el almacenamiento en Termux para obtener un error de permiso denegado y volver.

Probar el cambio

Ahora le ha dado a Termux acceso a su almacenamiento. Puede probar esto con el siguiente comando:
ls /sdcard/
Si no obtiene un error de permiso denegado, ¡funcionó! No debería necesitar hacer esto nuevamente a menos que reinstale Termux.

ColinTNMP
fuente
0

es julio de 2017 y tuve el mismo problema, busqué en Google y llegué aquí. El comentario de Matthew Read señaló el camino hacia la solución, pero no hay una respuesta que lo explique claramente, así que aquí está el tl; dr de la misma:

Termux no solicita permiso del sistema de archivos en la instalación, por lo que debe activarlo a través de Configuración => Aplicaciones => Termux => Permisos

Nathan Smith
fuente