Szukam czystego i łatwego sposobu na udostępnienie sesji tmux innemu użytkownikowi na tym samym komputerze. Wypróbowałem tę -S socket-path
opcję, ale wymaga to otwarcia wszystkich uprawnień ścieżki gniazda, zanim ktoś inny będzie mógł połączyć się z sesją. To działa, ale jest trochę niewygodne. Na przykład:
# Me
$ tmux -S /tmp/pair
$ chmod 777 /tmp/pair
# Another user
$ tmux -S /tmp/pair attach
To działa, ale obaj użytkownicy mają teraz tę samą konfigurację tmux (konfigurację użytkownika, który zainicjował sesję). Czy istnieje sposób, aby zezwolić dwóm użytkownikom na używanie własnej konfiguracji tmux i własnych indywidualnych powiązań klawiszy tmux?
W przypadku punktów bonusowych najlepiej byłoby dać innym użytkownikom dostęp do sesji tmux tylko do odczytu.
Odpowiedzi:
Od https://github.com/zolrath/wemux :
Jest to opakowanie shellscript na tmux - nie wymaga kompilacji.
źródło
Próbowałem tego na Ubuntu, ale nie rozumiem, dlaczego to nie działa na innych wariantach unix.
Jeśli obaj użytkownicy są członkami wspólnej grupy, a ścieżka gniazda korzysta z tej grupy, obaj użytkownicy będą mogli dołączyć się dobrze.
Zamiast zmieniać uprawnienia do ścieżki gniazda za każdym razem, gdy ją tworzysz, możesz utworzyć specjalny katalog dla gniazd (użyłem / var / tmux).
Najpierw dodaj grupę dla użytkowników tmux
Utwórz katalog z grupą ustawioną na $ TMUX_GROUP i użyj bitu setgid, aby pliki utworzone w tym katalogu automatycznie ustawiły grupę na $ TMUX_GROUP.
Następnie upewnij się, że użytkownicy, którzy chcą udostępnić sesję, są członkami $ TMUX_GROUP
źródło
tmux -S $TMUX_GROUP/shared-session
. Aby dołączyć do niego z innego konta:tmux -S $TMUX_GROUP/shared-session attach
O ile mi wiadomo, nie można udostępniać sesji innym użytkownikom w „czysty” sposób.
Dostęp tylko do odczytu nie jest możliwy, jeśli klient nie używa
-r
przełącznika.Ponieważ inny ekran multipleksera terminali obsługuje funkcje, których szukasz, niestety również uciążliwy ... Nie jestem pewien, czy jest to dla ciebie opcja, ale może ktoś inny uzna to za przydatne.
Rozwiązanie dla ekranu :
Poprowadź sesję:
screen -S sessionname
:multiuser on
:acladd otherUsername
Dołącz do sesji:
screen -x username/sessionname
Możesz ustawić bity uprawnień dla użytkownika (* dla wszystkich) za pomocą
:aclchg
lub:chacl
. # dołączone wpłynie na okna,? dołączone wpłynie na polecenia.Przykłady:
:aclchg * -wx "#,?"
ustawi uprawnienia sesji do odczytu tylko dla wszystkich użytkowników:aclchg foo +w 2
zapewni dostęp do zapisu dla użytkownika foo w oknie 2:aclchg bar +x detach
zezwoli na odłączenie sesji od paska użytkownikaźródło
Nie dotyczy to wyłącznie Tmux, ale teraz używam tego:
Możesz użyć
script -f /path/to/some/file
do zapisania sesji terminala do pliku.-f
Opcja aktualizuje plik podczas pisania.Ktoś inny (z uprawnieniami tylko do odczytu pliku, jeśli chcesz) może zrobić,
tail -f
aby zobaczyć plik, twoją sesję terminalową. Ta-f
opcja powoduje, żetail
dane wyjściowe są dołączane.Kombinacja dwóch „synchronizacji” widoku terminala. W połączeniu z tmux ma tę zaletę, że pozwala uniknąć zmiany rozmiaru, która występuje, gdy obaj użytkownicy mają różne rozdzielczości. Kolejną cechą jest to, że każdy użytkownik może pracować w innym prywatnym oknie lub sesji.
Jedną z potencjalnych niedogodności jest to, że niektóre polecenia (na przykład oparte na ncurses) mogą robić dziwne rzeczy na wyjściu, a także sekwencje specjalne (kolory). Jednak używam tego w tmuxie i wydaje się, że tmux rozwiązuje te problemy. Widzę, że inny użytkownik czyta strony podręcznika użytkownika i używa innych poleceń, które tworzą bufory, kolory są wyświetlane poprawnie itp.
Nie pozwala to jednak pisać sobie nawzajem na terminalach (być może można by do tego dodać inne rozwiązanie).
Lubię mieć okno z dwoma panelami: jedna szyba biegnie,
script -f
aby mój rówieśnik mógł zobaczyć, a druga obok niej, gdzietail -f
jest terminal.Działa również w ttys (do pliku można również użyć gniazd lub nazwanych potoków)
źródło