it-swarm-es.tech

¿Cuáles son otras formas de compartir una sesión tmux entre dos usuarios?

Estoy buscando una manera limpia y fácil de compartir una sesión tmux con otro usuario en la misma máquina. He probado el -S socket-path opción, pero requiere abrir todos los permisos de la ruta del socket antes de que alguien más pueda conectarse a la sesión. Funciona, pero es un poco engorroso. Por ejemplo:

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

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

Esto funciona, pero ambos usuarios ahora comparten la misma configuración de tmux (la configuración del usuario que inició la sesión). ¿Hay alguna manera de permitir que los dos usuarios usen su propia configuración tmux y sus propias asociaciones de teclas tmux individuales?

Para los puntos de bonificación, idealmente, también sería bueno dar acceso de solo lectura de la sesión tmux a otros usuarios.

112
Ryan McGeary

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

wemux mejora tmux para hacer que la multiplexación de terminales multiusuario sea más fácil y más potente. Permite a los usuarios alojar un servidor wemux y hacer que los clientes se unan:

El modo espejo brinda a los clientes (otro usuario de SSH en su máquina) acceso de solo lectura a la sesión, lo que les permite verlo trabajar, o

El modo de emparejamiento permite que el cliente y usted trabajen en el mismo terminal (cursor compartido)

El modo Rogue le permite al cliente emparejarse o trabajar independientemente en otra ventana (cursores separados) en la misma sesión de tmux.

Cuenta con soporte para múltiples servidores, así como listas de usuarios y notificaciones cuando los usuarios se conectan/desconectan.

Es un contenedor shellscript sobre tmux, no es necesario compilarlo.

48
Peter

He intentado esto en Ubuntu pero no veo por qué no funcionaría en otras variantes de Unix.

Si ambos usuarios son miembros de un grupo común y la ruta del socket utiliza ese grupo, ambos usuarios podrán adjuntar bien.

En lugar de tener que cambiar los permisos de la ruta del socket cada vez que crea uno, puede crear un directorio específico para sockets (utilicé/var/tmux).

Primero agregue un grupo para usuarios de tmux

$ addgroup $TMUX_GROUP

Cree un directorio con el grupo establecido en $ TMUX_GROUP y use el bit setgid para que los archivos creados dentro del directorio tengan automáticamente el grupo establecido en $ TMUX_GROUP.

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

A continuación, asegúrese de que los usuarios que desean compartir la sesión sean miembros de $ TMUX_GROUP

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

Hasta donde yo sé, no es posible compartir sesiones con otros usuarios de una manera "limpia".

Además, el acceso de solo lectura no es posible si el cliente no utiliza -r interruptor.

Como otro multiplexor de terminales pantalla admite las funciones que está buscando, lamentablemente también de una manera engorrosa ... No estoy seguro de si esta es una opción para usted, pero tal vez alguien más lo encuentre útil .

Solución para pantalla:

Organiza una sesión:

  • El bit SUID de pantalla debe establecerse: - /
  • Abra la sesión con screen -S sessionname
  • ctrla + :multiuser on
  • ctrla + :acladd otherUsername

Únete a una sesión:

  • screen -x username/sessionname

Puede establecer bits de permiso para el usuario (* para todos) con :aclchg o :chacl. # agregado afectará a las ventanas,? agregado afectará los comandos.

Ejemplos:

  • :aclchg * -wx "#,?" establecerá los permisos de sesión para que sean de solo lectura para todos los usuarios
  • :aclchg foo +w 2 dará acceso de escritura para el usuario foo en la ventana 2
  • :aclchg bar +x detach dará el permiso para separar una sesión a la barra de usuario
12
echox

Esto no es exclusivo de tmux, pero en este momento es lo que estoy usando:

Puede usar script -f /path/to/some/file Para escribir una sesión de terminal en un archivo. La opción -f Actualiza el archivo mientras escribe.

Alguien más (con solo permisos de lectura para el archivo, si lo desea) puede hacer tail -f Para ver el archivo, su sesión de terminal. La opción -f Hace que tail genere lo que se agrega.

La combinación de los dos "sincroniza" la vista de un terminal. Cuando se usa con tmux, también tiene la ventaja de evitar el cambio de tamaño que ocurre cuando ambos usuarios tienen resoluciones diferentes. Otro rasgo es que cada usuario puede trabajar en otra ventana o sesión privada.

Un inconveniente potencial es que algunos comandos (ncurses basados ​​por ejemplo) pueden hacer cosas extrañas a la salida, también secuencias de escape (colores). Sin embargo, estoy usando esto dentro de tmux, y parece que tmux soluciona esos problemas. Puedo ver que el otro usuario lee las páginas man y usa otros comandos que crean buffers, los colores se muestran correctamente, etc.

Sin embargo, esto no permite escribir en el terminal del otro (tal vez podría agregarse otra solución para eso).

Me gusta tener una ventana con dos paneles: un panel que ejecuta script -f Para que lo vea mi compañero, y otro junto a él donde yo tail -f Es terminal.

También funciona en ttys (y también se pueden usar tomas o tuberías con nombre para el archivo)

11
ferhtgoldaraz