# GNU Screen

GNU Screen es un programa informático de Multiplexación de terminales. Fue desarrollado por el proyecto GNU. Permite a los usuarios acceder a múltiples sesiones separadas dentro de una sola ventana de terminal o en una sesión de terminal remota. Es útil para tratar con múltiples programas en la línea de comandos y para separar programas de la terminal que los lanzó.
Puede imaginar a GNU Screen como una versión en texto de gestores de ventanas gráficos o como una forma de abrir terminales virtuales dentro de cualquier sesión accedida. Screen consiste en una envoltura que permite usar múltiples programas de texto al mismo tiempo y provee características que permiten al usuario usar programas productivamente desde una única interfaz.

## Características
### Persistencia

Similar a VNC, GNU Screen permite al usuario comenzar aplicaciones desde un computador, reconectar desde un computador distinto y continuar usando la misma aplicación sin tener que reiniciarla. De este modo se consigue que la migración entre localizaciones como el trabajo y el hogar sea simple. Screen provee funcionalidad de terminal-agnóstica de modo que los usuarios pueden conectar y reconectar usando distintos tipos de terminal, permitiendo a las aplicaciones seguir ejecutándose sin tener en cuenta sus cambios.

### Ventanas múltiples

Se pueden crear múltiples sesiones en la terminal, cada cual corriendo una aplicación. Las ventanas son enumeradas, y el usuario puede intercambiarlas por medio del teclado. Algunos emuladores de GUI proveen de pestañas o alguna otra funcionalidad similar para esto. Cada ventana tiene su propio scroll-back buffer, de manera que la salida es capturada incluso cuando la ventana no está siendo mostrada. Este historial puede ser guardado aun cuando se migra a otro computador.

### Vulnerabilidades

El Proyecto GNU recibió de manera anónima un "bug" en el que se advierte que se puede utilizar el GNU Screen como vía para escalar privilegios y obtener control de un ordenador con credenciales de root. Hasta la fecha la vulnerabilidad no ha sido parchada por lo que crackers utilizan guiones en lenguaje Python secundados con bibliotecas en lenguaje C para ilustrar el acceso y demostrar la vulnerabilidad. La versión afectada es GNU Screen 4.5.0 y ha sido clasificada como de severidad normal y prioridad normal en su resolución.

## Historia

Screen fue diseñado originalmente por Oliver Laumann y Carsten Bormann en la Universidad Técnica de Berlín y publicado en 1987.
Los criterios de diseño incluían la emulación VT100 (incluyendo ANSI X3.64 (ISO 6429) e ISO 2022) y un rendimiento razonable para un uso diario intensivo cuando los terminales basados en caracteres aún eran comunes. Más tarde se añadió la novedosa función de desconexión/desconexión.
Alrededor de 1990, Laumann traspasó el mantenimiento del código a Jürgen Weigert y Michael Schroeder en la Universidad de Erlangen-Núremberg, quienes más tarde trasladaron el proyecto al Proyecto GNU y añadieron funciones como el desplazamiento hacia atrás, la pantalla dividida, copiar y pegar y la pantalla compartida.
En 2014, el desarrollo se había ralentizado. Amadeusz Sławiński, que quería cambiar esta situación, se ofreció para ayudar. En respuesta, Laumann le concedió el mantenimiento. Sławiński procedió a publicar la primera nueva versión de Screen en media década. Como había algunas versiones no oficiales de "Screen 4.1" circulando por Internet, llamó a esta nueva versión "Screen 4.2.0".
En mayo de 2015, en la Conferencia openSUSE, Jürgen Weigert invitó a Alexander Naumov a ayudar a desarrollar y mantener GNU screen. Dos meses más tarde, con la ayuda de Alex, se publicó GNU screen 4.3.0.