Compartir sesiones de GNU screen entre varios usuarios

Existen varias situaciones en las que es útil que varios usuarios de un sistema vean simultáneamente una misma consola de Linux, por ejemplo, para hacer una instalación conjunta o para ver desde máquinas distintas la salida de un programa que se está ejecutando. Conseguirlo es relativamente sencillo usando GNU Screen con el modo multi-usuario.

Lo primero, para que el modo multi-usuario funcione es necesario que Screen tenga el bit setuid de root activado. A los usuarios de Gentoo nos basta con instalar screen con la USE="multiuser", los usuarios de otras distribuciones pueden ejecutar

# chmod u+s /usr/bin/screen

Ten en cuenta que esto puede tener implicaciones de seguridad, infórmate sobre setuid.

Suponiendo que el usuario user1 es el que va a lanzar inicialmente la consola y user2 es el usuario que se va a conectar luego a ella, los pasos a realizar son los siguientes:

user1 lanza la consola...

[user1]$ screen

...y la convierte en multi-usuario con permiso de acceso a user2 con estos dos comandos

ctrl-a :
multiuser on
ctrl-a :
addacl user2

Para ver las sesiones de user2 siendo user1 ejecutar

[user2]$ screen -ls user1/
There is a screen on:
5285.pts-1.server (Multi, attached)
1 Socket in /home/user1/.screen.

Como se puede ver, la etiqueta Multi nos informa de que se trata de una sesión multiusuario.

Para que el usuario user2 se conecte a una sesión de user1 ejecutar

[user2]$ screen -x user1/5285.pts-1.server

Para no tener activar el modo multi-usuario cada vez que lo necesitemos, podemos hacer que los cambios sean permanentes añadiendo estas dos líneas al fichero /home/user1/.screenrc

multiuser on
addacl user2