FLASH INFORMATIQUE FI



public averti Itinérance de préférences GNU/Linux à l’EPFL


Cet article décrit la technique (dénommée epfl_roaming) développée par les facultés ENAC et I&C pour conserver et rendre itinérantes les préférences utilisateur d’un ensemble choisi d’applications sur les postes GNU/Linux en libre service.



How to make application and desktop settings roam on the GNU/Linux self-service workstations at EPFL for a selected set of applications . This article describes the tool (named epfl_roaming) developped by both ENAC and I&C which fulfills these needs.


Samuel BANCAL



Préambule

Lorsque l’on considère le déploiement de salles de PC mises à disposition d’un ensemble d’utilisateurs, plusieurs sujets doivent être abordés. Cela commence par l’identification de l’utilisateur, son authentification, puis son accès à des ressources telles que réseau, stockage, impression... Arrivent ensuite le choix des applications à installer et leur paramétrage. Finalement vient la question qui nous intéresse ici : comment conserver, pour chaque utilisateur, ses préférences d’applications et/ou de bureau  ?
Ce dernier point pourrait tout à fait être éludé en appliquant lors de chaque nouvelle session des préférences par défaut. L’utilisateur se retrouve alors systématiquement dans un environnement neuf.

Les préférences applicatives

Toute application souhaitant conserver une information pour un utilisateur peut le faire en suivant deux standards sur GNU/Linux.

  • Créer un fichier ou un dossier caché dans le home de l’utilisateur. Exemple pour le client ssh : $HOME/.ssh/ .
  • Dans l’environnement de bureau GNOME, créer une ou plusieurs clefs gconf  dans une branche dédiée à cette application. Exemple pour shotwell : /apps/shotwell/preferences/editing/external_raw_editor.

L’espace de stockage

Avant de régler la question des préférences à sauver, il est nécessaire de résoudre celle plus générale du stockage (qui inclut aussi les données utilisateur). En considérant un espace de stockage centralisé, tel qu’offert par le nouveau service de fichiers EPFL files[0-9].epfl.ch , deux possibilités s’ouvrent à nous :

Stockage centralisé, approche 1

Une première possibilité consiste à monter directement l’espace personnel sur le home directory, concrètement sur le point de montage /home/username . C’est une pratique très courante.

avantages

  • Facile à mettre en place, avec l’outil autofs  par exemple.
  • Les préférences des applications se trouvent automatiquement sur le serveur de fichiers, elles sont donc itinérantes par défaut.

inconvénients

  • Pas possible de choisir quelles préférences sont conservées, toutes le sont.
  • Dans le cas où plusieurs environnements vont accéder à ce même répertoire comme home directory, les préférences applicatives vont être mélangées. Prenons à titre d’exemple concret deux salles, gérées indépendamment, qui mettent chacune à disposition une version différente de Firefox. Le passage de la version plus ancienne à la plus récente se fera par une migration à chaud des préférences utilisateur, tandis que le passage inverse débouchera sur une incompréhension complète ou partielle des fichiers de préférences.
  • Dans la version de GNOME d’aujourd’hui, un dossier particulier $HOME/.gvfs est utilisé pour effectuer des montages dynamiques (stockage externe USB/FireWire ou lecteurs réseau), ceci sans être obligé de passer par le fichier classique /etc/fstab et d’utiliser le compte root. Pour que cette fonctionnalité soit active, il est nécessaire que ce dossier soit local (l’explication sort de l’objectif de cet article).

Stockage centralisé, approche 2

Une seconde possibilité consiste à monter l’espace dans un dossier enfant du home directory, concrètement : /home/username est local, et /home/username/myfiles est le point de montage.

avantages/inconvénients

  • Montage géré par des scripts maison -> davantage de souplesse.
  • Pas de préférences itinérantes par défaut -> mécanisme à implémenter.

Le choix

Les trois inconvénients de la première approche étant bloquants dans notre cas, l’utilisation du stockage centralisé des données utilisateur va s’appuyer sur la seconde.

L’itinérance

Des fichiers et dossiers

