Ich suche nach einer sauberen und einfachen Möglichkeit, eine tmux-Sitzung mit einem anderen Benutzer auf demselben Computer zu teilen. Ich habe die -S socket-path
Option ausprobiert , muss jedoch alle Berechtigungen des Socket-Pfads öffnen, bevor eine andere Person eine Verbindung zur Sitzung herstellen kann. Es funktioniert, ist aber etwas umständlich. Zum Beispiel:
# Me
$ tmux -S /tmp/pair
$ chmod 777 /tmp/pair
# Another user
$ tmux -S /tmp/pair attach
Dies funktioniert, aber beide Benutzer verwenden jetzt dieselbe tmux-Konfiguration (die Konfiguration des Benutzers, der die Sitzung initiiert hat). Gibt es eine Möglichkeit, den beiden Benutzern zu erlauben, ihre eigene tmux-Konfiguration und ihre eigenen individuellen tmux-Tastenzuordnungen zu verwenden?
Für Bonuspunkte wäre es im Idealfall auch nett, anderen Benutzern schreibgeschützten Zugriff auf die tmux-Sitzung zu gewähren.
Antworten:
Von https://github.com/zolrath/wemux :
Es ist ein Shellscript-Wrapper über tmux - kein Kompilieren notwendig.
quelle
Ich habe dies unter Ubuntu ausprobiert, verstehe aber nicht, warum es unter anderen Unix-Varianten nicht funktioniert.
Wenn beide Benutzer Mitglieder einer gemeinsamen Gruppe sind und der Socket-Pfad diese Gruppe verwendet, können beide Benutzer problemlos eine Verbindung herstellen.
Anstatt die Berechtigungen des Socket-Pfads jedes Mal ändern zu müssen, wenn Sie einen erstellen, können Sie ein bestimmtes Verzeichnis für Sockets erstellen (ich habe / var / tmux verwendet).
Fügen Sie zunächst eine Gruppe für tmux-Benutzer hinzu
Erstellen Sie ein Verzeichnis mit der Gruppe $ TMUX_GROUP und verwenden Sie das Bit setgid, damit für Dateien, die im Verzeichnis erstellt werden, die Gruppe automatisch $ TMUX_GROUP festgelegt wird.
Stellen Sie als Nächstes sicher, dass die Benutzer, die die Sitzung freigeben möchten, Mitglieder von $ TMUX_GROUP sind
quelle
tmux -S $TMUX_GROUP/shared-session
. So hängen Sie es von einem anderen Konto an:tmux -S $TMUX_GROUP/shared-session attach
Soweit ich weiß, ist es nicht möglich, Sitzungen "sauber" mit anderen Benutzern zu teilen.
Auch ein schreibgeschützter Zugriff ist nicht möglich, wenn der Client den
-r
Switch nicht verwendet .Da ein anderer Terminal-Multiplexer- Bildschirm die Funktionen unterstützt, die Sie suchen, leider auch auf umständliche Weise ... Ich bin mir nicht sicher, ob dies eine Option für Sie ist, aber vielleicht wird dies jemand anderes nützlich finden.
Lösung für Bildschirm :
Eine Sitzung abhalten:
screen -S sessionname
:multiuser on
:acladd otherUsername
An einer Sitzung teilnehmen:
screen -x username/sessionname
Mit
:aclchg
oder können Sie Berechtigungsbits für den Benutzer (* für alle) setzen:chacl
. # angehängt wirkt sich auf Windows aus,? Das Anhängen wirkt sich auf die Befehle aus.Beispiele:
:aclchg * -wx "#,?"
Legt fest, dass die Sitzungsberechtigungen für alle Benutzer schreibgeschützt sind:aclchg foo +w 2
Erteilt dem Benutzer foo Schreibzugriff auf Fenster 2:aclchg bar +x detach
Erteilt die Berechtigung zum Trennen einer Sitzung von der Benutzerleistequelle
Dies ist nicht exklusiv für tmux, aber im Moment verwende ich Folgendes:
Mit können Sie
script -f /path/to/some/file
eine Terminalsitzung in eine Datei schreiben. Die-f
Option aktualisiert die Datei während der Eingabe.Jemand anderes (mit nur Berechtigungen für die Datei zu lesen, wenn Sie möchten) können Sie
tail -f
die Datei, Ihre Terminalsitzung zu sehen. Die-f
Option macht dietail
Ausgabe, was auch immer angehängt wird.Die Kombination der beiden "synchronisiert" die Ansicht eines Terminals. Bei Verwendung mit tmux hat dies auch den Vorteil, dass die Größenänderung vermieden wird, die auftritt, wenn beide Benutzer unterschiedliche Auflösungen haben. Ein weiteres Merkmal ist, dass jeder Benutzer an einem anderen privaten Fenster oder einer anderen Sitzung arbeiten kann.
Eine mögliche Unannehmlichkeit besteht darin, dass einige Befehle (z. B. ncurses-basierte) seltsame Dinge an der Ausgabe vornehmen und auch Sequenzen (Farben) maskieren können. Ich verwende dies jedoch in tmux, und es scheint, dass tmux diese Probleme behebt. Ich kann sehen, wie der andere Benutzer Manpages liest und andere Befehle verwendet, die Puffer erstellen, Farben richtig angezeigt werden usw.
Dies erlaubt jedoch nicht, in das Terminal des anderen zu schreiben (möglicherweise könnte eine andere Lösung dafür hinzugefügt werden).
Ich habe gerne ein Fenster mit zwei Fenstern: ein Fenster, das
script -f
für meine Kollegen sichtbar ist, und ein anderes daneben, wo ichtail -f
das Terminal habe.Es funktioniert auch in ttys (und Sockets oder Named Pipes können auch für die Datei verwendet werden)
quelle