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

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, traté de 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 /almacenamiento/emulado/ 0

Así que 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 la lectura y escritura, pero necesito saber cuál de los dos solía ser y cómo arreglar las cosas, porque poder acceder al contenido de la tarjeta SD interna es algo crítico.

No, mi dispositivo no está rooteado, ni planeo rootearlo, por lo que no puedo dar ninguna información que tendría que rootear el dispositivo para obtener. Sin embargo, no estar rooteado nunca en el pasado me impidió tener acceso de lectura al directorio / sdcard, por lo que esto es nuevo (y perturbador).

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

Hmm, parece que tiene el READ_EXTERNAL_STORAGEpermiso, por lo que debería tener acceso.
Sí --- pero aparentemente se había apagado. Me di cuenta cuando entré en 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 aún plantea la pregunta de qué causó que se apagara en primer lugar. (Sé que nunca hice eso.)
Tuve el mismo problema, y ​​tu respuesta aquí me lo arregló. EDITAR: Estúpida entrada para enviar. 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 alguna 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.
Se puede ejecutar termux-setup-storage para que la aplicación solicite permisos de almacenamiento. Consulte termux.com/storage.html .

Respuestas (3)

Seguir la wiki de Termux para ejecutarlo termux-setup-storageme lo arregló, como lo sugirió fornwall .

luego reinicie Termux.

Las versiones más nuevas de Android requieren que las aplicaciones soliciten permiso durante el tiempo de ejecución. Es posible que ya hayas notado esto. 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, debido a que Termux no se ha actualizado para solicitar estos permisos, intenta realizar la tarea de todos modos y arroja un error como resultado. Desafortunadamente, los desarrolladores tienen que arreglar esto ellos mismos. Afortunadamente, Android le brinda 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

Hay varios 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. Abre Termux.
  2. Pulse 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 la primera. Toca y mantén presionado su ícono.

    En algunos teléfonos, ya estarás en la página de información. En otros teléfonos, en cambio, verá el cambio de la caja 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 brindarle un menú contextual con una opción de "Información de la aplicación". En ambos casos, toque estos.

Método 2: Usar el panel de notificaciones

  1. Abre Termux. Desea que aparezca la notificación de Termux.
  2. Despliega el panel de notificaciones y encuentra 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 ícono de información (ℹ) y tóquelo. No puede descartar la notificación de Termux, así que no se preocupe por eso.
    • Toca y mantén presionada la notificación y busca un engranaje (⛭), un icono de información (ℹ) o un menú contextual con la opción "Información de la aplicación" y tócalo.
    • Busque el icono y/o el nombre de la aplicación. Es posible que tengas que deslizar hacia abajo la notificación. Toca y mantén 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: Cambio de permisos

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

  1. Busque una opción etiquetada como "Permisos" (es posible que deba desplazarse). Tócalo.
  2. Debe haber una entrada para el permiso de Almacenamiento. Enciéndalo 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 regrese.

Probando el cambio

Ahora le ha dado acceso a Termux 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.

Tenga en cuenta que probablemente necesite forzar la detención y reiniciar la aplicación Termux para que el permiso surta efecto

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

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