Estoy buscando una manera limpia y fácil de compartir una sesión tmux con otro usuario en la misma máquina. He probado la -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.
Respuestas:
Desde https://github.com/zolrath/wemux :
Es un contenedor shellscript sobre tmux, no es necesario compilarlo.
fuente
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
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.
A continuación, asegúrese de que los usuarios que desean compartir la sesión sean miembros de $ TMUX_GROUP
fuente
tmux -S $TMUX_GROUP/shared-session
. Para adjuntarlo desde otra cuenta:tmux -S $TMUX_GROUP/shared-session attach
Que yo sepa, 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 usa el
-r
conmutador.Como otra pantalla de multiplexor de terminal 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:
screen -S sessionname
:multiuser on
: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 "#,?"
configurará 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á permiso para separar una sesión a la barra de usuariofuente
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-f
opción 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-f
opción hacetail
que se genere lo que se agregaLa 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. Otra característica 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 ejecutándose
script -f
para que lo vea mi compañero, y otro junto a él dondetail -f
está la terminal.También funciona en ttys (y también se pueden usar tomas o tuberías con nombre para el archivo)
fuente