Usuario Linux y acceso a ficheros

Cada aplicación Android va a ser ejecutada en un proceso Linux independiente. Esto va a limitar su acceso directo al hardware y que pueda interferir con otras aplicaciones. Es lo que se conoce como ejecución en caja de arena.

Para impedir que otras aplicaciones puedan acceder a los ficheros creados por nuestra aplicación, Android crea una cuenta de usuario Linux (user ID) nueva por cada paquete (.apk) instalado en el sistema. Este usuario se crea cuando se instala la aplicación y permanece hasta que la aplicación es desinstalada.

Cualquier dato almacenado por la aplicación será asignado a su usuario Linux, por lo que normalmente no tendrán acceso otras aplicaciones. No obstante, cuando crees un fichero puedes usar los modos MODE_WORLD_READABLE y/o MODE_WORLD_WRITEABLE para permitir que otras aplicaciones puedan leer o escribir en el fichero. Aunque otras aplicaciones puedan escribir el fichero, el propietario siempre será el usuario asignado a la aplicación que lo creó.

Dado que las restricciones de seguridad se garantizan a nivel de proceso, el código de dos paquetes no puede, normalmente, ejecuten en el mismo proceso. Para que dos aplicaciones se ejecuran en un mismo proceso, sería necesario usar el mismo usuario. Puedes utilizar el atributo sharedUserId en AndroidManifest.xml para asignar un mismo usuario Linux a dos aplicaciones. Con esto conseguimos que a efectos de seguridad ambas aplicaciones sean tratadas como una sola. Por razones de seguridad, ambas aplicaciones han de estar firmadas con el mismo certificado digital.

Preguntas de repaso : Usuario Linux