Quais são as outras maneiras de compartilhar uma sessão do tmux entre dois usuários?

101

Eu estou procurando uma maneira limpa e fácil de compartilhar uma sessão do tmux com outro usuário na mesma máquina. Eu tentei a opção -S socket-path , mas isso requer a abertura de todas as permissões do caminho do soquete antes que alguém possa se conectar à sessão. Funciona, mas é um pouco complicado. Por exemplo:

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

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

Isso funciona, mas os dois usuários agora compartilham a mesma configuração do tmux (a configuração do usuário que iniciou a sessão). Existe uma maneira de permitir que os dois usuários usem sua própria configuração do tmux e suas próprias associações de teclas do tmux?

Para pontos de bônus, idealmente, também seria bom dar acesso somente leitura da sessão do tmux para outros usuários.

    
por Ryan McGeary 29.09.2010 / 21:37

4 respostas

46

De link :

wemux enhances tmux to make multi-user terminal multiplexing both easier and more powerful. It allows users to host a wemux server and have clients join in either:

Mirror Mode gives clients (another SSH user on your machine) read-only access to the session, allowing them to see you work, or

Pair Mode allows the client and yourself to work in the same terminal (shared cursor)

Rogue Mode allows the client to pair or work independently in another window (separate cursors) in the same tmux session.

It features multi-server support as well as user listing and notifications when users attach/detach.

É um invólucro shellscript sobre tmux - não é necessário compilar.

    
por 07.04.2012 / 23:35
16

Eu tentei isso no Ubuntu, mas não vejo por que ele não funcionaria em outras variantes unix.

Se ambos os usuários forem membros de um grupo comum e o caminho de soquete usar esse grupo, ambos os usuários poderão anexar bem.

Em vez de ter que alterar as permissões do caminho de soquete toda vez que você cria um, você poderia criar um diretório específico para soquetes (eu usei / var / tmux).

Primeiro, adicione um grupo para usuários do tmux

$ addgroup $TMUX_GROUP

Crie um diretório com o grupo definido como $ TMUX_GROUP e use o bit setgid para que os arquivos criados no diretório tenham automaticamente o grupo configurado como $ TMUX_GROUP.

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

Em seguida, verifique se os usuários que desejam compartilhar a sessão são membros do $ TMUX_GROUP

$ usermod -aG $TMUX_GROUP user1
$ usermod -aG $TMUX_GROUP user2
    
por 11.04.2011 / 11:25
11

Até onde eu sei, não é possível compartilhar sessões com outros usuários de maneira "limpa".

Também o acesso somente leitura não é possível, se o cliente não usar a opção -r .

Como outro multiplexador de terminais tela suporta os recursos que você está procurando, infelizmente também de uma maneira complicada ... Eu não tenho certeza se isso é uma opção para você, mas talvez alguém ache isso útil.

Solução para tela :

Anfitrião de uma sessão:

  • O bit SUID da tela deve ser definido: - /
  • Abra a sessão com screen -S sessionname
  • ctrl a + :multiuser on
  • ctrl a + :acladd otherUsername

Participe de uma sessão:

  • screen -x username/sessionname

Você pode definir bits de permissão para o usuário (* para todos) com :aclchg ou :chacl . # acrescentado afetará o windows,? acrescentado afetará os comandos.

Exemplos:

  • :aclchg * -wx "#,?" definirá as permissões da sessão como somente leitura para todos os usuários
  • :aclchg foo +w 2 dará acesso de gravação para o usuário foo na janela 2
  • :aclchg bar +x detach dará a permissão para desanexar uma sessão na barra de usuário
por 29.09.2010 / 22:46
8

Isso não é exclusivo do tmux, mas agora é o que estou usando:

Você pode usar script -f /path/to/some/file para gravar uma sessão de terminal em um arquivo. A opção -f atualiza o arquivo enquanto você digita.

Alguém (com apenas permissões de leitura para o arquivo, se você quiser) pode fazer tail -f para ver o arquivo, sua sessão de terminal. A opção -f torna tail output o que for acrescentado.

A combinação dos dois "sincroniza" a visão de um terminal. Quando usado com o tmux, ele também tem a vantagem de evitar o redimensionamento que acontece quando os dois usuários têm resoluções diferentes. Outra característica é que cada usuário pode trabalhar em outra janela ou sessão privada.

Um possível inconveniente é que alguns comandos (ncurses baseados, por exemplo) podem fazer coisas estranhas na saída, e também seqüências de escape (cores). No entanto, estou usando isso dentro do tmux, e parece que o tmux corrige esses problemas. Eu posso ver o outro usuário ler man pages e usar outros comandos que criam buffers, as cores são exibidas corretamente, etc.

Isso não permite gravar no terminal um do outro (talvez alguma outra solução possa ser adicionada para isso).

Eu gosto de ter uma janela com dois painéis: um painel executando script -f para o meu ponto de vista, um outro ao lado onde eu tail -f é terminal.

Funciona também no ttys (e sockets ou pipes nomeados também podem ser usados para o arquivo)

    
por 09.04.2014 / 13:01

Tags