10 votos

¿Se aplican los permisos a todos los usuarios?

Si creo un usuario secundario e instalo una aplicación mientras utilizo el teléfono como ese usuario, ¿se transferirán los permisos de esa aplicación al usuario principal?

Por ejemplo, supongamos que tengo un usuario principal, Foo, con una cuenta de Google foo@gmail.com. A continuación, creo el usuario Bar con la cuenta bar@gmail.com. Mientras utilizo el teléfono como Bar, instalo una aplicación con el permiso "encontrar cuentas en el dispositivo".

¿Permitirá esto que la aplicación vea las cuentas que he registrado con la cuenta principal, es decir, foo@gmail.com? ¿Será capaz siquiera de encontrar al usuario principal o hay límites rígidos entre los "espacios de trabajo" de los usuarios (a falta de un término mejor) y, por lo que puede ver la aplicación, sólo hay Bar y sus cuentas registradas en el dispositivo?

En general, me preocupa que las aplicaciones se enteren de mis datos personales, contactos, correos electrónicos, etc., y me gustaría utilizar una cuenta "ficticia" para cualquier aplicación que considere hostil en este sentido. ¿Funcionaría?

Tengo un Nexus 5X con Android 6.0.1.

0 votos

¿Qué tal si cambias el título por algo como "¿Se puede utilizar un usuario secundario para hacer un sandbox de una aplicación y proteger la información personal?" ? Creo que refleja mejor su pregunta. Además hay un multiusuario que también podría ser adecuada en este caso.

6voto

WhiteWinterWolf Puntos 249

Google ha documentado tanto el función multiusuario y la API asociada que muestra lo que una aplicación podría hacer con él.

Entre bastidores, la función multiusuario se basa en el sistema SELinux multinivel (MLS, también conocido como multicategorías), en el que cada usuario está asociado a su propia categoría SELinux (véase la presentación de la NSA SELinux en Android Lollilop y Marshmallow como referencia, en particular las diapositivas 13 y 14). Esto proporciona una separación muy robusta y fiable entre usuarios, que se aplica a nivel del núcleo de Android y, por tanto, es difícil de eludir.

En este esquema, hay recursos públicos y privados. Los recursos públicos se comparten entre todos los usuarios, mientras que los privados son propiedad privada de cada usuario y no pueden acceder a ellos los demás.

  • Los recursos públicos incluyen principalmente las aplicaciones instaladas y la configuración global del teléfono. Tenga en cuenta que puede restringir la forma en que los usuarios secundarios pueden utilizar el dispositivo, por ejemplo, se puede impedir que los usuarios secundarios pasen cualquier llamada telefónica.
  • Los recursos privados incluyen principalmente la configuración local del usuario, la aplicación local y los datos del usuario.

Veamos ahora cuáles son las consecuencias concretas de estas afirmaciones (reutilizo tu convención de usuario Foo como usuario principal y usuario Bar como secundario).

Si creo un usuario secundario e instalo una aplicación mientras uso el teléfono como ese usuario, ¿se transferirán los permisos de esa aplicación al uso usuario principal?

Las aplicaciones instaladas son consideradas como recursos públicos, por lo tanto si el usuario Bar instala una aplicación entonces la misma aplicación también estará disponible para el usuario Foo, incluso si el usuario Foo nunca aceptó explícitamente los permisos solicitados por la aplicación.

Sin embargo, el usuario Bar no tendrá forma de hacer que la aplicación se ejecute en el perfil de Foo, ni tendrá acceso a los datos privados de Foo. Además, excepto en el caso de una aplicación con errores graves o directamente maliciosa (es decir, una aplicación que copie datos privados en alguna ubicación compartida), tanto Foo como Bar pueden ejecutar la aplicación, y los datos privados de Foo y Bar permanecerán seguros (incluso pueden utilizarlos al mismo tiempo si la aplicación lo permite, si no, simplemente se negará a iniciarse o se bloqueará).

Por ejemplo, supongamos que tengo un usuario principal, foo@gmail.com. A continuación, creo el usuario Bar con la cuenta bar@gmail.com. Mientras uso el teléfono como Bar, instalo una app con el permiso "encontrar cuentas en el dispositivo".

