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


106

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

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

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

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

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


10
난 너무 게으른 난 그냥 내 대답으로 귀하의 질문을 사용 : D
phunehehe

답변:


46

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

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

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

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

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

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

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


16

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

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

소켓 경로를 작성할 때마다 소켓 경로의 권한을 변경하지 않고 소켓에 대한 특정 디렉토리를 작성할 수 있습니다 (/ 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

2
ACL 을 지원하는 파일 시스템이있는 경우 그룹을 사용할 필요가 없으며 특히 루트 개입이 필요하지 않습니다. 그러나 이것은 tmux 구성 공유 문제를 해결하지 못 합니까?
Gilles

3
공유 세션을 작성하려면 다음을 수행하십시오 tmux -S $TMUX_GROUP/shared-session. 다른 계정에서 연결하려면 :tmux -S $TMUX_GROUP/shared-session attach
jfs

위의 주석 (@JFSebastian)은 답의 일부 여야합니다. 제안 된 설정은 정상이지만 실제로 사용하는 방법을 설명 할 때 답이 부족합니다. 이 페이지의 모든 답변에서이 답변은 문제를보다 잘 해결하는 것입니다.
Dr Beco

12

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

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

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

스크린 솔루션 :

세션을 주최하십시오 :

  • 화면의 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 사용자 바에 세션을 분리 할 수있는 권한을 부여합니다

가치있는 것은 tmux 솔루션 (약간 더 장황하지만)이 실제로 "깨끗한"것이라고 생각합니다. 파일 시스템 주위에 setuid 바이너리를 떠 다니는 것을 포함하지 않기 때문입니다.
글리프

불행히도, tmux는 이것을 이런 방식으로 사용했습니다. 보안 문제가 있습니다. 액세스 권한을 가진 사람은 쉽게 새 세션을 만들고 볼 수없는 세션을 수행 할 수 있습니다.
커트 J. 샘슨

9

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

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

다른 사람 (원하는 경우 파일에 대한 읽기 권한 만있는)은 tail -f터미널 세션 파일을 볼 수 있습니다 . 이 -f옵션은 tail추가되는 내용 을 출력합니다.

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

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

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

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

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


나는 당신의 대답을 좋아합니다! 이것은 간단하고 기능적입니다!
JL
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.