Desaventuras en la tierra de Linux, parte 7

Recientemente supe sobre Linux Containers (LXC) y me sono como una idea realmente interesante que básicamente perimite correr otras versiones de Linux en nuestra PC. En cierta forma la idea es similar a la virtualización que ofrecen otros programas como VirtualBox pero LXC es un tipo de virtualización a nivel del sistema operativo, es decir, utiliza nuestro sistema operativo para “pretender” que está ejecutando un diferente sistema operativo basado en Linux. Esto tiene algunas ventajas sobre la virtualización tradicional que ofrecen programas como VirtualBox ya que la máquina virtual no corre sobre hardware emulado sino que corre directamente de forma nativa en el hardware real e incluso se le puede dar acceso directo a los dispositivos. Esto resulta en rendimiento prácticamente nativo además de un reducido uso de memoria en comparación con la virtualización tradicional.

Como dije, suena como una gran idea. Entonces, ¿cuál es el problema?.

Mi principal problema con LXC es que, siendo una característica tan atractiva de Linux, debería estar al alcance de el usuario promedio y funcionar sin problemas en nuestra distro, sea cual sea. He leído que LXC funciona sin problemas en distros como Ubuntu y ArchLinux pero yo uso Debian y cuando decidí experimentar con LXC no tuve una muy buena experiencia :(.

En LXC, las máquinas virtuales son llamadas contenedores y hay dos tipos de contenedores, contenedores con privilegios y contenedores sin privilegios. La diferencia principal es que los contenedores con privilegios deben ser creados y ejecutados como root mientras que los contenedores sin privilegios pueden ser creados y ejecutados por usuarios normales. Aquí es donde las cosas se ponen feas si eres usuario de Debian. En un contenedor con privilegios, si algún usuario o programa logrará escapar del contenedor, ese usuario o programa tendría privilegios de administrador en nuestra PC. Escapar del contenedor tal vez no sea fácil pero tampoco es imposible así que los contenedores con privilegios, ejecutados como root, pueden representar un problema de seguridad. En cambio, los contenedores sin privilegios, al ser creados por un usuario normal, no tienen privilegios de administrador, así que aún si un usuario o programa lograra escapar del contenedor, este tendría únicamente los privilegios de un usuario normal. Por obvias razones, los contenedores sin privilegios son ideales, sobre todo para experimentar.

¿El problema? Crear contenedores sin privilegios en Debian no es nada fácil :(. Leí muchos artículos y tutoriales al respecto, la mayoría requerían oscuras combinaciones de comandos a ejecutar o paquetes por instalar. Al final logré crear el contenedor pero nunca tuve éxito al ejecutarlo :(. Si estás leyendo esto y sabes cómo ejecutar contenedores sin privilegios en Debian, deja un mensaje con las instrucciones :P.

Es una lástima que una característica tan útil y atractiva de Linux como lo es LXC requiera de tan intrincadas instrucciones. Ésta es una característica en la que los desarrolladores se deberían de enfocar para que cualquier usuario pudiera hacerla funcionar fácilmente y sin problemas y, sobre todo, sin tener que ser un mago lvl99 que tenga que ejecutar oscuras combinaciones de comandos. Es en momentos como este que me pregunto si los desarrolladores de algunas distros de Linux se enfocan más en agregar detalles visuales para que la distro luzca bien en lugar de enfocarse en las características útiles e importantes.

En fin, ahora que he ventilado mi molestia, debo decir que no todo está  perdido. Debian puede hacer complicado crear contenedores sin privilegios pero aún es posible crear y ejecutar contenedores con privilegios. Así que, entendiendo los riesgos de ejecutar los contenedores como root, podemos probar esa alternativa.

En los próximos posts hablaré un poco más sobre la creación y ejecución de contenedores LXC en Debian.

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s