Screen command, compartiendo la shell entre varios usuarios

Algunas veces me ha hecho falta compartir una sesión, con una o más personas, y mostrar lo que estoy realizando en un sistemas Unix/Linux, y no tengo suficiente ancho de banda, o no quiero compartir desde el equipo que me conecto (VNC o otra herramienta parecida), o es una sesión local en el Unix.

Para poder realizar esto tenemos 2 opciones o mejor dicho 2 situaciones.

1. Nos hemos conectado una cuenta común ( no muy recomendable en términos de seguridad pero …) o podemos pasarnos usando “su” a una cuenta común.
Esta es la situacion más sencilla. Para empezar creamos una sesión de “screen” en modo “detached” y le damos un nombre

[user1@testlab1 ~]$ screen -d -m -S shared_session

Y desde cualquier sesión que se tenga acceso al usuario que ha creado el “screen” ejecutamos para “attach” a ella

[otheruser@testlab1 ~]$ su - user1

[user1@testlab1 ~]$ screen -x shared_session

2. Queremos compartir entre 2 cuentas diferentes. Esta opción es un poco más complicada pero tampoco tanto.

Con esta opción tenemos la pega que debemos usar sobre el comando “screen” el “suid root” asi que no es la más segura la anterior

Creamos la sesión y nos conectamos a ella

[user1@testlab1 ~]$ screen -d -m -S shared2_session

[user1@testlab1 ~]$ screen -x shared2_session

Activamos el modo multiuser y añadimos al usuario que deseemos (Recuerda que lo que hay entre comillas es para pulsar)

[user1@testlab1 ~]$ "Ctrl-a" :multiuser on

[user1@testlab1 ~]$ "Ctrl-a" :acladd user2

Y después desde el otro usuario nos conectamos a la sesión compartida

[user2@testlab1 ~]$ screen -x user1/shared_session

Si recibimos el error “Must run suid root for multiuser support.” es que tenemos el problema con el “suid”. Por lo tanto tendremos que cerrar todas las sesiones de “screen” y como root tendremos que ejecutar

chmod u+s $(which screen)

chmod 755 /var/run/screen

rm -fr /var/run/screen/*

Os aconsejo opcionalmente una vez terminado por seguridad retirar esos permisos asignados al comando “screen”

chmod u-s $(which screen)

chmod 700 /var/run/screen

rm -fr /var/run/screen/*

Referencias

http://wiki.networksecuritytoolkit.org/nstwiki/index.php/HowTo_Share_A_Terminal_Session_Using_Screen

http://www.pixelbeat.org/docs/screen/


Leave a Reply

Your email address will not be published. Required fields are marked *