Utliser Firefox (et autres Mozilla) malgré un /home partagé

Navigateur relativement léger pour son efficatité (euh, ou réciproquement), Firefox est doté d'une amusante fonctionnalité: la gestion de profils. Ce qui pourrait être utile sur une machine perso devient un inconvénient sur des postes clients qui partagent le même /home, car Firefox refuse d'ouvrir plusieurs fois simultanément le même profil (tant que profilexemple est utilisé, le fichier $HOME/.mozilla/firefox/profilexemple/lock existe, et tant que ce fichier existe, profilexemple ne peut être réutilisé). Tu vas voir comment contourner ce petit souci en deux coups de cuiller à pots de Nutella.

Multiplier les profils

Pour un compte susceptible d'utiliser Firefox simultanément sur plusieurs machines, il faut créer un profil pour chaque poste client qui importe le /home. C'est judicieux et très avantageux de donner comme nom de profil le nom d'hôte du client, $HOSTNAME (que l'on peut obtenir grâce à la commande hostname ou uname -n).

La méthode courageuse serait de créer chaque profil via Firefox sur chaque client, et de les configurer tous à l'identique (pfoulala, lourd). Heureusement, il y'a plus simple :

  • D'abord, %BR% il existe déjà un profil par défaut. Tu peux le configurer comme souhaité (préférences, certificats, barre de recherche, marque-pages, tabbrowser...). %BR% Il faut ensuite le nettoyer de toutes informations concernant la vie privée (afin de ne pas dupliquer de capricieux cookies ou de lourde pages du cache) : %BR% Menu > Edition > Préférences > Vie privée > "[Effacer tout]" %BR% Puis quitter cette session de Firefox (afin de ne pas dupliquer le fichier lock).
  • Ensuite, %BR% il s'agit de renommer le répertoire du profil, en lui donnant le nom d'un des clients :%BR% mv $HOME/.mozilla/firefox/bla_bla.default $HOME/.mozilla/firefox/client_1 %BR% Puis tu peux dupliquer le répertoire pour chaque client : %BR% ... %BR% cp -a $HOME/.mozilla/firefox/client1 $HOME/.mozilla/firefox/client_n %BR% À ce stade, un ls $HOME/.mozilla/firefox devrait répondre : %BR% client_1 %BR% ... %BR% client_n %BR% profiles.ini
  • Enfin, %BR% tu peux maintenant éditer le fichier $HOME/.mozilla/firefox/profiles.ini, afin de valider l'existence des profils, et les synchroniser avec leur répertoire respectif. Il doit finalement contenir : %BR% [General] %BR% StartWithLastProfile=0 %BR% %BR% [Profile0] %BR% Name=client_1 %BR% IsRelative=1 %BR% Path=client_1 %BR% %BR% ... %BR% %BR% [ProfileM] %BR% Name=client_n %BR% IsRelative=1 %BR% Path=client_n

Et voilou, les profils sont créés, avec une configuration identique pour tous.

Automatiser le lancement du bon profil

Ceusses qui se servent des clients ne les connaissent pas forcément par leur p'tit nom. Si Firefox demande au démarrage quel profil utiliser, moultes gentes les essaient tous jusqu'à ce que l'un deux fonctionne. Résultat, c'est vite le boxon, sans compter que ce menu de profils est finalement pénible. %BR% Par bonheur, la commande mozilla-firefox -P un_profil permet de spécifier avant lancement le profil choisi. Et voilà tout l'intérêt d'avoir nommé les profils par les noms d'hôte des clients, car il est très facile de récupérer le nom d'hôte dans une variable, puis de passer cette variable comme paramêtre -P. Tu peux donc aisément faire un script de démarrage, et y faire pointer l'icone de lancement, la commande du menu, etc.

