it-swarm-eu.dev

Jaké jsou další způsoby sdílení relace tmux mezi dvěma uživateli?

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í.

112
Ryan McGeary

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.

48
Peter

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
17
Stephen Paulger

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:

  • SUID bit obrazovka musí být nastaven: - /
  • Otevřete relaci pomocí screen -S sessionname
  • ctrla + :multiuser on
  • ctrla + :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ů
12
echox

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)

11
ferhtgoldaraz