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 trabajo. Simplemente otorga 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
que no es accesible para otras aplicaciones sin acceso root. Así es como se diseñó 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 el dispositivo Android?
¿Dónde está el directorio root /storage/
?
También es un directorio en rootfs donde se monta tmpfs
. El contenido de este directorio se ve diferente para diferentes aplicaciones debido a los espacios de nombres de montaje y emulación de sistemas de archivos.
¿Dónde está el directorio root /emulated/
?
Está en las siguientes tres ubicaciones:
/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 son los que ves cuando abres una aplicación de explorador de archivos. La ruta del sistema de archivos emulado es /sdcard
.
En Android 6+, /data/media
se emula en tres VISTAS mencionadas anteriormente. Una de esas está montada enlazada a /storage/emulated
dependiendo del estado de permiso de almacenamiento de la aplicación. El directorio emulated
contiene los ID de usuario de todos los usuarios (si hay varios usuarios o perfiles). El propietario del dispositivo siempre es 0
. Entonces /sdcard
apunta a /storage/emulated/0
. Es el almacenamiento al que las aplicaciones pueden acceder para 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 de nivel de sistema de archivos a la tarjeta SD externa excepto aquellas que usan la API SAF. Citando de 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 el almacenamiento compartido es decir en el directorio Android/data/
(y otros) en /sdcard/
y en la tarjeta SD externa. Para más detalles ver ¿Cómo mover archivos a la tarjeta SD externa en un dispositivo Android sin root?
Desde tu comentario:
Entonces básicamente no tengo acceso al directorio root de mis propios dispositivos, ¿sin hacer root al dispositivo? ¿Solo puedo comenzar 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 en texto plano). Por lo tanto, /data
no es accesible sin permisos de root para:
- 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 parte del marco de Android para que las aplicaciones no puedan usar los recursos del sistema y leer/manipular la información y ajustes del dispositivo sin los permisos adecuados
Y posiblemente hay otras razones. Para más detalles ver ¿Están protegidos los múltiples usuarios de manera diferente que las aplicaciones?