tmux et GNU Screen sont des utilitaires bien connus qui permettent le multiplexage de consoles virtuelles. En utilisant l'un ou l'autre, il est possible de démarrer une session, de se détacher, de passer à une autre machine et de reprendre la session sans interruption. Il est également possible d'utiliser ces outils pour partager une même session entre plusieurs utilisateurs en même temps.
Partage de session de terminal de base avec un seul compte
Si un compte est détenu conjointement entre deux ou plusieurs utilisateurs, alors le partage de la console du terminal est très simple. Ni tmux ni screen ne nécessitent quoi que ce soit d'extraordinaire pour le partage de base entre un seul compte connecté plusieurs fois. Le partage de base est très facile si vous êtes tous les deux connectés en tant que même utilisateur.
Partage de base avec écran
Dans un terminal, créez une nouvelle session pour screen, où foobar est le nom de votre session d'écran :
screen -S foobar
Ensuite, dans l'autre terminal, attachez-vous à cette session.
screen -x foobar
Ça y est, il n'y avait que deux étapes.
Partage de base avec tmux
Encore une fois, il n'y a que deux étapes. Dans le premier terminal, démarrez tmux où shared est le nom de la session :
tmux new-session -s shared
Ensuite, dans le deuxième terminal, attachez-vous à la session partagée.
tmux attach-session -t shared
C'est tout.
Partage de sessions de terminal entre deux comptes différents
Le partage entre deux comptes différents nécessite quelques étapes supplémentaires pour accorder les privilèges nécessaires à un compte pour accéder à la session d'un autre. Dans certains cas, il faudra l'aide de l'administrateur système pour préparer la configuration.
Partage entre deux comptes différents avec tmux
Pour différents utilisateurs, vous devez définir les autorisations sur le socket tmux afin que les deux utilisateurs puissent le lire et l'écrire. Il n'y a qu'un seul prérequis, qu'il y ait un groupe en commun entre les deux utilisateurs. Si un tel groupe n'existe pas il faudra en créer un.
Dans le premier terminal, démarrez tmux où shared est le nom de la session et partagés est le nom de la socket :
tmux -S /tmp/shareds new -s shared
Chgrp ensuite le socket vers un groupe que les deux utilisateurs partagent en commun. Dans cet exemple, joint est le groupe que les deux utilisateurs partagent. S'il y a d'autres utilisateurs dans le groupe, ils ont également accès. Il peut donc être recommandé que le groupe ne soit composé que de deux membres.
chgrp joint /tmp/shareds
Dans le deuxième terminal, connectez-vous à l'aide de ce socket et de cette session.
tmux -S /tmp/shareds attach -t shared
C'est ça. La session peut être rendue en lecture seule pour le deuxième utilisateur, mais uniquement sur une base volontaire. La décision de travailler en lecture seule est prise lorsque le second utilisateur se connecte à la session.
tmux -S /tmp/shareds attach -t shared -r
Partage entre deux comptes différents avec screen
Si vous êtes connecté en tant que deux utilisateurs différents, il y a trois conditions préalables à l'utilisation de screen. Tout d'abord, screen doit être défini sur SUID et il est nécessaire de supprimer l'accès en écriture de groupe de /var/run/screen. La sécurité de l'utilisation de SUID dans ce contexte est quelque chose à considérer. Ensuite, vous devez utiliser les ACL de l'écran pour accorder l'autorisation au deuxième utilisateur.
sudo chmod u+s /usr/bin/screen
sudo chmod 755 /var/run/screen
Dans le terminal du premier utilisateur, démarrez l'écran comme dans le partage de base ci-dessus, où foobar est le nom de la session d'écran. Activez ensuite le mode multi-utilisateur et ajoutez user2 à l'ACL, où user2 est le deuxième compte à partager la session.
screen -S foobar
^A:multiuser on
^A:acladd user2
La session peut être rendue en lecture seule pour le deuxième utilisateur en entrant le changement d'ACL suivant :^A:aclchg user2 -w "#?"
Ensuite, dans l'autre terminal, attachez-vous à la session du premier utilisateur.
screen -x user1/foobar
Il est également possible de mettre multiuser et d'ajouter user2 dans .screenrc pour qu'il prenne effet automatiquement au démarrage de l'écran. Si les modifications ne sont pas souhaitées dans toutes les sessions d'écran, un fichier de configuration .screenrc séparé peut être spécifié en utilisant l'option -c lors du démarrage de l'écran.
Réflexion après coup
Soyez prudent en sortant. Si vous quittez simplement le shell, cela mettra fin à la session de terminal pour toutes les parties. Si vous détachez plutôt la session, l'autre utilisateur peut continuer à travailler sans interruption. Dans tmux c'est ^B-d et dans screen c'est ^A-d