it-swarm-tr.com

Bir tmux oturumunu iki kullanıcı arasında paylaşmanın diğer yolları nelerdir?

Aynı makinede başka bir kullanıcıyla bir tmux oturumu paylaşmak için temiz ve kolay bir yol arıyorum. -S socket-path Seçeneğini denedim, ancak başkası oturuma bağlanmadan önce soket yolunun tüm izinlerini açmayı gerektirir. Çalışıyor, ama biraz hantal. Örneğin:

# Me
$ tmux -S /tmp/pair
$ chmod 777 /tmp/pair

# Another user
$ tmux -S /tmp/pair attach

Bu işe yarar, ancak her iki kullanıcı da aynı tmux yapılandırmasını (oturumu başlatan kullanıcının yapılandırması) paylaşmaktadır. İki kullanıcının kendi tmux yapılandırmalarını ve kendi bireysel tmux anahtar bağlantılarını kullanmasına izin vermenin bir yolu var mı?

Bonus puanlar için ideal olarak, diğer kullanıcılara tmux oturumuna salt okunur erişim vermek de güzel olurdu.

112
Ryan McGeary

https://github.com/zolrath/wemux adresinden:

wemux, çok kullanıcılı terminal çoğullamasını hem daha kolay hem de daha güçlü hale getirmek için tmux'u geliştirir. Kullanıcıların bir wemux sunucusu barındırmasına ve istemcilerin ikisinden birine katılmasını sağlar:

Ayna Modu, istemcilere (makinenizdeki başka bir SSH kullanıcısı) oturuma salt okunur erişim sağlayarak çalışmanızı görmelerini sağlar veya

Eşleştirme Modu, istemcinin ve kendinizin aynı terminalde çalışmasını sağlar (paylaşılan imleç)

Rogue Mode, istemcinin aynı tmux oturumunda başka bir pencerede (ayrı imleçler) bağımsız olarak eşleşmesini veya çalışmasını sağlar.

Çoklu sunucu desteğinin yanı sıra, kullanıcılar eklediğinde/çıkardığında kullanıcı listesi ve bildirimleri içerir.

Bu tmux üzerinde bir kabuk betiği sarmalayıcıdır - derlemeye gerek yoktur.

48
Peter

Ben Ubuntu üzerinde denedim ama neden diğer unix varyantları üzerinde işe yaramaz görmüyorum.

Her iki kullanıcı da ortak bir grubun üyesiyse ve soket yolu bu grubu kullanıyorsa, her iki kullanıcı da iyi ekleyebilir.

Her oluşturduğunuzda, soket yolunun izinlerini değiştirmek yerine, soketler için belirli bir dizin oluşturabilirsiniz (/ var/tmux kullandım).

Önce tmux kullanıcıları için bir grup ekleyin

$ addgroup $TMUX_GROUP

Grup $ TMUX_GROUP olarak ayarlanmış bir dizin oluşturun ve dizinde oluşturulan dosyaların otomatik olarak $ TMUX_GROUP olarak ayarlanması için setgid bitini kullanın.

$ mkdir /var/tmux
$ chgrp $TMUX_GROUP /var/tmux
$ chmod g+ws /var/tmux

Sonra oturumu paylaşmak isteyen kullanıcıların $ TMUX_GROUP üyesi olduğundan emin olun

$ usermod -aG $TMUX_GROUP user1
$ usermod -aG $TMUX_GROUP user2
17
Stephen Paulger

Bildiğim kadarıyla oturumları diğer kullanıcılarla "temiz" bir şekilde paylaşmak mümkün değil.

İstemci -r Anahtarını kullanmıyorsa, salt okunur erişim de mümkün değildir.

Başka bir terminal çoklayıcı ekran, ne yazık ki hantal bir şekilde aradığınız özellikleri destekliyor ... Bunun sizin için bir seçenek olup olmadığından emin değilim, ama belki başka biri bunu yararlı bulacaktır .

ekran için çözüm:

Bir oturum düzenleyin:

  • SUID biti ekran ayarlanmalıdır: - /
  • Oturumu screen -S sessionname İle açın
  • ctrla + :multiuser on
  • ctrla + :acladd otherUsername

Bir oturuma katılın:

  • screen -x username/sessionname

:aclchg Veya :chacl İle kullanıcı için izin bitleri (herkes için *) ayarlayabilirsiniz. Eklenen # pencere,? eklenen komutları etkiler.

Örnekler:

  • :aclchg * -wx "#,?" Oturum izinlerini yalnızca tüm kullanıcılar için okunacak şekilde ayarlayacak
  • :aclchg foo +w 2, Pencere 2'deki kullanıcı foo için yazma erişimi verecek
  • :aclchg bar +x detach, Oturumun kullanıcı çubuğuna ayrılması için izin verecek
12
echox

Bu tmux'a özel değil, ama şu anda kullandığım şey:

Kullanabilirsiniz script -f /path/to/some/file bir dosyaya terminal oturumu yazmak için. -f seçeneği, siz yazarken dosyayı güncelleştirir.

Başka biri (yalnızca dosyaya okuma izinleriyle, isterseniz) tail -f dosyasını, terminal oturumunuzu görmek için. -f seçeneği, eklenen her şeyi tail çıktı yapar.

İki kombinasyon bir terminalin görünümünü "senkronize eder". Tmux ile kullanıldığında, her iki kullanıcı farklı çözünürlüklere sahip olduğunda meydana gelen yeniden boyutlandırmadan kaçınma avantajına sahiptir. Başka bir özellik, her kullanıcının başka bir özel pencere veya oturumda çalışabilmesidir.

Bir olası rahatsızlık, bazı komutların (örneğin ncurses) çıktıya garip şeyler yapabileceği, dizilerden de kaçabileceği (renkler). Ancak, bunu tmux içinde kullanıyorum ve tmux bu sorunları düzeltiyor gibi görünüyor. Diğer kullanıcının man sayfalarını okuduğunu ve arabellek oluşturan diğer komutları kullandığını, renklerin doğru görüntülendiğini vs.

Bu, birbirlerinin terminaline yazılmasına izin vermez (belki de bunun için başka bir çözüm eklenebilir).

İki bölmeli bir pencereye sahip olmayı seviyorum: bir bölme çalışıyor script -f akranımın görmesi için, yanımda başka bir tane daha tail -f terminal.

Ayrıca tty'lerde de çalışır (dosya için soketler veya adlandırılmış borular da kullanılabilir)

11
ferhtgoldaraz