RH-133 – 1 Administrative Access (II)

Xorg

El entorno gráfico del que disponemos en Red Hat se basa en X Window System. X Window System compone tanto cliente como servidor de protocolo X. El protocolo X se desarrolló para poder gestionar interfaces gráficos usando una arquitectura cliente-servidor. Esta comunicación cliente-servidor se realizar mendiante el Xprotocol que se implementa en las liberías Xlib.

Actualmente se usa Xorg que es una implementacion basada en la version del protocolo X11R7.4. Anteriormente se usaba XFree86, pero cambió su licencia a una licencia más cerrada y se creó el fork X.org que se usa actualmente.

Es importante conocer que X.org no es un gestor de ventanas sino una implementación de un protocolo de comunicaciones gráficas. Debemos tener un gestor de vetanas como gnome, kde, openbox, lxde, windows-el, fluxbox, *twm (twm, ctwm, vtwm), tritium, metacity y uno de los más famosos: Window Maker ( gracias Dasmandr ) ,etc.. que interprete estos datos y ‘dibujar‘ las ventanas. Además normalmente se instala XFS que es un servidor de Fuentes de caracteres True Type, aunque no es imprescindible, se suele instalar.

En Red Hat, disponemos de la herramienta system-config-display para configurar las X

Si arrancamos en runlevel 5, El inicia prefdm en /dev/tty7 ( indicado en /etc/inittab ). Este comando busca en /etc/sysconfig/desktop la variable DESKTOP para determinar si debe lanzar Gnome o KDE. También lo usa startx. Esta configuración se puede obviar si existe un fichero ~/.desktop.

SSH
Existe una forma de acceder remotamente al servidor y de forma segura: usando ssh.
Es una herramienta muy versatil que se comunica usando un sistema bastante seguro de cifrado.

A tener en cuenta:

  • Se pueden hacer túneles remotos: Conectar un puerto local a uno remoto de otra máquina con ssh – L 8080:remote-web-server:80 user@ssh-server. Puerto local 8080 al 80 de otra máquina llamada remote-web-server usando la máquina ssh-server como extremo del tunel.
  • Generar llaves para no tener que meter contraseña. Se recomienda encarecidamente usar una password que proteja el fichero de claves para que nadie haga un uso malintencionado de él. Generamos las claves  con ssh-genkey -t rsa. Nos quedamos con la id_rsa y la id_rsa.pub la subimos al sitio remoto donde queremos acceder, será la clave pública. Podemos automatizar la copia con ssh-copy-id -i ~/.ssh/id_rsa.pub user@host
  • Para usar la clave privada sin tener que estar siempre metiendo el password, usarmos ssh-agent. Mientras dure nuestra sesión no volverá a pedirnos el password.
  • Podemos redirigir la salida gráfica de otra máquina a la nuestra con ssh -X. Si falla revisar la variable DISPLAY ( DISPLAY=:0.0 )

Multiplexando y compartiendo sesiones:

Existe la herramienta screen que nos permite tener múltiples terminales dentro de una misma sesión y además compartir la terminal con otro usuario. Además, se mantiene en ejecución en el servidor con lo que un corte local no interrumpiría la ejecución en remoto.

RH-133 – 1 Administrative Access

Me ha costado encontrar y sintetizar documentación acerca de las terminales, pero creo que ha merecido la pena. En una máquina Unix/Linux siempre se habla de las terminales y las consolas pero vamos a ver qué son y qué tipos hay. En nuestro manual RH-133 se no clasifica las terminales en :

  • Physical Console ( Consolas Físicas ) : /dev/tty0 o /dev/fb0 ( si usamos framebuffer )
  • Virtual Console ( Consola Virtual ) : /dev/tty1 .. /dev/ttyN ( ctrl + alt + fN o /usr/bin/chvt para cambiar de terminal )
  • Serial Console ( Consola Serie ) : /dev/ttyS0 ..  /dev/ttySN ( Xen /dev/xvc0 )
  • System Console ( Consola del sistema ) : /dev/console mapeada por el kernel a /dev/tty0 o /dev/fb0
  • Pseudoterminal o pty ( /dev/pts/N ).

Resumiendo mucho la historia, hay que saber que TTY significa TeleTYpe. Antes de la llegada de las computadoras, se usaban teletipos para comunicar datos a larga distancia. Cuando llegaron los computadores se usaron los teletipos ( TTY ) para interactuar con las computadoras. Dado que llevaban tiempo en el mercado y estaban disponibles, se comenzaron a usar sin necesidad de diseñar nada especifico para la entrada y salida de datos. Este terminal se llamo en los sistemas Unix/Linux Physical Console ( /dev/tty0 ). Con los teletipos se mandaban comandos al computador y este envíaba la respuesta que imprimía en papel. El uso de estos teletipos hace comprender la existencia de funciones y teclas que se mantienen sin ser muy útiles hoy en día. Por ejemplo fijaos en este teclado, con la tecla de ‘ line feed ‘ a la derecha

Bien, para ampliar el posible uso del computador, se comenzaron a enchufar terminales como los famosos VT-100 mediante puertos serie, lo que llamamos en el manual Serial Console ( /dev/ttyS0 ). Usando puertos serie podían tener otros terminales conectados al mismo computador, con lo que posibilitaba que hubiera más gente trabajando en la máquina.

Todos estos conceptos o la gran mayoría se han conservado en cierta medida, pero el hardware ha evolucionado. Ahora llamamos Physical Console ( /dev/tty0 ) al teclado, monitor y ratón. Si nos logeamos en un equipo, tendremos o /dev/tty1 que es una consola virtual. Pues bien, lo que se hace es enlazar el /dev/tty0 con la consola actual y así podemos recibir los mensajes del sistema.

La diferencia de las consolas virtuales es que no están conectadas a ningún conector, la consola física o la serie, están conectadas físicamente a la máquina pero las demás no. Cada ventana con un xterm o un ssh a una máquina nos da una consola virtual que no está fisicamente conectada a nada, ni tiene IRQ ni IO Address.

Además, tenemos /dev/console que el kernel mapea a /dev/tty0 por defecto pero se puede mapear a otro dispositivo usando el parámetro del kernel console=ttys0 . Se usa /dev/console para unificar en envío de mensajes de sistema, mensajes de arranque, el login, etc…  Por ejemplo el demonio init envía los mensajes del arranque a /dev/console y como está enlazado a /dev/ttyS0 vemos como arranca la máquina.

Para acabar las pseudoterminales o pts, son las referidas a terminales emuladas como xterm, gnome-terminal, etc.. son emulaciones de terminales serie como el vt-100.

Todo este concepto de las terminales es importante para comprender por qué existen los señales, procesos en background, foreground, etc…

Lecturas obligadas:
http://www.linusakesson.net/programming/tty/index.php
http://www.educ.umu.se/~bjorn/linux/howto/Text-Terminal-HOWTO-9.html

Referencias:
http://www.faqs.org/docs/Linux-HOWTO/Remote-Serial-Console-HOWTO.html
http://www.vanemery.com/Linux/Serial/serial-console.html