Je cherche un moyen simple et propre de partager une session tmux avec un autre utilisateur sur la même machine. J'ai essayé l' -S socket-path
option, mais il faut ouvrir toutes les autorisations du chemin de la socket pour que quelqu'un d'autre puisse se connecter à la session. Cela fonctionne, mais c'est un peu lourd. Par exemple:
# Me
$ tmux -S /tmp/pair
$ chmod 777 /tmp/pair
# Another user
$ tmux -S /tmp/pair attach
Cela fonctionne, mais les deux utilisateurs partagent maintenant la même configuration tmux (la configuration de l'utilisateur qui a lancé la session). Existe-t-il un moyen d'autoriser les deux utilisateurs à utiliser leur propre configuration tmux et leurs propres liaisons de clé tmux individuelles?
Pour les points bonus, idéalement, il serait également intéressant de donner aux autres utilisateurs un accès en lecture seule à la session tmux.
Réponses:
De https://github.com/zolrath/wemux :
C'est un wrapper shellscript sur tmux - aucune compilation nécessaire.
la source
J'ai déjà essayé ceci sur Ubuntu, mais je ne vois pas pourquoi cela ne fonctionnerait pas avec d'autres variantes d'Unix.
Si les deux utilisateurs sont membres d'un groupe commun et que le chemin de socket utilise ce groupe, les deux utilisateurs pourront se connecter correctement.
Plutôt que de devoir modifier les autorisations du chemin de socket à chaque fois que vous en créez un, vous pouvez créer un répertoire spécifique pour les sockets (j'ai utilisé / var / tmux).
Ajoutez d'abord un groupe pour les utilisateurs de tmux
Créez un répertoire avec le groupe défini sur $ TMUX_GROUP et utilisez le bit setgid pour que les fichiers créés dans ce répertoire aient automatiquement le groupe défini sur $ TMUX_GROUP.
Assurez-vous ensuite que les utilisateurs qui souhaitent partager la session sont membres de $ TMUX_GROUP
la source
tmux -S $TMUX_GROUP/shared-session
. Pour le joindre depuis un autre compte:tmux -S $TMUX_GROUP/shared-session attach
Autant que je sache, il n'est pas possible de partager des sessions avec d'autres utilisateurs de manière "propre".
De plus, l'accès en lecture seule n'est pas possible si le client n'utilise pas le
-r
commutateur.Alors qu'un autre écran de multiplexeur de terminal prend en charge les fonctionnalités que vous recherchez, malheureusement aussi d'une manière lourde ... Je ne suis pas sûr que ce soit une option pour vous, mais peut-être que quelqu'un d'autre trouvera cela utile.
Solution pour l' écran :
Organiser une session:
screen -S sessionname
:multiuser on
:acladd otherUsername
Rejoindre une session:
screen -x username/sessionname
Vous pouvez définir des bits d'autorisation pour l'utilisateur (* pour tous) avec
:aclchg
ou:chacl
. # ajouté affectera les fenêtres,? ajouté affectera les commandes.Exemples:
:aclchg * -wx "#,?"
définira les autorisations de session en lecture seule pour tous les utilisateurs:aclchg foo +w 2
donnera un accès en écriture à l'utilisateur foo sur la fenêtre 2:aclchg bar +x detach
donnera la permission de détacher une session à la barre d'utilisateurla source
Ce n'est pas exclusif à tmux, mais pour l'instant c'est ce que j'utilise:
Vous pouvez utiliser
script -f /path/to/some/file
pour écrire une session de terminal dans un fichier. L'-f
option met à jour le fichier pendant que vous tapez.Quelqu'un d'autre (avec uniquement des autorisations de lecture sur le fichier, si vous le souhaitez) peut faire
tail -f
pour voir le fichier, votre session de terminal. L'-f
option rend latail
sortie tout ce qui est ajouté.La combinaison des deux "synchronise" la vue d'un terminal. Lorsqu'il est utilisé avec tmux, il présente également l'avantage d'éviter le redimensionnement qui se produit lorsque les deux utilisateurs ont des résolutions différentes. Une autre caractéristique est que chaque utilisateur peut travailler sur une autre fenêtre ou session privée.
Un inconvénient potentiel est que certaines commandes (basées sur ncurses, par exemple) peuvent faire des choses étranges en sortie, ainsi que des séquences d'échappement (couleurs). Cependant, j'utilise ceci dans tmux, et il semble que tmux corrige ces problèmes. Je peux voir l’autre utilisateur lire les pages de manuel et utiliser d’autres commandes pour créer des tampons, les couleurs sont affichées correctement, etc.
Cela ne permet cependant pas d’écrire sur le terminal de l’autre (une autre solution pourrait peut-être être ajoutée pour cela).
J'aime avoir une fenêtre avec deux volets: un volet qui est
script -f
visible par le pair, un autre à côté, oùtail -f
il est en terminal.Cela fonctionne également dans ttys (et les sockets ou les pipes nommés peuvent aussi être utilisés pour le fichier)
la source