Hledám čistý a snadný způsob sdílení relace tmux s jiným uživatelem na stejném počítači. Zkusil jsem -S socket-path
možnost, ale před připojením k relaci vyžaduje otevření všech oprávnění soketové cesty. Funguje to, ale je to trochu těžkopádné. Například:
# Me
$ tmux -S /tmp/pair
$ chmod 777 /tmp/pair
# Another user
$ tmux -S /tmp/pair attach
To funguje, ale oba uživatelé nyní sdílejí stejnou konfiguraci tmux (konfigurace uživatele, který zahájil relaci). Existuje způsob, jak těmto dvěma uživatelům umožnit použití jejich vlastní konfigurace tmux a jejich vlastních vazeb klíčů tmux?
Pokud jde o bonusové body, v ideálním případě by bylo také hezké poskytnout ostatním uživatelům přístup k relaci tmux pouze pro čtení.
Od https://github.com/zolrath/wemux :
wemux vylepšuje tmux, aby usnadnil a zefektivnil multiplexování terminálů pro více uživatelů. Umožňuje uživatelům hostovat server wemux a přimět klienty, aby se připojili buď:
Mirror Mode umožňuje klientům (jiný uživatel SSH ve vašem počítači) přístup pouze k čtení k relaci, což jim umožňuje vidět, jak pracujete, nebo
Párový režim umožňuje klientovi i sobě pracovat ve stejném terminálu (sdílený kurzor)
Rogue Mode umožňuje klientovi spárovat nebo pracovat samostatně v jiném okně (samostatné kurzory) ve stejné relaci tmux.
Je vybaven podporou více serverů, seznamem uživatelů a oznámeními, když se uživatelé připojují/odpojují.
Je to shellscriptový obal přes tmux - není nutné kompilovat.
Vyzkoušel jsem to na Ubuntu, ale nechápu, proč by to nefungovalo u jiných unixových variant.
Pokud jsou oba uživatelé členy společné skupiny a soketová cesta používá tuto skupinu, budou se oba uživatelé moci připojit dobře.
Namísto nutnosti měnit oprávnění soketové cesty pokaždé, když vytvoříte, můžete vytvořit konkrétní adresář pro sokety (použil jsem/var/tmux).
Nejprve přidejte skupinu pro uživatele tmux
$ addgroup $TMUX_GROUP
Vytvořte adresář se skupinou nastavenou na $ TMUX_GROUP a použijte bit setgid, aby soubory vytvořené v adresáři automaticky měly skupinu nastavenou na $ TMUX_GROUP.
$ mkdir /var/tmux
$ chgrp $TMUX_GROUP /var/tmux
$ chmod g+ws /var/tmux
Dále se ujistěte, že uživatelé, kteří chtějí relaci sdílet, jsou členy $ TMUX_GROUP
$ usermod -aG $TMUX_GROUP user1
$ usermod -aG $TMUX_GROUP user2
Pokud vím, není možné sdílet relace s ostatními uživateli „čistým“ způsobem.
Přístup pouze pro čtení není možný, pokud klient nepoužívá -r
přepínač.
Protože jiný terminálový multiplexer obrazovka podporuje funkce, které hledáte, bohužel také těžkopádným způsobem ... Nejsem si jistý, jestli je to pro vás možnost, ale možná někdo jiný to shledá užitečným .
Řešení pro obrazovka:
Hostitel relace:
screen -S sessionname
:multiuser on
:acladd otherUsername
Připojte se k relaci:
screen -x username/sessionname
Bity oprávnění pro uživatele (* pro všechny) můžete nastavit pomocí :aclchg
nebo :chacl
. # připojené ovlivní okna? připojené ovlivní příkazy.
Příklady:
:aclchg * -wx "#,?"
nastaví oprávnění relace pro čtení pouze pro všechny uživatele:aclchg foo +w 2
poskytne přístup pro zápis pro uživatele foo na okně 2:aclchg bar +x detach
udělí oprávnění k odpojení relace na panelu uživatelůToto není exkluzivní pro tmux, ale právě teď to, co používám:
Můžeš použít script -f /path/to/some/file
pro zápis terminálové relace do souboru. The -f
volba aktualizuje soubor během psaní.
Někdo jiný (s oprávněním pouze ke čtení k souboru, pokud chcete) může udělat tail -f
pro zobrazení souboru, vaše relace terminálu. The -f
volba dělá tail
výstup, co se připojí.
Kombinace dvou „synchronizuje“ pohled na terminál. Při použití s tmux má také tu výhodu, že se vyhýbá změně velikosti, ke které dochází, když mají oba uživatelé různá rozlišení. Další vlastností je, že každý uživatel může pracovat v jiném soukromém okně nebo relaci.
Jednou z potenciálních nepříjemností je to, že některé příkazy (například ncurses) mohou na výstupu dělat divné věci, také únikové sekvence (barvy). Používám to však uvnitř tmuxu a zdá se, že tmux tyto problémy řeší. Vidím další uživatelské stránky čtené uživateli a používám další příkazy, které vytvářejí vyrovnávací paměti, barvy se zobrazují správně atd.
To však neumožňuje zapisovat si na terminál druhé strany (možná by se k tomu mohlo přidat nějaké jiné řešení).
Líbí se mi okno se dvěma tabulemi: jeden panel běží script -f
pro mé kolegy vidět, další vedle, kde jsem tail -f
je to terminál.
Funguje také v ttys (a pro soubor lze použít i zásuvky nebo pojmenované kanály)