Haga que el almacenamiento de la tarjeta SD interna actúe como el almacenamiento Ext4 normal (con administración de permisos del sistema de archivos)

Aparentemente, algunas personas han logrado que las tarjetas SD formateadas con Ext4 funcionen en sus dispositivos Android, lo que les permite obtener archivos file system permission management. No tengo una tarjeta SD en mi teléfono, pero quiero poder administrar los permisos de archivo en la tarjeta SD emulada que tienen todos los dispositivos Android.

El problema que veo con la implementación actual es el hecho de que las aplicaciones que pueden acceder a un archivo en su tarjeta SD (o tarjeta SD emulada) pueden acceder a todos los archivos de su tarjeta SD. No hay forma de limitar el acceso a una sola carpeta.

Ahora me pregunto cómo puedo cambiar la tarjeta SD emulada de manera que pueda especificar qué aplicación puede acceder a qué archivo.
Por cierto, por lo que he leído, cada aplicación tiene su propio usuario de Linux, por lo que, en teoría, debería ser tan simple como establecer permisos con chown/ chmod.
Pero la gente dice que Android tiene una implementación especial para el almacenamiento SD emulado, que se logró mediante el uso de FUSE.

Soy consciente de que las aplicaciones pueden no funcionar correctamente cuando no tienen permisos para leer o escribir desde ese almacenamiento. Pero eso no debería ser un problema si administra los permisos con chown/ chmod.
También sé que podría perder la capacidad de usar MTP para acceder a ese almacenamiento desde una computadora.

Estoy usando CyanogenMod 13 en un OnePlus One en este momento. Recuperación arraigada y personalizada, etc. Actualizaré a Android 7 pronto (CM14). (también ejecuta microG en lugar de los servicios de Google Play).

¿Qué quiere decir exactamente con tarjeta SD emulada ? ¿El almacenamiento interno emulado desde / partición de datos a través de FUSE? En caso afirmativo, /datala partición ya está formateada como una partición EXT4 en la mayoría de los casos.
Sí, creo que eso es lo que quiero decir. Gracias por aclararlo. Cambié la pregunta en consecuencia.
Como dice la respuesta a continuación, la única forma sería modificar FUSE y compilar el módulo FUSE usted mismo. Incluso si establece permisos para los archivos de almacenamiento interno desde /data/media/0/, eso no se reflejará en el almacenamiento emulado; así es como funciona. Entonces, su pregunta finalmente se reduce a esta pregunta: "¿ Cómo modifico el módulo FUSE para lograr esto? ", que creo que está fuera de tema aquí, como se dice a continuación.
No sé. Tal vez hay otra manera. Como deshabilitar FUSE y crear un enlace simbólico.

Respuestas (1)

Usted parece estar perdiendo el punto. En realidad algunos de ellos:

  • El almacenamiento de la tarjeta SD emulada no tiene nada que ver con la falta de compatibilidad con la tarjeta SD física de algunos dispositivos.
  • Es un área de almacenamiento público por diseño.
  • Se implementa a través de FUSE: no es un dispositivo de bloque real y no puede simplemente reformatearlo en cualquier sistema de archivos que desee.
  • Poder compartir archivos a través MTPde depende de la implementación actual y el cambio que sugiere lo rompería.
Sé que es por diseño y que perderé MTP. Pero no me importa porque la preocupación por la seguridad/privacidad es demasiado grande. ¿Sería posible usar FUSE para cambiarlo de manera que pueda administrar los permisos con chown/chmod? Y si es así, ¿hay trampas?
Como dice el refrán, si tienes que preguntar, la respuesta es no . Los cambios que desea no se pueden lograr con unos simples comandos de shell y cambios de configuración; deberá escribir su propia FUSEimplementación. Si bien es ciertamente factible, es un tema fuera de lugar aquí. Y las trampas obvias incluirían algunas aplicaciones que simplemente se niegan a funcionar.
¿ Puedes dar más detalles you will need to write your own FUSE implementation? ¿Está 100% seguro de que esta sería la única manera?