¿Es posible restringir los permisos de una aplicación a una carpeta o carpetas específicas (y subcarpetas)?

Al instalar una aplicación, según la aplicación, se requiere acceso al sistema de archivos y se solicita en el momento de la instalación. ¿Es posible restringir esto a carpetas específicas y sus subcarpetas? Por ejemplo, un editor de fotos o una aplicación de diario: ¿por qué esas aplicaciones deberían poder acceder a todo el sistema de archivos?

Si no, puede que no sea una mala idea, desde el punto de vista de la seguridad...

1) Puede que me lo haya perdido, pero no recuerdo un permiso de Android relacionado con el acceso al sistema de archivos, sino solo al almacenamiento compartido. 2) Android usa el kernel de Linux, por lo que siempre puede restringir archivos y carpetas para algo mediante el uso de grupos. // Dicho esto, tu idea es amplia para mí, así que te sugiero que identifiques el problema específico que estás teniendo.
Si no necesita acceso (a excepción de las carpetas específicas de la aplicación), simplemente no solicite ninguna. De forma predeterminada, cada aplicación puede escribir en su propio espacio de almacenamiento, es decir, /data/data/<package_name>y /sdcard/Android/data/<package_name>. Un editor de fotos necesitaría "acceso completo" si desea editar fotos existentes que residen fuera de ese alcance, por supuesto. // Aparte de eso, ¿cuál es el trasfondo de tu pregunta? Qué permiso solicitar es una decisión del desarrollador de la aplicación con la que los usuarios no podemos tratar.
No está claro sobre qué sistema de archivos y directorios está preguntando OP. O se trata de almacenamiento completamente privado o directorios privados en almacenamiento compartido o almacenamiento compartido público o partición del sistema operativo ( /systemetc.)

Respuestas (1)

Podría funcionar en teoría.

Cada aplicación instalada en un teléfono Android recibe una identificación de usuario a partir de 10000 para la primera aplicación y se crea un grupo con la misma identificación.

¡Se requiere BusyBox (y root, tal vez?)!

Para obtener el uid de una aplicación, ejecute lo siguiente en un emulador de terminal.

dumpsys package com.example.myapp

Reemplace com.example.myapp con el nombre del paquete de su aplicación de destino.

  1. Formatee su almacenamiento (externo/interno) con ext4, asumiendo que tiene una copia de seguridad de todos los archivos.
  2. Restaurar la copia de seguridad.
  3. chown y chmod las carpetas que desea restringir. Basar tus restricciones en grupos será una mejor opción.

Nuevamente, es solo teoría. Puede o no funcionar. Si no entendió alguno de los pasos, infórmese bien sobre ellos o no los intente. Esto puede causar pérdida de datos temporal y permanente.

ext4En el diseño de almacenamiento de Android , no es posible formatear el almacenamiento externo . Es almacenamiento compartido entre muchos UID, por lo que se utiliza un sistema de archivos sin permisos.
@IrfanLatif Está destinado a formatear usando ext4 usted mismo. Ni una sola vez dije que venía con ext4. Ha sido posible que su tarjeta sd sea reconocida con un fs no predeterminado para algunos dispositivos. Excepto la tarjeta SD emulada y otro almacenamiento externo, todas las rutas de almacenamiento ya están restringidas según el UID de las aplicaciones.