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.