Je joue avec des conteneurs LXD et je n'arrive pas à comprendre complètement ce qui se passe avec l'isolement. Voici mon scénario:
launch ubuntu:16.04 mycontainer
lxc exec mycontainer /bin/bash
et apt install firefox
adduser myuser
vi /etc/sshd_config
pour autoriser ssh avec mot de passe, puis depuis la session principale ssh-copy-id myuser@mycontainer-ip
ssh -X myuser@mycontainer-ip
et firefox
Si je n'ai pas Firefox ouvert dans ma session principale, un Firefox isolé apparaît: pas d'accès à mes fichiers de session principale, pas de plugin, etc ...
Mais, si Firefox est déjà en cours d'exécution dans ma session principale, le lancement de FF à partir de ma session ssh -X dans le conteneur ouvre une autre fenêtre FF qui n'est pas isolée et s'exécute en tant que mon utilisateur principal (avec mes plugins, l'accès aux fichiers, etc ... ).
Qu'est-ce qui se passe ?
J'ai ouvert un rapport de bogue sur le github de lxd et Stéphane Graber m'a donné la réponse: c'est une fonctionnalité de Firefox, qui peut être basculé avec le --no-remote
commutateur. Alors bien sûr pas de problème avec LXD!
Citant Stéphane:
Je n'ai pas utilisé Firefox depuis longtemps, mais je pense qu'ils ont du code pour trouver et interagir avec un Firefox existant via les propriétés X.
Puisque vous passez "-X", votre conteneur a accès à votre serveur X et peut donc interroger/définir les propriétés X, lister toutes les fenêtres en cours d'exécution, ... ce qui est très probablement la façon dont firefox détecte une session firefox existante et lui fait ouvrir une nouvelle plutôt que d'engendrer un nouveau processus.
Je m'attendrais à ce qu'il y ait une option de ligne de commande pour Firefox pour qu'il ne le fasse pas.
se https://github.com/lxc/lxd/issues/3049
Lancement donc firefox --no-remote
du conteneur empêche Firefox d'ouvrir une nouvelle fenêtre dans ma session principale.