8 votos

¿Cómo puedo acceder a `$HOME/storage` fuera de Termux (con un explorador de archivos)?

¿Cómo accedo al directorio de Termux $HOME/storage en Android Pie con un Explorador de Archivos GUI?

En Termux imprimo el directorio de trabajo con pwd y muestra $HOME/storage como:

/data/data/com.termux/files/home

Mi almacenamiento interno luce así:

.
 Alarms
 Android
|   data
|   |   ...
|   |   com.termux
|   |  |    files
|   |  |        0 items
|   |   ...
|    ...
 DCIM
 Download
 ...

Mi almacenamiento externo luce así:

.
 Android
|   data
|   |   ...
|   |   com.termux
|   |  |    files
|   |  |        0 items
|   |   ...
|    ...
 LOST.DIR

Ni mi almacenamiento interno, ni mi tarjeta SD, contienen un directorio /data/ en nivel root. ¿Dónde está este directorio /data/? De igual forma, ¿dónde está el directorio root /storage/? ¿Dónde está el directorio root /emulated/? ¿Dónde están todos estos directorios y por qué no puedo acceder a ninguno de ellos?

6voto

Jack Wade Puntos 231

Si anteriormente ejecutaste termux-setup-storage, crea el archivo random_file.txt en $HOME/storage/shared. Eso se creará en /sdcard/. Pero no necesitas hacer ese problema. Simplemente otorga el permiso de Almacenamiento a Termux y guarda directamente en /sdcard/ por ejemplo:

echo xyz >/sdcard/random_file.txt

$HOME/storage es en realidad /data/data/com.termux/files/home/storage el cual no es accesible para otras aplicaciones sin acceso root. Así es como está diseñada la seguridad de Android.

¿Dónde está este directorio /data/?

Es una partición llamada userdata montada en rootfs en /data. Para más detalles, ver ¿Cómo se utiliza el espacio en disco en un dispositivo Android?

¿Dónde está el directorio root /storage/?

También es un directorio en rootfs donde se monta tmpfs. Los contenidos de este directorio se ven diferentes para diferentes aplicaciones debido a los espacios de nombres de montaje y emulación del sistema de archivos.

¿Dónde está el directorio root /emulated/?

Está en los siguientes tres lugares:

/mnt/runtime/default/emulated
/mnt/runtime/read/emulated
/mnt/runtime/write/emulated

¿Dónde están alguno de estos directorios y por qué no puedo acceder a ninguno de ellos?

Estos directorios es lo que ves cuando abres una aplicación exploradora de archivos. La ruta del sistema de archivos emulado es /sdcard.

En Android 6+, /data/media es emulado en tres VISTAS mencionadas arriba. Una de esas está montada como enlace en /storage/emulated dependiendo del estado del permiso de Almacenamiento de la aplicación. El directorio emulated contiene los User_ID de todos los usuarios (si hay múltiples usuarios o perfiles). El propietario del dispositivo siempre es 0. Por lo tanto, /sdcard apunta a /storage/emulated/0. Es el almacenamiento al cual las aplicaciones pueden leer y escribir.

Además, las aplicaciones pueden leer y escribir en sus directorios de datos privados en /data/user// (que es /data/data/ para el propietario del dispositivo). Para más detalles, ver ¿Qué es /storage/emulated/0/? y ¿Qué es el UID "u#_everybody"?.

Desde tu comentario:

¿Puede Termux escribir en la tarjeta SD físicamente insertada en mi teléfono? Si es así, ¿cómo?

Las aplicaciones no tienen acceso de escritura a nivel de sistema de archivos a la tarjeta SD externa excepto aquellas que utilizan las APIs SAF. Según la documentación oficial, Termux no tiene soporte para SAF:

¿Por qué Termux tiene acceso de solo lectura a la tarjeta SD externa?

En versiones recientes de Android, el acceso de escritura a la tarjeta SD externa se realiza a través del Marco de Acceso al Almacenamiento. No es posible proporcionar su API a los programas de línea de comandos.

Sin embargo, las aplicaciones siempre pueden (con y sin permiso de Almacenamiento) leer y escribir en sus directorios privados en almacenamiento compartido es decir, en el directorio Android/data/ (y algunos otros) en /sdcard/ y en la tarjeta SD externa. Para más detalles, ver ¿Cómo mover archivos a una tarjeta SD externa en un dispositivo Android sin acceso root?

Desde tu comentario:

Entonces básicamente no tengo acceso al directorio root de mis propios dispositivos, ¿sin rootear el dispositivo? ¿Solo puedo empezar en el tercer nivel? Eso es frustrante.

La partición /data también contiene ajustes del sistema incluyendo datos sensibles como bases de datos de contraseñas (aunque no se guardan como texto plano). Por lo tanto, /data no es accesible sin root con el fin de:

  • Proteger los datos privados de las aplicaciones de otras aplicaciones (cada aplicación es un usuario UNIX con un UID único)
  • Proteger los datos y ajustes del sistema de aplicaciones maliciosas y malware
  • Aislar usuarios/perfiles de otros usuarios/perfiles
  • No permitir que las aplicaciones accedan al almacenamiento compartido sin el permiso de Almacenamiento otorgado
  • Hacer cumplir las APIs por el framework de Android para que las aplicaciones no puedan utilizar recursos del sistema y leer/manipular información y ajustes del dispositivo sin los permisos adecuados

Y posiblemente haya otras razones. Para más detalles, ver ¿Están protegidos los múltiples usuarios entre sí de manera diferente a las aplicaciones?

PreguntAndroid.com

PreguntAndroid es una comunidad de usuarios de Android en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X