it-swarm-ko.tech

두 사용자간에 tmux 세션을 공유하는 다른 방법은 무엇입니까?

동일한 컴퓨터에서 다른 사용자와 tmux 세션을 공유하는 깨끗하고 쉬운 방법을 찾고 있습니다. 나는 -S socket-path 옵션이지만 다른 사람이 세션에 연결하려면 소켓 경로의 모든 권한을 열어야합니다. 작동하지만 약간 성가시다. 예를 들면 다음과 같습니다.

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

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

작동하지만 두 사용자 모두 동일한 tmux 구성 (세션을 시작한 사용자의 구성)을 공유합니다. 두 사용자가 자신의 tmux 구성과 자신의 개별 tmux 키 바인딩을 사용할 수있는 방법이 있습니까?

보너스 포인트의 경우 다른 사용자에게 tmux 세션에 대한 읽기 전용 액세스 권한을 부여하는 것이 이상적입니다.

112
Ryan McGeary

https://github.com/zolrath/wemux 에서 :

wemux는 tmux를 향상시켜 다중 사용자 터미널 멀티플렉싱을 쉽고 강력하게 만듭니다. 사용자가 wemux 서버를 호스팅하고 클라이언트가 다음 중 하나에 참여하도록 할 수 있습니다.

미러 모드는 클라이언트 (시스템의 다른 SSH 사용자)에게 세션에 대한 읽기 전용 액세스 권한을 부여하여 사용자가 작업을 보거나

페어 모드를 사용하면 클라이언트와 자신이 동일한 터미널에서 작업 할 수 있습니다 (공유 커서)

Rogue Mode를 통해 클라이언트는 동일한 tmux 세션의 다른 창 (별도 커서)에서 독립적으로 페어링하거나 작업 할 수 있습니다.

사용자가 연결/분리 할 때 사용자 목록 및 알림뿐만 아니라 다중 서버 지원 기능이 있습니다.

컴파일 할 필요없이 tmux의 쉘 스크립트 래퍼입니다.

48
Peter

우분투에서 이것을 시도했지만 다른 유닉스 변형에서 작동하지 않는 이유를 모르겠습니다.

두 사용자가 공통 그룹의 구성원이고 소켓 경로가 해당 그룹을 사용하는 경우 두 사용자 모두 양호하게 첨부 할 수 있습니다.

소켓 경로를 작성할 때마다 소켓 경로의 권한을 변경하지 않고 소켓에 대한 특정 디렉토리를 작성할 수 있습니다 (/ var/tmux를 사용했습니다).

먼저 tmux 사용자를위한 그룹을 추가하십시오

$ addgroup $TMUX_GROUP

그룹이 $ TMUX_GROUP으로 설정된 디렉토리를 작성하고 setgid 비트를 사용하여 디렉토리 내에서 작성된 파일이 자동으로 그룹을 $ TMUX_GROUP으로 설정하십시오.

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

다음으로 세션을 공유하려는 사용자가 $ TMUX_GROUP의 구성원인지 확인하십시오.

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

내가 아는 한 "깨끗한"방식으로 다른 사용자와 세션을 공유 할 수 없습니다.

또한 클라이언트가 -r 스위치를 사용하지 않으면 읽기 전용 액세스가 불가능합니다.

다른 터미널 멀티플렉서 screen는 슬프게도 귀찮은 방식으로 찾고있는 기능을 지원합니다 ...이 옵션이 있는지 확실하지 않지만 다른 누군가 가이 기능을 유용하게 사용할 수 있습니다 .

screen에 대한 솔루션 :

세션을 주최하십시오 :

  • screen의 SUID 비트를 설정해야합니다.
  • screen -S sessionname로 세션을여십시오.
  • ctrla + :multiuser on
  • ctrla + :acladd otherUsername

세션에 참여하십시오 :

  • screen -x username/sessionname

:aclchg 또는 :chacl를 사용하여 사용자에 대한 권한 비트 (모두 *)를 설정할 수 있습니다. # 추가는 창에 영향을 미치나? 추가하면 명령에 영향을줍니다.

예 :

  • :aclchg * -wx "#,?"는 모든 사용자에 대해서만 세션 권한을 읽도록 설정합니다.
  • :aclchg foo +w 2는 창 2에서 사용자 foo에게 쓰기 권한을 부여합니다.
  • :aclchg bar +x detach는 사용자 바에 세션을 분리 할 수있는 권한을 부여합니다
12
echox

이것은 tmux에만 적용되는 것이 아니라 지금 내가 사용하고있는 것입니다.

script -f /path/to/some/file를 사용하여 터미널 세션을 파일에 쓸 수 있습니다. -f 옵션은 입력하는 동안 파일을 업데이트합니다.

다른 사람 (원하는 경우 파일에 대한 읽기 권한 만있는)은 터미널 세션 인 파일을보기 위해 tail -f를 수행 할 수 있습니다. -f 옵션은 tail를 추가 ​​할 때마다 출력합니다.

이 두 가지의 조합은 터미널의보기를 "동기화"합니다. tmux와 함께 사용하면 두 사용자가 서로 다른 해상도를 가질 때 발생하는 크기 조정을 피할 수 있다는 장점도 있습니다. 또 다른 특징은 각 사용자가 다른 개인 창이나 세션에서 작업 할 수 있다는 것입니다.

하나의 잠재적 인 불편은 일부 명령 (예 : ncurses)이 출력에 이상한 일을하고 시퀀스를 이스케이프 처리 할 수 ​​있다는 것입니다 (색상). 그러나 이것을 tmux에서 사용하고 있으며 tmux가 이러한 문제를 해결하는 것으로 보입니다. 다른 사용자가 매뉴얼 페이지를 읽고 버퍼를 생성하는 다른 명령을 사용하고 색상이 올바르게 표시되는 것을 볼 수 있습니다.

이것은 서로의 터미널에 쓸 수는 없습니다 (아마도 다른 솔루션을 추가 할 수 있습니다).

두 개의 창이있는 창을 좋아합니다. 하나의 창에서 내 동료가 볼 수 있도록 script -f를 실행하고 다른 쪽이 터미널 인 tail -f입니다.

그것은 tty에서도 작동합니다 (그리고 소켓이나 명명 된 파이프도 파일에 사용될 수 있습니다)

11
ferhtgoldaraz