Pour rendre une application itinérante, il suffit de placer ses fichiers/dossiers de préférence dans l’espace de stockage centralisé de l’utilisateur. Ceux-ci sont rendus accessibles à leur emplacement par défaut grâce à des liens symboliques, tel que présenté par la figure ci-dessus.

cas particulier : la condition initiale

Par défaut un utilisateur n’a de préférences que pour les applications qu’il a déjà utilisées. Pour cette raison, lors du login, il se peut que certains fichiers/dossiers itinérants n’existent pas encore. La façon la plus souple est alors de ne rien faire pour ces éléments lors du login. S’ils sont créés durant la session, la procédure de logout les placera pour qu’ils soient retrouvés lors de la prochaine session.

Des clefs gconf

Les clefs gconf peuvent être vues comme un ensemble de fichiers placés dans une arborescence dédiée. Il n’est cependant pas possible de les traiter comme de simples fichiers/dossiers. Exemple concret avec la clef la plus connue pour GNOME, /desktop/gnome/background/picture_filename . Sa valeur est stockée dans le fichier %gconf.xml du dossier $HOME/.gconf/desktop/gnome/background/ . Dans le cas où nous souhaitons conserver uniquement cette clef, nous aurons deux problèmes :

  • Ce fichier %gconf.xml contient l’information d’autres clefs gconf que l’on ne souhaite pas conserver.
  • Chaque dossier contenant une partie de la base de données gconf doit contenir un fichier %gconf.xml. Il ne suffit donc pas de restaurer le fichier en bout d’arborescence.

La solution consiste alors à traiter les clefs gconf indépendamment des fichiers/dossiers de préférences en faisant un export des clefs désirées lors du logout et de les restaurer lors du login.

Itinérant, mais cohérent

L’EPFL ayant plusieurs gestionnaires de salles (dans plusieurs facultés), l’emplacement pour stocker les préférences itinérantes doit être choisi en fonction de l’entité de gestion de ces salles. Par exemple, pour les salle ENAC-SSIE gérées par le groupe ENAC-IT1, nous les placerons dans un dossier créé à cet effet epfl_roaming/enacit/it1/.
Dans le cas où un couplage fort se fait entre plusieurs gestionnaires de salles sur la version déployée d’une application et ses paramétrages, il est alors possible d’utiliser un dossier plus global, tel que epfl_roaming/global.

La procédure

opérations lors du login

  • Création du home directory $HOME.
  • Montage de $HOME/myfiles.
  • Pour tous les éléments définis et déjà existants : création des liens symboliques.
  • Restauration des clefs gconf utilisateur précédemment sauvées .

opérations lors du logout

  • Pour tous les éléments définis, inexistants lors du login : copie des préférences locales vers le stockage centralisé.
  • Export des clefs gconf utilisateur désirées.
  • Démontage de $HOME/myfiles.
  • Suppression de $HOME (il ne reste ainsi plus aucune trace locale, tout ce qui reste est itinérant).

Le fichier de configuration epfl_roaming.conf

1. # Montage possible en NFSv4:
2. mount -t nfs4 files_SCIPER_.epfl.ch:/dit-files_SCIPER_-t1/data/_USERNAME_
    /home/_USERNAME_/myfiles -o proto=tcp,sec=krb5,port=2049
3.
4. # Montage possible en CIFS:
5. mount -t cifs //files_SCIPER_.epfl.ch/data/_USERNAME_ /home/_USERNAME_/myfiles
    -o user=_USERNAME_,uid=_USERNAME_,gid=_GROUP_,file_mode=0770,dir_mode=0770,
    rw,nobrl,noserverino,iocharset=utf8
6.
7. # Liens symboliques:
8. link "+myfiles/My Documents/"        "Desktop/My Documents/"
9. link "myfiles/epfl_roaming/enacit/it1/.bashrc"        ".bashrc"
10. link "myfiles/epfl_roaming/enacit/it1/.mozilla/"        ".mozilla/"
  • Les lignes 2 et 5 décrivent des instructions de montage. Les paramètres en majuscules entourés de soulignés (_USERNAME_, _SCIPER_, ...) sont remplacés à la volée par les attributs correspondants de l’utilisateur. Ces 2 exemples couvrent les 2 protocoles les plus probables pour cette application. En production, il faudra en choisir un seul.
  • Les lignes 8 à 10 décrivent des liens symboliques. Le premier argument donne la cible du lien, le second l’emplacement où créer ce lien (les 2 relatifs au home directory). Le + de la ligne 8 force la création de la cible dans le cas où celle-ci n’existait pas encore.

