tmux a GNU Screen jsou dobře známé nástroje, které umožňují multiplexování virtuálních konzolí. Pomocí obou je možné zahájit relaci, odpojit se, přesunout se na jiný počítač a obnovit relaci v nepřerušovaném průběhu. Tyto nástroje je také možné použít ke sdílení jedné relace mezi více než jedním uživatelem současně.
Základní sdílení relací terminálu s jedním účtem
Pokud je účet veden společně dvěma nebo více uživateli, je sdílení terminálové konzole velmi jednoduché. Ani tmux, ani obrazovka nevyžadují nic neobvyklého pro základní sdílení mezi jedním vícekrát přihlášeným účtem. Základní sdílení je velmi snadné, pokud jste oba přihlášeni jako stejný uživatel.
Základní sdílení s obrazovkou
V jednom terminálu vytvořte novou relaci pro obrazovku, kde je foobar je název vaší relace obrazovky:
screen -S foobar
Poté se v druhém terminálu připojte k této relaci.
screen -x foobar
To je vše, byly to jen dva kroky.
Základní sdílení s tmux
Opět existují pouze dva kroky. V prvním terminálu spusťte tmux, kde je sdíleno je název relace:
tmux new-session -s shared
Poté se ve druhém terminálu připojte ke sdílené relaci.
tmux attach-session -t shared
To je ono.
Sdílení terminálových relací mezi dvěma různými účty
Sdílení mezi dvěma různými účty vyžaduje některé další kroky k udělení oprávnění nezbytných pro jeden účet pro přístup k relaci jiného. V některých případech bude příprava nastavení vyžadovat pomoc správce systému.
Sdílení mezi dvěma různými účty pomocí tmux
Pro různé uživatele musíte nastavit oprávnění na soketu tmux tak, aby jej mohli číst a zapisovat oba uživatelé. Existuje pouze jeden předpoklad, že mezi dvěma uživateli existuje společná skupina. Pokud taková skupina neexistuje, bude nutné ji vytvořit.
V prvním terminálu spusťte tmux, kde je sdíleno je název relace a sdílené položky je název soketu:
tmux -S /tmp/shareds new -s shared
Poté změňte soket na skupinu, kterou oba uživatelé sdílejí společně. V tomto příkladu spojení je skupina, kterou oba uživatelé sdílejí. Pokud jsou ve skupině další uživatelé, pak mají také přístup. Lze tedy doporučit, aby skupina měla pouze dva členy.
chgrp joint /tmp/shareds
Ve druhém terminálu připojte pomocí tohoto soketu a relace.
tmux -S /tmp/shareds attach -t shared
A je to. Relace může být provedena pouze pro čtení pro druhého uživatele, ale pouze na základě dobrovolnosti. Rozhodnutí pracovat pouze pro čtení je učiněno, když se k relaci připojí druhý uživatel.
tmux -S /tmp/shareds attach -t shared -r
Sdílení mezi dvěma různými účty s obrazovkou
Pokud jste přihlášeni jako dva různí uživatelé, existují tři předpoklady pro používání obrazovky. Nejprve je třeba na obrazovce nastavit SUID a je nutné odebrat skupinový přístup pro zápis z /var/run/screen. Bezpečnost používání SUID v tomto kontextu je něco, co je třeba zvážit. Potom musíte použít ACL obrazovky k udělení oprávnění druhému uživateli.
sudo chmod u+s /usr/bin/screen
sudo chmod 755 /var/run/screen
V terminálu prvního uživatele přejděte na úvodní obrazovku jako v základním sdílení výše, kde je foobar je název relace obrazovky. Poté zapněte víceuživatelský režim a přidejte uživatel2 do ACL, kde uživatel2 je druhý účet, který sdílí relaci.
screen -S foobar
^A:multiuser on
^A:acladd user2
Relace může být pro druhého uživatele pouze pro čtení zadáním následující změny ACL:^A:aclchg user2 -w "#?"
Poté se v druhém terminálu připojte k relaci prvního uživatele.
screen -x user1/foobar
Je také možné zapnout multiuser a acladd user2 do .screenrc, aby se to projevilo automaticky při startu obrazovky. Pokud změny nejsou požadovány ve všech relacích obrazovky, pak lze zadat samostatný konfigurační soubor .screenrc pomocí volby -c na úvodní obrazovce.
Následný nápad
Při vystupování buďte opatrní. Pokud právě opustíte shell, ukončí to terminálovou relaci pro všechny strany. Pokud místo toho relaci odpojíte, druhý uživatel může pokračovat v práci bez přerušení. V tmux je to ^B-d a na obrazovce je to ^A-d