Si tu as la flemme (ou que décidément, touçassépaklère), y'a le script (créé par drkvg en 14 secondes) launchzilla.sh (jette un oeil dedans : il est poilant). Tu peux le mettre quelque part dans les $HOME concernés (dans $HOME/.bin c'est élégant). Plus orthodoxe, le mettre dans /usr/local/bin (si le /usr n'est pas importé) nécessite de renseigner le $PATH des comptes concernés.

Profils récalcitrants

Si un profil refuse de démarrer, c'est très probablement qu'il est déjà lancé, généralement sur un autre client. Cela arrive aussi parfois lorsque l'on clique deux fois sur l'icone de lancement dans un environnement en simple clic. Cela arrive enfin lorsqu'un client a été déconnecté du serveur NFS alors qu'une session Firefox était en cours (auquel cas le fichier lock n'est pas effacé du répertoire de profil). Si un profil refuse de se lancer, il faut donc :

  • vérifier s'il est déjà lancé sur le client actuel
  • sinon vérifier s'il est lancé sur un autre client
  • sinon, en dernier recours, vérifer que le fichier lock existe dans le répertoire du profil en question, et s'il y'est, l'effacer (après s'être bien assuré des deux points précédents)
  • si rien de tout ça, nan mais zut à la fin, y'a qu'à installer msIE pour GNU/linux, qui ne s'embarasse pas de profils, lui!

Bonus track

Mouais, cette bidouille ne permet pas de lancer automatiquement plusieurs sessions simultanées sur une même machine. M'enfin remarque, lancer plusieurs fenêtres de Firefox, on s'en tape, vu qu'il gère les onglets. Alors en vrai, le souci c'est d'éviter que n'apparaisse ce maudit menu de profils, ce qui typiquement se produit lorsque quelqu'une arrive sur un poste dont la fenêtre de Firefox à été réduite, et, ignorant qu'il est déjà lancé, clique innocemment sur l'icone du navigateur, ce qui a pour conséquence l'apparition du menu des profils, le choix forcé du profil d'un autre client, et rapidement le fameux foutoir évoqué plus haut (client_1 lancé avec le profil de client_1 + celui de client_2, client_2 avec celui de client_3, et client_3 bien malheureux sans aucun profil à lancer). Bref, toute une aventure qui fleure bon le vécu... %BR% Soit, je ne ferai pas durer le suspens plus longtemps, la solution existe(rait) : Tabbrowser Extensions est ton ami. Si c'est pas déjà fait, apt-get install mozilla-tabextensions. Hélas, je n'ai pas déterminé avec certitude (pas vraiment vérifié faut dire) quelle option le fait, mais il semblerait que ça se situe quelque part vers le "mode fenêtre unique" : %BR% Onglets > Préférences de Tabbrowser Extensions > Tabbrowser Extensions > Général > Comportement > (¤) Toujours utiliser une seule fenêtre (Mode Fenêtre Unique) %BR% Finalement, je présente ça sous toutes réserves, parce que j'ai pas encore réellement vérifié, mais comme c'est sur un Wiki, on corrigera plus tard si c'est une vilaine ânerie, n'est-ce pas...

Ça peut être super utile, sur un compte public, d'empêcher la modification des préférences (afin d'éviter par exemple que de vilaines gentes ne valident (¤) Retenir les mots de passe dans la rubrique Vie privée, ou ne ruinent des heures de minutieux peaufinage de Tabbrowser). La parade ne s'adresse pas aux vrais malzintentionnés, qui sauront la contourner, mais juste aux souris balladeuses : %BR% cd $HOME/.mozilla/firefox/un_profil/ %BR% chmod -w bookmarks.html prefs.js tabextensions.js %BR% ... pis tant qu'on y est, autant le faire avant la multiplication des profils %BR% Puisqu'il faut un script pour lancer Firefox, il est bien sur envisageable de faire un machin encore plus sophistiqué, qui sécuriserait tout ça plus solidement.

Idée à deux balles : un profil unique, et un script qui effacerait le fichier lock avant le lancement d'une nouvelle session, AH AH AH !!!

Tu peux toi aussi t'amuser à trouver d'autres problèmes avec leur solution, d'autres combines (par exemple, comment faire pour qu'une modification des préférences sur un client se répercute automatiquement sur les autres) et en faire part à tes amies, ici-même.