En esta nota: La ultima parte de la configuracion del entorno chroot Debian Lenny, donde veremos como levantar el X server y el escritorio Gnome dentro de la jaula, y ademas configuraremos apache2 con php5 y mod_python para correr dentro de la jaula.
Puedes acceder a la nota anterior aqui: Crear entorno chroot Debian Lenny en Ubuntu 8.04 Hardy + ssh chrooted login
** Generar los dispositivos del directorio /dev **
Para poder usar los dispositivos sin problemas dentro de la jaula, debemos crearlos en el directorio /dev Por ejemplo, la 1ra vez que levante el servidor X dento de la jaula sin haber configurado el directorio /dev dentro del entorno chroot, no me funcionaba el mouse dentro de la jaula, pero si fuera de la jaula.
chroot# cd /dev ; /sbin/MAKEDEV -v generic ; cd -
Instalamos el entorno de escritorio
En este caso, instalare gnome, pero la idea es la misma con cualquier otro escritorio, ya sea KDE, XFCE, etc, salvo que los archivos de configuracion varian segun los escritorios.
chroot# aptitude install gnome
** Configurar el GDM (gnome display manager ) para que arranque el servidor X en la virtual terminal 9 – vt9 **
El GDM es el programa que se encarga de presentarnos un login grafico, y de permitirnos seleccionar distintos entornos o escritorios en cada login (en caso de que tengamos instalados mas de un entorno de escritorio — gnome, kde, xfce ). GDM es una alternativa al tradicional XDM, y al KDM.
Para configurar el GDM en debian Lenny existen principalmente dos archivos:
El archivo de configuracion general /usr/share/gdm/defaults.conf
y el archivo recomendado para ‘customizaciones’: /etc/gdm/gdm.conf
Este archivo puede ser modificado con la herramienta gdmsetup, o tambien puede ser modificado editandolo manualmente.
Aqui seguiremos este ultimo enfoque. Simplemente en la seccion [daemon] del archivo
chroot# vim /etc/gdm/gdm.conf
[daemon] # agregamos las siguientes lineas: FirstVT=9 VTAllocation=true
Entrando al login grafico del entorno chroot
Para iniciar el Gnome Display Manager, estando en el entorno chroot, introducimos el siguiente comando:
chroot# /etc/init.d/gdm start
Esto nos presentara con el login grafico del entorno chroot.
Dos X servers corriendo al mismo tiempo
Lo que logramos es que cada entorno corra su propio servidor X, como se puede apreciar en la siguiente salida:
chroot# ps aux | grep gdm root 5461 0.0 0.0 1680 504 ? S+ 01:34 0:00 grep gdm root 5566 0.0 0.1 15160 1704 ? Ss May19 0:00 /usr/sbin/gdm root 5569 0.0 0.3 15640 3188 ? S May19 0:00 /usr/sbin/gdm root 5573 2.1 3.0 38404 31636 tty7 Ss+ May19 11:51 /usr/bin/X :0 -br -audit 0 -auth /var/lib/gdm/:0.Xauth -nolisten tcp vt7 root 27598 0.0 0.1 11640 1672 ? Ss May19 0:00 /usr/sbin/gdm root 27607 0.0 0.2 12008 2780 ? S May19 0:00 /usr/sbin/gdm root 27609 0.4 2.7 33328 28060 tty9 Ss+ May19 0:32 /usr/bin/X :0 -audit 0 -auth /var/lib/gdm/:0.Xauth -nolisten tcp vt9
Para intercambiar de entorno, simplemente pulsamos Ctrl+Alt+F7 para pasar al entorno grafico principal con Ubuntu, y Ctrl+Alt+F9 para pasar al entorno grafico chroot con Debian.
Experimentar sin miedo
¿ Y ahora que ? Bueno, como se explicaba en la nota anterior, las ventajas de un entorno chroot es que se puede experimentar sin miedo a romper la distribucion principal, pues nada de lo que hagamos dentro de la jaula podra afectar al sistema de archivos de nuestra distribucion principal. Otra idea importante de los entornos chroot es que se utilizan mucho para correr servidores o servicios, como un servidor apache o un ftp, con el agregado de que si el servidor es comprometido por un atacante, este no ganara el control total de la maquina, sino simplemente del sistema de archivos de la jaula. (Es decir, queda atrapado dentro de la jaula).
Como los puertos de la PC son compartidos por ambos entornos (el chroot solo aisla el sistema de archivos ), podemos correr un servidor apache dentro de la jaula y accederlo via http://localhost desde ambos entornos. Esto quiere decir, que por ejemplo, podriamos correr nuestro servidor web o ftp desde dentro de la jaula, sin ninguna configuracion extra, ya que los puertos de la jaula estaran visibles externamente. Para acceder al servidor web de la jaula, desde otra computadora de la red, simplemente escribimos la ruta como si el servidor estuviese instalado en la distribucion principal, por ejemplo: http://hardy Tener en cuenta que si se instala un servidor web tanto en la jaula como en la distribucion principal, hay que configurar a apache para que escuche en distinto puerto (default 80 ), ya que no es posible hacer que dos instancias de apache escuchen en el mismo puerto (no sabria si nos estamos refiriendo a la instancia dentro de la jaula, o la instancia de la distribucion principal ).
Apache corriendo en la jaula
La instalacion de apache con el administrador de paquetes aptitude es bastante trivial. Aqui solo expondre los paquetes relacionados con apache que he instalado en la jaula:
chroot# dpkg -l *apache* | grep ^ii ii apache2-doc 2.2.8-3 documentation for apache2 ii apache2-mpm-prefork 2.2.8-3 Traditional model for Apache HTTPD ii apache2-utils 2.2.8-3 utility programs for webservers ii apache2.2-common 2.2.8-3 Next generation, scalable, extendable web se ii libapache2-mod-php5 5.2.5-3 server-side, HTML-embedded scripting languag ii libapache2-mod-python 3.3.1-3+b1 Python-embedding module for Apache 2 ii libapache2-mod-python-doc 3.3.1-3 Python-embedding module for Apache 2 - docum
Notar que instale la version apache2-mpm-prefork, porque es una version compatible con librerias que no son thread-safe, y esta instalacion la usare porsteriormente para probar django (que es un framework para desarrollar aplicaciones web en python ). En la documentacion de django aclara que hay que tener instalada la version mpm-prefork de apache.
Veamos los paquetes instalados de mysql:
chroot# dpkg -l *mysql* | grep ^ii ii libdbd-mysql-perl 4.006-1 A Perl5 database interface to the MySQL data ii libmysqlclient15off 5.0.51a-5 MySQL database client library ii mysql-client-5.0 5.0.51a-5 MySQL database client binaries ii mysql-common 5.0.51a-5 MySQL database common files ii mysql-server-5.0 5.0.51a-5 MySQL database server binaries
Levantando los servicios
chroot# /etc/init.d/mysql start chroot# /etc/init.d/apache2 start
Eso es todo por ahora. A disfrutar del chroot !!
Problema con el audio en entorno chroot
Nota: Un problema que todavia no he resuelto es que en el entorno chroot no tengo audio. Algo que se puede intentar es remontar el directorio /dev del sistema principal, en el directorio /dev del sistema chroot, antes de entrar al entorno chroot. Pero todavia no lo he probado.
hardy# mount /dev/ /chroot/lenny/dev -o bind
Dejanos tus comentarios
¿ Habias usado alguna vez un entorno chroot ? Si tienes alguna pregunta o consejo sobre el material expuesto, por favor colabora escribiendo un comentario.
este documento ha sido publicado bajo la siguiente licencia: “Verbatim copying and distribution of this entire article are permitted in any medium provided this notice is preserved.”