Subdirectorios en /sdcard/Android/data
o /sdcard/Android/obb
(llamados directorios privados de las aplicaciones en el almacenamiento externo primario) tienen permisos sintetizados basados en la estructura de directorios . Mientras que los directorios públicos en el resto de /sdcard
tienen permisos fijos. Ver detalles en El viaje de almacenamiento de Android y ¿Qué es /storage/emulated/0/? .
Mi respuesta a su pregunta vinculada: ¿Cómo se puede montar una carpeta dentro de /sdcard con los permisos correctos? aborda el último caso, es decir, el montaje de directorios públicos que se comparten con todas las aplicaciones. Sin embargo, los directorios privados no pueden ser montados desde un almacenamiento externo con permisos fijos. Sin embargo, utilizando el mismo enfoque se puede bind-mount el directorio privado de cada aplicación por separado.
Tomemos como ejemplo la aplicación Termux. Sus directorios privados ( Android/data/com.termux
y Android/obb/com.termux
) son propiedad del UID de la aplicación Termux asignado en el momento de la instalación. Las formas más comunes de obtener el valor del UID es leer de /data/system/packages.list
o hacer ls -ld /sdcard/Android/data/com.termux
o utilizando stat
mando. Un enfoque sencillo es montar el directorio como "world-writable" para que todas las aplicaciones puedan escribir en él. Pero no es una buena idea establecer permisos tan abiertos. Así que vamos por el camino de Android; bind-mount un directorio desde la tarjeta SD externa usando FUSE:
~# bindfs -u $(stat -c %u /sdcard/Android/data/com.termux) -g 9997 -p a-rwx,ug+rw,ug+X /mnt/media_rw/[UUID]/Android/data/com.termux /mnt/runtime/write/emulated/0/Android/data/com.termux
- Para conocer más opciones de montaje y detalles, consulte la respuesta del enlace anterior.
- Sustituir
/mnt/media_rw/[UUID]
con /mnt/expand/[UUID]/media/0
si la tarjeta SD está formateada como Almacenamiento Adoptable pero los datos no están migrado .
- De la misma manera
obb
los directorios pueden ser montados en bind.
- Si su dispositivo es compatible con
sdcardfs
, el mismo montaje debería propagarse a default
y read
emulado VER también. De lo contrario, si su dispositivo es más antiguo puede bind-mount de la misma manera a otros VER .
- Algunas aplicaciones prefieren por defecto escribir los datos privados en el almacenamiento externo secundario (es decir, la tarjeta SD externa), por lo que no es necesario bind-mount su
data
o obb
directorios.