Viene de la época en que el manual de Gentoo ofrecía como alternativa la posibilidad de que un amigo mas experimentado «te ayude» durante la instalación del sistema operativo, con todos los perjucios que eso conlleva mas adelante a la hora del mantenimiento periódico…
Screen es una herramienta poderosísima a la que no termino nunca de encontrarle nuevos usos. Entre tantas cosas que permite hacer, se puede usar para compartir una sesión en la consola de comandos con N cantidad de personas, donde todos pueden leer los comandos que los demás tipean y la salida por consola que estos comandos devuelven y todos pueden escribir en la misma consola de comandos. Es como una orgía, pero en Bash.
Por hacer una comparación, sería como una especie de VNC o Terminal Server pero para el modo texto de linux, en tiempo real y multiusuario.
Muy útil para mostrarle a algún colega/cliente/amigo como se hace tal o cual cosa en linux mientras se mantiene a la par una conversación por video conferencia, teléfono, chat, etc.
Nunca he asistido a uno de esos FLISOL pero esto se me ocurre que sería una buena alternativa también.
*COF*puedeservirparachatearyparacontrolarunabotnet*COF*
Teniendo Screen instalado, el funcionamiento es bastante sencillo, por ejemplo:
- Una pc remota de nombre pcremota
- Un usuario remoto identificado como usuarioremoto
- Un usuario local identificado como usuariolocal
- Usuariolocal necesita compartir una sesión de consola con usuarioremoto en pccremota.
Como se pone en funcionamiento:
Usuariolocal se conecta a pcremota identificádose a si mismo como usuarioremoto:
~ $ ssh usuarioremoto@pcremota
Usuariolocal inicia screen en pcremota:
~ $ screen -S sesioncompartida
Usuarlocal inicia el modo multiusuario de screen presionando las teclas [CTRL] + [a] y luego tipeando:
:multiuser on
Usuarioremoto se conecta a la sesión compartida:
~ $ screen -x usuarioremoto/
Y eso es todo. Durante toda la sesión ambos pueden leer y escribir sobre la misma consola.
Al ejecutar screen -S sesióncompartida se está especificando un nombre para la sesión en cuestión. Si cualquiera de los usuarios conectados se desconectara, podría recuperar todo en donde lo dejó usando:
~ $ screen -r sesioncompartida
¿Y si son usuarios distintos?
Si se trata de usuarios distintos, por poner un ejemplo, donde usuariolocal se autentica contra pcremota como root y usuarioremoto se va a conectar a la sesión de root, entonces el ejecutable de screen necesita tener habilitado el bit SUID:
~ $ chmod u+s /usr/bin/screen
Por otro lado, luego de habilitado el modo multiusuario de la sesión screen que inició root, este tendría que darle permiso a usuarioremoto para que se conecte a su sesión. Como todos los comandos en scren, presionando primero [CTRL] + [a] y tipeando:
:acladd usuarioremoto
Y así sucesivamente N cantidad de veces, una por cada usuario que se va a conectar a la sesión screen con credenciales diferentes a las del usuario que inició el proceso.