Comment fonctionne la session invité d’Ubuntu ?

closeCet article a été publié il y a 7 ans 7 mois 16 jours, il est donc possible qu’il ne soit plus à jour. Les informations proposées sont donc peut-être expirées.

Après avoir cherché en vain des détails déjà écrits (quelque soit la langue), c’est une petite investigation du fonctionnement de la session invité telle que proposée sur Ubuntu que j’ai faite pour répondre à une question d’un utilisateur débutant. Une question que je ne m’étais d’ailleurs jamais posé, et j’ai donc ressorti VirtualBox pour l’occasion.

La réponse est simple, c’est le gestionnaire de sessions qui s’en charge, en l’occurrence LightDM. Fait amusant, pour une fois, même écrit et maintenu majoritairement par des gens de Canonical, qui sont derrière Ubuntu, c’est celui qui est utilisé par Manjaro par défaut, en tout cas sur mon installation, et probablement par d’autres, puisqu’on trouve des ressources Debian dessus.

Attention, LightDM ne se charge que des sessions graphiques, et un tel composant n’est pas obligatoire dans l’absolu, seulement en mode multi-utilisateurs il rend pas mal de services. Et l’un d’eux, justement, c’est la possibilité de proposer une session invité.

Comment ça fonctionne ? En fait, il crée à la volée un utilisateur temporaire, à partir d’un squelette légèrement différent de celui des utilisateurs classiques « persistents », avec son propre dossier racine. Le dossier racine d’un utilisateur, sous Linux, sert à stocker l’intégralité des paramètres d’utilisation des logiciels propres à l’utilisateur. Si vous avez deux comptes différents sur la machine, chaque compte à son propre profil Firefox, ses propres raccourcis bureau, ses propres fichiers, etc. Ça concerne également l’agencement des icônes du « dock » Unity, cette barre latérale gauche, et les réglages concernant le gestionnaire de mises à jour, bref, toute la personnalisation que vous pouvez faire sur votre système.

Pour causer plus technique, le dossier racine de l’utilisateur temporaire est créé dans le dossier /tmp, qui sur Ubuntu, est un point de montage vers un « ramdisk ». Un ramdisk, c’est un disque virtuel, placé en mémoire vive, donc volatile (perdu dès qu’on éteint la machine ou qu’on le démonte). Plus précisément, le disque virtuel est monté avec le système de fichier tmpfs, qui permet justement de simplifier la création de tels disques virtuels. Leur taille correspond à celle de la mémoire vive.

ubuntu-guest-mountDès qu’on déconnecte de la session, LightDM n’a plus qu’à supprimer l’utilisateur et démonter le dossier. Lorsqu’on veut relancer une session invité, le même processus recommence, création à la volée de l’utilisateur et de son dossier home, lancement d’une session dessus (avec à nouveau les paramètres par défaut).

Si vous voulez modifier certains comportements de la session invité, une page en anglais du wiki Ubuntu vous donnera plusieurs pistes, je n’ai pas encore trouvé d’équivalent stricto-sensu de cette page en version française, mais celle du Wiki Ubuntu est particulièrement riche en détails divers et variés, certains étant même dédiés à une version d’Ubuntu. Faites-vous plaisir 🙂

 

3 Commentaires
Le plus ancien
Le plus récent
Commentaires en ligne
Afficher tous les commentaires
antistress
12/09/2016 01:55

Ça m’intéresse ! À l’époque j’avais demandé à Martin Pitt (qui oeuvre chez Ubuntu) si je pouvais faire marcher cette fonctionnalité sous Debian en installant simplement le paquet gdm-guest-session de Lucid et il m’avait gentiment répondu qu’il ne marchait pas tel que, qu’il fallait un patch pour gdm [1]. Mais du coup, si je comprends ce que tu écris, avec LightDM sous Debian GNOME je pourrais avoir cette fonctionnalité ?
[1] http://bazaar.launchpad.net/~ubuntu-desktop/gdm/ubuntu/annotate/head%3A/debian/patches/14_guest_session.patch

antistress
31/12/2016 12:29
Répondre à  Seboss666

Suite à nos échanges et A ces posts :
https://www.debian-fr.org/t/creer-une-session-invite/30111
http://unix.stackexchange.com/questions/258544/create-guest-account-in-gnome-3-x-on-arch-linux
C’est quand même pas évident
Le plus simple c’est pitet de lancer une nouvelle debian dans une VM au final!?