7 votes

Étant donné que chaque application s'exécute en tant qu'utilisateur distinct, que se passe-t-il lorsque vous souhaitez ajouter un nouveau compte utilisateur?

Selon ceci, chaque application sous Android s'exécute en tant qu'utilisateur de niveau noyau séparé, avec un identifiant d'utilisateur et un identifiant de groupe uniques.

Alors, que se passe-t-il sous le capot lorsque vous ajoutez un nouvel utilisateur (par exemple, sur votre tablette partagée) ?

17voto

Andy Brudtkuhl Points 1714

Les identifiants d'utilisateur Linux qu'Android utilise pour isoler les applications les unes des autres sont complètement indépendants des profils d'utilisateur sur les tablettes Android 4.2.

Sous Android, chaque application a son propre répertoire pour sauvegarder les données. Le système d'identifiants d'utilisateur Linux est utilisé pour s'assurer que les applications ne peuvent pas lire les données des autres. Mais tous ces répertoires de données se trouvent à l'intérieur d'un répertoire sur le système de fichiers, /data/user/0. Disons que le premier utilisateur s'appelle Abulurd, et qu'il installe l'application Showr. Elle peut se voir attribuer l'identifiant d'utilisateur 1004, et le répertoire /data/user/0/com.shadowburst.showr.

Maintenant, supposons que vous créiez un nouveau profil utilisateur pour Béatrice. Elle obtient un nouveau répertoire, /data/user/1, qui démarre vide. Lorsqu'elle se connecte à l'appareil et installe Showr, l'application ne télécharge pas à nouveau l'application (car l'installateur d'applications Android sait que le fichier APK est déjà sur l'appareil), mais elle crée un nouvel identifiant d'utilisateur 1007 (par exemple), et un nouveau répertoire /data/user/1/com.shadowburst.showr.

Android utilise les autorisations du système de fichiers Linux, ainsi que les différents identifiants d'utilisateur Linux, non seulement pour s'assurer que le Showr d'Abulurd ne peut pas lire les données des autres applications d'Abulurd, mais aussi que le Showr d'Abulurd ne peut pas lire les données du Showr de Béatrice. Les deux instances de Showr s'exécutent dans des processus différents, avec des identifiants d'utilisateur différents.

Si vous êtes familier avec la terminologie Linux, la création d'un nouveau profil utilisateur est similaire à l'utilisation de chroot sur l'appareil pour obtenir une partie isolée du système de fichiers pour exécuter des applications.

Ce que j'ai décrit est le processus habituel, mais tout comme les applications peuvent être écrites pour partager un répertoire de données avec d'autres applications du même développeur (signées avec la même clé), Android donne aux applications la possibilité de dire qu'elles fonctionnent avec plusieurs utilisateurs. De cette façon, une application peut être écrite pour avoir un seul processus pour tous les profils d'utilisateur, afin de leur permettre de partager des données ou d'effectuer une fonction spéciale. Par exemple, l'écran de verrouillage doit fonctionner de cette manière, car tous les profils d'utilisateur partagent une seule application d'écran de verrouillage, qui doit lire les paramètres d'écran de verrouillage de tous les utilisateurs.

2voto

Milner Points 533

Ce qui se passe lorsque vous ajoutez un nouveau compte utilisateur est la création d'un nouveau compte (ou "profil utilisateur"). Cela n'a rien à voir avec la gestion des utilisateurs/groupes au niveau du système d'exploitation. Vous remarquerez que la plupart des tutoriels (par exemple celui-ci sur HowToGeek) parlent de comptes, car le terme "utilisateur" serait plutôt trompeur.

Je ne suis pas un développeur Android, donc je ne peux pas vous donner une explication technique plus approfondie. Mais autant que je sache, la fonctionnalité multi-utilisateur est réalisée au-dessus du noyau Linux (c'est-à-dire en Java/Dalvik). EDIT: Dan a posté sa réponse en même temps que la mienne, donc allez voir là-bas pour le contexte technique :)

androidalle.com

AndroidAlle est une communauté de androiders où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X