¿Permitirá esto que la aplicación vea las cuentas cuenta principal, es decir, foo@gmail.com?

Sólo quiero advertir para no confundir el "Buscar cuentas en el dispositivo" permiso con la función multiusuario que no está relacionada. Cada usuario tiene su propia lista de cuentas que se considera información privada y, por tanto, no se comparte con los usuarios de ningún otro dispositivo.

Cuando Bar ejecute la aplicación, sólo estarán disponibles las cuentas de Bar, mientras que cuando Foo ejecute la aplicación sólo estarán disponibles las cuentas de Foo.

¿Será capaz de encontrar al usuario primario o hay algún problema? entre el "trabajo" del usuario por lo que la aplicación puede ver, sólo hay Bar y sus cuentas registradas en el dispositivo. registradas en el dispositivo?

La lista de usuarios parece ser considerada como información pública, muy probablemente como herencia histórica del mundo Unix ya que no veo ninguna razón técnica para ello. Personalmente hubiera agradecido que no fuera así (es decir, los usuarios más como sandboxes transparentes que los usuarios estándar de Unix, al menos mientras no se conceda a las aplicaciones algún permiso específico).

De todos modos, el Documentación de la API de Android enlazada al principio de este post enumera los métodos que una aplicación puede utilizar para recopilar información sobre los usuarios actuales y otros usuarios. La mayoría de ellos no parecen requerir ningún permiso específico.

En general, me preocupa que las aplicaciones se enteren de mis datos personales. personales, contactos, correos electrónicos, etc, y me gustaría utilizar una cuenta "ficticia para cualquier aplicación que considere hostil en este sentido. ¿Funcionaría?

Sí, incluso creo que esto puede ser una muy buena idea, sólo asegúrese de estar en su cuenta ficticia al lanzarlo ya que la misma aplicación también puede estar disponible para su usuario principal.

Notas de usabilidad:

La función multiusuario en los sistemas Android todavía parece muy joven y poco madura. Esto significa que hay cambios impactantes entre versiones de Android y problemas de compatibilidad.

Por ejemplo:

  • Tipos de usuario y gestión de autorizaciones: la forma en que el usuario principal y/o una plataforma central corporativa de administración de dispositivos pueden definir o restringir los derechos de los usuarios secundarios/restringidos/de perfil/huéspedes en cuanto a la funcionalidad y las aplicaciones que pueden utilizar o instalar está sujeta a grandes cambios entre las versiones de Android y los dispositivos subyacentes (aunque sigan ejecutando Android, las tabletas pueden ofrecer opciones diferentes a las de los teléfonos móviles).
  • Lo mismo se aplica a la forma en que se procesan la instalación de aplicaciones, las solicitudes de permisos, el uso compartido de aplicaciones y la desinstalación (pueden estar disponibles directamente, pueden mostrarse pero estar marcadas como "No instalado para este usuario" pueden no mostrarse en absoluto dejando el APK disponible, etc.).
  • Algunas características pueden ir y venir entre el estado roto y fijo entre versiones (el "Permitir fuentes desconocidas" para usuarios secundarios ha sido supuestamente no disponible en 5.0, arreglado en 5.1, roto en 6.0, arreglado de nuevo en 6.0.1).
  • Algunas aplicaciones pueden no funcionar cuando se utiliza un usuario secundario ( F-Droid por ejemplo).

Todavía hay lo que considero características que faltan, por ejemplo, no hay manera adecuada para que un usuario para cerrar la sesión .

3voto

greg84 Puntos 111

Las dos cuentas deben estar separadas, tanto en lo que respecta a los datos como a los permisos.

En Ars Technica :

Los permisos son únicos para cada usuario, por lo que si alguien por ahí está realmente utilizando el modo multiusuario de Android, una persona que concede un permiso no afecta a nadie más.

Y desde el Guía para desarrolladores de Android :

Siempre que tu aplicación guarde las preferencias del usuario, cree una base de datos o escriba un archivo en el espacio de almacenamiento interno o externo del usuario, esos datos sólo serán accesibles mientras se ejecute como ese usuario.

PreguntAndroid.com

PreguntAndroid es una comunidad de usuarios de Android en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X