La surprise de parcours

Les séquences de login et de logout sont les éléments-clefs de ce projet. Durant les phases de tests, il était crucial de vérifier que le transfert des données se faisait entièrement avant que l’accès à certaines ressources ne soit coupé. La plus grande surprise a été de constater qu’une extinction de la machine shutdown se faisait sans suivre la procédure d’appels standards de logout. Il s’est avéré que le shutdown et le reboot sont considérés comme des opérations système qui ne déclenchent pas la procédure de déconnexion du compte utilisateur (à travers les PAM ). C’est un raccourci qui peut passer inaperçu dans la majorité des cas, mais qui est handicapant pour ce projet. La solution a été de définir un service système qui, lors de l’extinction de la machine, fait le tour de tous les utilisateurs encore connectés et initie le travail de logout au sens epfl_roaming.

Un développement générique EPFL

Dans le but que la solution soit utilisable dans d’autres contextes que celui de leurs auteurs, elle est ajustable grâce au fichier de configuration (tel que l’exemple). Ainsi avec le même outil, deux salles distinctes peuvent avoir un comportement qui leur est propre.
La solution présentée ici est en production depuis le semestre d’automne 2010 dans les salles GNU/Linux en ENAC-SSIE et I&C, excepté pour la partie gérant les clefs gconf qui devrait le devenir tout prochainement. Les distributions utilisées sont Ubuntu 10.04LTS et Ubuntu 10.10. Tout administrateur intéressé par ce mécanisme est encouragé à contacter l’auteur.



Glossaire

autofs :
outil open-source permettant de faire des montages automatiques lorsque les ressources sont accédées. (plus d’info) .
gconf :
base de données GNOME utilisée pour stocker/appliquer des paramètres d’applications. Les informations sont classées dans une arborescence et enregistrées sous forme de clef-valeur. Chaque clef possède en outre des attributs tels que son propriétaire et sa description (plus d’info).
Home directory :
répertoire dédié à l’utilisateur, noté généralement $HOME ou /home/username. Tout ce qui s’y trouve est sensé lui appartenir. L’utilisateur par défaut ne devrait pas travailler hors de ce répertoire. Les applications y déposent aussi les préférences utilisateur.
Monter :
action qui consiste à faire correspondre à un emplacement local choisi le contenu d’un autre (local ou distant). Dans le monde Windows l’équivalent est Connecter un lecteur réseau.
PAM :
Pluggable Authentication Modules, mécanismes gérant toutes les étapes du login et du logout d’un utilisateur. (plus d’info).


Cherchez ...

- dans tous les Flash informatique
(entre 1986 et 2001: seulement sur les titres et auteurs)
- par mot-clé

Avertissement

Cette page est un article d'une publication de l'EPFL.
Le contenu et certains liens ne sont peut-être plus d'actualité.

Responsabilité

Les articles n'engagent que leurs auteurs, sauf ceux qui concernent de façon évidente des prestations officielles (sous la responsabilité du DIT ou d'autres entités). Toute reproduction, même partielle, n'est autorisée qu'avec l'accord de la rédaction et des auteurs.


Archives sur clé USB

Le Flash informatique ne paraîtra plus. Le dernier numéro est daté de décembre 2013.

Taguage des articles

Depuis 2010, pour aider le lecteur, les articles sont taggués:
  •   tout public
    que vous soyiez utilisateur occasionnel du PC familial, ou bien simplement propriétaire d'un iPhone, lisez l'article marqué tout public, vous y apprendrez plein de choses qui vous permettront de mieux appréhender ces technologies qui envahissent votre quotidien
  •   public averti
    l'article parle de concepts techniques, mais à la portée de toute personne intéressée par les dessous des nouvelles technologies
  •   expert
    le sujet abordé n'intéresse que peu de lecteurs, mais ceux-là seront ravis d'approfondir un thème, d'en savoir plus sur un nouveau langage.