tmux und GNU Screen sind bekannte Dienstprogramme, die das Multiplexing virtueller Konsolen ermöglichen. Mit beiden ist es möglich, eine Sitzung zu starten, zu trennen, zu einem anderen Computer zu wechseln und die Sitzung ohne Unterbrechung fortzusetzen. Es ist auch möglich, diese Tools zu verwenden, um eine einzelne Sitzung von mehr als einem Benutzer gleichzeitig zu teilen.
Grundlegende Terminalsitzungsfreigabe mit einem einzigen Account
Wird ein Konto gemeinsam von zwei oder mehreren Nutzern geführt, ist die gemeinsame Nutzung der Endgerätekonsole sehr einfach. Weder tmux noch screen erfordern etwas Außergewöhnliches für die grundlegende gemeinsame Nutzung zwischen einem einzelnen Konto, das mehrfach angemeldet ist. Die grundlegende Freigabe ist sehr einfach, wenn Sie beide als derselbe Benutzer angemeldet sind.
Grundlegendes Teilen mit dem Bildschirm
Erstellen Sie in einem Terminal eine neue Sitzung für den Bildschirm, wobei foobar ist der Name Ihrer Bildschirmsitzung:
screen -S foobar
Verbinden Sie sich dann im anderen Terminal mit dieser Sitzung.
screen -x foobar
Das war's, es waren nur noch zwei Schritte.
Grundlegendes Teilen mit tmux
Auch hier gibt es nur zwei Schritte. Starten Sie im ersten Terminal tmux wo shared ist der Sitzungsname:
tmux new-session -s shared
Verbinden Sie sich dann im zweiten Terminal mit der freigegebenen Sitzung.
tmux attach-session -t shared
Das ist es.
Teilen von Terminalsitzungen zwischen zwei verschiedenen Konten
Die gemeinsame Nutzung zwischen zwei verschiedenen Konten erfordert einige zusätzliche Schritte, um die Berechtigungen zu erteilen, die erforderlich sind, damit ein Konto auf die Sitzung eines anderen zugreifen kann. In einigen Fällen ist die Hilfe des Systemadministrators erforderlich, um die Einrichtung vorzubereiten.
Freigabe zwischen zwei verschiedenen Konten mit tmux
Für verschiedene Benutzer müssen Sie die Berechtigungen auf dem tmux-Socket so einstellen, dass beide Benutzer lesen und schreiben können. Es gibt nur eine Voraussetzung, dass es eine gemeinsame Gruppe zwischen den beiden Benutzern gibt. Wenn eine solche Gruppe nicht existiert, muss eine erstellt werden.
Starten Sie im ersten Terminal tmux wo shared ist der Sitzungsname und shareds ist der Name des Sockets:
tmux -S /tmp/shareds new -s shared
Dann chgrp den Socket zu einer Gruppe, die beide Benutzer gemeinsam nutzen. In diesem Beispiel joint ist die Gruppe, die sich beide Benutzer teilen. Wenn es andere Benutzer in der Gruppe gibt, dann haben diese auch Zugriff. Daher könnte es empfehlenswert sein, dass die Gruppe nur aus zwei Mitgliedern besteht.
chgrp joint /tmp/shareds
Verbinden Sie sich im zweiten Terminal mit diesem Socket und dieser Sitzung.
tmux -S /tmp/shareds attach -t shared
Das ist es. Die Sitzung kann für den zweiten Benutzer schreibgeschützt gemacht werden, jedoch nur auf freiwilliger Basis. Die Entscheidung, schreibgeschützt zu arbeiten, wird getroffen, wenn sich der zweite Benutzer der Sitzung anschließt.
tmux -S /tmp/shareds attach -t shared -r
Freigabe zwischen zwei verschiedenen Konten mit Bildschirm
Wenn Sie als zwei verschiedene Benutzer angemeldet sind, gibt es drei Voraussetzungen für die Verwendung von screen. Zuerst muss screen auf SUID gesetzt werden und es ist notwendig, den Gruppenschreibzugriff von /var/run/screen zu entfernen. Die Sicherheit der Verwendung von SUID in diesem Zusammenhang ist zu berücksichtigen. Dann müssen Sie die ACLs des Bildschirms verwenden, um dem zweiten Benutzer die Berechtigung zu erteilen.
sudo chmod u+s /usr/bin/screen
sudo chmod 755 /var/run/screen
Starten Sie im Terminal des ersten Benutzers den Bildschirm wie bei der einfachen Freigabe oben, wobei foobar ist der Name der Bildschirmsitzung. Aktivieren Sie dann den Multiuser-Modus und fügen Sie user2 hinzu zur ACL, wo user2 ist das zweite Konto, das die Sitzung teilt.
screen -S foobar
^A:multiuser on
^A:acladd user2
Die Sitzung kann für den zweiten Benutzer schreibgeschützt gemacht werden, indem die folgende ACL-Änderung eingegeben wird:^A:aclchg user2 -w "#?"
Hängen Sie dann im anderen Terminal an die Sitzung des ersten Benutzers an.
screen -x user1/foobar
Es ist auch möglich, multiuser einzuschalten und user2 in .screenrc hinzuzufügen, damit es beim Start des Bildschirms automatisch wirksam wird. Wenn die Änderungen nicht in allen Bildschirmsitzungen erwünscht sind, kann eine separate .screenrc-Konfigurationsdatei angegeben werden, indem die Option -c beim Start von Bildschirm verwendet wird.
Nachtrag
Vorsicht beim Aussteigen. Wenn Sie die Shell einfach verlassen, wird die Terminalsitzung für alle Parteien beendet. Wenn Sie stattdessen die Sitzung trennen, kann der andere Benutzer ohne Unterbrechung weiterarbeiten. In tmux ist das ^B-d und in screen ist das ^A-d