Está en la página 1de 84

EDITORIAL

PORQUE TE
LO MERECES
D
esde los laboratorios de HP nos todas las comunicaciones del futuro. Diga coma etílico, y si es a
llega la noticia de que la Búsqueda adiós a la TV (digital o no), al teléfono, al esto es a lo que han lle-
de la Resistencia Pérdida ha con- ADSL… todo eso ha muerto. gado la política del
cluido. Un componente electrónico elemen- Bienvenidos a The Grid. desarrollo institucional
tal, cuya existencia teórica se formuló mate- Por fin una editorial positiva, pensarán. de cara al sector TI en España, yo quiero
máticamente hace años, ha sido hecho rea- Una editorial donde no se critica a profeso- migrar ya.
lidad gracias a los nanotubos. res de universidad, ni se humilla a autores Bien pensado, la tontería… no…, la cri-
La memorresistencia es capaz de almace- novatos, ni se mete con la comunidad, ni se minal estupidez ésta del pastel y la impor-
nar (léase “recordar”) su último estado, dedica al “Microsoft Bashing”. Una editorial tancia que le pretenden dar, es una buena
independientemente de que reciba o no que mira hacia adelante, que habla de las metáfora de todo lo malo que pasa en el
flujo eléctrico. Las aplicaciones prácticas de maravillas de la tecnología… área de lo tecnológico y científico en
semejante componente son obvias para No caerá esa breva. España: La @rroba, dulce que engorda pero
cualquier ingeniero: La RAM dejará de ser Por que, veamos, mientras todo eso no alimenta, es el escaparate, el triunfo de la
volátil y podremos esperar equipos, todo sucede por ahí fuera ¿qué pasa por aquí? forma sobre el fondo, la excusa para cuchi-
tipo de equipos, de arranque inmediato. Se Bueno, les cuento la gran noticia nacional pandas, fotos y discursos vacíos bajo el pre-
acabaron las esperas para cargar un kernel, sobre tecnología: según una nota de prensa texto de asistir al desarrollo. El reparto de
los drivers y los interfaces gráficos. Otra que nos han mandado a la redacción no pastelitos congregará, como siempre, un
aplicación afectaría al campo de las redes menos de doce veces “nace el postre de montón de buitres que parecerán no haber
neurales, permitiendo la implementación de Internet, la @rroba da el salto a la mesa de comido en meses, tan parecidos a las
redes en hardware donde cada neurona no los ciudadanos”. empresas del sector que, gracias a las nefas-
tendría que ser reprogramada cada vez, ya Y no es broma. tas políticas públicas, se han convertido en
que conservaría el estado de la pasada ante- “Es un elemento de cohesión social el mendigas del estado, siempre pidiendo sub-
rior. El invento, para entendernos, promete que una gran efeméride como el diadeinter- venciones a cambio de proyectos supuesta-
revolucionar la tecnología de los sistemas net, Día Mundial de la Sociedad de la Infor- mente “innovadores”, pero en realidad
expertos. mación y de las Telecomunicaciones, tenga vacuos, trillados o directamente vaporosos,
Mientras tanto, en Amazon y Google tra- su particular postre, la ‘@rroba del diadein- en vez de, qué diría yo, buscar una vía de
bajan en un nuevo concepto para el soporte ternet’, sin duda, una forma distinta de negocio rentable, competitiva y de mercado.
de aplicaciones en red. El “cloud compu- compartir las nuevas tecnologías con nues- Por todo ello, creo que la famosa @rroba
ting” permite que el desarrollador pueda tros amigos, familiares o compañeros de tra- de chocolate no es adecuada para represen-
ignorar potenciales problemas de escalabili- bajo. Este espíritu festivo es totalmente tar lo que por aquí se cuece. Permítanme
dad en servicios en red. Si su programa lo compatible con la atención que se presta en sugerir un dulce más apropiado. Un dulce,
utilizan concurrentemente tanto 10 usuarios esa jornada a los no conectados”. Ah, sí… creo, que simboliza mejor el estado de la
como 10.000, no importa: los recursos esos pobres desgraciados. I+D+I en España. Un dulce que puede
requeridos escalan linealmente. Su servicio Mientras Luis Arroyo, Director de Dia- estar recubierto de chocolate o de azúcar,
siempre estará disponible y siempre será deinternet y autor de la anterior afirmación, que puede estar relleno o ser hueco y que,
ágil, a pesar de la carga. se inyecta insulina para contrarrestar los por su forma, simboliza la nota que otorga-
En Suiza, en preparación del enorme efectos tanto del “pastel” (nunca mejor ría a los dirigentes y empresarios de este
volumen de datos que se han de procesar dicho) como de sus palabras, Isabel Martí- país en materia de conocimientos de tecno-
con cada experimento que se realice en nez-Cubells, Concejala del Distrito de logía aplicada, políticas efectivas para el
LHC (Large Hadron Collider), ya tienen listo Chamberí por el Ayuntamiento de Madrid, desarrollo de la industria… y vergüenza.
The Grid: Una vasta red de 55.000 servido- anuncia que se van a chotear 10.000 @rro- Permítanme sugerir el donut. ■
res conectados por una red de fibra óptica bas de esas en las fiestas de San Isidro, a
de altísima velocidad, unas 10.000 veces costa, claro está, de las arcas municipales.
más rápida que un ADSL convencional, que La pastelera está encantada. Según Car-
sería capaz de transmitir 10 películas en alta men Moreno, creadora del dulce: “Nos
definición de Europa a Estados Unidos en pareció una idea extraordinaria y acepta-
dos segundos. No es que sea la infraestruc- mos el reto encantados. ¿A qué sabe Inter-
tura de Internet para el futuro, por que es net?, fue la primera pregunta […]”. Para mi Paul C. Brown
más que eso: Es la infraestructura para sería la última antes de entrar en estado de Director

WWW.LINUX- MAGAZINE.ES Número 39 3


DVD LINUX MAGAZINE

Y en el DVD de Linux Magazine…

UBUNTU HARDY Y
MANDRIVA 2008
SPRING
A
pesar de que en Linux Maga- desde cero, como con una actualiza- pre a la última, muy a la última,
zine nos gusta darle igual ción de una versión anterior; el pro- durante al menos cinco años.
oportunidad a todas, y de que ceso es tan suave y tan a prueba de Y Ubuntu es una tromba: el número
a veces las pequeñas distros comuni- fallos que la mayor queja en los foros de instalaciones para usuarios finales
tarias tienen tanto o más que ofrecer es que “no tengo nada que hacer” es enorme, más que la de cualquier
que algunas de las más grandes, (naturalmente, esto para la mayoría otro sistema Linux, lo que garantiza
hemos de reconocer que hay algunas de los usuarios es más bien una ven- una gran y activa comunidad; y sus
particularmente golosas para los lec- taja). repositorios son casi infinitos. Si no
tores. Este mes tenemos dos de Además de la facilidad de instala- encuentras algo en ellos, probable-
ellas… ción y de configuración, el manteni- mente no lo necesites.
miento del sistema es igualmente sen-
Cara A: Ubuntu 8.04 – cillo: cuando se va a reproducir un Cara B: Mandriva 2008.1
Hardy Heron archivo multimedia en algún formato Spring
Existen dos quejas contra la última privativo, el sistema nos pregunta si Si bien la versión 2008 de Mandriva
versión de Ubuntu [1]. La primera de queremos instalar los codecs. Si le [2] (incluida con el número 35 de
ellas viene de los que buscan en decimos que sí, los instala y configura nuestra revista en su versión comer-
Linux una razón para trastear. Confi- sin más y de manera totalmente trans- cial “Powerpack” – ver [3]), era un
gurar dispositivos, editar ficheros de parente. El monitor de actualizaciones gran avance en el desarrollo de los
/etc, compilar paquetes, son las cosas está siempre alerta para cuando apa- sistemas Mandriva, adolecía de cier-
con las que disfrutan estos usuarios. recen nuevos paquetes en los reposi- tos bugs molestos que hacían que no
Pero Hardy Heron les roba este placer: torios, y el LTS (“Long Time Sup- fuera la soberbia experiencia que
ya sea tanto con una instalación port”) nos asegura un sistema siem- podría haber sido.

Figura 1: El tema predeterminado de Ubuntu 8.04 – Hardy Heron con Figura 2: La herramienta de actualización mantendrá el sistema
transparencias cortesía del sistema de 3D Compiz-Fusion. seguro y al día de una manera sencilla.

6 Número 39 WWW.LINUX- MAGAZINE.ES


DVD LINUX MAGAZINE

Pareja de Ases
Pero claro, la belleza sin poder no es
nada. Tanto Mandriva como Ubuntu
incluyen todos los asistentes
necesarios para hacer la vida
del usuario más fácil, miles
de aplicaciones para que
no le falte de nada, y lo
último en software ofi-
mático (OpenOffice 2.4,
con soporte para docu-
mentos multi-idioma y
transiciones 3D en
presentaciones), para
Internet (Firefox 3,
con mejoras en admi-
nistración de memoria,
velocidad y prestacio-
nes), diseño (The GIMP
2.4 con la nueva tecnología
de selección de elementos
SIOX y centenares de filtros y
efectos), multimedia (Amarok,
Mplayer, VLC, etc.), 3D (Compix-
Fusion) y mucho más.
Lo mejor de lo mejor en el DVD de
Linux Magazine
Estos problemas, comunes por con el Asus Eee, fruto de la expe- ¡Pruébalas! ■
cierto a cualquier distro, se corrigen riencia de la empresa Mandriva con
en la versión 2008.1 que incluimos el Classmate de Intel. RECURSOS
en el la cara B de nuestro DVD de Mandriva 2008 Spring es además
[1] Página oficial de Ubuntu: http://www.
este mes… uno de los sistemas más bellos que
ubuntu.com/
Pero la versión Spring de Mandriva nos podemos instalar. La integración
[2] Página oficial de Mandriva: http://
2008 es algo más que un masivo bug de las últimas versiones de los tres
mandriva.com/
fix. Incluye un nuevo y depurado escritorios más comunes (KDE 3.5.9
asistente para la instalación de soft- y KDE 4.0.3, Gnome 2.22 y Xfce [3] Linux Magazine número 35, Mandriva
Powerpack: http://www.
ware, un nuevo centro para emisión 4.4.2) es total y perfecta, y los
linux-magazine.es/issue/35/
de multimedia llamado Elisa e, temas, fondos y salvapantallas son
006-007_DVD35.crop.pdf
incluso, una perfecta integración exquisitos.

Figura 3: El escritorio de Mandriva se caracteriza por su limpieza, Figura 4: El nuevo asistente para la administración de software de
aspecto cuidado y belleza. El menú KDE pone todo el sistema al Mandriva es más claro y simplifica el proceso de instalación de
alcance de la mano. nuevos programas

WWW.LINUX- MAGAZINE.ES Número 39 7


INSEGURIDADES

INSEGURIDADES
XSS y ap_escape_html() La reciente actualización del servidor probar su contenido hostil potencial; sin
El asunto de Cross Site Scripting (XSS) ha HTTPD de Apache incluye no una correc- embargo, el hecho de que el sitio también
sido comentado recientemente en las noti- ción para una vulnerabilidad XSS, sino que incluya probablemente JavaScript legítimo
cias, así que pensé que debía comenzar también implementa ap_escape_html() en hace que la tarea de identificación de scripts
esta remozada sección echando un vistazo una docena de otros lugares donde los datos hostiles sea mucho más dificultosa.
a este clásico problema de seguridad. se pasan a una víctima potencial. Un usuario no puede esperar a que cada
Como el usuario final realmente no puede El código en el Listado 1 se encuentra en el sitio tome medidas para prevenir ataques
hacer nada para parar el tema, XSS es una formato diff universal (- significa que una XSS (nótese que muchos sitios no pueden ni
forma de ataque que los chicos malos ado- línea fue eliminada, y + indica la que la sus- siquiera molestarse en hacer que las páginas
ran. Un ataque XSS permite a los atacantes tituyó). El uso de ap_escape_html() es bas- se rendericen correctamente en Firefox).
insertar contenido hostil (como JavaS- tante sencillo y realmente no afecta a la legí- Desafortunadamente, los usuarios tienen
cript) en las páginas web de un sitio en el tima funcionalidad del software. unas cuantas opciones para protegerse contra
que confía el usuario. Lo que hace que Es decir, el cambio mostrado en el Listado los ataques XSS, y el consejo estándar de no
este problema sea particularmente grave 1 refleja una atractiva situación clásica: Un pulsar en enlaces de origen desconocido está
es que ocurre en el software mismo del problema está escondido en el código lo suficientemente expandido hoy en día.
servidor web (servidor HTTPD de Apa- durante un tiempo, incluso aunque se
che). Incluso estando seguros de que encuentre disponible una relativamente sim- NoScript
nuestras aplicaciones basadas en web ple solución. Para usuarios Firefox, la mejor opción es usar
están seguras contra XSS, un atacante La solución simplemente no está imple- el add-on NoScript [1]. Aunque el bloque
puede ejecutar el ataque a través del soft- mentada, lo que conduce a una vulnerabili- JavaScript suministrado por NoScript hace
ware del servidor de Apache. dad de seguridad. muy poco (en algunos casos los usuarios
El software HTTPD de Apache imple- deberían tener ya situado el sitio en la catego-
menta la función ap_escape_html() para Fail Safe ría allow JavaScript, el add-on proporciona
desinfectar la entrada y evadir los símbolos Uno de los principios fundamentales del bloqueo rudimentario de ataques de scripting
< y > y los caracteres de control &, usa- diseño de sistemas es que éste debería con- XSS pasados a través de peticiones URL, avi-
dos a menudo en ataques XSS. Si un ata- trolar fallos y condiciones de error inespera- sando a los usuarios y ofreciéndoles la
cante puede colar estos caracteres en, por dos con soltura (este principio es conocido opción de recargar la página.
ejemplo, un mensaje de error enviado a la como fail safe design o diseño a prueba de
víctima, el atacante puede conseguir entrar. fallos). El hecho es que tristemente la mayo- Conclusión
En la mayoría de los casos donde la ría del software, incluyendo la mayor parte En este artículo muestro el porqué no soy
salida se pasa a una víctima potencial, de software de código abierto, no está dise- programador. No soy lo suficientemente
ap_escape_html() se usa apropiadamente ñado a prueba de fallos. De hecho, los pro- listo ni meticuloso para escribir código
para desinfectar la salida y asegurarse de gramas fallan bastante a menudo de forma seguro. Un paso de desinfección perdido,
que nada hostil pasará. Desafortunada- espectacular, como en los casos de los des- un error lógico menor, o incluso una errata
mente, el equipo de Apache olvidó usar bordamientos de búfer causantes de la ejecu- pueden conducir potencialmente a resulta-
esta función de desinfección en unos cuan- ción de código arbitrario, corrupción de dos desastrosos. Además, muestro por qué
tos sitios, en bastantes sitios, de hecho. datos, etc. la seguridad es tan problemática. Incluso
¿Si no puedes confiar en la seguridad del un administrador que hace todo debida-
Listado 1: httpd-2.2.8/ sistema, qué puedes hacer? mente, puede acabar con problemas de
modules/http/ La respuesta es que simplemente no con- seguridad, y debido a la naturaleza interco-
http_protocol.c fíes. Para administradores de sistemas y nectada de las redes de ordenadores
01 case HTTP_METHOD_NOT_ALLOWED: redes esto significa incrementar múltiples moderna (o mejor, la única red a la que
capas de seguridad; si una falla, entonces estamos adjuntando continuamente todo,
02 return(apr_pstrcat(p,
afortunadamente la capa siguiente se hará incluyendo nuestra tostadora diaria), un
03 - ”<p> The requested cargo del problema. En este caso, la solución problema de seguridad de alguien más
method ” , r - >method, más obvia es implementar algún tipo de puede convertirse fácilmente en nuestro
04 + ”<p> The requested proxy web (como el servidor web Squid) que propio problema de seguridad también. ■
method ” , entienda los datos que se envían y pueda fil-
05 + ap_escape_html(r - trarlos; por ejemplo, bloquear el paso de RECURSOS
>pool , r - >method) , caracteres < o > dentro de una petición [1] Add-on de NoScript: http://noscript.
URL. net/
06 ” is not allowed for
Adicionalmente, un administrador podría
the URL ” , [2] Metasploit: http://metasploit.com/
también verificar los datos de salida y com-

8 Número 39 WWW.LINUX- MAGAZINE.ES


NEGOCIOS
NOTICIAS DEL KERNEL

NOTICIAS DEL
KERNEL
Nuevo Repositorio git algún tiempo, y las revisiones continuarán David Sterba consideró que era hora de
Completo mientras se descubra más información. ■ migrar el driver para tarjetas inalámbricas 3G
Peter Stahlir preguntó si alguien ya había UMTS PCMCIA desde el kernel -mm de
realizado un árbol git completo del kernel Nuevos Drivers Andrew Morton hasta la rama principal, por
desde la versión 0.01 hasta la actualidad. Adrian McMenamin ha escrito código para lo que envió un parche. Como resultado,
Este tema reaparece periódicamente, dar soporte a la unidad CD-ROM de la SEGA diversas personas tuvieron problemas técni-
motivo por el que Linus Torvalds ha pedido Dreamcast. Así mismo, su driver implementa cos que no habían salido a la luz mientras el
recientemente que alguien se animase a el propietario Sega Packet Interface y soporta código estuvo en la rama -mm. Alan Cox y
realizarlo. En esta ocasión Dave Jones el formato de disco propietario Giga Disk otros enviaron algunas críticas técnicas, y
comentó que estaba trabajando en ello, ROM (conocido como formato GD-ROM). David rápidamente envió un parche actuali-
intentando dividir el repositorio en el mayor Algunos chicos ofrecieron revisiones técnicas, zado corrigiendo estos problemas. Llegados a
número de parches posible en lugar de y Adrian rápidamente envió parches de este punto, Jiri Kosina aprobó el parche y lo
hacer de cada versión oficial un único actualización basados en estos comentarios. pasó a Andrew, que también lo aprobó y lo
mega-parche. Añadió que estaba inten- Tras un tiempo las críticas cesaron, y el par- pasó a Linus Torvalds.
tando incluir cada parche -pre, -test y -rc en che actualizado parece que entrará en la rama Thomas Bogendörfer envió un driver para
entregas separadas. principal. puerto serie que soporta las UARTs SC2681/
Así mismo, pretende incluir las listas de Jochen Friedrich ha programado código SC2691, comentando que los viejos sistemas
cambios de todos los lanzamientos posi- para dar soporte al temporizador “perro guar- SNI RM400 confiaban en estos chips para sus
bles, algo que nadie había intentado antes dián” del hardware PowerQUICC y para que puertos serie en placa.
debido al enorme tamaño de la tarea. Ha de este temporizador pueda activarse por el boo- Herald Welte ha retomado un proyecto que
recordarse que tiempo atrás, una “lista de tloader. Tras su activación no puede deshabili- comenzó hace varios años Thomas Kleffel,
cambios” podía ser un pequeño fragmento tarse de nuevo, pero debe resetearse periódi- un driver MMC/SD para el controlador Sam-
de un correo en medio de un extenso hilo. camente para evitar un reinicio automático. sung S3C24xx. Thomas lo había abandonado
Por el camino, cada vez que Dave encon- No se hizo ninguna crítica propiamente dicha por falta de tiempo para trabajar en él, pero
traba gente trabajando en proyectos simila- al parche, por lo que parece que también se dio permiso a Harald para relevarle. Éste ha
res, se hacía con cualquier lista de cambios incluirá. logrado que el driver cumpla con el API SD/
que necesitase para rellenar los huecos. Alex Dubov ha enviado un parche bajo MMC actual, consiguiendo que se pueda
El resultado final de Dave cubre hasta la GPL que da soporte al protocolo propietario, fusionar en la línea principal del kernel. El
versión 2.4, punto en el que Linus comenzó y secreto, de Sony para sus tarjetas Memory plan es que una vez que el driver se haya
a utilizar BitKeeper. Los repositorios Git que Stick, que podemos encontrar en muchos de fusionado con éxito, Harald y Thomas sean
cubren desde 2.4 hasta la actualidad ya los productos de esta compañía. Alex ha aña- co-mantenedores. Pierre Ossman ha llamado
existen, por lo que el trabajo de Dave com- dido también una entrada en el archivo la atención acerca del exceso de código de
pleta la historia hasta los comienzos. MAINTAINERS listándose como mantenedor debugging, entre otras cosas, en el parche de
Él mismo publicó un repositorio 2G que oficial. Harald. Harald comentó que actualizará el
incluía más de 1000 entregas, casi la mitad Darrick J. Wong ha escrito y enviado un parche y lo reenviará. ■
de las cuales tenía entradas de “lista de driver que reporta voltaje, temperatura y lec-
cambios” asociadas: git://git.kernel.org/ turas del sensor del ventilador para el chip Eliminar Material Viejo
pub/scm/linux/kernel/git/davej/history.git. monitor ADT7473. Dimitri Vorobiev eliminó el archivo documen-
El repositorio incluye también la historia Steve Hardy ha escrito un driver para dar tation/mips/GT64120.README de la rama
completa, incluyendo todos los forks de las soporte al convertidor analógico-digital Burr- 2.6, ya que realmente era específico de la ver-
ramas estable/desarrollo y otras ramas Brown/ Texas Instruments ADS7828 12-bit 8- sión 2.4 y hacía referencia a archivos y directo-
experimentales que Linus introdujo por el channel que se usa para monitorizar el voltaje rios que no existían. En el documento se dis-
camino. Desafortunadamente, parece que en muchos procesadores de uso común. cutía el chip de sistemas controladores GT-
hay varios lanzamientos del kernel que se Andrzej Zaborowski ha enviado un driver 64120, común en muchas placas base MIPS.■
han perdido para siempre. para la luz trasera de LCDs basados en
Por último, ahora que Dave ha publicado OMAP1 PWL para su inclusión en la rama RECURSOS
este trabajo, se está incorporando más principal. El driver ha estado viviendo
[1] Kernelnewbies Japan: http://lists.
información al archivo y se están corri- durante un tiempo en la rama OMAP, y
kernelnewbies.org/mailman/listinfo/
giendo más errores. El registro completo parece que ha llegado el momento de pasarlo
jp-kernelnewbies
puede que no esté listo hasta dentro de a la rama principal del kernel.

10 Número 39 WWW.LINUX- MAGAZINE.ES


NOTICIAS

NOTICIAS
El Microsoft Daily Observer lanzasen al mercado, indiferentemente del sis- del tratado de la Unión que legisla sobre la
Pasaremos de puntillas por el hecho de que el tema operativo, un mercado donde Linux es el competencia ilegítima.
último Service Pack de XP ha dejado inutiliza- rey. Y la Comisión Europea ha iniciado una
dos centenares, posiblemente miles, de Por lo que se deduce que Microsoft teme investigación [10] para descubrir si de verdad
máquinas a lo largo y ancho del mundo [1], que los UMPCs cargados con Linux se coman hubo tantas irregularidades como se denun-
de que Redmond admite que ha incluido un pedazo del mercado de los portátiles tradi- cian.
puertas traseras de manera intencionada en su cionales, uno de sus sectores más golosos, por Y… bueno, la lista sigue a lo largo y ancho
software para que terceros puedan investigar ser aquí donde más licencias OEM de Vista del mundo. Es poco probable que Ballmer y
hasta lo más trivial de sus usuarios [2], y de vende. Co. pudieran preveer que todo este proceso
que los clientes de MSN Music van a quedarse Asus, uno de los pioneros con su Eee, iba a ser tan penoso. ■
con sus composiciones, pero sin novia, con parece haber tomado buena nota, y para no
todas esas canciones que han comprado y sin irritar a los señores que les dictan cómo han RECURSOS
ningún lugar donde reproducirlas [3]. Pasa- de regir su negocio, ya venden en Australia la
[1] SP3 rompe más cosas que arregla:
mos, decimos, más que nada, porque los versión Linux más cara que la versión Win-
http://www.theregister.co.uk/2008/
clientes voluntarios de Microsoft a estas altu- dows [5]. ¿Recomendamos o no recomenda-
05/09/
ras ya deberían saber a qué atenerse. mos que no se comprara el Eee en su día [6]?
windows_xp_sp3_reboots_crashes/
Pero cuando Microsoft intenta perjudicar Y otro UMPC que hay que evitar a toda
[2] Microsoft amablemente abre los
ilegítimamente a los demás, esa es otra histo- costa es, como se ha advertido con anteriori-
ordenadores de sus clientes a ter-
ria… ¿Por dónde empezar? ¿Las ampollas que dad, el OLPC. Nicholas Negroponte ha vuelto
ceros: http://www.infiltrated.net/
le salen al OOXML y el proceso de estandari- a satisfacer a sus titiriteros de Redmond, criti-
?p=91
zación? ¿El secuestro del OLPC? ¿Su (nuevo) cando duramente al software libre, alegando
[3] Que no pare la (MSN) Música: http://
intento de manipulación del mercado del que hay mucho fundamentalista suelto [7].
www.eff.org/press/archives/2008/04/
hardware? Empecemos con eso: Negroponte se convierte así en el rey de lo
28/microsoft-open-letter
Ya sabrán lo lectores que desde hace algu- obvio.
nos meses hemos publicado varias noticias Para una hombre que lleva toreando a la [4] UMPCs de juguete, por favor: http://
www.pcworld.com/businesscenter/
sobre los UM|LPCs (Ultra-Mini|Low-cost Per- comunidad del código abierto desde hace
article/145719/
sonal Computers). Casi todos ellos, en sus ver- años, es curioso que se haya dado cuenta
microsoft_to_limit_capabilities_of_c
siones más baratas (que no de menores pres- ahora, cuando Microsoft financia la mayor
heap_laptops.html
taciones), corren Linux de manera nativa. parte de su empresa y cuando está siendo pre-
[5] TCO de Windows más bajo que
Siendo, como es ésta, una de esas áreas en la sionado para que abandone completamente
Linux en el Eee: http://www.
que Microsoft ni vive ni deja vivir, descubri- Linux para la plataforma de Redmond.
reghardware.co.uk/2008/05/09/
mos a través de IDG [4] que la empresa de Exacto, han leído bien: OLPC no es que
eee_pc_900_australia_pricing/
Gates pretende… ¿cómo decirlo? Incentivar a soportará Linux y/o Windows, sino que sólo
los fabricantes para que no creen mini-PCs de soportará Windows. El presidente de la [6] Paul C. Brown no recomienda el Eee
en Linux Magazine número 37:
bajo precio, que no sean demasiado buenos. empresa, Walter Bender ya la ha abandonado,
Pequeño Ayudante.
Según la documentación filtrada, Microsoft dejando en manos del CEO Negroponte todas
premiará con extraordinarios descuentos en las decisiones al respecto del software. [7] Negroponte critica a la comunidad:
licencias de Windows XP para UMPCs a aque- Y, para finalizar, el que pensó que el negro http://www.computerworld.com/
action/article.
llos fabricantes que mantengan sus pantallas capítulo de la estandarización del OOXML se
do?command=viewArticleBasic&arti
por debajo de los 10,2 pulgadas, no incorpo- ha cerrado, puede ir pensándolo dos veces:
cleId=9079798&pageNumber=1
ren discos duros mayores de 80 GBs, que no por un lado la UKUUG (Grupo de Usuarios de
provean de una superficie táctil para el área de Unix del Reino Unido) ha solicitado una inves- [8] UKUUK exige que se investigue a la
BSI: http://www.ukuug.org/ooxml/
visionado, no dispongan de microprocesado- tigación judicial en el proceso del formato
res de más de un núcleo (y que no corran a aprobación del BSI (British Standards Insti- [9] DKUUG denuncia a su entidad de
más de 1 GHz)… y la lista sigue. Por supuesto tute) [8]. Esto no es una demanda tal y como estandarización: http://www.dkuug.
que si estas exigencias fueran exclusivamente informaron algunos periodistas y bloggers dk/content/view/220/34/
para los UMPCs que se vendieran con Win- exaltados, sino una auditoría para detectar [10] La EU no tiene claro lo del estándar
dows (después de todo, el peor competidor de irregularidades. ISO de OOXML: http://europa.eu/
Vista es XP), no habría ningún problema, o Y los usuarios de Unix daneses, representa- rapid/pressReleasesAction.
más bien, sería su problema. dos por la DKUUG, han ido un paso más allá y do?reference=MEMO/08/
Pero no. Las artificiales restricciones se han registrado una denuncia formal [9] ante la 19&format=HTML&aged=0&langua
ge=EN&guiLanguage=en
habrán de aplicar a todas las unidades que se comisión de la UE por violación del artículo 81

12 Número 39 WWW.LINUX- MAGAZINE.ES


NOTICIAS

NOTICIAS
Skype vs. GPL ambas cosas. Sin embargo, la GPLv2 caso anterior presentado por Dan
Una vez más la licencia GPL se ratifica sólo permite que se proporcione la infor- Wallace [2]. En aquella ocasión, la GPL
en un tribunal de justicia. mación de esa manera si el producto se salió triunfante y el demandante tuvo
Esta vez ha sido en el caso Welte con- descarga desde Internet. que pagar las costas del juicio. En este
tra Skype, proceso que lleva desarrollán- Muchos consideraron la demanda de caso el tribunal superior de Munich tam-
dose desde febrero del 2007. En esas Welte como un poco pareció recibir con simpatía la ape-
fechas, Harold Welte, un exceso de celo. El lación de Skype y tras sólo una sesión
desarrollador de Netfil- razonamiento es [3], la empresa de telefonía decidió
ter, presentó una que, después de abandonar la línea judicial y someterse a
demanda [1] contra todo, en un mundo perma- la condena. ■
Skype Technologies nentemente conectado, unas
por violar la GPLv2 URLs deberían ser suficientes.
en uno de sus pro- Sin embargo, el tribunal de RECURSOS
ductos, un teléfono primera instancia de Munich [1] Welte demanda a Skype: http://www.
VOIP de SMS que la decidió que Skype era culpable, theregister.co.uk/2007/07/25/
firma vende desde su razonando por su lado que una skype_convicted_for_violating_gpl/
sitio web. licencia es un contrato y, o Skype se
[2] Dan Wallace demanda a la FSF:
El teléfono utiliza el kernel sometía a todas su cláusulas, o no podía
http://www.groklaw.net/article.
de Linux y la empresa no había propor- utilizar el código.
php?story=20060320201540127
cionado el código fuente ni copia de la Skype Technologies SA decidió apelar
[3] Skype demanda a la GPLv2: http://
licencia junto con el producto. Sí había alegando que la GPL era un obstáculo a
www.groklaw.net/article.
proporcionado material impreso con la libre competencia y un freno a la inno-
php?story=20080508212535665
URLs desde donde se podían descargar vación, siguiendo las premisas de un

BitRock Reinventa el
suelen estar celosamente guardadas y abierto. Las empresas pueden ofrecer
Soporte
son de su uso exclusivo, ya que repre- servicios de subscripción de valor aña-
Uno de los modelos de negocio tradicio- sentan el valor añadido de sus produc- dido, tales como actualizaciones, moni-
nales de las empresas de software de tos. torización y (pronto) copias de seguri-
fuentes abiertas es el de ofrecer servicios BitRock [1], empresa fundada en el dad sin la necesidad de montar su propio
de soporte a los clientes. Si bien el soft- 2003 en Sevilla y que lleva algún tiempo backend desde cero”.
ware tiende a ser gratuito, el servicio, haciendo las Amé- Este servi-
que puede comprender resolución de ricas con sus insta- cio permitirá,
incidencias, actualizaciones, acceso a ladores y stacks pues, allanar
repositorios y control de las instalacio- (paquetes de fácil el camino
nes, normalmente servidos de manera instalación y confi- que han de
remota, se vende bajo la forma de subs- guración de varias aplicaciones que, reu- seguir las empresas para obtener la ren-
cripciones a los clientes, ya sea durante nidos, sirven a un fin común), acaba de tabilidad con el modelo de soporte
periodos de tiempo determinados o por lanzar al mercado Bitrock Network Ser- remoto, haciendo más sencilla la capita-
instalación. vice, una infraestructura de red de lización de sus productos. ■
A pesar de ser un modelo muy exten- soporte que puede ser utilizada por cual-
dido, la tarea de montar el backend para quier empresa que quiera ofrecer servi-
las empresas que pretenden seguir esta cios remotos a sus clientes. RECURSOS
línea de capitalización de su software no Según indica en su blog Stephe Walli, [1] Sitio web de BitRock: http://bitrock.
suele ser trivial, siendo el manteni- consultor de BitRock, “[e]l Servicio de com
miento de la infraestructura para el ser- Red de BitRock suministra la plataforma
[2] Stephe Walli explica el “BitRock Net-
vicio de todo menos sencilla. Las gran- de herramientas y la infraestructura
work Service”: http://stephesblog.
des empresas del sector, tales como sobre la cual empresas pueden construir
blogs.com/my_weblog/2008/03/
Novell, Red Hat y MySQL, implementan su propia solución de red de soporte para
bitrock-at-osbc.html
sus propias soluciones, soluciones que sus productos de software de código

14 Número 39 WWW.LINUX- MAGAZINE.ES


Virtualización Profunda • PORTADA

Elección de herramientas para una virtualización efectiva

VUÉLVETE VIRTUAL
Con unas buenas herramientas ya se tiene medio partido ganado, incluso si estamos gestionando sólo

máquinas virtuales. Este mes vamos a revisar de forma práctica la virtualización, y mostraremos una nueva

amenaza que vigilar en el futuro virtual.

POR JENS-CHRISTOPH BRENDEL, HENNING SPRANG Y JÜRGEN QUADE

L
os servidores no son humanos: ni • Aprovisionamiento y despliegue: trabajo: manejar múltiples máquinas
viven ni respiran. Tan sólo consu- crear el número requerido de instan- virtuales o equipos anfitriones físicos
men energía y ocupan espacio. cias virtuales tan rápido como sea y reemplazar instancias en caso de
¿De verdad hacen falta tantos? La revo- posible, con la mínima configuración fallo.
lución virtual consiste en ahorrar manual. • Monitorización: proveer información
dinero, tiempo y espacio de oficina. Las • Migración: convertir máquinas físicas detallada y en tiempo real del estado y
herramientas de virtualización de hoy en virtuales (y viceversa) si fuera uso de recursos de cada una de las
en día ofrecen un medio eficiente para necesario. Lo ideal es una conversión máquinas virtuales.
probar, arrancar y gestionar aplicacio- online a través de la red, que requiera La mejor solución para una red depende
nes, con facturas de electricidad menos tan poca intervención personal como de las necesidades y el presupuesto. La
abultadas y menos dolores de cabeza se pueda. Igualmente importante es Tabla 1 presenta algunas de las opciones
por culpa del hardware. Pero, ¿con la asegurar libertad de movimientos de virtualización más populares para
virtualización todo son ventajas, o tam- para las máquinas virtuales durante medios Linux.
bién implica abrir la puerta a nuevas las operaciones. La migración en vivo
amenazas? es la base de las soluciones al balan-
En el reportaje de este mes examina- ceo de carga con máquinas virtuales.
mos el lado práctico de la virtualiza- • Administración: una de las conside-
ción. Comenzaremos con una introduc- raciones más importantes en la
ción a algunas de las herramientas dis- mayoría de las redes. Empezando
ponibles para Linux. Después acercare- por la capacidad para planificar
mos el punto de mira a dos de las alter- instancias virtuales, pasando
nativas más populares de código por áreas de almacenamiento
abierto: Xen y Virtual Box. Para acabar, y recursos de red, hasta lle-
atenderemos el lado oscuro de la virtua- gar a parámetros de
lización: el misterioso mundo de los configuración innume-
rootkits de virtualización. rables para hardware
virtual y físico,
Virtualización Práctica usuarios y privi-
El paradigma de la virtualización ha legios.
bajado a la Tierra, abandonando las ele- • Gestión de
vadas alturas del Monte Olimpo, acer- carga de
cándose a las preocupaciones del
mundo real como estabilidad, ejecución
y facilidad de manejo. Un sistema de
virtualización que quiera satisfacer
todos estos requisitos debe estar prepa-
rado para:

EN PORTADA
Virtualización con Xen.......................22

Trabajo en red con Virtual Box .........26

Virtualizando Rootkits .......................31

WWW.LINUX- MAGAZINE.ES Número 39 15


PORTADA • Virtualización Profunda

Figura 1: OpenQRM te permite gestionar ordenadores físicos y virtua- Figura 2: VirtualBox soporta invitados tanto de Windows como de
les con una sola herramienta. Linux.

Herramientas de Gestión Ganeti no ofrece la conveniencia de un Granjas de Alojamientos


Muchos distribuidores han avanzado un GUI. Dicho esto, los comandos basados En muchos casos el usuario no necesita
largo trecho en lo que se refiere a facilitar en texto de Ganeti son aptos como solu- simular un ordenador completo, con un
la virtualización a sus clientes. Tanto ciones de programación, que ofrecen un kernel personalizado para cada uno de
Novell como Red Hat, dos distribuciones modo de integrar la herramienta con otras los clientes virtuales. A los alojamientos
de Linux, integran una herramienta cono- utilidades de código abierto. profesionales, que se preocupan simple-
cida como Virtual Machine Manager (o Otra herramienta para la gestión de mente de mantener en funcionamiento
Virt-Manager; en español, “Gestor de máquinas virtuales es openQRM, una las páginas de sus clientes, les hace muy
Máquina Virtual”). En SUSE, la herra- potente utilidad que gestiona imágenes felices tener un kernel único que los
mienta se integra con YaST. Virt-Manager de máquinas virtuales y físicas sobre el invitados puedan compartir.
ofrece al usuario la capacidad de configu- mismo interfaz. Otro candidato es Solid Las soluciones de virtualización como
rar una instancia Xen con sólo un par de ICE, de Qumranet, que se centra por OpenVZ, Virtuozzo y VServer utilizan el
pasos sencillos. Además de con Linux completo en la virtualización de escrito- mismo método para estos problemas:
(Novell, Red Hat), Solaris 8-10 y Netware rio, empleando el hipervisor KVM Ker- ofrecen al usuario, a bajo coste, una den-
6, esta herramienta funciona con varias nel. sidad de aplicaciones sorprendente para
versiones de Windows (siempre que la Al otro lado de la escala hay varias el hardware normal.
CPU disponga del soporte de virtualiza- pequeñas herramientas de línea de Muchos alojamientos profesionales
ción requerido). comandos, como xen-tools, una colección emplean el producto comercial Vir-
La distro Red Hat Enterprise 5.1 emplea de códigos empleados en Debian para tuozzo para dar acceso a consolas virtua-
también Virt-Manager para la gestión de crear y configurar instancias virtuales. les a aquellos clientes que quieren ges-
máquinas virtuales. Red Hat ofrece ade-
más una herramienta junto a su Enter- ¿Qué Funciona y Dónde?
prise Server llamada Advanced Platform,
Hay una regla general que dicta que la flexibilidad requiere o bien mejor ejecución o
que construye clusters de máquinas vir-
hardware especial. En la virtualización de hardware, la CPU física maneja la mayor parte
tuales y es capaz de migrar clientes a tra-
de las instrucciones del invitado: el hipervisor sólo da un paso al frente para evitar con-
vés de los bordes de un host físico. flictos. Si el hardware no es capaz de detectar directamente un conflicto, la paravirtuali-
Fedora 8 da una pista de a dónde se zación pasa a controlar el asunto. Esta tecnología está bastante avanzada con respecto al
encaminan las cosas para Red Hat. El procesador principal, mientras que la virtualización de componentes I/O está aún en un
último Fedora incluye el nuevo Xen 3.1, y estado primitivo de desarrollo. Los emuladores pueden simular casi cualquier escenario
la versión de Virt-Manager soporta tanto y arquitectura, pero funcionan comparativamente más despacio, porque todo está
Xen como QEMU. Además, Red Hat está manejado por el software.
tratando de mejorar la seguridad de su Todas las soluciones de virtualización que discutimos en este resumen soportan Linux
herramienta de administración, cuestión como sistema invitado, aunque habría que realizar cambios en el kernel para poder usar
que había sido secundaria en el pasado. algunas de ellas. Dichos cambios pueden causar problemas para soportar algunas apli-
Google también tiene una herramienta caciones, especialmente si el proveedor de servicios requiere una versión especial del
para la gestión virtual de clusters, Ganeti, kernel. VMware y VirtualBox funcionarán, en principio, con cualquier kernel reciente y
que se lanzó bajo licencia GPL. Instalar sin parchear, igual que lo harán los emuladores. El soporte de invitados de diferentes
Ganeti es complicado, porque la herra- versiones puede ser limitado. Todas las virtualizaciones de servidor soportan los Win-
mienta requiere media docena de módu- dows actuales, XP y Vista; las herramientas de virtualización de sistemas operativos,
los Python que Novell, por ejemplo, no como OpenVZ o VServer, trabajan sobre principios diferentes y no pueden ofrecer esta
opción.
reúne en un único paquete.

16 Número 39 WWW.LINUX- MAGAZINE.ES


Virtualización Profunda • PORTADA

tionar sus propios sistemas. A principios de sus herramientas están sólo disponi- mucho que ofrecer. Su cambio visual
del 2007, SWsoft, la empresa tras bles para Windows. más importante, comparado con la ver-
OpenVZ y Virtuozzo, compró primero la Vmware El líder del mercado sión previa 1.x, es el nuevo interfaz
mayoría de las acciones de Parallels, la VMware ofrece una línea excelente de web, Virtual Infraestructure Web Access
compañía de virtualización de escritorio, productos de virtualización. Sin (“Infraestructura Virtual para el Acceso
y ahora emplea la marca Parallels. Las embargo, la herramienta de gestión Web”). La antigua consola del servidor
herramientas de virtualización OpenVZ VMware VirtualCenter, que se encarga independiente ya no está disponible.
están disponibles con cualquier distribu- de la gestión de invitados en servidores Este interfaz requiere un plugin del
ción mayoritaria. ESX y GSX, funciona sólo para Win- navegador separado (Figura 1).
dows hoy por hoy (y no parece que ten- Un gran número de plantillas soporta
¿De compras para la gan en mente una adaptación para el aprovisionamiento y despliegue de
Virtualización de Linux en el futuro cercano). VMs: 17 versiones de Windows y 17 dis-
Servidores? Si preferimos alguna solución exclu- tribuciones de Linux (incluyendo
Cada uno de los grandes competidores siva para Linux, deberemos apañarnos variantes de 64 bits), al igual que Net-
del mercado de virtualización de servi- con el servidor gratuito VMware. Esta Ware y Solaris 10. Aunque VMware Ser-
dores ofrece ventajas, aunque algunas aplicación de nivel básico aún tiene ver no te permite migrar VMs entre

Tabla 1: Soluciones para la Virtualización


Producto Versión Fabricante Soporte Tecnología Típicos Escenarios SO anfitrión SO cliente
Actual de Despliegue
Xen Server 4 XenSource/Citrix XenSource/Citrix Hipervisor, paravir- Virtualización para Red Hat modi- Linux,Windows
tualización y virtua- servidores Windows ficado incluido
lización completa y Linux
con soporte hard-
ware
Xen GPL 3.1.2 Distribuidores de Distribuidores, Hipervisor, paravir- Virtualización para Linux, Solaris, Linux, Windows,
Linux Vendedores, tualización y virtua- servidores Windows Free BSD, Net Free BSD, Net
independientes lización completa y Linux BSD BSD, en parte vir-
con soporte hard- tual Solaris ( no
ware se soportan
en todos los sis-
temas anfitriones
VMware VI 3 VMware VMware, socios Hipervesor con Hipervisor con virtua- Linux Linux, Windows
virtualización lización de servidores, BSD...
completa escritorios virtuales
VMware 6 VMware VMware, socios Emulación Escritorios virtuales Windws, Linux Linux, Windows,
Workstation BSD
Virtual Iron 4 Virtual Iron Virtual Iron Hipervisor Xen Servidores virtuales Linux Linux, Windows
Open VZ 2.6.22 SWsoft y Open VZ Comunidad Virtualización a nivel Servidores virtuales Linux Linux, en la ver-
-ovz005 Community de sistema operativo sobre Linux sión del Kernel de
anfitrión
Virtuozzo 4 SWsoft SWsoft Virtualización a nivel Servidores virtuales Windows, Linux, en la ver-
de sistema operativo sobre Linux/Windows Linux sión del Kernel,
Windows en an-
fitriones Windows
VServer 2.2.0.5 Proyecto Linux Distribuidores, Virtualización a nivel Virtualización de Linux Linux, en la ver-
VServer vendedores de sistema operativo servidores sobre sión del Kernel
independientes Linux anfitrión
KVM 55 Qumranet Comunidad y Virtualización hard- Virtualización de Linux Linux, Windows,
Qumranet para ware servidores, escritorios BSD...
los productos virtuales
comerciales
QEMU 0.9.0 Fabrice Bellard Comunidad Emulación, opcional Testeo sw software, Windows, Linux, Windows,
mente acelerado via virtualización de escri- Linux BSD, otras arqui-
modulo Kernel para torios Windows, Linux tecturas de proce-
acceso directo a sador posible (no
recursos con KQEMU)
VirtualBox 1.5.2 Innotek Innotek Emulación, virtualiza- Virtualización de escri- Windows, Linux, Windows,
ción de hardware torios opcional Linux, OSX BSD en parte

WWW.LINUX- MAGAZINE.ES Número 39 17


PORTADA • Virtualización Profunda

Figura 3: KVM es popular entre usuarios y desarrolladores de kernel. Figura 4: Siguiendo sistemas virtuales con Virtual Machine Manager.

máquinas físicas (al contrario que su ofrece al administrador la capacidad de Antes de elegir un sistema de virtua-
hermano mayor, ESX Server), y defini- cambiar entre máquinas automática- lización conviene examinar cuidadosa-
tivamente no en tiempo real, al menos mente si un host excede una carga mente las necesidades propias y bus-
puede hacer que las máquinas virtua- específica de umbral. car una solución que satisfaga todas
les residan en un área de memoria En cuanto al almacenamiento, Vir- nuestras necesidades, fácil de manejar,
compartida exportada por NFS. El tual Iron soporta iSCSI, SAN (canel de monitorizar e implementar. Además,
balanceo de carga está también restrin- fibra) y NAS. El liderazgo de VMware hay que pensar en las posibilidades de
gido a las versiones comerciales; sin sobre sus competidores no es ya muy crecimiento, porque ya no estamos
embargo, la gratuita tiene una exce- sustancial; sin embargo, las diferencias limitados por el tamaño del espacio
lente administración y monitorización de precio son todavía significativas. El para servidores. ■
centralizada del servidor. precio de Virtual Iron comienza por
Virtual Iron Virtual Iron va “chu- unos 320 Euros por socket, mientras
pando las ruedas” de VMware. Su pro- que el precio de ESX Server de VMware RECURSOS
ducto Virtual Iron 4, o al menos la ver- es aproximadamente tres veces mayor. [1] VMware: http://www.vmware.com
sión más cara Extended Enterprise Edi- Xen Source Xen Source Server solía [2] Virtual Iron: http://www.virtualiron.
tion, no sólo soporta la clonación de ser una solución de virtualización de com
instancias virtuales y la migración en Linux muy cercana al concepto de [3] Novell: http:// www.novell.com
vivo, sino también la capacidad de ges- VMware. Citrix adquirió recientemente [4] Red Hat: http://www.redhat.com/
tión dinámica de máquinas virtuales Xen Source. El producto de servidor,
[5] Xen: http://www.xen.org/
en tiempo real. conocido hoy como Citrix Xen Server,
[6] Citrix: http://www.citrix.com/
El medio de virtualización Virtual es aún un sistema Linux en su núcleo.
Iron incluye también opciones de alta Por desgracia, el puente de control de [7] VServer: http://linux-vserver.org/
disponibilidad, como failover para Citrix Xen Server, conocido como Xen [8] Qumranet: http://www.qumranet.
máquinas virtuales en un host reser- Center, se ha transformado en una apli- com/
vado (N + 1 clusters). Virtual Iron cación sólo para Windows (Figura 2). [9] KVM: http://kvm.qumranet.com/
viene con monitorización sofisticada, Un punto a tener en cuenta es que Xen [10] Solid ICE: http://web1.qumranet.
registro de acceso de instancias virtua- incluye ahora una opción de migración com/
les y capacidad de gestión basada en en vivo, XenMotion, que recuerda al
[11] QEMU: http://fabrice.bellard.free.fr/
políticas de comportamiento, que VMotion de VMware.
qemu/

Conclusiones [12] VirtualBox: http://www.virtualbox.


org
La virtualización en Linux ha
entrado en el mundo real, y la [13] S3: http://www.amazon.com/gp/
elección de herramientas se centra browse.html?node=16427261
en cuestiones prácticas como esta- [14] Parallels: http://www.parallels.com/
bilidad, eficiencia y manejo. Los [15] Ganeti: http://code.google.com/p/
fabricantes comerciales, con sus ganeti/
controles gráficos y bien integra- [16] SWsoft: http://www.swsoft.com/
dos, son actualmente los principa- [17] OpenVZ: http://openvz.org/
les contendientes. Por otra parte,
[18] openQRM: http://www.openqrm.
un host sencillo se gestiona fácil-
com
Figura 6: Monitoriza tu medio virtual con Vir- mente con alternativas menos
tuozzo. sofisticadas. [19] xen-tools: http://xen-tools.org

20 Número 39 WWW.LINUX- MAGAZINE.ES


PORTADA • Virtualización con Xen

Joexx, photocase.com
Comenzar con la virtualización Xen

XENSACIONAL
El conocido y potente sistema de virtualización Xen ofrece una solución sencilla para cargar Windows sobre

Linux. POR MARTIN LOSCHWITZ Y MARKUS FEILNER.

E
l popular sistema de virtualización consta sólo de unos pocos pasos. Debian ha anfitrión con el hipervisor se le llama Dom 0
Xen permite instalar distintos siste- reconocido estas ventajas, y ahora Etch (o Domain 0, “Dominio 0”), y al sistema invi-
mas operativos sobre el mismo hard- incluye soporte completo para Xen. tado Dom U (Domain U).
ware para gestionar eficientemente su Aunque Debian 4.0 incluye Xen, la ver- La única tarea que tiene Dom 0 es conte-
potencia computacional. sión 3.0.3 no es exactamente último ner cada Dom U activo. Cuando estás plani-
En este artículo describiremos cómo modelo. En muchos casos, los trucos y con- ficando un sistema Debian Xen, un Debian
empezar con Xen en Debian Etch, y apren- sejos de este artículo no se pueden aplicar recién instalado es un punto de partida per-
deremos a iniciar los sistemas cliente y anfi- tal cual a versiones posteriores de Xen por- fecto. Aunque en teoría no hay nada que
trión e incluso a configurar un invitado que, entre otras cosas, el diseño del archivo impida emplear Dom 0 para propósitos nor-
Windows en un anfitrión Linux. Muchos de de configuración ha cambiado. males, como hospedar un servidor web, el
los detalles pueden diferir entre distribucio- daño en potencia que un atacante podría
nes, pero los pasos son parecidos. Monitorizado por un causar secuestrando Dom 0 es una buena
Hipervisor razón para evitar su empleo.
Etch con Xen 3.0.3 Xen introduce un hipervisor que va a contra- Cualquier usuario con acceso completo a
En la comunidad, una solución de software corriente del kernel, funcionando directa- Dom 0 tiene también control total sobre
se ha convertido prácticamente en el están- mente sobre el hardware (ver Figura 1); el cada Dom U activo. Por esta razón, es
dar de virtualización. Xen [1], creado por la hipervisor emplea Xen Virtual Machine Moni- importante subcontratar cualquier servicio
Universidad de Cambridge, tiene un buen tor para acceder al hardware. Es él quien des- a un Dom U separado a la hora de usar Xen,
número de puntos a su favor. Dado que tina los recursos a cada una de las máquinas y comenzar con un anfitrión fresco que no
emula un ordenador completo, al estilo de virtuales. Un sistema operativo invitado sólo ejecute ningún servicio (excepto SSH).
Vmware, el usuario tiene un abanico de se comunica con el hipervisor, y es completa- Sólo hacen falta un par de pasos para ins-
elección de sistemas operativos invitados mente independiente del resto de invitados. talar un Debian que soporte Xen. Identifi-
casi sin restricciones. La mayoría de las El hipervisor conecta la máquina virtual a la cado como root, hay que empezar por insta-
herramientas de gestión están disponibles, y red y es capaz de comunicarse con el mundo lar Xen y los programas de puente de con-
el sencillo procedimiento de configuración exterior. En el contexto de Xen, al sistema trol que necesita para configurar la red. Los

22 Número 39 WWW.LINUX- MAGAZINE.ES


Virtualización con Xen • PORTADA

archivos se almacenan del dispositivo de red, lo que haría que


en /etc/xen y tienen una fallara la configuración automática en /etc/
extensión .cfg. El netword/interfaces.
esquema de los archivos
de configuración de Xen Sistemas de Archivos de
es bastante simple (Lis- Clientes
tado 1). name se refiere Hay dos opciones básicas para los sistemas
al nombre que Xen de archivos de los clientes: o bien asigna-
emplea para referirse a mos una o múltiples particiones a Xen, o el
este Dom U; hostname Dom U trabaja con imágenes de archivos.
es el nombre de la Ambas tienen ventajas y desventajas: las
máquina virtual anfi- particiones físicas suelen mejorar la ejecu-
triona. kernel y ram- ción, pero los archivos permiten al adminis-
Figura 1: El Virtual Machine Monitor (Monitor de Máquina Virtual) disk contienen las rutas trador crear copias de seguridad sólo con
de Xen maneja todo el acceso al hardware, empleando el hipervi- completas al boot ker- copiar el Dom 0.
sor para enviar peticiones al anfitrión (Dom 0). El hipervisor nel y su disco de Esta decisión es una cuestión de gustos, y
emplea drivers de back-end para destinar recursos a las máquinas memoria virtual; root dependerá en buena medida del uso que se
virtuales Dom U. indica al kernel cuál de le esté dando al sistema. El ejemplo en el lis-
las particiones contiene tado asume que un Dom U emplea /dev/
paquetes se llaman bridge-utils, xen-linux- el directorio raíz. hda3 como unidad para la raíz de su sis-
system-2.6.18-3-xen-686, xen-tools y libc6- El parámetro memory define cuánta RAM tema de archivos. Además de todo esto, Xen
xen. Xen reemplaza la librería C por una reservará el hipervisor de Xen para este puede asignar múltiples discos virtuales
versión especialmente modificada. Dom U, y la entrada disk especifica qué como particiones de disco duro para una
Tras completar este paso hay que desacti- disco o archivos de imagen detectará el máquina virtual.
var la funcionalidad TLS de la librería C; la cliente Xen. Puesto que la máquina cliente
forma más fácil de hacerlo es mover la libre- espera también rutas al sistema de archivos Debian Virtual
ría escribiendo mv /lib/tls /lib/tls.disabled. virtual, el administrador tiene que decidir El dominio cliente se instala por completo
Dado que los siguientes pasos requieren en este punto dónde se almacenarán los sis- desde el interior del Dom 0. En teoría, debe-
acceso a Internet, es necesario que haya temas de archivos que crearemos en el ría ser posible arrancar el instalador Debian
una tarjeta de red configurada en /etc/net- siguiente paso. con Xen y usarlo para instalar el nuevo sis-
word/interfaces. Como puede verse en el Listado 1, un tema, pero en realidad, este método fallará
Tras instalar un kernel preparado espe- Dom U también puede acceder a una uni- debido a la falta de soporte para Xen en el
cialmente de Xen, escribimos lsmod y che- dad de CD física, especificada como cdrom. kernel del instalador de Debian. En su lugar,
queamos el archivo /etc/modules para com- El valor vcpus señala el número de procesa- será mejor usar la herramienta de instala-
probar si el sistema ofrece un módulo dores a los que se permite acceder al Dom ción Debootstrap [2]. Trabajando como
netloop. Para asegurarnos de que todo va a U. Por ejemplo, si Dom 0 tiene un procesa-
funcionar después de reiniciar, debería dor de doble núcleo, podemos usar vcpus Listado 1: Configuración de
haber una entrada netloop nloopbacks = para especificar si el cliente tendrá acceso a Xen para un Dom U Debian
255. Reiniciamos la máquina y, en el boot un núcleo o a los dos. 01 name=”debian1”
prompt, elegimos el kernel Debian Xen
Kernel, Disco de Memoria 02 hostname=”debian1”
antes de identificarnos como siempre.
Deberían aparecer algunos mensajes dmesg Virtual, Root 03 kernel =
y del hipervisor sobre procesadores disponi- Los valores kernel y ramdisk en la ”/boot/vmlinuz-2.6.18-3-xen-6
bles o capacidad de memoria. configuración se relacionan con el sistema 86”
Con esto ya nos hemos encargado de los de archivos de Dom 0. Si quisiéramos reem- 04 ramdisk =
prerrequisitos para arrancar un Dom U. Tra- plazar más adelante el kernel de Dom U, ”/boot/initrd.img-2.6.18-3-xe
bajando como root, escribimos xm list para basta con copiar el nuevo kernel al lugar n-686”
ver si el hipervisor está funcionando. correcto en Dom 0 y modificar el archivo de 05 memory = 512
El siguiente paso es configurar una configuración de la máquina virtual.
06 vcpus = 1
máquina invitada, el primer Dom U, que La entrada vif explica a qué interfaz de
estará utilizando Debian GNU / Linux Etch red se permite acceder al Dom U y qué 07 vif =
como el anfitrión de nuestro ejemplo. Para puente empleará Xen para manejar dicho [‘mac=aa:00:00:12:23:34,bridg
empezar, tenemos que crear un archivo de acceso. También es posible asignar una e=bridge0’ ]
configuración para Xen e instalar el sistema dirección MAC estática (arbitraria); de otro 08 disk = [
operativo invitado en el disco. modo, cada vez que se inicie la máquina ’phy:/dev/hda3,hda1,w’,
virtual Xen asignará al adaptador de red una ’phy:/dev/hda5,hda2,w’ ]
Archivos para Dom U dirección MAC generada al azar. Esto provo- 09 cdrom = ”/dev/cdrom”
En Xen 3.0, los archivos de configuración cará que el sistema de conexión en caliente
10 root = ”/dev/hda1”
tienen su propio formato especial. Los de Etch siga cambiando sin parar el número

WWW.LINUX- MAGAZINE.ES Número 39 23


PORTADA • Virtualización con Xen

passwd; también podríamos querer instalar


el servidor OpenSSH y escapar de la cárcel
del chroot.

Iniciando Dom U…
Tras crear los archivos de configuración para
el Dom U y dejarlo todo configurado, pode-
mos arrancar el sistema virtual. Para ello,
cambiamos de directorio a /etc/xen e intro-
ducimos el siguiente comando: xm create -c
Figura 2: Cuatro máquinas virtuales, cada una un Dom U, funcionando sobre un servidor Xen nombre del archivo de configuración. El
de Debian. La herramienta xm top ofrece un informe de estado (tanto del servidor como de los parámetro -c redirecciona la salida de la pan-
clientes) que se actualiza constantemente. talla virtual del Dom U a la consola en uso.
Si todo funciona, el prompt de login debería
root, hay que escribir apt-get install deboots- La configuración del sistema Etch es algo aparecer tras los mensajes de arranque del
trap para instalar la herramienta en Dom 0. más complicada que antes, porque base- kernel de Linux. De aquí en adelante, los
Si no lo hemos hecho ya, seguramente que- config (que gestionaba automáticamente códigos de init incluidos en el paquete Xen
ramos ahora instalar un sistema de archivos varias tareas) ya no existe. Ahora el usuario lanzarán automáticamente el nuevo Dom U
compatible con Linux en la partición obje- root tiene que instalar los paquetes locales y cada vez que arranquemos el sistema.
tivo para el sistema Linux cliente. Es posible console-data manualmente y añadir la
que el Dom U necesite una partición de siguiente línea al archivo /etc/hosts: …y Parándolo
espacio de intercambio; mk-swap se El comando xm list ofrece una vista general
encarga de configurar esto. 127.0.0.1 localhost de los dominios virtuales que están funcio-
nando en el sistema (Listado 3). En nuestro
Debootstrap Después, añadimos el nombre del anfitrión ejemplo hay múltiples Dom Us corriendo en
Trabajando una vez más como root, mon- a /etc/hostname, asegurándonos de que el Dom 0, que tiene 64MB de RAM; uno de
tamos la partición formateada en el sis- empleamos el mismo nombre que en el los Dom U tiene 1GB de RAM, y otro
tema de archivos del Dom 0 y hacemos cd archivo de configuración de Xen. Aún ten- 296MB. Al introducir el comando xm des-
hasta el directorio raíz. El mensaje deboots- dremos que añadir a /etc/network/interfaces troy nombre de la MV en el Dom 0, se cierra
trap etch mountpoint for Domain U parti- una configuración de tarjeta de red que una máquina virtual. La herramienta xm
tion ftp://ftp.de.debian.org/debian insta- encaje para el Dom U. top muestra una lista actualizada de todas
lará un sistema Debian básico y completo Tras conectar el archivo de zona horaria
a partir del servidor ftp. Cuando Deboots- correcto a /etc/localtime, es la hora de abor- Listado 4: Archivo de
trap haya terminado, deberíamos encon- dar la configuración de las unidades virtua- Configuración para un Dom
trar un sistema Etch básico y completo en les en el archivo /etc/fstab. El Listado 2 con- U Windows
el directorio especificado. Hacemos chroot tiene un fstab listo para usar, basado en los 01 kernel =
a esta carpeta; instalamos entonces el ejemplos de antes. ’/usr/lib/xen-3.0.3-1/boot/hv
paquete libc6-xen y desactivamos las Finalmente, quizá deseemos configurar la mloader’
extensiones TLA. contraseña de root mediante el comando
02 builder = ’hvm’

Listado 2: Ejemplo de fstab para un Dom U Debian 03 memory = ’512’04


device_model=’/usr/lib/xen-3.
01 01 /dev/hda1 / ext3 defaults 1 2
0.3-1/bin/qemu-dm’
02 /dev/hda2 none swap sw 0 0
04 disk = [
03 /dev/pts devpts gid=5,mode=620 0 0 ’phy:/dev/hda3,ioemu:hda,w’,’
04 none /dev/shm tmpfs defaults 0 0 file:/root/wincd.iso,ioemu:hd
c:cdrom,r’ ]
05 name = ”windows”
Listado 3: Listando Máquinas Virtuales
06 hostname = ”windows”
01 01 xen-dom0:~# xm list
07 vif = [‘type=ioemu,
02 Name ID Mem(MiB) VCPUs State Time(s)
bridge=xenbr0’]
03 Domain 0 0 64 1 r——- 50082.7
08 # Comportamiento
04 Dom U 1 31 1024 1 -b—— 182890.0
09 boot=’d’
05 Dom U 2 67 296 1 -b—— 3966.4 10 vnc=1
06 (...) 11 vncviewer=1
07 xen-dom0:~# 12 sdl=0

24 Número 39 WWW.LINUX- MAGAZINE.ES


Virtualización con Xen • PORTADA

ellas, incluyendo su RAM, CPU y carga de ces podremos lanzar el Dom


red, de forma parecida al comando de Bash U Windows y utilizar VNC
top (Figura 2). para conectarnos al puerto
5090 del sistema anfitrión y
Windows como Cliente completar los preparativos.
Los desarrolladores de Xen se han asegu- Cuando Windows indica
rado de que podamos arrancar Windows que saquemos el CD de la
como sistema operativo cliente en un Dom unidad tras copiar los archi-
U. Pero hay algunas restricciones: el truco vos del sistema, tenemos que
sólo funciona en PC?s con un procesador asegurarnos de que, al reini-
Intel reciente, capaz de soportar tecnología ciar, Xen arrancará el domi-
Vanderpool (VT); o bien en un procesador nio Xen del disco virtual, y
AMD moderno con Secure Virtual Machine no del CD. Para ello hemos Figura 4: Dashboard ofrece una pantalla de estado gráfica
(AMD SVM). XenSource mantiene la lista de cambiar el valor de boot para el servidor Xen.
de posibles candidatos [3], que suele actua- en el archivo de
lizarse a menudo. configuración de d a c y reiniciar la máquina (xend-relocation-U
virtual. hosts-allow ’ ’)
Configuración Al final de la instalación deberíamos
Los pasos para configurar un Dom U Win- tener un sistema Windows perfectamente Para migrar el sistema virtual de un servidor
dows son similares a los que hemos visto operativo. Xenman [4], que ha alcanzado a otro basta con escribir xm migrate -live
antes para configurar un cliente Linux. El ya la versión 0.6, es una herramienta para Dom U servidor objetivo. Las interrupciones
Listado 4 muestra un archivo de gestionar servidores Xen y arrancar o dete- del servicio mientras se realiza la mudanza
configuración listo para usar. El ejemplo ner máquinas virtuales (Figura 3). El admi- no suelen pasar de un par de décimas de
asume que la partición del Dom 0 hda3 es nistrador puede conectar de uno a múltiples segundo.
la partición raíz para Windows. servidores Xen, hacer click para crear nue-
El cliente Windows se puede instalar vos dominios o mover alguno ya existente Conclusiones
directamente del CD de instalación o, como de un servidor a otro. Se incluye, además, Xen es una solución de virtualización muy
en el ejemplo, de una imagen de backup una vista general de toda la estructura (Das- potente. Al contrario que en otras opciones,
wincd.iso creada con la herramienta dd. Ins- hboard, Figura 4). como OpenVZ, tiene la ventaja de emular un
talar a partir de un archivo ISO es bastante Xenman facilita la vida tanto al adminis- ordenador completo, de un modo similar a
más rápido y práctico que arrancar virtual- trador novato como al experto. Está dise- Vmware. Por ello, Xen es capaz de virtualizar
mente el CD. ñado para gestionar múltiples servidores y otros sistemas operativos clientes aparte de
Un Dom U se emplea normalmente como para el tunelado SSH, y nos ofrece la posibi- Linux.
servidor sin monitor conectado. Así, la lidad de gestionar colectivamente todas las Ya es posible utilizar NetBSD 4 como Dom
salida de información del sistema Windows imágenes del servidor, lo que significa que U sobre Linux, o como Dom 0 para un Dom
se envía al servidor VNC; la dirección IP del Xen puede arrancar un Dom U, pertene- U de Linux, sin excesiva dificultad. El único
servidor se define con el parámetro vnc-lis- ciente al Servidor A, en un Servidor B en problema lo causa la falta de NetBSD de
ten en la última línea del archivo de caso de ser necesario. soporte de PAE (Physical Address Extension),
configuración de Xen, /etc/xen/xend-con- lo que hace la instalación de Debian algo más
fig.sxp; la sintaxis es (vnc-list-ten ‘1.2.3.4’). Migración difícil de lo que debería ser.
Con esto se completa la configuración del Una de las opciones especiales de Xen es su Considerando la velocidad a la que los des-
Dom U Windows; éste creará el sistema de capacidad de migrar los servidores virtuales arrolladores de Xen y NetBSD están traba-
archivos requerido en la fase de de un anfitrión a otro mientras el servidor jando para lograr una solución a este pro-
configuración del propio Windows. Enton- está en funcionamiento. Para probarlo, todo blema, podemos esperar progresos rápidos
lo que necesitamos son dos ser- en esta tendencia de virtualizar distintos siste-
vidores Xen y una sola mas operativos sobre el mismo hardware. ■
máquina virtual. En el caso
más sencillo podemos usar NFS RECURSOS
para los datos compartidos, [1] Página de Xen: http://www.cl.cam.
pero ISCSI o DRBD son tam- ac.uk/research/srg/netos/xen/
bién perfectamente válidos. En
[2] Debootstrap: http://packages.debian.
el archivo de configuración del
org/stable/admin/debootstrap
servidor Xen, activamos los
[3] Hardware para virtualización de
siguientes parámetros:
HVM:http://wiki.xensource.com/
xenwiki/
(xend-relocation-server
HVM_Compatible_Processors
yes)
[4] Gestión gráfica de Dom U con Xen-
Figura 3: Xenman, una consola de administración gráfica (xend-relocation-address
man: http://xenman.sourceforge.net
para un servidor Xen, arranca un sistema cliente Fedora. ’ ’)

WWW.LINUX- MAGAZINE.ES Número 39 25


PORTADA • Redes con VirtualBox

Tjefferso
n, F
oto
lia
Redes con VirtualBox

REDES
ENCAJONADAS
Nos acercamos este mes a la herramienta de virtualización VirtualBox, Linux es un poco más complicada
(véase el cuadro “Instalar la Variante
un entorno sencillo y fácil para versiones virtuales de Linux, Unix y Win- Software Libre”). Los paquetes especí-
ficos para las distribuciones están
dows. POR TIM SCHÜRMANN mejor integrados.
La distribución que utilicemos pro-

V
irtualBox está ganando popu- nea mantener el soporte y seguir con bablemente ofrecerá una versión de
laridad como alternativa senci- ambas versiones, la cerrada y la soft- VirtualBox a través del sistema de
lla y efectiva de virtualización. ware libre. En este artículo vamos a administración de paquetes. Si tene-
Esta inteligente solución se adapta describir cómo iniciarse en la virtuali- mos instaladas las fuentes de instala-
perfectamente al escritorio normal de zación con VirtualBox. ción correctas, podemos teclear sim-
Linux, soportando distintas variedades plemente apt-get install virtualbox en
de sistemas invitados Windows, Linux ¿Software Libre o Ubuntu, o zypper in virtualbox bajo
y Unix. La empresa alemana Innotek Comercial? SUSE para comenzar la instalación.
[1] desarrolla VirtualBox, que se pre- Las versiones comercial y libre de Vir- Al pulsar el icono o teclear el
senta en versiones tanto comercial tualBox se diferencian en el soporte de comando Virtual-Box se inicia la inter-
como bajo software libre (GPL). dispositivos USB y las funcionalidades faz gráfica de usuario. El icono New
El 12 de febrero de 2008, Sun de escritorio remoto, que Innotek nos permite crear una nueva máquina
Microsystems anunció un acuerdo reserva para la variante de código virtual, con un asistente que nos
para comprar Innotek con el objetivo cerrado. Ambas versiones soportan ayuda en el proceso de configuración.
de integrar el entorno de VirtualBox varios sistemas operativos, como En lugar de una verdadera partición,
con las herramientas de desarrollo Linux, OS/2 y Windows/DOS, y ambas VirtualBox usa un archivo con una
propias de Sun. Las consecuencias a disponen de interfaz gráfica de admi- imagen de disco. Tiene sentido que
largo plazo de este acuerdo aún no se nistración. optemos por dynamic como tamaño de
conocen, pero en el momento de escri- Desde el punto de vista de la instala- la imagen. Recordemos que la imagen
bir este artículo, parece que Sun pla- ción, la versión software libre bajo crecerá conforme añadamos conte-

26 Número 39 WWW.LINUX- MAGAZINE.ES


Administración
Redes
Redes de Spam •• PORTADA
PORTADA
• EVALUACIÓN
con VirtualBox
Encajonados

der o apagar el nadores será visible. Las opciones


conmutador de son:
red virtual. La • Red Interna
tarjeta se man- • Traducción de Direcciones de Red
tiene en la (NAT)
máquina virtual, • Modo de Interfaz Anfitrión
sin embargo, la
conexión al Red Interna
mundo exterior se VirtualBox es capaz de simular una
interrumpe de la red LAN interna separada para las tar-
misma forma que jetas de redes virtuales, con cualquier
si alguien hubiese número de máquinas virtuales en la
desconectado el red virtual que no verán ni se comuni-
cable de red. Este carán con nadie más, incluidos el sis-
control es útil tema anfitrión y los ordenadores fuera
para hacer prue- de la red interna en la que residen
bas o para reini- nuestros sistemas invitados (véase la
cializar sistemas Figura 2).
invitados con A primera vista, la red interna no
Figura 1: Configuración de la tarjeta de red virtual. El modo NAT se capacidad de parece particularmente útil, pero hay
habilita por defecto. El usuario puede generar aquí direcciones MAC e conexión en buenas razones para usarla. Debido a
incluso parchear un cable de red virtual para una prueba rápida. caliente. que la LAN virtual está completa-
Cada una de las mente aislada, ninguna influencia
nido. Una vez que la emulación está cuatro tarjetas de red puede ejecu- externa puede afectarla, lo que hace a
funcionando, la ventana captura por tarse en uno de los tres modos posi- la LAN interna una elección perfecta
completo el puntero del ratón. El bles que se especifican en el menú como entorno de pruebas o para
botón Ctrl derecho funciona como desplegable Connected to. Esto especi- resolver problemas.
botón del host y libera al ratón. fica con quien se comunica la tarjeta En los otros dos modos, cualquier
VirtualBox comprende dos compo- de red virtual y para qué otros orde- información transmitida se envía tam-
nentes: el demonio XPCOM VBoxSVC
y el front end Virtualbox. Por Instalar la Variante Software Libre
supuesto, el demonio debe estar eje-
Para compilar el código fuente, necesita- directorio de código fuente de VirtualBox
cutándose antes de iniciar la interfaz
mos las siguientes herramientas y libre- para configurarlo:
gráfica de usuario, pero no es necesa- rias, además de los paquetes de desar- ./configure
rio instalarlos de forma separada. Los rollo:
pasos señalados aquí ejecutarán Vir- source ./env.sh
• GCC
tualBox directamente desde un direc- kmk all
• Ensamblador as86 (generalmente
torio local. Esto instala VirtualBox y su conjunto
incluido con el paquete dev86 o bin86)
de herramientas en el subdirectorio
Conecta Cuatro • Compilador BCC de Bruce Evans
out/linux.x86/release/bin/. Antes de
(generalmente incluido con el paquete
Tras completar la instalación, el que podamos iniciarlo, el sistema
dev86)
siguiente paso es seleccionar, en la requiere el correspondiente módulo
• Compilador ACPI de Intel (está en las del kernel:
interfaz gráfica, la máquina virtual
pmtools de openSUSE)
cuyas configuraciones de red quere- cd out/linux.x86/release/bin/src
• libxslt
mos fijar, cosa que hacemos desde el make
menú Machine | Change. Allí seleccio- • libxerces
sudo make install
namos la entrada Network en la parte • libxalan
izquierda para acceder a las configu- Por supuesto, necesitamos las fuentes
• QT versión 3.3.5 o posterior
raciones (véase la Figura 1). del kernel para compilar en este paso.
• libidl
Están disponibles hasta cuatro tar- Trabajando como root, podemos habili-
• SDL, Alsa y HAL, como el propor-
jetas de red virtuales para cada tar el módulo del kernel tecleando mod-
cionado por libhal
máquina, que van desde el Adapter 0 probe vboxdrv antes de pasar a permitir
Tras resolver las dependencias, podemos el acceso a usuarios sin permisos al
al Adapter 3. Por defecto, sólo se
teclear wget http://www.vitual-
configura un NIC para cada máquina: nuevo archivo de dispositivo: chmod 666
box.org/download/1.5.2/Virtual-
tendremos que pulsar sobre las pesta- /dev/vboxdrv. Ahora ya podemos ejecu-
Box-1.5.2_OSE.tar.bz2 para descargar el
ñas correspondientes para los otros tar VirtualBox:
archivo con el código fuente [2].
NICs. Tras desempaquetar el archivo, LD_LIBRARY_PATH=. ./VBoxSVC&
El conmutador Network cable atta- tecleamos los siguientes comandos en el LD_LIBRARY_PATH=. ./Virtualbox
ched permite al administrador encen-

WWW.LINUX- MAGAZINE.ES Número 39 27


EVALUACIÓN
PORTADA • Redes
• Redes
con VirtualBox
Encajonados

Figura 3: En modo NAT, a la máquina virtual se le asigna una direc-


ción mediante el servidor DHCP interno. El cortafuegos evita que las
direcciones externas accedan a la máquina virtual.

Figura 2: Una red interna protege a las máquinas virtuales frente a los
precisa. Sin ción IP mediante el servidor DHCP
peligros de Internet. Las actualizaciones online no están soportadas,embargo, su uso integrado, que normalmente asigna
por tanto, en este modo. requiere teclear direcciones del rango 10.0.x.x.
largas y crípticas Tan pronto como el sistema invitado
bién a la interfaz de red del sistema cadenas de parámetros. comienza a transmitir paquetes sobre
anfitrión. Si dos máquinas virtuales Para instalar una segunda interfaz la conexión virtual, VirtualBox cap-
necesitan intercambiar información, (nic2) en una máquina virtual deno- tura estos paquetes e inserta la direc-
este método casi siempre afecta a la minada UbuntuVM en una LAN ción IP del sistema anfitrión antes de
velocidad o presenta problemas de interna llamada MyNetwork, el enviarlos a Internet.
seguridad. Para conectar una tarjeta modifyvm usa la siguiente línea de A pesar de que la configuración no
de red virtual a la LAN interna, selec- comandos para modificar la lleva mucho tiempo, este modo
cionamos Internal network bajo Con- configuración: implica una desventaja funcional: la
nected to en la interfaz gráfica de implementación de direcciones IP
usuario. VboxManage modifyvm U (NAT) en combinación con el corta-
“UbuntuVM” -nic2 intnet U fuegos interno permite al sistema
Lo que VirtualBox no te -intnet2 ”MyNetwork” invitado enviar información al mundo
Cuenta exterior, sin embargo, el mundo exte-
Las tarjetas configuradas de esta La red interna es como una caja rior y el anfitrión no pueden acceder
manera en cualquier máquina virtual cerrada: sin una segunda interfaz el al sistema virtualizado. La única
se conectan a un Switch simulado en sistema invitado es incapaz de nave- excepción a esto es el escritorio
la misma red virtual. Desafortunada- gar por Internet o acceder a la LAN remoto de la versión comercial, o bien
mente, no se dispone de un servidor física. usar herramientas VPN, como
DHCP en este modo, lo que significa Openvpn, para hacer un túnel hasta el
que tenemos que asignar direcciones Traducción de Direcciones interior.
IP de manera manual. A pesar de que de Red
es bastante fácil configurarlas, la El modo NAT nos ofrece un método Redireccionamiento de
interfaz gráfica no nos permite acce- sencillo y rápido para escapar de esa Puertos
der a una de las funcionalidades más jaula. Tras seleccionar el modo NAT En otras palabras, es imposible encap-
interesantes de VirtualBox: el soporte en el cuadro desplegable Connected sular servidores en producción en la
para redes internas independientes, to, a la tarjeta de red virtual se le máquina NAT virtual de manera que
que puede funcionar en paralelo. asigna una dirección mediante un ser- sea útil. El redireccionamiento de
vidor DHCP simulado con un corta- puertos nos permite solucionar esto.
LANs Virtuales fuegos que da acceso a la máquina VirtualBox escucha en un puerto del
Para facilitar la identificación de las virtual al mundo exterior. sistema anfitrión y redirecciona los
LANs virtuales, se asigna un nombre La Figura 3 nos muestra cómo fun- paquetes que llegan a este puerto a
único para cada red. Por defecto, las ciona esto. En el paso primero, al otro puerto de la máquina virtual
tarjetas de red que configuremos adaptador de la máquina virtual se le seleccionada. Desde el punto de vista
mediante la interfaz gráfica se conec- asigna automáticamente una direc- de otra máquina, da la impresión de
tarán a la red interna llamada intnet.

VBoxManage
Si necesitamos más LANs, no tendre-
mos más alternativa que acudir a la
línea de comandos VBoxManage. Esta
herramienta nos ofrece una alterna-
tiva completa en modo texto a la
interfaz gráfica de usuario así como la Figura 4: La petición de Internet alcanza al sistema anfitrión, que usa una interfaz TAP para
posibilidad de una configuración más pasarla a la máquina virtual.

28 Número 39 WWW.LINUX- MAGAZINE.ES


Redes con VirtualBox • PORTADA

Anfitrión nos proporciona la manera Lo primero es configurar el puente


Listado 1: Habilitar una más adecuada de ejecutar un servi- y conectarlo a eth0:
Interfaz TAP dor en VirtualBox, aunque configurar
01 #!/bin/bash este modo es un poco más compli- brctl addbr br0
02 # Crear interfaz TAP para cado. ifconfig eth0 0.0.0.0
usuario klaus: En el modo de Interfaz Anfitrión, brctl addif br0 eth0
VirtualBox crea una tarjeta de red vir-
03 interface=`VBoxTunctl -b -u
tual adicional en el sistema anfitrión, A continuación se actualizan las
klaus`
por ejemplo vbox0, además del fami- direcciones IP. Si usamos un servidor
04 # Crear el interfaz: liar eth0. Tras configurar la nueva tar- DHCP para asignar direcciones,
05 ifconfig $interface up jeta de red, VirtualBox usa un cable dhclient br0 se encargará de ello. En
06 # Conectar con bridge: virtual para parchear la conexión al caso contrario, necesitaremos asignar
adaptador simulado del sistema anfi- direcciones de manera manual con
07 brctl addif br0 $interface
trión (véase la Figura 4). ifconfig br0 IP address.
Para aplicaciones en producción, Para cada tarjeta de red simulada en
que el servicio está disponible direc- VirtualBox generalmente usa un el sistema invitado necesitamos una
tamente por el anfitrión. puente para conectar las redes física y interfaz virtual del lado anfitrión.
Son tres los comandos de VBoxMa- virtual. Esta unión funciona como VBoxAddIF vbox0 User br0 se encar-
nage que permiten el redirecciona- una única gran red que interacciona gará de conectarlo al puente.
miento de puertos antes de iniciar la con el mundo exterior. El script VBoxAddIF crea una inter-
máquina virtual: Para configurar esto, en primer faz TAP, denominada vbox0, y le
lugar necesitamos configurar una otorga la cuenta de usuario User. VBo-
VBoxManage setextradata U interfaz de red virtual para cada uno xAddIF está incluido en el paquete
“UbuntuVM” ”VBoxInternal/ U de los sistemas invitados. VirtualBox, pero escondido en las
Devices/pcnet/ U profundidades de los directorios del
0/LUN#0/Config/myservice/ U Construir Puentes código fuente en src/VBox/Installer/
Protocol” TCP Linux tiene adaptadores de redes vir- linux.
VBoxManage setextradata U tuales en forma de interfaces TAP, y
“UbuntuVM” ”VBoxInternal/ U VirtualBox también confía en este Paso Final
Devices/pcnet/0/LUN#0/ U método. El único requerimiento es El paso final, trabajando como root,
Config/myservice/GuestPort” 22 tener acceso libre al archivo de dispo- es conectar la tarjeta simulada en el
VBoxManage setextradata U sitivo /dev/net/tun con la cuenta del sistema invitado con la interfaz TAP.
“UbuntuVM” ”VBoxInternal/ U usuario que usa VirtualBox. Para hacerlo necesitamos introducir
Devices/pcnet/0/ U De igual manera, necesitamos un el nombre de la tarjeta en el cuadro
LUN#0/Config/myservice/ U software puente, como el paquete de configuración Interface name. En
HostPort” 2222 bridge-utils, y la herramienta en línea este caso, debemos dejar las dos
de comandos tunctl, que es parte del líneas de scripts en blanco.
Con esto le indicamos a VirtualBox paquete uml-utilities en openSUSE. Para liberar la interfaz de nuevo
que redireccione todas las conexiones El puenteo con VirtualBox puede tras haberla usado, tecleamos VBox-
TCP desde el puerto 2222 del sistema realizarse de dos maneras al DeleteIF vbox0 la en línea de coman-
anfitrión al puerto 22 del sistema comienzo: dos. Por cierto, esta herramienta
invitado. myservice es un nombre • si vamos a tener en todo momento falta en la variante software libre.
asignable libremente, mientras que un número de invitados fijo, el El segundo método supone ejecu-
UbuntuVM es el nombre de la método correcto sería configurar tar dos scripts: uno para crear la
máquina virtual. Si todos estos valo- una interfaz permanente a la que se interfaz TAP y conectarla al puente,
res están vacíos cuando se llama al conecta la máquina virtual. y el otro para deshabilitar la inter-
comando, VirtualBox deshabilita de • en caso de buscar un método más faz.
nuevo el redireccionamiento de puer- flexible, podemos permitir que la
tos. máquina virtual cree de manera Listado 2: Deshabilitar una
autónoma una interfaz dinámica. Interfaz TAP
Interfaz Anfitrión No obstante, tendremos que teclear 01 #!/bin/bash
Hacer NAT con redireccionamiento la contraseña de administración en
02 # desconectar el interfaz (el
de puertos supone una carga extra ambos casos.
nombre está en $2) del
notable. El administrador debe abrir,
y posiblemente asegurar, puertos en Interfaz Permanente o bridge:
el servidor. Por supuesto, tenemos Dinámica 03 brctl delif br0 $2
que llevar la cuenta de qué puertos La lista de comandos para configurar 04 # y eliminar interfaz
están mapeados a qué servicios de una interfaz permanente intimida
05 VBoxTunctl -d $2
qué máquina. El modo de Interfaz bastante.

WWW.LINUX- MAGAZINE.ES Número 39 29


PORTADA • Redes con VirtualBox

En este caso, la visualizar el escritorio de la máquina


alternativa en virtual en sus puestos de trabajo.
línea de coman-
dos usa VBoxMa- Difícil, Estable y Rápido
nage con la Los tres tipos de conexión que ofrece
opción -taptermi- VirtualBox para conectar las máqui-
nate1. nas virtuales tienen ventajas y des-
Una vez que la ventajas, y la solución óptima depen-
máquina virtual derá en realidad de las circunstancias.
ha arrancado, Si sólo necesitamos acceder a Inter-
llama al script net desde la máquina virtual, el modo
que habilita para NAT es una opción útil, pero puede
crear una interfaz hacer que el acceso remoto sea impo-
TAP y nos dice la sible. En el caso de un servidor en
contraseña de una zona de pruebas, nuestra única
root debido a la opción es la compleja configuración
llamada a de Interfaz Anfitrión con las herra-
gtksudo. Cuando mientas para los puentes.
se apaga el sis-
Figura 5: La variante puenteada Interfaz Anfitrión VirtualBox propor- tema invitado, el Lista de Peticiones
ciona al usuario dos cuadros de entrada para iniciar y parar la inter- segundo script eli- Debido a que la interfaz gráfica de
faz virtual. Los scripts parece que funcionan bien aquí mina la interfaz usuario actualmente no lo soporta, la
TAP. implementación de todas las configu-
El Listado 1 muestra un script de raciones de red en la interfaz gráfica
ejemplo basado en uno proporcionado Escritorio Remoto es el principal punto que yo añadiría
en el manual para habilitar una inter- La variante comercial de VirtualBox a una lista de peticiones a la empresa
faz TAP. El manual de VirtualBox [3] es capaz de redirigir la salida de pan- Innotek. Dicho esto, los competidores
proporciona información más deta- talla hasta otro ordenador mediante el de Innotek no lo han hecho mucho
llada acerca de esto. Remote Desktop Protocol (RTP), per- mejor. Configurar las redes en Xen es
mitiendo de esta manera que los igualmente complejo, y VMware sólo
Herramienta VBoxTuntl usuarios accedan al escritorio de la ofrece una herramienta en línea de
El herramienta VBoxTuntl está máquina virtual directamente desde comandos denominada vmware-con-
incluida con VirtualBox: básicamente la red, sin importar la configuración fig.pl para redes virtuales, aunque la
se trata de la conocida herramienta de red que hayamos elegido para la herramienta puede configurar múlti-
tunctl. máquina virtual. Esto hace que Vir- ples redes NAT, sólo-host y modo
Hacemos ejecutable el script de ini- tualBox sea una alternativa para ser- puente en unos pocos pasos.
cio y lo introducimos en el Enabling vidores sin interfaz gráfica.
Program de la interfaz gráfica de Para habilitar lo que el fabricante Conclusiones
configuración de VirtualBox, usando denomina Remote Display, en primer La solución podría estar a la vuelta de
para ello una combinación sudo como lugar tenemos que especificar el la esquina. Se rumorea que Innotek
gtksudo startscript (véase la Figura número de puerto que VirtualBox va a está trabajando duro en la
5). usar para ofrecer el servicio en el sis- configuración de redes. Si prefiere no
Si no disponemos de la interfaz grá- tema anfitrión. Para evitar que el esperar, será bien recompensado por
fica, podemos hacer esto en su lugar: escritorio de la máquina virtual esté el esfuerzo que ponga en ello. Una
abierto al público, también tiene sen- vez que haya configurado VirtualBox
VBoxManage U tido especificar un método de autenti- de manera adecuada, podrá avanzar
modifyvm U cación. enormemente con estos sistemas vir-
“VMName” U External significa que el usuario tuales rápidos y estables. ■
-tapsetup1 U debe registrarse en el sistema anfi-
“gtksudo U trión a la manera estándar de éste. RECURSOS
startscript” Guest significa loguearse en el sistema [1] Página de VirtualBox: http://www.
invitado. Por último, Null deshabilita virtualbox.org
El Listado 2 muestra el script para completamente la autenticación.
[2] Edición Open Source: http://www.
deshabilitar la interfaz TAP. De Tras guardar la nueva
virtualbox.org/download/1.5.2/
nuevo, debemos introducir la ruta configuración, reiniciamos la
VirtualBox-1.5.2_OSE.tar.bz2
hasta el script ejecutable en el campo máquina virtual en línea de comandos
[3] Manual de usuario: http://www.
de entrada de VirtualBox, preferible- tecleando VBoxVRDP -startvm. El
virtualbox.org/wiki/
mente en combinación con un usuario puede iniciar entonces rdes-
End-ser_documentation
comando sudo en Disabling Program. ktop o cualquier otro cliente RDP para

30 Número 39 WWW.LINUX- MAGAZINE.ES


Malware Virtual • PORTADA

Davorr, fotolia

Virtualización de rootkits y el futuro para la seguridad de sistemas

MALWARE VIRTUAL
Hay una nueva generación de rootkits que evitan su detección virtualizando el sistema comprometido, así el

usuario legítimo no se entera de nada. POR WILHELM DOLLE AND CHRISTOPH WEGENER

E
l objetivo final en el típico juego del Los rootkits permiten al atacante mante- La virtualización actúa esencialmente
gato y el ratón que se produce ner en secreto el acceso privilegiado a una como un anillo adicional con privilegios
entre atacantes y defensores es máquina. Pueden ocultar procesos, cone- incluso superiores a los del anillo 0. Cual-
mantener el control sobre el sistema ope- xiones de red, archivos y directorios para quiera que comprometa el entorno de vir-
rativo (ver Figura 1). El malware tradicio- controlar remotamente el PC de la víctima tualización controlará prácticamente el
nal procura escalar privilegios y, a ser e instalar puertas traseras, monitorizar el entorno físico completo del sistema en el
posible, ejecutarse en el anillo 0, el modo tráfico de la red o registrar las pulsaciones que se ejecuta. El malware oculto en esta
del kernel del sistema operativo. Una vez del teclado. Una vez se está ejecutando en capa es incluso más difícil de detectar y
allí, el exploit y el atacante pueden mani- modo kernel, el rootkit puede filtrar y eliminar que el malware en modo kernel.
pular el sistema. manipular los valores de retorno de las lla- Los investigadores de la Universidad de
A veces se anuncia la virtualización madas del sistema, así como ocultar archi- Michigan y de Microsoft Research mostra-
como un gran avance en seguridad de sis- vos, directorios y procesos de forma muy ron en 2006 una prueba de concepto ini-
temas. Se pueden ejecutar multitud de sis- eficiente.
temas virtuales sin que puedan influen- Un rootkit con acceso al modo ker-
ciarse los unos a los otros. Este aisla- nel puede cerrar fácilmente aplica-
miento previene un buen número de técni- ciones en modo usuario (anillo 3),
cas estándar de ataque, pero a la vez abre incluidas las de root. Una vez con-
una nueva frontera para la realización de quistado el kernel se hace extrema-
ataques que no existían hasta ahora. Los damente difícil de identificar y elimi-
expertos ya hablan de los rootkits de nar. Claro que, el propietario legítimo Figura 1: El software para la detección sólo puede
nueva generación que aprovechan los de la máquina puede usar también el indentificar el malware que se ejecuta en el mismo
beneficios de la virtualización para evitar modo kernel para crear una línea de nivel (o uno superior), como el malware y el detector
ser detectados. defensa eficaz. de esta imagen.

WWW.LINUX- MAGAZINE.ES Número 39 31


PORTADA • Malware Virtual

cularmente con los adaptadores de vídeo y


red. Comparando entre la configuración
física real y la salida de comandos como
system-info, hwinfo o el sistema de archi-
vos /proc, se pueden ver las diferencias
(Figura 3). Los administradores de Win-
dows tendrán que usar el administrador
de dispositivos o herramientas de terceros.
Figura 2: Un rootkit que ataca la capa de virtualización consigue mayores privilegios. El sis- La cantidad de disco disponible, o la
tema operativo hospedado no puede parar o desinstalar el software. memoria, también podrían revelar la exis-
tencia de un entorno virtual. Por ejemplo,
cial de un rootkit apodado SubVirt [1], el software Virtual PC de Microsoft, mien- si no podemos emplear el tamaño físico
dando lugar a la primera generación de tras que la versión para Linux está basada total de nuestro disco duro, el sistema
rootkits capaces de explotar las posibilida- en VMware. De cualquier modo, se necesi- anfitrión o la máquina virtual podrían
des de la virtualización. Después de ser tan privilegios de administración para la estar necesitando parte de él. Pero hay que
infectada la máquina, el rootkit se instala instalación del rootkit, aunque un atacante tener cuidado, porque el sistema anfitrión
por debajo del sistema existente y se eje- podría usar cualquier método posible para podría manipular también estos datos, ya
cuta dentro de una máquina virtual tras el la obtención del estatus de administrador. que puede controlar cualquier tipo de
reinicio. salida importante del sistema hospedado.
SubVirt modifica para ello la secuencia Detección
de arranque, de modo que la BIOS no car- Las tecnologías para virtualización exis- Arranque y Escaneo
gue el MBR (Master Boot Record) pertene- tentes, como VMware o Xen, están tan Externos
ciente al sistema operativo, sino que inicia ampliamente difundidas, que el hecho de El rootkit descrito anteriormente, SubVirt,
una máquina virtual. Esta máquina virtual que descubramos que un sistema opera- reside permanentemente en el disco duro,
ejecuta entonces la BIOS y arranca el sis- tivo se está ejecutando en un entorno vir- aunque son unos cambios muy difíciles de
tema operativo copiado al entorno virtual tual no implica necesariamente que haya- detectar desde el sistema en ejecución.
a través del MBR. mos encontrado un rootkit. La mayoría de Para reconocer de forma fiable una infec-
Mientras los usuarios continúan traba- herramientas de diagnóstico demuestran ción puede que necesitemos desconectar
jando en sus sistemas operativos, virtua- la existencia de entornos virtuales la máquina, arrancar desde un medio dis-
les, ajenos a lo que está sucediendo, Sub- mediante la detección de anomalías. Cal- tinto y analizar el disco duro, algo proble-
Virt inicia una segunda instancia y realiza culan los tiempos de respuesta, asu- mático para muchos servidores.
todo tipo de trucos sucios. El rootkit no se miendo que un mismo comando tarda Las herramientas desarrolladas específi-
puede parar o desinstalar desde el sistema más en ejecutarse en un entorno virtual camente para este fin ofrecen a los admi-
hospedado, porque es él quien controla la que de forma nativa, asumiendo también nistradores la posibilidad de detectar la
máquina virtual que está utilizando el que las instalaciones de hardware son existencia de un sistema virtualizado. Por
usuario. Los investigadores de seguridad idénticas. El efecto lo provoca el consumo ejemplo, Red Pill [2], publicado por
llaman a esta técnica VMBR (Virtual de ciclos de CPU de la máquina virtual en Joanna Rutkowska a finales de 2004. Fun-
Machine Based Rootkit). sí.
La Figura 2 ilustra la nueva situación; el Este tipo de medición
rootkit ocupa las áreas de color gris. La automatizada sirve para la
capacidad de control por parte del atacante detección de máquinas vir-
es aún mayor, puesto que puede hacer uso tuales legítimas; de todos
del VMM (Virtual Machine Monitor) para modos, así no se demues-
manipular, redirigir o bloquear cuales- tra la existencia de un root-
quiera datos o características de hardware kit, ya que el rootkit puede
del sistema operativo hospedado sin dejar controlar también el reloj
el más mínimo rastro detectable por los interno. Además, la idea de
sistemas de detección tradicionales. usar hardware externo
Los investigadores han demostrado que para la medición de tiem-
pueden comprometerse tanto máquinas pos de respuesta manual-
con Windows XP como con Linux, imple- mente presenta un pro-
mentando ataques de prueba de concepto blema de escalabilidad.
a partir de cuatro vectores diferentes, entre Lo que verdaderamente
los que se incluyen un servidor web para pone de manifiesto que un
phishing, un keylogger y un spyware que sistema ha sido infectado
escanea el sistema infectado en busca de son las anomalías en la
datos confidenciales. configuración visible del Figura 3: Hay herramientas como hwinfo que sirven para ver
La tecnología empleada por la versión hardware, muy típicas en las diferencias entre el hardware físico y el hardware detec-
de SubVirt para Windows está basada en entornos virtuales y parti- tado por el sistema operativo.

32 Número 39 WWW.LINUX- MAGAZINE.ES


Malware Virtual • PORTADA

ciona porque las instrucciones SIDT, SGDT rootkits que se benefician de la tecnología ción de los comandos es menos fiable
y SLDT que ejecutan los sistemas virtuales del procesador, permitiéndoles la inserción ahora, ya que el cómputo adicional es
devuelven valores distintos a los que de un supervisor adicional entre el hard- menor (o incluso inexistente), gracias al
devolvería una CPU nativa. Por ejemplo, la ware visible y el software. El supervisor sistema anfitrión. Cuando Joanna Rut-
instrucción SIDT debe devolver la direc- toma el control del sistema y convierte el kowska anunció por primera vez su Blue
ción de la tabla de interrupciones. sistema operativo original, en tiempo de Pill como “Malware indetectable”, la gente
Como alternativa, Scoopy doo [3], de ejecución, en un huésped virtual. A dife- se apresuró a desmentir sus afirmaciones.
Tobias Klein, o las herramientas de Jerry rencia de lo que ocurre con la virtualiza- Se pusieron en la palestra muchas pro-
[4], detectarán un entorno VMware. Si ción mediante software, este tipo de apro- puestas de detección del rootkit en térmi-
estamos seguros de estar ejecutando un piación no necesita un reinicio, lo que nos de análisis de tiempos. Como mucho,
sistema exento de virtualización, los deriva en una mayor dificultad para detec- estos métodos sólo ponen de manifiesto
hallazgos positivos de estas herramientas tar la intrusión. que el sistema operativo se está ejecu-
son un indicador real de actividad de un Algunos rootkits usan este tipo de tec- tando en un entorno virtual, pero no
VMBR. nología, como Blue Pill [8], de Joanna Rut- implica necesariamente una infección por
kowska, publicada en 2006 para AMD-V o rootkit.
Implementado en la CPU Vitriol [9], apropiada para Intel VT gracias Para evitar la detección, Rutkowska y
Esta nueva generación de rootkits virtuali- a Dino Dai Zovi. En 2007, Rutkowska y Tereshkin han desarrollado una aplicación
zadores podría resultar muy peligrosa. Alexander Tereshkin volvieron a publicar llamada Blue Chicken [11], que detecta los
Pero lógicamente esta técnica también pre- Blue Pill, reescribiendo la detección com- análisis de tiempos de respuesta y saca de
senta sus propias vulnerabilidades. Por pletamente y añadiendo un determinado la memoria virtual al rootkit temporal-
ejemplo, el rootkit necesita que se reinicie número de funcionalidades [10]. Una vez mente. La carrera entre la tortuga y la lie-
para pasar a estar activo, algo perfecta- el nuevo Blue Pill se encuentra ejecután- bre, el juego del ocultamiento y la detec-
mente detectable. Los desarrolladores de dose con privilegios de administrador, ción de rootkits, se encuentra en continuo
rootkits han preparado otras técnicas, activa el modo SVM (Secure Virtual cambio.
algunas basadas en la más reciente virtua- Machine) en las recientes CPUs AMD, e
lización implementada en hardware. instala el VMCB (Virtual Machine Control Prevención
O bien se virtualiza el sistema completo, Block), que toma el control del sistema Lo mejor que un administrador puede
como es el caso de las particiones lógicas operativo infectado en modo huésped. hacer, dada la dificultad de identificación
de IBM (LPAR [5]), o la virtualización se Hasta el siguiente reinicio, el rootkit de un rootkit una vez ha sido instalado, es
limita a componentes individuales, como mismo trabaja en un nivel inferior a la evitar la infección. Es crítico mantener a
el procesador via Intel VT (Virtualization capa del supervisor. Al contrario que Sub- salvo el proceso de arranque (monitori-
Technology; formalmente Vanderpool [6]) Virt, Blue Pill no reside permanentemente zándolo), así como lo es también el VMM.
o la AMD Virtualization (formalmente en el disco duro, y por tanto no sobrevive Desde un punto de vista técnico, los
Pacifica [7]). a una desconexión total. Por otro lado, no modelos sugieren que el Trusted Compu-
La virtualización de sistemas o de siste- deja rastro alguno que pueda ser detec- ting Group (TCG [12]) parece un buen sitio
mas operativos se basa en una VMM que tado en una investigación forense. desde el que comenzar. El componente
acepta instrucciones dirigidas al hardware Internet está repleto de controvertidos clave es el módulo TPM (Trusted Platform
desde los sistemas hospedados (las debates sobre lo fácil que puede resultar Module), un chip hardware que imple-
máquinas virtuales). Sin soporte para el identificar un rootkit de segunda genera- menta el modelo TCG en la placa base del
procesador, la VMM tiene que capturar y ción. Por supuesto que la detección equipo. El chip ofrece funciones y opera-
modificar determinadas instrucciones del mediante medición de tiempos de ejecu- ciones criptográficas, direccionables desde
anillo 0 provenientes del sistema hospe-
dado, por ejemplo, para proteger su propia NeoWare
gestión de memoria del acceso del hués- Los nombres de los dos rootkits men- habrá vuelta atrás. [Morfeo sostiene
ped. cionados en este artículo, Red Pill y Blue una píldora azul en su mano izquierda.]
Por el contrario, la virtualización de los
Pill (la pastilla azul o la pastilla roja), se Si escoges la pastilla azul, aquí se acaba
procesadores de AMD o Intel permite que
han tomado de la película “Matrix” todo. Te despertarás en tu cama
la VMM envíe instrucciones directamente
(1999). Hay una escena en la que Mor- creyendo lo que quieras creer. [En la
al procesador. La CPU misma se encarga
feo (Laurence Fishburne) le da a elegir otra mano sostiene la píldora roja]. Con
de mantener separados los procesos del
sistema hospedado y la VMM, debido a al hacker Neo (Keanu Reeves) entre la pastilla roja te quedarás en el País de
que su lógica es inaccesible incluso para tomar la pastilla roja o tomar la pastilla las Maravillas y yo te enseñaré dónde
los procesos del anillo 0. La capacidad de azul. La escena se desarrolla en un tiene el conejo su madriguera. [Se pro-
hacerlo sin necesitar una modificación antiguo edificio. duce una pausa; Neo parece dirigirse
intermedia en la VMM mejora el rendi- Morfeo: Por desgracia, no se puede hacia la pastilla roja.] Recuerda, sólo te
miento del sistema. ofrezco la verdad, nada más. [Neo toma
explicar lo que es Matrix. Has de verlo
Algunos investigadores han comenzado
con tus propios ojos. [Se gira hacia la pastilla roja y la ingiere con un vaso
a usar la virtualización de hardware como
Neo.] Esta es tu última oportunidad. No de agua.] [13]
modelo para una nueva generación de

WWW.LINUX- MAGAZINE.ES Número 39 33


PORTADA • Malware Virtual

la BIOS y el sistema operativo, y que deter- cada elemento de la cadena deben residir introduce también nuevos vectores para el
minan el nivel de confiabilidad del sistema en una memoria confiable. El único lugar malware.
operativo. en el que podemos situar el checksum de Los conceptos iniciales demuestran
Algo más importante aún es que puede la BIOS y el valor de hash es en la NVRAM cómo los rootkits pueden aprovechar la
usarse para realizar comprobaciones de del chip TPM. Entonces la BIOS podrá virtualización para ocultar procesos mali-
integridad durante el proceso de arranque. guardar los valores de referencia de su ciosos. Se esperan más implementaciones
Se necesitan rutinas especiales para com- propia NVRAM y el bootloader deberá en un futuro próximo. Por ahora ninguno
ponentes críticos del sistema que calculen tener los valores de referencia del archivo de estos rootkits virtualizadores de última
hashes criptográficos y los almacenen en de configuración. La instancia de verifica- generación ha hecho aparición en la
los registros (PCRs) del chip TPM. La ción garantiza la confiabilidad del escena pública, aunque cabe esperar que
correspondiente instancia de evaluación siguiente elemento de la cadena, inclu- lo hagan pronto. ■
compara los valores de los hashes resul- yendo los valores de referencia del mismo
tantes con los valores de referencia alma- elemento. RECURSOS
cenados para declarar la configuración [1] “SubVirt: Implementando Malware
actual del sistema como válida, permitida Las Mejores Referencias con máquinas virtuales” (inglés) por
o confiable. Un arranque seguro impone una serie de Samuel T. King, Peter M. Chen, Yi-
Los valores de hash incorrectos indican severas restricciones con la gestión de Min Wang. Del Simposio de IEEE
cambios no autorizados en el sistema y valores de referencia. El administrador sobre Seguridad y Privacidad http://
disparan las respuestas oportunas desde la debe reemplazar los valores almacenados www.eecs.umich.edu/Rio/papers/
instancia de evaluación, como la cancela- en el chip TPM después de flashear la king06.pdf
ción del proceso de arranque o un kernel BIOS con un nuevo firmware. Si el código [2] “Red Pill … O Cómo detectar VMM
panic. Si la evaluación y su posible res- del cargador de arranque cambia, el valor con una sola (o casi) instrucción de
puesta ocurren durante el arranque, de referencia en la BIOS debe cambiar, y CPU” (inglés) por Joanna
entonces se dice que es un arranque así sucesivamente. Todas estas transaccio- Rutkowska.
seguro. Si ocurren después, normalmente nes deben ser seguras, algo que sólo es [3] Scoopy doo: http://www.trapkit.de/
mientras es manejada por el sistema ope- posible con instancias confiables y segu- research/vmm/scoopydoo/index.
rativo, se dice que es un arranque con- ras. html
fiado. Si una acción falla, el administrador [4] Jerry: http://www.trapkit.de/
Estas técnicas permiten al administrador necesita algún tipo de copia de respaldo y research/vmm/jerry/index.html
verificar la integridad del sistema al com- un mecanismo de recuperación para [5] IBM LPAR: http://en.wikipedia.org/
pleto desde los procesos de arranque del arrancar el sistema. Y la pregunta de si el wiki/LPAR
VMM. El chip TPM y algunas partes de la usuario debería ser capaz de acometer
[6] Tecnología de Virtualización de Intel:
BIOS actúan como núcleo principal de esta tarea es muy difícil de responder.
http://www.intel.com/technology/
confiabilidad para las mediciones. Cuando La infraestructura al completo funciona platform-technology/virtualization/
el sistema arranca, el chip ayuda a la BIOS a muy bajo nivel; por ejemplo, el VT de index.htm
a verificar las partes de sí misma y alma- Intel implementa el modelo mediante
[7] Tecnología de Virtualización de
cena los valores de hash en los registros de Secure Extensions y Secure Boot. Debido a
AMD: http://multicore.amd.com/
configuración de la plataforma. Luego, la las complejidades técnicas, la producción us-en/AMD-Multi-Core/
BIOS investiga el MBR del dispositivo de de estas funcionalidades en los sistemas Quad-Core-Advantage/
arranque y toma el control del cargador de de PC probablemente no merezca la pena At-Work-AMD-Opteron/
arranque. por ahora. Los sistemas integrados, teléfo- Virtualization.aspx
Si se han dado al cargador de arranque nos móviles y PDAs, cuyos valores de refe- [8] Blue Pill: http://theinvisiblethings.
órdenes al respecto, éste continuará con rencia son más sencillos de gestionar, son blogspot.com/2006/06/
las mediciones de los valores. Algunos candidatos más probables. introducing-blue-pill.html
objetivos válidos son el archivo de Aún queda una pregunta en el aire
[9] Vitriol: http://www.theta44.org/
configuración del cargador de arranque, el sobre quién debería ser el origen de la con- software/
disco de RAM inicial, el archivo del kernel, fiabilidad: ¿el propietario del sistema, el HVM_Rootkits_ddz_bh-usa-06.pdf
el archivo del VMM, etc. Si se hace de fabricante, o una tercera parte? El propie-
[10] Rediseño de Blue Pill: http://
forma consistente, el resultado es una tario siempre corre el riesgo de perder el bluepillproject.org
cadena de confianza desde la BIOS hasta control del sistema debido a, por ejemplo,
[11] “IsGameOver() Anyone?” por
el VMM. El VMM es dueño de los sistemas un rootkit que comprometa todas estas
Joanna Rutkowska y Alexander
hospedados, pudiendo verificar su integri- medidas, aunque un fabricante puede
Tereshkin. Invisible Things Lab,
dad y responder apropiadamente, depen- querer obligar al usuario a adoptar una 2007: http://bluepillproject.org/stuff/
diendo de nuestro propósito, sin que ellos solución determinada. IsGameOver.ppt
interfieran en el proceso. La teoría siempre La virtualización afecta cada vez más a
[12] TCG: http://www.
suena muy bien, pero llevar a cabo el pro- la operaciones rutinarias de los servidores.
trustedcomputinggroup.org/home
ceso puede llevarnos algún tiempo. El entorno virtual proporciona muchos
[13] The Matrix: http://www.whysanity.
Hasta conseguir un arranque completa- beneficios en materia de seguridad, ais-
net/monos/matrix3.html
mente seguro, los valores de referencia de lando y paralelizando contextos, pero

34 Número 39 WWW.LINUX- MAGAZINE.ES


Nokia 810 • EVALUACIÓN

Lo nuevo de Nokia: Internet en el bolsillo

NOKIA 810

El nuevo Nokia N810 acaba de llegar para quedarse. El concepto de Internet Table que abandera Nokia va
va

ganando adeptos y nos ofrece, con este nuevo dispositivo, todo lo que nos ofrecía el N800 y algunas cosas
cosas

más. Pero ¿vale la pena cambiar nuestro N800 por el nuevo N810? POR ALBERTO GARCÍA SERRANO

N
okia se ha empeñado en popula- colores, gracias a la cual se puede nave- hace el iTouch, aunque en un dispositivo
rizar su nuevo concepto de dis- gar viendo las páginas WEB casi como como éste, tampoco es una carencia
positivo al que ha bautizado las veríamos en un monitor normal, es grave.
como Internet Table. El N810 [1], disposi- decir, sin tener que estar haciendo scroll La entrada mediante la pantalla táctil
tivo que analizamos aquí, pertenece a la continuamente para acceder a toda la puede hacerse a través de un teclado
tercera generación, y sin duda, ha mejo- página. Personalmente la he utilizado virtual o bien utilizando el reconoci-
rado el concepto iniciado por el Nokia para ver películas mientras viajaba en miento de escritura (además de poder
770 y continuado por el N800. El N810 tren o en avión, y se dejan ver mucho usar el teclado integrado).
está controlado por el nuevo sistema mejor que en otros dispositivos como el Sin duda, la gran pantalla del N810 es
operativo OS2008 [2], basado en Maemo iTouch de Apple, que tiene menor resolu- una de sus características más reseña-
4.0. A pesar de ser fabricados por Nokia, ción (aunque también es más pequeño). bles, que seguro no le dejará indiferente.
estos dispositivos no disponen de la Nokia ha añadido como novedad un sen-
capacidad de realizar llamadas telefóni- sor para regular la iluminación de la pan- Conexión a Internet
cas usando la red GSM (aunque sí talla, lo cual se agradece en exteriores. El verdadero potencial del N810 se mues-
mediante VoIP). Están más cerca de ser Sin embargo, al estar situado en la tra en todo su esplendor cuando se
una PDA, aunque en ellos todo está pen- esquina superior izquierda, es fácil tapar encuentra dentro del radio de cobertura
sado y enfocado para ofrecer una expe- el sensor con el dedo pulgar mientras de una red Wi-Fi. Tiene soporte para
riencia de navegación web muy cercana sujetamos el dispositivo, haciendo bajar redes IEEE 802.11b/g con WEP o WPA/
a la que tendríamos en un ordenador de repentinamente la intensidad de ilumina- WPA2. La conexión a las redes es más
sobremesa pero en un dispositivo muy ción. sencilla que con una PDA con Windows
portable. Es como llevar Internet en el El tacto de la pantalla es preciso y Mobile. De forma intuitiva, el N810 nos
bolsillo. cómodo cuando pulsamos con el pun- mostrará un listado con todas las redes a
tero. Es posible conseguir una buena nuestro alcance y, en caso de ser necesa-
La Pantalla velocidad de punteo, ya que la pantalla rio, nos solicitará la clave de conexión.
El nuevo N810, al igual que sus predece- es rígida y tiene buena sensibilidad. En Una vez conectados podremos almace-
sores, posee una pantalla táctil de 4,13’‘ este punto se echa de menos que pueda nar la configuración de la red, de forma
con una resolución de 800x480 y 65.000 detectar dos pulsaciones a la vez como que la próxima vez que entremos en su

WWW.LINUX- MAGAZINE.ES Número 39 35


EVALUACIÓN • Nokia 810

grado. El teclado es cómodo y permite


teclear bien siempre que no tengamos
unos dedos demasiado gruesos. La ver-
sión que se vende en nuestro país está
en español y contiene la tecla Ñ. Al des-
plegar el teclado las teclas se iluminan,
permitiendo verlas cómodamente. Aún
siendo muy satisfactorio y cómodo de
usar, le he encontrado un par de pegas.
Las teclas superiores quedan muy pega-
das a la pantalla, lo que puede dificultar
el acceso a ellas si tenemos unos dedos
grandes. He echado en falta teclas como
el tabulador, los corchetes o las llaves
para hacer pequeños scripts en Python.
De todas formas, también podremos
usar un teclado bluetooth estándar para
PDA.
El GPS utiliza un software llamado
Wayfinder [3], que en nuestro país
incorpora el mapa de España y Portu-
gal. Este software no es completo ya
Figura 1: N810 con el teclado deslizante. que, aunque nos mostrará correcta-
mente nuestra posición en el mapa, si
radio de cobertura, la conexión se realice ¿Evolución o Revolución? queremos usarlo para que nos guíe
de forma automática. Respecto a sus predecesores, el N810 hasta cualquier punto, tendremos que
Si no estamos cerca de un punto de incorpora una serie de mejoras que lo pagar una licencia adicional. Afortuna-
acceso Wi-Fi, mediante bluetooth podre- hacen un dispositivo muy atractivo, aun- damente, podremos usar alternativas
mos usar nuestro móvil 3G o GPRS para que el precio también se ha visto incre- libres como Maemo Mapper. El GPS es
acceder a Internet. Personalmente lo he mentado notablemente. Hay que hacer perezoso a la hora de encontrar satéli-
estado usando con una conexión de notar que el N810 no es estrictamente el tes. En interiores es inutilizable, mien-
Yoigo, y el funcionamiento es más que sucesor del N800, sino una versión supe- tras que en el exterior tarda un poco en
satisfactorio, y a un precio relativamente rior pensada para que ambas convivan conectar con los satélites. Hubiera
económico, siempre y cuando la red de en el mercado. estado bien que incorporara una cone-
telefonía no tenga ningún problema. De El N810 incluye como grandes noveda- xión para antena exterior. De cualquier
esta forma, podremos conectar a Internet des un teclado deslizable y un GPS inte- forma, es posible utilizar un GPS blue-
en cualquier momento y lugar.
El nuevo N810 incorpora un nuevo
navegador que utiliza el motor microB
basado en Firefox (el N800 incorporaba
Opera) con soporte para Flash 9 y
AJAX, con lo que no tendremos ningún
inconveniente para usar cualquier apli-
cación de la WEB 2.0, como Youtube,
Flickr, Google Maps o Google Mail. El
navegador funciona correctamente y
permite ver la mayoría de las páginas,
aunque he encontrado algunos vídeos
de Youtube que no se reproducían con
soltura. Esperemos que esto se solu-
cione con la publicación de la próxima
actualización.
Además del navegador incorpora lec-
tor de correo electrónico, lector RSS y
mensajería instantánea. Puede funcionar
como teléfono VoIP usando aplicaciones
como Gizmo o Skype (incorporado por
defecto en Maemo 2008), además de
soportar Google Talk (Jabber). Figura 2: N810 es excelente como reproductor multimedia o como teléfono SIP.

36 Número 39 WWW.LINUX- MAGAZINE.ES


Nokia 810 • EVALUACIÓN

tooth externo en caso de que ya dispon-


gamos de uno.
Cuadro 1: Características generales del N810.
Pero ¿vale la pena adquirir la N810 con Tamaño:
un precio de 400 Euros cuando la N800 • Volumen: 128 cc
cuesta sólo 249 Euros? El N810 y el N800 • Peso: 226 g
son básicamente la misma máquina,
• Longitud: 72 mm
pero con algunas pequeñas diferencias
• Anchura: 128 mm
además del GPS y el teclado.
El N810 incorpora 2GB de memoria • Grosor: 14 mm
flash, frente a los 256MB del N800. Pantalla:
Ambas son ampliables, pero mientras • Pantalla WVGA de 4,13” y alta resolución (800 x 480 píxeles) con hasta 65.000 colores
que la N810 tiene un solo slot para tarje- Procesador:
tas microSD/miniSD de hasta 8GB, la • TI OMAP 2420, 400Mhz
N800 tiene dos slots SD/MMC, con lo
Memoria:
que, aunque parezca extraño, con la
• DDR RAM 128MB
N800 es posible conseguir mayor capaci-
dad de almacenamiento que con la N810. • 2 GB Flash
La cámara web no ha sufrido mejora • Admite tarjetas de memoria miniSD y microSD compatibles (con ampliador). Admite
alguna, pero en la N800 la webcam es tarjetas de hasta 8 GB. (Las tarjetas SD de más de 2 GB deben ser compatibles con
direccional (puede modificarse el ángulo SDHC).
de la cámara), mientras que en la N810 Batería (Nokia BP-4L):
es fija. La cámara, con resolución VGA, • Uso continuado (pantalla encendida, LAN inalámbrica activa): hasta 4 horas
cumple correctamente su función para • Reproducción de música: hasta 10 horas
videoconferencia, aunque no tiene nada
• Tiempo siempre online: hasta 5 días
que ver con las cámaras de los móviles
• Tiempo en espera: hasta 14 días
de última generación. En condiciones de
baja luminosidad se observa bastante Otras características:
ruido en la imagen, pero con luz natural • Carcasa deslizante con teclado QWERTY integrado
la imagen es buena. • Receptor GPS incorporado
Los altavoces estéreo cumplen más que • Altavoces estéreo y micrófono de alta sensibilidad
correctamente en ambos modelos, pero • Pantalla panorámica de alta resolución
diría que los de la N800 suenan con algo
• Cámara Web VGA integrada
más de naturalidad. A cambio, en la N800
• Tecla HW para el bloqueo de teclas y pantalla táctil
son más grandes, haciendo que el disposi-
tivo sea más voluminoso que el N810. • Sensor de luz ambiental
Hay otras diferencias de menor impor- Conexiones:
tancia, como el conector USB, que en el • Estándar WLAN: IEEE 802.11b/g
caso del N800 es miniUSB y en el caso del • Especificación Bluetooth v. 2.0. +EDR (Perfiles admitidos: HID, FTP, DUN, GAP, SPP,
N810 microUSB. Curiosamente, en el HSP, SAP y OPP)
N810 han eliminado la radio que sí • USB de alta velocidad para la conexión con el PC
incluye el N800.
• Toma de 3,5 mm para auriculares estéreo
El resto de características son similares
en ambos modelos. Los dos incorporan
un microprocesador TI OMAP 2420 a das sin necesidad de conectarla a la red 770 cuando apareció OS2007, la nueva
400Mhz. Extrañamente, en el N800 la eléctrica. versión corre en el N800 y en el N810,
velocidad de reloj está rebajada artificial- por lo que sólo necesitaremos descar-
mente debido a algunos problemas con El Nuevo OS2008 garla e instalarla en nuestro N800 para
la anterior versión de Maemo. Actuali- El lanzamiento del N810 viene acompa- empezar a disfrutar de las nuevas funcio-
zando la N800 a OS2008 el micro recupe- ñado por una nueva versión de la distri- nalidades. El primer cambio que se apre-
rará todo su esplendor. Respecto a las bución OS2008 basada en Maemo 4.0 cia al comenzar a usar OS2008 es su
baterías, Nokia afirma que en pleno fun- (Chinook), que es una distribución novedoso aspecto visual, mucho más
cionamiento y haciendo uso de la Wi-Fi basada en Debian con un entorno gráfico moderno y agradable. La nueva interfaz
y con la pantalla activa, la batería tiene pensado para pequeños dispositivos con Hildon 2.0 está basada en GTK 2.10, y en
una vida de 4 horas. Si sólo escuchamos pantalla táctil llamado Hildon[4], y que esta ocasión las diferencias entre ambas
música, 10 horas, y en standby 14 días se basa en las librerías GTK. son mínimas, por lo que portar cualquier
(sin apagar). Mi impresión es que han Con respecto a la versión 2007, esta aplicación GTK es sumamente sencillo.
sido conservadores, ya que mi unidad distribución ha evolucionado y mejorado El nuevo navegador, basado en Fire-
aguanta más de 14 días en standby. Ade- de forma evidente. En esta ocasión, y al fox, le ha dado otra vida y lo ha acercado
más, he podido ver dos películas segui- contrario de lo que pasó con el Nokia definitivamente al mundo de la WEB 2.0.

WWW.LINUX- MAGAZINE.ES Número 39 37


EVALUACIÓN • Nokia 810

cíficas y otras cientos portadas y empa-


quetadas, listas para instalar desde la
propia WEB de Maemo.
Como ya era habitual en versiones
anteriores, la distribución se hace acom-
pañar de una serie de programas de utili-
dad ya instalados, como un lector de
PDF, un reloj con alarmas programables,
un gestor de archivos, una aplicación de
backup y los juegos Chess, Blocks, Mah-
jong y Marbles.
También se incluye un programa de
terminal para los amantes de la línea de
comandos, en la que incluso podremos
usar APT para instalar programas, aun-
que OS2008 ya incorpora su propio ges-
tor e instalador gráfico.
Figura 3: Canola Media Player.
Conclusión
Se ha añadido soporte para JavaScript 1.7, ASX, WAX, WVX y WPL para listas de El Nokia N810 no tiene un perfil claro de
AJAX, eventos de tipo mouse-over y DOM reproducción. Gracias a su conexión jack usuario objetivo. No es una PDA, pero
nivel 3. Ahora podemos ver vídeos en para auriculares podremos escuchar puede usarse como tal. No es un ordena-
Youtube o utilizar aplicaciones WEB como música o ver películas sin molestar a dor portátil, pero es el sueño de cual-
la suite ofimática online de Google. Ade- nadie. Además, podremos instalar repro- quier blogger. Sus capacidades de conec-
más, también se ha incluido Skype en la ductores como Mplayer o el estupendo tividad y su impresionante pantalla lo
instalación por defecto, por lo que mejo- Canola[5], que hace del N810 todo un hacen el compañero ideal para estar
ran las capacidades de comunicación. centro multimedia portátil que nos per- siempre online, además de permitirnos
El aspecto multimedia sigue siendo mitirá ver películas, escuchar música (y escuchar música o ver películas en cual-
uno de los fuertes de este sistema. Dis- la radio en la N800) o ver nuestras foto- quier parte gracias a su longeva batería.
pone de soporte de audio para los forma- grafías con una calidad nada habitual en En el aspecto menos lúdico, al ser un sis-
tos AAC, MP3, WMA, AMR, AWB, M4A, un dispositivo portátil, pudiendo visuali- tema GNU/Linux completo, puede ser
MP2, RA (RealAudio) y WAV. Los forma- zar los formatos BMP, GIF, ICO, JPE, una inestimable herramienta para los
tos de vídeo soportados son 3GP, AVI, JPEG, PNG, TIF/TIFF, SVG, Tiny y administradores de sistemas, que podrán
H.263, H.264, MP4, ASF, WMV, MPEG-1, WBMP. A pesar del poco tiempo que conectar remotamente a los servidores
MPEG-4 y RV 7/8/9 (RealVideo). Ade- hace que el OS2008 comenzó su anda- vía SSH, VNC o RDP para realizar peque-
más, soporta los formatos M3U, PLS, dura, ya hay muchas aplicaciones espe- ñas tareas de mantenimiento. Los desa-
rrolladores tienen más fácil que nunca
desarrollar o portar sus aplicaciones gra-
cias al amplio soporte de lenguajes como
Python o Ruby, además de C, entre otros
muchos. Sin duda, un candidato per-
fecto, junto con la Sharp Zaurus o el
Asus eee para conquistar el corazón de
los amantes de los dispositivos móviles
controlados por GNU/Linux. ■

RECURSOS
[1] Nokia N810: http://www.nokia.es/
A4630461
[2] Página web de Maemo: http://
maemo.org/
[3] Página web de Wayfinder: http://
www.wayfinder.com/?sid=21
[4] Entorno de usuario Hildon: http://live.
gnome.org/Hildon
[5] Canola media player: http://
openbossa.indt.org.br/canola2/
Figura 4: El N810 es capaz de traer todos los servicios de Internet a tu bolsillo.

38 Número 39 WWW.LINUX- MAGAZINE.ES


MythTV • PRÁCTICO

Construye tu propio servidor de vídeo

TELECASA

Simplemente conectamos nuestro servi-


dor a la red de casa y lo llevamos a algún
sitio fuera de lo común, por ejemplo al ático
o al trastero, desde donde pueda servir vídeo
y material de TV a un PC central de medios
diminuto que se encuentra en nuestro salón.
El mini PC ejecuta el frontend MythTV, el
cual dispone de una conexión a nuestro ser-
Vamos a mostrarte cómo construir tu propio servidor de vídeo vidor que nos permite buscar nuestros archi-
vos de vídeo o acceder a la guía de progra-
basado en Linux que graba, almacena y distribuye programas
mas electrónicos para decidir cuál debería
de TV. POR TIM SCHÜRMANN grabar nuestro servidor.
Antes de comenzar examinaremos los
requerimientos hardware.

L
as cintass de vídeo pasaron a mejor vida desde el momento en el que los
aficionados a las películas las empezaron a grabar en DVDs o en discos En el Ático
duros. Pero incluso estas recientes tecnologías requieren espacio y distribu- Si tenemos acceso a TV digital, el dispositivo
ciones adecuadas, de manera que un servidor de vídeo hecho por nosotros resulta de recepción sólo necesita grabar el flujo de
una práctica alternativa. Usando el software para centros de medios MythTV, una TV y descargarlo en el disco. Al mantener los
tarjeta de TV y un PC sobrante, podemos construir rápidamente un servidor de requerimientos hardware del servidor de
vídeo que sirva vídeos digitales en casa. vídeo bajos, nos permite que un viejo orde-
nador sea suficiente. Para recibir el programa
Hora de Juguetear de televisión necesitamos una tarjeta TV que
La Figura 1 muestra cómo funciona esta configuración. El sistema está basado en coincida con nuestra conexión. Actualmente
un PC Linux estándar que se convertirá en un grabador digital de vídeo gracias a disponemos de las opciones aérea o de
MythTV. El software usa la tarjeta de TV interna para escanear canales de TV y antena (DVB-T), cable (DVB-C) y satélite
almacenarlos en un disco duro interno. A diferencia de los grabadores de disco (DVB-S).
duro que se venden por ahí, la capacidad del disco duro es casi ilimitada si utiliza- Antes de dirigirnos a la tienda de electró-
mos nuestro propio PC, ya que,si nos quedamos sin espacio podemos añadir un nica más cercana debemos examinar el sitio
disco o sustituir el que tengamos por otro modelo más grande. web sobre TV en Linux [1]. La wiki de DVB

WWW.LINUX- MAGAZINE.ES Número 39 39


PRÁCTICO • MythTV

MythTV especiales, como KnoppMyth [3] o


Una vez que se encuen- Mythbuntu [4].
tre funcionando el
hardware del servidor Doble Personalidad
de vídeo podemos ins- MythTV se compone de dos partes: El fron-
Figura 1: El backend MythTV se ejecuta en el servidor de vídeo en talar el software central tend, que proporciona una interfaz gráfica de
al ático mientras el frontend distribuye el contenido a un PC en el de medios. A pesar de usuario y se ejecuta en nuestro salón, y el
salón. que la instalación backend, que realiza todo el trabajo duro y
requiere algún reside en el servidor. El backend además
ofrece una base de datos de las tarjetas de TV esfuerzo, la lista de pasos es razonable y almacena la información que le pasamos,
con soporte Linux. Para comprobar que cualquier distribución importante incluirá como el tiempo de inicio de grabación, en
nuestra tarjeta funciona realmente es aconse- MythTV o nos permitirá descargarlo de un una base de datos MySQL. Antes de arrancar
jable arrancar el reproductor de medios Kaf- repositorio. MythTV debemos tener la base de datos eje-
feine (o una herramienta equivalente de En OpenSUSE 10.3 necesitaremos habili- cutándose en el trasfondo.
nuestro sistema Linux). Si no conseguimos tar el repositorio Packman en Yast bajo Soft- La manera de arrancar la base de datos
ver una imagen, o si el menú de la versión de ware | Community Repositories. Cambiamos depende de nuestra distribución. En Open-
que disponemos carece de la opción Digital luego a Software management e instalamos SUSE 10.3 nos convertimos en root y ejecuta-
TV, comprobamos la salida dmesg. Muchas la versión 0.20.2 de los paquetes mythtv- mos al comando rcmysql; en Ubuntu, sudo
tarjetas TV nos preguntan por un fichero backend, mythtv-setup y mythtv-frontend. /etc/init.d/mysql restart. Resulta lógico confi-
firmware que necesitaremos para descargar En Ubuntu 7.10 “Gutsy Gibbon” no es nece- gurar MySQL en nuestro servidor automáti-
Internet y copiarlo al directorio correcto (nor- sario añadir un repositorio externo. Para camente para que se inicie cuando arranca-
malmente /lib/firmware). Si necesitamos añadir la versión 0.20.2 de los paquetes eje- mos nuestro ordenador. Si la distribución
ayuda, podemos probar la wiki en cutamos Synaptic o Adept. que poseemos no lo hace por nosotros aún
Linuxtv.org. Si debemos compilar el software, graba- (Ubuntu sí lo hace), podremos usar las
mos el código fuente de MythTV del sitio herramientas del sistema para cambiar las
¡Adelante! web del proyecto [2]. Si creemos que la ins- opciones.
En Europa la transmisión de datos usa el talación es demasiado complicada, debería- Ahora MySQL está ejecutándose feliz-
estándar DVB (Digital Video Broadcast); es mos probar una de las distribuciones Live mente en el trasfondo, aunque no tenemos
decir, los vídeos salen al aire en el mismo for-
mato que usan los DVDs. Esto significa que Compilación
las tarjetas de TV aportarán una gran ancho
Para compilar MythTV necesitaremos $ qmake mythtv.pro
de banda, o flujo de datos continuo, lo que
las siguientes librerías y herramientas: $ make
sobrecarga a la CPU y lo que a su vez exige
g++ y make, Qt (incluyendo paquetes $ sudo make install
que dispongamos de discos capaces de escri-
de desarrollador y herramientas; Open- Si usamos un driver externo para
bir los datos rápidamente. Estados Unidos se
SUSE llama a este paquete qt3-devel, nuestra tarjeta de TV, buscamos el
encuentra actualmente en fase de transición
FreeType2, el codificador de MP3 Lame código fuente del driver para un
del formato NTSC al nuevo estándar ATSC. y la base de datos completa MySQL. fichero frontend.h. A partir de ahora
En cualquier caso, debemos asegurarnos de
Si nuestra tarjeta de TV funciona direc- las cosas comienzan a complicarse y
que nuestro disco pueda con la tasa de trans-
tamente sin necesidad de drivers, nece- necesitamos cambiar directorios (fron-
ferencia.
sitaremos instalar las fuentes del kernel tend.h se guarda en linux/dvb). Deter-
Después de comenzar la grabación del
de Linux; en caso contrario, también minamos la ruta absoluta desde el
vídeo digital, el volumen de datos en nuestro
deberemos desempaquetar el archivo directorio root (/) a nuestro directorio
disco aumentará rápidamente. Es conve-
con los drivers externos. En OpenSUSE de trabajo actual y usamos esta ruta
niente guardar los vídeos en un segundo tendremos que añadir además /usr/lib/ en los comandos previos en lugar de
disco duro que podamos sustituir fácilmente qt3/bin a nuestra variable de entorno /usr/src/linux/include (por ejemplo,
por otro modelo mas grande. Necesitamos $PATH: necesitamos la ruta completa a linux/
bastante espacio libre y un sistema de fiche-
exportPATH=$PATH:/usr/lib/qt3/bin dvb/frontend.h).
ros que acepte la carga sin problemas. Según
Microsoft, FAT32 tirará la toalla a los 4GB, lo Si deseamos, podemos instalar enton- Si se produce un error relacionado con
que también se aplica a las versiones 3 y 4 de ces XMLTV, una herramienta que pro- el fichero dca.h mientras se compila el
porciona una guía de programa electró- programa, necesitaremos instalar la
ReiserFS. Así, el documento MythTV reco-
nico completa (EPG) que recupera los librería libdca (libdts) y marcar las
mienda que elijamos XFS o JFS, aunque un
datos necesarios de Internet. Para librerías del desarrollador (-dev o -
disco ext3 también funcionará.
comenzar a compilar, desempaqueta- devel) [5].
mos el código fuente de MythTV y
Comprueba los Estatutos damos los comandos siguientes:
Tras instalar MythTV, los usuarios de
Locales $ ./configure —dvb
Ubuntu necesitan añadir una línea
para /usr/local/lib a sus ficheros /etc/
Antes de grabar emisiones de TV, com- —dvb-path=
ld.so.conf.
prueba las leyes de tu país. /path=/usr/src/linux/include

40 Número 39 WWW.LINUX- MAGAZINE.ES


MythTV • PRÁCTICO

Figura 2: Menú principal del programa setup. Se despliega los elemen- Figura 3: En este diálogo, la opción “IP address for” es crítica. Si
tos del menú de arriba a abajo. Las teclas Tab y de flechas permiten tienes una entrada de 127.0.0.1, tal y como se muestra aquí, el front-
navegar entre los campos y Esc nos vuelve al menú principal. Si pul- end en tu PC en el salón estará habilitado para poder acceder al back-
samos la barra espaciadora se seleccionan las opciones destacadas. end de la máquina del ático.

una base de datos para MythTV. Para crearla, frontend de MythTV. Bajamos el menú de tend para comunicarse. Si usamos un fire-
escribimos mysql -u root < mc.sql. El fichero configuración desde la parte superior (Figura wall necesitaremos abrir un par de agujeros
mc.sql se encuentra localizado en el subdi- 2) y modificamos nuestras opciones. Pul- en él para emparejar estas opciones.
rectorio database bajo el archivo de código sando Tab y las teclas de flecha navegamos Pulsando Next cambiaremos a un cuadro
fuente de MythTV. entre los campos. Con Esc volveremos al de texto en el que podremos introducir el
Si instalamos la versión que viene en menú principal. Si pulsamos las teclas de fle- directorio donde MythTV guardará nuestras
Ubuntu, un asistente nos ayudará a configu- cha a la izquierda y a la derecha cambiaremos grabaciones. Evidentemente, este directorio
rar la base de datos. En el proceso deberemos los valores en la lista, mientras que la barra estará en el disco duro de nuestra máquina
tomar nota de la contraseña que vemos para espaciadora seleccionará el botón resaltado. servidor. Luego configuramos TV norm,
acceder a la base de datos en el backend. Si Primero comprobamos General para ver si video text norm y las opciones de frecuencia
olvidamos escribirla, podremos encontrarla la dirección IP para IP address for coincide de transmisión de nuestra región.
en el fichero /etc/mythtv/mysql.txt. con nuestra dirección de servidor (Figura 3). Lo siguiente en la lista son las TV cards.
El predeterminado 127.0.0.1 hace referencia Comenzamos configurando un (New capture
Opciones Básicas al cliente mismo, una opción para ejecutar el card). En el diálogo que sigue seleccionamos
Lo que sigue a continuación es arrancar backend en la máquina local. DVB DTV TV Card (v3.x) bajo Card type
mythtv-setup en el servidor de vídeo para pre- Bajo estas opciones existen un par de (Figura 4). MythTV nos mostrará el nombre
parar el backend para el acceso mediante el puertos TCP que usan el backend y el fron- del chipset para la tarjeta en Frontend ID.

Figura 4: Inmediatamente después de configurar las “Cards types” Figura 5: Especifica cómo MythTV recupera información en el
(tipos de tarjeta), el stick DVB_T USB se había conectado a la recolector de listados. Las opciones correctas para la fuente de vídeo
máquina, se detectó. En este caso no fueron necesarias otras le dicen a MythTV que recoja la información del programa electrónico
opciones. desde el flujo de canales.

WWW.LINUX- MAGAZINE.ES Número 39 41


PRÁCTICO • MythTV

Figura 6: Conexión de entrada entre la fuente de vídeo “DVB-T” y la Figura 7: El escaneo de canales me hizo temer ocasionalmente que
tarjeta de TV. MythTV se había colgado.

Para tarjetas DVB-S necesitaremos compro- Comenzamos introduciendo un Name, y nados, pulsamos Next >. El escaneo de
bar las opciones DiSEqC. luego especificamos cómo MythTV obtendrá canales llevará un tiempo y MythTV necesi-
Tras pulsar Finish volveremos a la lista de la información en Listings grabber (Figura 5). tará pararse ocasionalmente y procesar
tarjetas de TV, donde podremos configurar Transmitted guide only (EIT) recoge infor- (Figura 7). Los resultados son una lista
otra distinta si es que tenemos. Esto es útil si mación adicional de los datos que cada completa de canales para la tarjeta TV.
deseamos disponer de la opción de mirar un variante DVB transmite junto con el flujo de Pulsando Finish dos veces y Esc una vol-
canal mientras grabamos otro. Con unas TV. Si hemos instalado XMLTV, podemos veremos al menú principal, donde podre-
pocas excepciones, las tarjetas de TV nos especificar esta aplicación como fuente. Para mos modificar la lista pulsando Channel
darán un canal a la vez, sin que tengamos configurarlo, necesitaremos cambiar a una Editor.
virtualmente ninguna alternativa en este sen- ventana terminal pulsando Alt + Tab. Esto Presionando Esc salimos del programa de
tido. Debemos asegurarnos de usar una Card configura la fuente de datos para la guía de configuración y abrimos dos ventanas de
ID diferente para los dos receptores. Pul- programa electrónico, aunque MythTV no terminal. En la primera, como root, inicia-
sando Esc volvemos al menú principal. sabe aún a qué tarjeta de TV pertenece la mos el backend escribiendo mythbackend.
información. Seleccionando Input connec- En Ubuntu 7.10 no podremos usar el
Guía de Programa tions en el menú principal nos llevará a una comando sudo /etc/init.d/mythbackend res-
En el elemento Video sources especificamos lista de tarjetas de TV para elegir y un mapa tart para esto.
de dónde cogerá MythTV la información para a la nueva entrada en el diálogo en Video En la otra ventana arrancamos el frontend
su guía de programa electrónico. En el menú sources (Figura 6). introduciendo mythfrontend. Ésta será la
principal seleccionamos el elemento Video Seguidamente iniciamos Scan for chan- interfaz que veremos más tarde en el PC de
sources y a continuación (New video source). nels. Manteniendo los valores predetermi- nuestro salón (Figura 8). Para comprobacio-

Figura 8: El menú principal del frontend es el centro de control para el Figura 9: El programa de TV prueba que el backend y el frontend están
backend. Esto muestra también la interfaz que veremos en la pantalla funcionando. La información de canales sólo se muestra durante un
en nuestro salón. par de segundos cuando se enciende el canal.

42 Número 39 WWW.LINUX- MAGAZINE.ES


MythTV • PRÁCTICO

Tanto si optamos flecha a la izquierda y a la derecha cambia-


por una máquina mos los valores, y con las teclas hacia arriba y
normal, como si hacia abajo las opciones. Pulsando Save set-
construimos una tings armamos al servidor para la grabación.
nosotros mismos, Manual recording nos da otra opción: Con-
debemos asegurar- figurar la hora de inicio y parada como en un
nos de que ejecute grabador de vídeo. Recording options nos
Linux y reproduzca lleva hasta una pantalla familiar con más
DVDs sin interrup- opciones.
ciones. La televisión Para evitar tener que arrancar el frontend a
de alta definición mano cada vez en nuestro PC central de
(HDTV) es actual- medios, es aconsejable autoarrancar el pro-
mente el dominio de grama cuando iniciamos la máquina. Luego
las CPUs de alto ren- podemos sustituir el teclado con un control
dimiento. Arrancar remoto. MythTV soporta arranque remoto y
un Live CD de automático, y apagado para la máquina ser-
Figura 10: Los distintos temas permiten a los usuarios cambiar la MythTV para probar vidor. De este modo, el servidor está en mar-
apariencia del frontend. Existen más disponibles en el sitio web de nuestro candidato a cha sólo cuando estamos grabando, lo que
MythTV [2]. central de medios en puede ayudarnos a ahorrar energía. Si le pre-
la tienda es algo que guntas, el backend suprimirá incluso los
nes seleccionamos Watch TV, y deberíamos tiene sentido hacer [4] [5]. anuncios de la grabación.
ver una imagen de TV (Figura 9). También debemos asegurarnos de que
Pulsando las teclas de flecha navegaremos nuestro PC tenga los conectores adecuados Extensiones
por los canales y con Enter cambiaremos de para la televisión. Si tenemos una antigua Numerosas extensiones que se encuentran
canal. Una vez que hayamos completado TV CTR necesitaremos un puerto TV en la disponibles en la página MythTV pueden
este test funcional, abandonamos el frontend tarjeta (uno que soporte Linux, evidente- cambiar el servidor de vídeo a un auténtico
pulsando Esc dos veces y confirmando mente), o un conversor VGA-a-TV externo. servidor de medios. MythTV reproducirá
cuando se nos pregunte. Ahora nuestro servi- Después de instalar nuestro PC con su DVDs y administrará nuestra colección de
dor está funcionando y debemos asegurar- central de medios, deberemos configurar música. La documentación de la extensión
nos de que mythbackend se iniciará automá- de nuevo MythTV siguiendo los mismos MythTV está disponible en el sitio web en el
ticamente en el momento del arranque. Para pasos que ya hicimos con el servidor, pero subdirectorio docs bajo el directorio archivo
el resto de la configuración no necesitaremos sin ejecutar mythyv-setup. En su lugar del código fuente. ■
el frontend en el servidor. arrancamos mythtv-frontend, cambiamos a
Si intentamos acceder a los recursos del Tools | Cofiguration, pulsamos Enter y Cambio de la Dirección IP
backend de MythTV desde el salón necesita- seleccionamos General. Para localhost,
Si cambiamos la dirección IP en el back-
remos un PC tan silencioso como sea posi- introducimos el nombre de host o la direc-
end, necesitaremos modificarla en
ble. Desafortunadamente, una CPU de alto ción IP de nuestro servidor. Para las demás
$HOME/.mythtv/mysql.txt en cualquier
rendimiento necesita una buena cantidad de opciones podemos mantener los valores
máquina con un frontend o un backend.
refrigeración, lo que significa disponer de un predeterminados. Con la contraseña del
A continuación volvemos a arrancar
ventilador para extraer el aire caliente de la backend que mencionamos antes, sustitui-
mythtv-setup en nuestro servidor y
caja. En el mercado se encuentran actual- mos la contraseña. Ahora mantenemos
cambiamos la dirección IP. Una vez lo
mente ordenadores pequeños y buenos idea- pulsado Next hasta que consigamos ir a hayamos hecho se restaurarán las
les para entretenimientos caseros. Finish. comunicaciones.
El frontend intentará contactar con el ser-
Para una configuración más perma-
Asuntos MPEG vidor y, suponiendo que esto funciona, nos
nente, hemos de asegurarnos de que el
volverá de vuelta al submenú. Seleccio-
Antes de que los flujos de datos trans- servidor tiene una dirección IP estática.
nando Appearance podremos modificar la
portados por DVB puedan mostrarse en
apariencia de la interfaz (Figura 10).
pantalla, deben ser decodificados. La
decodificación se lleva a cabo mediante RECURSOS
librerías de las que carecen algunas dis-
Sin Tiempo
[1] TV Linux: http://linuxtv.org
tribuciones, aunque deberíamos poder Schedule a recording nos permite usar el
frontend en nuestro salón para decirle al [2] MythTV: http://mythtv.org
instalar las que faltan desde un reposito-
rio buscando la palabra clave multime- backend del ático que grabe un programa. [3] KnoppMyth: http://mysettoopbox.tv/
dia. Los usuarios de OpenSUSE deben La manera más fácil de hacerlo es con Pro- knoppmyth.html
habilitar el repositorio Packman, como gram guide, que nos da una lista de progra- [4] Mythbuntu: http://www.mythbuntu.
mencioné previamente. Cuando se mas para las dos horas siguientes. Pulsando org
arranca por primera vez, Kaffeine per-
Enter seleccionamos un programa, pudiendo [5] Librería libdca: http://www.videolan.
mite conocer qué librerías faltan y nos
configurar luego los parámetros en el diálogo org/developers/libdca.html
ofrece ayuda para descargarlas.
nuevo que aparece. Pulsando las teclas de

WWW.LINUX- MAGAZINE.ES Número 39 43


DESARROLLO • Perl: Trucos

Juegos matemáticos con script Perl

TRUCO MENTAL
Aleksandr Popov, Fotolia

Un truco que cualquiera puede aprender nos permite averiguar el día de

la semana a partir de la fecha. Vamos a aplicar algo de tecnología Perl

para descubrir hasta qué punto el método es fiable.

POR MICHAEL SCHILLI

H
ace poco, mientras leía el libro (YY + (YY div 4)) mod 7 módulo 7 es 1. Por tanto, el valor para
Mind Performance Hacks [1], el año es 1.
quedé impresionado con el donde YY es el año expresado con dos El valor del mes se toma a partir de
Hack Número 43, que explica cómo dígitos (07 para 2007). El operador div la Tabla 1, que tendremos que memori-
determinar el día de la semana a partir divide sin resto: 7 div 4 es 1, ya que 7 zar usando alguna ayuda mnemotéc-
de una fecha cualquiera. entre 4 da como resultado 1 y el resto, nica (descrita más adelante en la sec-
El método se atribuye a Lewis Carrol 3, se ignora. Se realiza una operación ción “Trucos Mnemotécnicos”). La
[2], autor de Alicia en el País de las módulo 7 sobre la suma resultante: 8 tabla ofrece un valor de mes 0 para
Maravillas. Sencillamente calcula cua- octubre. El valor para el día es simple-
tro valores, uno detrás de otro, para el Tabla 1: Valores de Mes mente su número, por lo que para el 4
año, mes y día, y un cuarto valor como de octubre tenemos un 4.
Valor Mes
factor de ajuste. A continuación suma
0 Enero
los valores, los divide entre 7 y el resto, 3 Febrero Tabla 2: Valores de
sorprendentemente, nos proporciona el 3 Marzo Ajuste para los Años
día de la semana como un número 6 Abril
Año Valor
entre cero (domingo) y seis (sábado). 1 Mayo
1700 4
4 Junio
Día de Ejemplo 6 Julio
1800 2
2 Agosto 1900 0
Como ejemplo, voy a tomar una fecha
5 Septiembre 2000 6
cualquiera, por ejemplo el 4 de octubre
0 Octubre 2100 4
de 2007, como punto de partida. Para
3 Noviembre 2200 2
obtener el valor del año, hacemos lo
5 Diciembre 2300 0
siguiente:

44 Número 39 WWW.LINUX- MAGAZINE.ES


Perl: Trucos • DESARROLLO

Tabla 3: Valores de Día Tabla 4: Ejemplos


Valor Día de la Semana Fecha Valor Año Valor Mes Valor Día Ajuste Día de la Semana
0 Domingo 01.01.1970 3 0 1 0 4 Jueves
1 Lunes 14.07.1995 6 6 14 0 5 Viernes
2 Martes 11.09.2001 1 5 11 6 2 Martes
3 Miércoles 01.02.2004 5 3 1 5 0 Domingo
4 Jueves 01.03.2004 5 3 1 6 1 Lunes
5 Viernes 04.10.2007 1 0 4 6 4 Miércoles
6 Sábado
actual (a través de un periodo de la his- CPAN para la Comparación
El cuarto valor que tenemos que toria que ha contemplado la fiebre del DateTime tiene una función para el día
mantener en nuestra cabeza se toma de oro en California y dos guerras mun- de la semana, wday(), que numera los
la Tabla 2, que proporciona un valor de diales), y siguiendo hasta un mundo días desde el 1 (lunes) hasta el 7
ajuste 6 para los años comprendidos futuro, propio de “Star Trek: The Next (domingo). Mindcal efectúa un módulo
entre 2000 y 2099. Generation” en el siglo 24. 7 para cambiar el 7 de domingo a 0 y
No es necesario memorizar esta La línea 34 del script define la fun- compara los resultados con los valores
tabla, simplemente podemos recordar ción wday_mindcal(), que aguarda el devueltos por wday_mindcal(), que
los valores para 2000 (6) y 1900 (0), año con cuatro dígitos, el mes y el día estarán entre 0 (domingo) y 6
ya que la mayoría de la gente pregun- de una fecha. A continuación el script (sábado).
tará por días de eventos recientes o aplica las reglas explicadas anterior- El script implementa una función de
fechas de nacimiento. Un detalle es mente para calcular los valores para el división sin resto, div, habilitando un
que tendremos que restar 1 para los año/mes/día y el factor de ajuste, y a pragma en la línea 39, use integer. Una
años bisiestos si la fecha que estamos continuación realiza los cálculos nece- vez que configuremos este modo, Perl
buscando está en enero o febrero, sarios para determinar el número del ignorará el punto flotante y trabajará
pero 2007 no es un año bisiesto, por lo día de la semana. con enteros, es decir, que 17/4 da como
que podemos ignorar esto de Los valores del mes se guardan en el resultado simplemente 4.
momento. array @MONTH, desde enero hasta La función leap_year() de la línea 64
Por lo tanto, los cuatro valores son 1 diciembre. Debido a que los arrays determina si el año es bisiesto. Si el
(año), 0 (mes), 4 (día) y 6 (factor de comienzan en el índice 0 en lugar del año es divisible entre 4, es un año
ajuste). Si sumamos estos valores 1, debemos restar uno al mes que esta- bisiesto, a menos que sea divisible
(=11) y realizamos la operación mos buscando para acceder al array entre 100. Por otro lado, si es divisible
módulo 7 al resultado, tenemos un con el índice correcto. entre 400, sí será bisiesto. Por
valor de 4. Los factores de ajuste para los distin- supuesto, DateTime usa la misma
Un vistazo rápido a la Tabla 3 revela tos siglos se guardan en el hash %ADJ. lógica, ya que queremos que el script
que, (tambores aquí por favor), efecti- Las líneas 10 a 12 pueblan el hash asig- emule a alguien que haga estos cálcu-
vamente el 4 de octubre de 2007 fue nando una lista que tiene alternativa- los mentalmente.
jueves. mente los números del siglo y los valo- Las comparaciones se realizan
res de ajuste correspondientes. mediante la función is() que se ha
¡Probando Un Dos Tres! Los valores de referencia se calculan exportado por él módulo Test::More de
La pregunta es si este truco realmente mediante el módulo DateTime de CPAN. La función aguarda tres paráme-
proporciona el día de la semana para CPAN, que cuenta en sentido ascen- tros: el valor actual proporcionado por
cualquier fecha. El script del Listado 1 dente desde el 1.1.1700 hasta el el genio matemático del script mindcal,
[3] itera a través de cada día a partir 31.12.2399 y proporciona el día, mes y el valor de referencia de DateTime, y
del 1.1.1700 (día.mes.año) hasta el día año para cada iteración. un comentario consistente en un objeto
El bucle infinito que comienza en la DateTime pasado a cadena, y por tanto
línea 20 no es realmente infinito, ya legible.
que la línea 30 ejecuta la salida del El script pasa no_plan a la instruc-
bucle si el año de la fecha actual es ción Test::More use para especificar que
mayor que 2399. Dentro del bucle, el el número de tests a ejecutar es indefi-
método add() del objeto DateTime nido.
suma un día a la fecha actual y envía al La Figura 1 muestra la salida de
programa a la siguiente iteración. mindcal. Dando por supuesto que

Figura 1: Test::More muestra los resultados


de los tests individuales. Figura 2: Test::Harness recopila los resultados.

WWW.LINUX- MAGAZINE.ES Número 39 45


DESARROLLO • Perl: Trucos

nadie está interesado en estudiar las quejarse en STDERR si tenemos más de como 3.14 (fácil por pi) pero con un 6
250.000 líneas del resultado generado 100.000 casos de prueba en nuestros al comienzo, debido a que tenemos dos
en pantalla, el módulo Test::Harness tests. 3s. Seguimos con el 625, que comienza
recopila los resultados proporcionados La línea de comandos mostrada en la por 6 y es 252, el área de un cuadrado
por el juego de tests. La línea con el Figura 2 envía estos mensajes a un (bonito cambio desde el círculo (pi).
comando agujero negro mediante el manejador Terminamos con el 035, dos más que el
perl -MTest::Harness U de señales _WARN_. Después de todo, primer grupo 033”.
-e’runtests(“mindcal”)’ Lewis Carrol tenía razón: los 255.699 Visualizamos los grupos de tres, lo
tests se ejecutaron sin error. que me facilita saltar al comienzo de la
ejecuta el script mindcal y monitoriza segunda mitad del grupo de años, con
qué valores devueltos por el test están Trucos Mnemotécnicos el número 6 asignado a julio.
ok y cuales están not ok. Una ayudita para nuestra memoria nos
facilitará recordar los valores del mes. La Práctica hacia la
Resultados de la Prueba Los números desde enero a diciembre Perfección
Al final del test el usuario recibe un son 033614625035 si los colocamos Al comienzo, los cálculos pueden
resumen completo, como el mostrado todos juntos. Yo prefiero dividir este resultar un poquito lentos, especial-
en la Figura 2. La línea de comandos de monstruoso número en grupos de tres, mente si tratamos de averiguar días de
la Figura 2 es ligeramente diferente de 033-614-625-035, y si a continuación la última parte del siglo pasado.
la señalada anteriormente. Test::Har- hacemos uso de la mnemotecnia: Pensemos en 1995, por ejemplo. 95
ness tiene el desagradable hábito de “Comenzamos con 033 y vamos al 614 dividido entre 4 es 23, ignorando frac-
ciones. 95 más 23 es 118, y 118 módulo
Listado 1: mindcal 7 es 6. Si nos cuesta hacer estos cálcu-
01 #!/usr/bin/perl 32 my($year, $month, $day) =
los rápidamente en nuestra cabeza,
02
deberíamos limitarnos a aceptar fechas
@_;
de un año concreto o del año en curso.
03 use strict; 33
En adelante podríamos calcular el valor
04 use warnings; 34 use integer;
para ese año y sólo recordar éste. Por
05 use Test::More qw(no_plan); 35
ejemplo, 1 para 2007.
06 use DateTime; 36 my $year2 = $year % 100;
07 37 my $cent = $year / 100; Más Ejemplos
08 my @MONTH = qw(0 3 3 6 1 4 6 2 38 my $y = ($year2 +
La Tabla 4 nos proporcionó un par de
5 0 3 5); ($year2 / 4)) % 7;
ejemplos prácticos. Recordemos que
09 my %ADJ = qw(1700 4 1800 2 39
2004 es un año bisiesto, por lo que ten-
1900 0 2000 6 40 my $m = dremos que registrar uno para fechas
10 2100 4 2200 2 $MONTH[$month-1]; de enero o febrero, pero no para los
2300 0); 41 my $d = $day; restantes meses.
11 42
12 my $dt = DateTime->new(
43 my $adj = $ADJ{$cent * ¡Qué siga el Espectáculo!
13 year => 1700,
100}; Una vez que hemos aprendido el truco,
14 month => 1,
44 podemos asombrar a nuestra audiencia
15 day => 1,
45 $adj— if leap_year($year) con nuestros prodigios mentales.
16 );
and Podremos comenzar con un pequeño
17
46 $month <= 2; grupo de amigos y luego pasar a fiestas
18 while(1) {
47 ¡o incluso a teatros llenos hasta la ban-
19 my $calc = wday_mindcal(
48 return( ($y+$m+$d+$adj) % dera! ■
20 $dt->year,
7 );
$dt->month, $dt->day);
21
49 } RECURSOS
50
22 is($calc, $dt->wday() % 7, 1] Hale-Evans, Ron. “Mind Performance
51 ##############################
”$dt”); Hacks” O’Reilly, 2006, http://www.
52 sub leap_year {
23 oreilly.com/catalog/mindperfhks/
24 $dt->add(days => 1); 53 ##############################
[2] Algoritmo de Lewis Carroll para
25 54 my($year) = @_;
encontrar el día de la semana a partir
26 last if $dt->year() > 2399; 55 de una fecha cualquiera, http://www.
27 } 56 return 0 if $year % 4; cs.usyd.edu.au/~kev/pp/TUTORIALS/
28 57 return 1 if $year % 100; 1b/carroll.html
29 ############################## 58 return 0 if $year % 400; [3] Listados de este artículo: http://www.
30 sub wday_mindcal { 59 return 1; linux-magazine.es/Magazine/
31 ############################## 60 } Downloads/39

46 Número 39 WWW.LINUX- MAGAZINE.ES


BigTable • DESARROLLO

Cuando las bases de datos se quedan cortas

BIGTABLE
Internet está cambiando la manera de entender la informática, y Google es su mayor impulsor. En este

número veremos qué se cuece dentro de los gigantes de la informática. POR JOSÉ MARÍA RUÍZ

S
iempre se han escuchado rumores creados y usados. Las grandes empresas (sí, Amazon EC2 y Amazon S3 son real-
sobre instalaciones informáticas de Internet ya ofertan servicios que serían mente baratas). Ver referencia [1].
descomunales de empresas como inimaginables sin estos sistemas. El tér- No es sorprendente, por tanto, que los
Google, Yahoo!, Hotmail, Amazon o mino que se ha acuñado, Cloud Compu- mejores clientes de los sistemas Cloud de
Microsoft. Se hablaba de sistemas infor- ting (computación en nube), está empe- Microsoft, Google o Amazon sean gran-
máticos (muchos de ellos basados en zando a sonar con gran fuerza como el des farmacéuticas y bancos.
Linux y en Software Libre) que podían paradigma de desarrollo y funciona-
rondar perfectamente los 50.000 servido- miento con el que conviviremos durante Cambio de Paradigma
res. Lo increíble es que en casos como el la próxima década. Google, Amazon, Yahoo, Microsoft, Face-
de Google el número probablemente se Por ejemplo, existe un proyecto libre book, Hotmail, todas estas empresas ofre-
acerque a ¡¡ 500.000 servidores!! llamado Hadoop que trata de implemen- cen servicios a través de Internet y nece-
¿Para qué tantos servidores? Y lo más tar procesos distribuidos empleando sitan hacerlo a una cantidad enorme de
importante ¿cómo demonios consiguen ordenadores comunes. Está diseñado clientes. Los sistemas tradicionales de
sacar partido a semejantes infraestructu- usando los conceptos de los sistemas servidores se quedan cortos, y de hecho
ras? MapReduce y GFS de Google. no son recomendables.
El santo grial de la arquitectura de siste- Como ahora es posible ejecutar Hadoop El primer problema es la fiabilidad.
mas informáticos ha sido siempre conse- sobre el sistema EC2 (Elastic Compute Hasta ahora hemos considerado a los
guir que al introducir nuevos recursos (dis- Cloud) de Amazon empleando el sistema ordenadores como máquinas perfectas en
cos, memoria, procesadores, o servidores de almacenamiento S3 (Simple Storage las que se ejecutaba software imperfecto.
completos) aumente proporcionalmente la Service), también de Amazon, el perió- Pero a día de hoy la fiabilidad ha tomado
potencia del sistema. No sólo eso, sino dico New York Times ha contratado 100 otra dimensión. Ahora mismo las empre-
que además el sistema sea tolerante a instancias de Amazon EC2 en las que ha sas de Internet suelen necesitar miles de
fallos en cascada, pudiendo recuperarse de instalado Hadoop y ha creado un sistema equipos trabajando al unísono, y con tan-
forma autónoma de un desastre. que le permite procesar 4 Terabytes de tos, el fallo de uno de ellos en cualquier
Y lo interesante es que al parecer esta- imágenes TIFF almacenadas en Amazon momento está prácticamente garanti-
mos viviendo una época en la que estos S3 y generar 1 millón de PDFs a partir de zado. Da igual lo fiables que sean, siem-
sistemas al fin están comenzando a ser ellas en 24 horas. ¡Y por sólo 240 dólares! pre fallará alguno.

WWW.LINUX- MAGAZINE.ES Número 39 47


DESARROLLO • BigTable

secundarios que ejecuten la escritura con


el número de serie. El objetivo es que en
el peor de los casos la escritura se realice
en el primario y en algunos de los secun-
darios.
Para no saturar la red, uno de los obje-
tivos de todo este sistema, los datos se
Figura 1: Esquema de GFS. envían a los Chunkservers de forma
lineal, es decir, se envían al primero, que
El segundo problema es el ancho de juntos no te permite explotar su potencia. conforme los recibe los envía al siguiente,
banda. Un ordenador puede tener un pro- Crearon su propia versión modificada de como si fuese una cuerda que va pasando
cesador muy potente, pero al final los Linux sobre la que diseñaron un sistema por varios aros.
datos que pasan por él deben salir de una de ficheros llamado Google File System GFS además es capaz de asignar más
memoria y puede que de un disco duro. (GFS). El objetivo de GFS era poder alma- recursos a aquellos ficheros que más se
Los caminos que los datos siguen hasta el cenar información sobre un sistema de emplean, de forma que cuanto más
procesador son muchísimo más lentos ficheros distribuido de forma segura y importante es un fichero, más copias de
que éste. Es imposible sacar más ancho que soportase una gran carga de trabajo. seguridad se harán de sus trozos, lo que
de banda de un solo servidor cuando sus GFS es un sistema distribuido que no protege mejor esa información y además,
buses ya están saturados. guarda todos los datos de un fichero en al haber más copias disponibles, acelera
El tercer problema es el consumo eléc- un solo disco duro ni en un solo ordena- el acceso.
trico. Si tu principal activo son los miles dor, sino que emplea toda una red de GFS no está integrado en el sistema
de ordenadores que posees, entonces tu ordenadores para hacerlo. GFS divide los operativo, sino que es accesible a través
principal gasto es la electricidad. Los datos en trozos, y hace al menos 3 copias de librerías, de forma que puede ser
equipos domésticos consumen menos de cada trozo. Cada copia irá a un orde- empleado desde distintos sistemas opera-
que los servidores más potentes. Google, nador diferente dentro de la basta red de tivos.
por ejemplo, compra equipos cuyas pla- Google.
cas base han sido específicamente dise- Se emplean dos tipos de servidores, los Bigtable
ñadas para él entre otras cosas para elimi- Master y los Chunkservers. Los primeros Tener un sistema de ficheros masiva-
nar componentes inútiles. Incluso ha almacenan la situación física de los tro- mente distribuido, fiable y potente está
patentado su propia unidad de alimenta- zos, “chunks”, que componen los fiche- muy bien, pero lo que realmente necesi-
ción de bajo consumo. ros, así como la jerarquía de ficheros y tan las aplicaciones es una base de datos,
Estos tres problemas llevan a la directorios, lo que llamamos los metada- y Bigtable es esa base de datos.
siguiente conclusión: necesitamos tos. Para no saturar los Masters, los clien- Google decidió crear Bigtable porque
muchos equipos, poco potentes e inter- tes que acceden a ellos cachean, almace- los sistemas de bases de datos tradicio-
cambiables, compuestos por piezas de nan temporalmente los datos relativos a nales no le permitían crear sistemas lo
ordenadores domésticos baratas y fáciles qué Chunckservers contactar para un suficientemente grandes. Las bases de
de encontrar, y que consuman poco. determinado fichero, ver Figura 1. datos relacionales, como pueden ser
¿Cómo podemos hacer que un sistema Los Chunkservers almacenan los trozos MySQL, PostgreSQL, Firebird u Oracle se
con estas características, una auténtica en sí. Los ficheros en GFS son un poco diseñaron pensando que se ejecutarían
pesadilla para los ingenieros hardware, especiales. Normalmente son ficheros en una solo servidor con mucha poten-
pueda dar los servicios que se demandan muy grandes, más de 100MB, y hay unos cia. Jamás se pensó en la posibilidad de
a día de hoy? cuantos millones de ellos. No se pueden que estuviesen distribuidas en miles de
Sólo existe una solución: hacer que el sobrescribir, sólo es posible añadir servidores.
software sea el que reine, y desterrar el (append) datos al final del fichero. La Google creó Bigtable para que fuese,
hardware como solución. operación append es atómica, por lo que sobre todo, una base de datos en la que
no es necesario poseer un sistema de blo- se almacenaría una cantidad de informa-
Google File System: La queos muy sofisticado. Si un fichero está ción enorme, del orden de Petabytes. Para
Nube en el Horizonte realizando un append, el resto debe espe- ello, cada tabla está dividida en “tablets”
La arquitectura de nube es diferente. rar. Los ficheros serán leídos completa- que pueden llegar a ocupar 200 Megaby-
Consiste en una gran cantidad de equi- mente o por partes. Existen Chunkservers tes. Si superasen ese tamaño serían auto-
pos con características más parecidas a primarios y secundarios que almacenan máticamente divididas y comprimidas
las de un “Personal Computer”, pero que las copias de los chunks del primario. para ser enviadas a más máquinas
sólo son parte de un sistema que los Cuando se escribe en un fichero, el usando un sistema de compresión propie-
engloba. Ninguno de ellos es esencial, cliente solicita la escritura al Chunkserver tario de Google.
son indistinguibles, como células en un primario, manda los datos a todas las Bigtable posee muchas peculiaridades.
organismo. réplicas y éstas los almacenan a la orden Para comenzar, aunque se parece mucho
Google fue de los primeros en hacer del primario. El primario asigna a los a una base de datos relacional, rompe
uso de una infraestructura así. Pero el datos a escribir unos números de serie y con algunas de sus premisas. Por ejem-
simple hecho de poner un montón de PCs realiza la escritura. Entonces solicita a los plo, las tablas se dividen en conjuntos de

48 Número 39 WWW.LINUX- MAGAZINE.ES


BigTable • DESARROLLO

columnas y éstos en columnas. Es posible datos en distintos


añadir columnas a una tabla en cualquier servidores usando
momento y no es posible borrar filas, sólo chunks, y volvemos
podemos reemplazarlas por unas nuevas a tener servidores
que ocultan las anteriores. Los datos se de metadatos y ser-
localizan empleando tres llaves: la fila, la vidores de chunks.
columna y un timestamp (la fecha y la Al igual que en GFS,
hora). Así, acceder a filas “borradas” con- los chunks se repli-
siste en hacer referencias a ellas con un can en distintas
timestamp de la fecha anterior al máquinas.
borrado.
Cada celda almacena una cadena de Hypertable
texto sin tipo, por consideraciones de ren- El proyecto Hyper-
dimiento se suelen almacenar los datos table, ver Referencia
de forma binaria, es decir, como volcados [3], surgió como un
de la memoria que los contenían. Como desarrollo dentro de
crear columnas es tan sencillo, la la empresa Zvents,
columna en sí es un nuevo almacén. pero a día de hoy es
Por desgracia Bigtable es software pro- software libre.
pietario de Google, y no tenemos posibili- Hypertable des-
dad de emplearlo ni hacer pruebas con él. cansa sobre Hadoop
Existen varias alternativas libres en y está programado Figura 2: Ejemplo de tabla Hypertable.
desarrollo para poder hacer uso de esta en C++.
tecnología. La principal es la combina- En lugar del lenguaje SQL disponemos values (‘2008-05-01 23:59:59’,U
ción de Hadoop e Hypertable. de una versión especial llamada HQL. “www.linuxmagazine.es”,U
HQL no dispone de todas las sentencias “refer-url”, ”www.google.com”);
Hadoop que posee SQL y además introduce nue-
Hadoop, ver Referencia [2], surgió como vas. La creación de tablas tiene un poco de
una necesidad del proyecto libre Nutch Para comenzar, las filas en Hypertable truco, tanto la fila ROW como TIMES-
de Doug Cutting. Nutch es un proyecto no se comportan de la misma manera que TAMP son implícitas, por lo que no las
que implementa un buscador web libre. en SQL. En SQL, normalmente, dispone- creamos. Hemos creado una tabla con
Cutting leyó el artículo publicado por mos una fila que se suele denominar id, tres columnas, pero al contrario que con
Google donde se explicaba cómo fun- que es de tipo numérico y que empleamos SQL, no indicamos el tipo de las mis-
ciona su sistema MapReduce así como para realizar enlaces entre tablas. En HQL mas. Después hemos insertado en la
GFS. Sorprendido por las técnicas emple- no existe ese tipo de fila, entre otras razo- tabla un solo dato ¿Uno solo? Sí, los dos
adas, y viendo que Nutch necesitaba algo nes porque no existe el tipo numérico. primeros valores que damos son el
parecido, se puso manos a la obra y creó Las columnas están agrupadas por TIMESTAMP y el ROW, después indica-
Hadoop. familias. Una columna cualquiera será mos un nombre de columna y por
Hadoop se compone de dos sistemas, el accesible mediante el nombre último el dato a insertar, en este caso
propio Hadoop, que realiza las tareas de “familia:nombre_columna”. En la Figura “www.google.com”.
MapReduce, y HDFS, que realiza las [2] podemos ver varias columnas que Como dijimos antes, en Hypertable o
tareas de GFS. pertenecen a la familia cliente:. BigTable se emplean tres valores para
MapReduce es el sistema que Google Como en Bigtable, todos los datos indicar una celda, por lo que para insertar
creó para poder procesar cantidades enor- almacenados son cadenas. En cambio un datos necesitaremos esos tres valores
mes de información usando un enfoque existen siempre dos filas implícitas en de nuevo. Vamos a borrar la fila insertada:
totalmente distribuido. Para ello, la con- toda tabla Hypertable: ROW y TIMES-
sulta a los datos se divide en dos fases. TAMP, ver Figura [2]. hypertable> delete * fromU
En la fase Map se crea una función que La primera sería la llave de la tabla, y Paginas where ROW =U
asigna a cada dato algún valor especial. por tanto debe ser única. Puede ser una “www.linux-magazine.es ”;
En la fase Reduce se recogen listas con url, un número o lo que queramos, siem- delete: row=U
los datos y los valores asignados por la pre que se cumpla esta restricción. ‘www.linux-magazine.es’U
función Map y se filtran usando una TIMESTAMP se genera automáticamente family=0 ts=0
nueva función, para dejar sólo aquéllos cada vez que realicemos una inserción. hypertable> select * fromU
que cumplan cierta restricción. Tanto Veamos cómo podemos trabajar con ellas: Paginas where ROW =U
Map como Reduce pueden ejecutarse en “www.linux-magazine.es”;
máquinas diferentes, y por tanto pode- hypertable> create tableU hypertable>
mos hacer uso de una red de servidores. Paginas (fecha, ”refer-url”,U
Para ello se emplea el sistema de fiche- “http-code”); Todo funciona como estamos acostum-
ros HDFS, que como GFS, almacena los hypertable> insert into PaginasU brados a que funcione, la diferencia apa-

WWW.LINUX- MAGAZINE.ES Número 39 49


DESARROLLO • BigTable

rece cuando ejecutamos el siguiente 23:59:59’; yecto libre bastante moderno, pensemos
comando: delete: row=U que Hadoop está aún en la versión
‘www.linux-magazine.es’ family=U ¡0.16!
hypertable> select * fromU 0 ts=2146031999000000001 Por desgracia, para los programadores
Paginas where ROW =U hypertable> select * fromU Python como yo, Hypertable aún no
“www.linux-magazine.es”U Paginas where ROW =U posee enlaces para lenguajes diferentes a
DISPLAY_TIMESTAMPS; “www.linux-magazine.es”; C++, aunque es un proyecto en estudio
2008-05-01 23:59:59.000000000U hypertable> y puede que en unos meses sea posible
www.linux-magazine.org U emplear Python o Perl.
refer-url www.google.com Si nos fijamos de nuevo en la Figura 2
veremos que aparecen varias filas para el HBase
¿Pero no habíamos borrado ya esa fila de mismo ROW, y que en cada una de ellas El proyecto HBase es parte de Hadoop y
la tabla? No, habíamos borrado toda refe- hay alguna columna cambiada. Hyperta- busca implementar Bigtable en Java. A
rencia de la fila en la tabla, pero las filas ble sólo almacena las columnas con día de hoy es usable. Implementa las
anteriores, con TIMESTAMP anteriores datos, mientras que el resto se calcula en mismas operaciones que Hypertable, y
siguen en la tabla. Si queremos eliminar- base al último valor asignado. Así, el es programable desde Jython. Veamos
las habrá que especificar el TIMESTAMP contenido de la última columna en la un ejemplo (ver Listado 1).
que tienen: Figura 2 sería: (“linux-magazine”, Este ejemplo es realmente simple: cre-
“2008-03-18 12:07”, “José Ruiz”, “jose- amos una tabla, y una vez creada intro-
hypertable> delete * fromU ruiz”, “jose.ruiz@gmail.com”) ducimos en ella una fila para después
Paginas where ROW =U Al contrario que en SQL, por el recuperarla y borrar la tabla. El proceso
“www.linux-magazine.es”U momento hay un montón de limitacio- no es complicado (uno de los objetivos
TIMESTAMP ’2008-05-01U nes en HQL. Al fin y al cabo es un pro- de todos estos sistemas es la simplici-
dad).
Listado 1: Bigtable.py Imaginemos por un momento todo lo
que ocurre en este proceso. Creamos una
01 import java.lang 19
tabla sobre Hbase que trabaja sobre
02 admin.deleteTable(tablename_te
HDFS, y por tanto estará almacenando
03 from org.apache.hadoop.hbase xt)
los datos de forma distribuida, guardando
import HBaseConfiguration, 20 admin.createTable(desc)
varias copias en distintos Chunkservers.
HBaseAdmin, HTableDescriptor, 21
Y todo ello con unas poca líneas de
HColumnDescriptor, HTable, 22 tablas = admin.listTables()
código.
HConstants 23 tabla = HTable(conf,
04 nombre_tabla_text)
Conclusión
05 from org.apache.hadoop.io 24
El mundo de la computación en nube
import Text 25 # Insertamos una fila
avanza a pasos agigantados, pero el soft-
06 26 fila = Text(“fila_x”)
ware libre le sigue los pasos apoyado por
07 conf = HBaseConfiguration() 27 lock_id =
empresas como Yahoo! Hadoop ha conse-
08 table.startUpdate(fila)
guido una gran relevancia estando aún en
09 nombre_tabla = ”test” 28 table.put(lock_id,
su versión 0.16 y ha demostrado ser
10 nombre_tabla_text = Text(“contenido:”), ”¡Hola
capaz de rendir en sistemas con miles de
Text(nombre_tabla) mundo cruel!”)
servidores.
11 29 table.commit(lock_id)
El software libre no puede quedarse
12 desc = 30
atrás en esta batalla, porque es ahora
HTableDescriptor(nombre_tabla_ 31 # Nos traemos los datos recien
cuando se está definiendo el futuro de la
text) introducidos
informática. Si con Linux fue posible
13 32 data = table.get(row,
soñar con conquistar el escritorio, espere-
desc.addFamily(HColumnDescript Text(“content:”))
mos que proyectos como Hadoop nos
or(“contenido:”)) 33 data_str =
permitan soñar con no acabar en manos
14 java.lang.String(data, ”UTF8”)
de dos o tres empresas de cuya tecnología
desc.addFamily(HColumnDescript 34 print ”The fetched row
no podremos disponer. ■
or(“enlace:”)) contains the value ’%s’” %
15 admin = HBaseAdmin(conf) (data_str)
16 35 RECURSOS
17 # Borramos la tabla si ya 36 # Borramos la tabla con la que [1] http://open.nytimes.com/2007/11/01/
existe trabajamos self-service-prorated-super-computin
18 if 37 g-fun/
admin.tableExists(tablename_te admin.deleteTable(desc.getName [2] http://hadoop.apache.org/
xt): ()) [3] http://www.hypertable.org

50 Número 39 WWW.LINUX- MAGAZINE.ES


La Columna de Charly • ADMINISTRACIÓN

El Día a Día del Administrador de Sistemas

LA CORRIENTE
¡Biiip y se apagó! Las grandes pantallas y los rápidos microprocesadores eliminan aparentemente los benefi-

cios que aportan los avances en la tecnología de las baterías. PowerTOP ayuda a los glotones del consumo

eléctrico a mantener sus portátiles en funcionamiento sin tener que enchufarlos a la pared.

POR CHARLY KÜHNAST

L
inux presentó el denominado “tic- este número, menor será la
kless kernel” en la versión 2.6.21 potencia consumida por la
(o 2.6.23 para las máquinas de 64 máquina.
bits); es decir, se elimina del kernel el A la derecha pueden obser-
tradicional temporizador fijo de 250Hz. varse los estados P; este valor
Teóricamente, de esta forma se debería muestra los diferentes niveles
incrementar el tiempo de duración de la de consumo de la CPU que
batería de los portátiles, ya que el micro- regula sus velocidades de reloj
procesador puede permanecer más para ajustarse a la carga actual.
tiempo en el modo ahorro de energía. La línea de abajo es importante,
En la realidad, el kernel no es el único ya que indica la frecuencia con
factor: los controladores, los servicios y la que el sistema despierta a la Figura 1: PowerTOP no sólo monitoriza el consumo eléc-
las aplicaciones también pueden estro- CPU por segundo, es decir, trico del kernel y de las aplicaciones, sino que también
pear la estrategia de ahorro de energía, desde un estado C. Intel ofrece a los usuarios consejos útiles.
haciendo que la nueva contribución del informa de que se puede redu-
kernel sea virtualmente inútil. cir este número a menos de 20 con muy larlas por mí mismo para asegurarme de
poco esfuerzo. que dejen dormir tranquila a la CPU. Las
Conozca a PowerTOP Una línea más abajo PowerTOP enseña modificaciones para Firefox, Gaim, Evo-
Damos la bienvenida a un nuevo jugador el medidor de potencia y predice el lution y otras aplicaciones más se
que entra desde Silicon Valley, y cuya tiempo que durará aproximadamente la encuentran disponibles en [3].
contribución a la comunidad del código batería. Inferiormente muestra un ran- A pesar de todo no hay que esperar
abierto merece numerosos elogios: Intel king de los módulos más activos, y por milagros. Incluso si sigue estos consejos
no sólo hace que los usuarios de Linux último proporciona a los usuarios prácti- y aplica los parches, es improbable que
sean más felices con los controladores de cos consejos para mejorar el ahorro de la vida de la batería se dispare. Además,
las tarjetas gráficas, sino también con energía. Las configuraciones más efecti- los parches software no pueden lidiar
herramientas como PowerTOP [1]. vas están relacionadas normalmente con con glotones del consumo eléctrico tales
PowerTOP sólo funciona con distribucio- el kernel. Por ejemplo, PowerTOP reco- como la pantalla del portátil. Por otro
nes recientes. En otro caso habrá que mienda habilitar CONFIG_USB_SUS- lado, una hora de tiempo de batería extra
configurar y compilar un kernel nuevo. PEND, un modo de ahorro de energía del podría ser la diferencia entre la frusta-
puerto USB que permite ahorrar del ción de perder un vuelo o el diverti-
Salida orden de un vatio. En Internet hay dispo- miento de un hotspot del aeropuerto.
La salida de PowerTOP de la Figura 1 nible más trucos y consejos [2]. ¡Feliz cacería de glotones! ■
muestra los estados C en la esquina
superior izquierda. Cuanto mayor sea Glotones del Consumo RECURSOS
Eléctrico
[1] PowerTOP: http://www.lesswatts.org/
SYSADMIN Trastear con el kernel es fácil, pero ¿qué
projects/powertop/
hay de las aplicaciones? X.org lidera la
Nmap Scripting . . . . . . . . . . . . . . .52 [2] Consejos y Trucos: http://www.
lista de los grandes consumidores en la
Pruebas de intrusión automatizadas. lesswatts.org/tips/
mayoría de los sistemas, aunque en reali-
Zarafa . . . . . . . . . . . . . . . . . . . . . . . .57
dad es una víctima inocente, ya que, son [3] Parches con control de ahorro de
Una alternativa a Microsoft Exchange.
aplicaciones como Firefox y Gaim las energía para las aplicaciones están-
Puppet . . . . . . . . . . . . . . . . . . . . . . .64 dar: http://www.lesswatts.org/
que disparan el servidor X. Para mante-
Controla multiples servidores. projects/powertop/known.php
nerlas a raya decidí parchearlas y compi-

WWW.LINUX-MAGAZINE.ES Número 39 51
ADMINISTRACIÓN • NMap y NSE

Pruebas de intrusión con el nuevo motor para scripting de Nmap.

SCAN TIME

Nmap está trabajando en un nuevo motor de scripting para investigar

automáticamente las posibles vulnerabilidades que aparecen en los

escaneos de seguridad. Mostramos cómo proteger nuestra red con

Nmap y NSE. POR ERIC AMBERG

N
map es la herramienta que mente el proyecto Nmap ha decidido nios, búsquedas de Whois, u otras
buscábamos para las pruebas que es el momento de introducir un técnicas de descubrimiento de redes.
de intrusión [1]. Los expertos motor de scripting para que los usua- Para la detección de puertas traseras,
la usan para buscar agujeros de segu- rios puedan automatizar las funcio- NSE comprueba cada cadena obtenida
ridad y escanear servicios de red nes de Nmap. Fyodor, el líder del pro- de las versiones con una serie de
abiertos. Pero, ¿qué ocurre cuando yecto Nmap, pasó el desarrollo del expresiones regulares, una opción útil
encontramos un problema? Muchos motor al habilidoso Diman Todorov. para quienes se dedican a las pruebas
investigadores prefieren continuar y El resultado ha sido NSE (Nmap Scrip- de intrusión y quieren comprobar vul-
hacer más pruebas. Por ejemplo, si ting Engine) [2], parte integral ya de nerabilidades mediante la ejecución
Nmap encuentra un servicio http, Nmap desde su versión 4.21. de exploits. De cualquier modo, los
¿por qué no hacerle peticiones hasta NSE amplía la funcionalidad del desarrolladores apuntan que Nmap
averiguar su versión? núcleo del escáner, proporcionando no persigue competir con el entorno
Es más, muchos administradores información detallada con servicios de trabajo Metasploit [3].
escriben sus propios scripts que ana- como NFS, SMB o RPC. También pode- NSE ofrece unos medios sencillos
lizan los archivos de salida de Nmap, mos usar NSE para buscar sistemas para la elaboración de soluciones
un proceso lento y tedioso. Reciente- activos mediante consultas de domi- automatizadas con Nmap. La opción

52 Número 39 WWW.LINUX-MAGAZINE.ES
NMap y NSE • ADMINISTRACIÓN

de NSE funciona bien en redes peque-


ñas y medianas. Otras herramientas,
como Nessus [4], GFI LANguard [5] o
ISS Internet Scanner [6] podrían ren-
dir más en escaneos a gran escala.
Puede descargarse el código fuente de
NSE desde el servidor del proyecto
[1], o puede estar incluido como
binario en el repositorio de nuestra
distribución.
NSE está hecho en lenguaje inter-
pretado Lua [7]. Lua fue diseñado
para trabajar con software escrito en
otros lenguajes, como C o C++. Lua,
basado en ANSI C, conserva su flexi-
bilidad, hasta tal punto que muchas
de sus funciones están disponibles en
forma de librerías. Así es más fácil
ampliar la funcionalidad, vinculando
los módulos necesarios. Incluso jue-
gos comerciales (entre los que se
encuentra World of Warcraft) hacen
uso de Lua.
El núcleo de NSE lo conforma un
intérprete de Lua (ver Figura 1).
Cuando Nmap detecta una máquina o
un puerto llama al intérprete de Lua
con el script correspondiente para
aunar las posibilidades del intérprete
y las de las funciones de la librería de
NSE. La librería de NSE proporciona
funcionalidades adicionales, como Figura 1: Una combinación de scripts NSE, librerías de Nmap y nuevas llamadas Lua amplían el
herramientas para la evaluación y alcance habitual de la clásica herramienta Nmap.
manipulación de direcciones IP o la
manipulación de URLs, mediante el se planea publicar una extensión que Por ejemplo, si el escáner descubre el
uso de expresiones regulares de Perl. permitirá al usuario enviar paquetes puerto 80 abierto y el script prefabri-
Lua hace un uso intensivo de personalizados. cado showHTMLTitle.nse se encuentra
estructuras de datos en tablas. Las Nmap comienza comprobando si se disponible, entonces hace la llamada
tablas contienen pares atributo-valor, pueden alcanzar determinados puer- al script. El script realiza peticiones al
aunque también pueden contener tos en una máquina dada. De tratarse servidor web y muestra la cabecera
subtablas. Por ejemplo, NSE usa las de un escaneo TCP, la herramienta (ver Figura 2). Hay varios scripts pre-
tablas host y port para acceder a los comprueba el estado del puerto, que fabricados en /usr/share/nmap/
resultados del escaneo de Nmap. Por podría ser abierto, cerrado o filtrado. scripts.
encima de los scripts reside una tabla Cuando Nmap detecta un puerto,
de registro que todos pueden leer y suponiendo que NSE ha sido habili- Categorías
escribir. Este diseño permite el inter- tado previamente mediante la opción NSE organiza los scripts en categorías
cambio de datos entre los distintos -sC, el subsistema trata de localizar el para un control granular mayor. Las
scripts. script correspondiente para la categorías de script definidas son safe
prueba. o intrusive, malware, version, disco-
NSE en Acción Las reglas de scripting determinan very y vulnerability. Los scripts clasifi-
Nmap y NSE usan la API de Nmap si Nmap va a ejecutar o no un script cados como safe por NSE es muy poco
para el intercambio de información, NSE. Estas reglas especifican las con- probable que causen problemas en el
incluyendo el nombre de host del diciones bajo las cuales se inicia el objetivo del escaneo. Los de la catego-
objetivo, el sistema operativo, la script. ría intrusive es poco probable que cau-
dirección IP, el número de puerto o el Podemos elaborar nuestros propios sen daño, pero intentarán hacer uso de
estado del puerto. La API permite scripts o usar los scripts prefabrica- contraseñas predeterminadas para
también al usuario llamar a las fun- dos incluíidos con NSE. Estos scripts acceder al sistema, por lo que es
ciones de socket de Nmap para las prefabricados se encargan de tareas mucho más probable que generen
comunicaciones de red. En un futuro asociadas tradicionalmente a Nmap. registros de seguridad en el objetivo.

WWW.LINUX-MAGAZINE.ES Número 39 53
ADMINISTRACIÓN • NMap y NSE

Nuestros Propios Scripts


NSE
Nos ayudaremos de un ejemplo para
comprender la estructura de un script
NSE. La mayoría de los scripts prefa-
bricados son simples, normalmente
menores de 100 líneas incluyendo los
comentarios. El script ripeQuery.nse
del Listado 1 nos da una idea sobre
cómo funciona NSE. Hace peticiones
sobre una entrada del sistema de
registro de red RIPE [8] a una direc-
ción.
Un script NSE consta de tres com-
ponentes: la cabecera define el nom-
bre del script en la salida de Nmap, la
Figura 2: Con el nuevo modo script (opción -sC), Nmap hace llamadas a scripts externos. categoría y el nivel de ejecución. La
Nmap ha detectado que el puerto 80 está abierto, por lo que la herramienta comienza a inda- regla especifica las condiciones bajo
gar sobre la cabecera del sitio y presenta los resultados. La imagen muestra cómo NSE las cuales se ejecuta el script. La
detecta los nombres de NetBIOS de un objetivo. acción llama a las funciones que ver-
daderamente realizan las tareas. Los
Los scripts de las categorías mal- puede actualizar el archivo introdu- autores pueden implementar las tres
ware y vulnerability buscan malware ciendo --script-updatedb después de secciones en Lua.
y vulnerabilidades conocidas en el añadir nuevos scripts. Si ponemos la Cada script NSE tiene una cabecera
objetivo. La categoría version juega opción -sC, sólo se ejecutan los scripts que comprende cuatro detalles des-
un papel especial: los scripts de esta de las categorías safe e intrusive. criptivos. El campo id contiene el
categoría, habilitados mediante la
opción -sV, amplían la capacidad de Listado 1: ripeQuery.nse
detección de versiones de Nmap. Su
01 require ”ipOps” 22
salida no es diferente de la salida
02 23 while true do
estándar de Nmap; no se hace men-
03 id = ”RIPE query” 24 local status, lines =
ción del script en el reporte gene-
04 description = ”Conecta a la socket:receive_lines(1)
rado por el escaneo. La categoría
base de datos RIPE, 25
discovery incluye scripts diseñados
05 extrae y muestra la entrada de 26 if not status then
para indagar más a fondo en el obje-
la IP.” 27 break
tivo, interrogando a los distintos ser-
06 author = ”Diman Torodov 28 else
vicios (incluidos SNMP o LDAP).
<diman.todorov@gmail.com>” 29 result = result .. lines
El argumento --script especifica las
07 license = ”Ver COPYING para la 30 end
categorías, los directorios y los
licencia” 31 end
scripts individuales para que NSE
08 32 socket:close()
los integre e inicie. Puede tratarse de
09 categories = {“discovery”} 33
un listado de elementos separados
10 34 local value = string.
por comas. Nmap comienza bus-
11 hostrule = function(host, match(result,
cando una categoría por el nombre
port) ”role:(.-)\n”)
dado; si la búsqueda falla busca un
12 return not 35
directorio del mismo nombre y
ipOps.isPrivate(host.ip) 36 if (value == ”see
añade cualquier script que contenga
13 end http://www.iana.org.”) then
acabado en .nse.
14 37 value = nil
Si esta búsqueda también falla,
15 action = function(host, port) 38 end
busca entonces un script individual
16 local socket = 39
que se llame así. Por ejemplo, la
nmap.new_socket() 40 if (value == nil) then
opción --script discovery,malware de
17 local status, line 41 value = ””
la línea de comandos añade las cate-
18 local result = ”” 42 end
gorías discovery y malware.
19 43
Hay un archivo de base de datos
20 44 return ”La IP pertenece a: ”
llamado script.db, en el subdirec-
socket:connect(“whois.ripe.net .. value
torio scripts, que traza un mapa
”, 43) 45 end
de los scripts a las categorías
21 socket:send(host.ip .. ”\n”)
individuales. El administrador

54 Número 39 WWW.LINUX-MAGAZINE.ES
NMap y NSE • ADMINISTRACIÓN

nombre del script y se usa en la salida


de Nmap; el campo description con- Tabla 1: Atributos de las Tablas Host y Port
tiene una breve descripción; y author Atributo Tipo Significado
contiene el nombre del autor. El intér- Atributos de la Tabla Host
prete no procesa el campo license. host.os String Contiene una cadena con el nombre del sistema ope-
Un script sólo se iniciará bajo deter- rativo detectado si se inició Nmap con la opción -O
minadas condiciones. Las reglas port host.ip String Contiene la dirección IP del host de destino actual
y host controlan su comportamiento. host.name String Contiene los nombres de host devueltos en una bús-
queda inversa
El ejemplo del Listado 1 define una
host.mac_addr String Contiene la dirección MAC del objetivo actual
función que espera que se le pasen
Atributos de la Tabla Port
las tablas host y port de Lua de las
port.number Integer El puerto que está siendo escaneado
líneas 11 a 13. Las tablas contienen
port.protocol String O tcp o udp
valores detectados por Nmap en el port.service String Contiene un nombre de servicio si Nmap ha sido
transcurso del escaneo. Por ejemplo, capaz de encontrarlo durante la detección de versión
host.ip proporciona direcciones IP, port.state String El estado del puerto puede ser abierto o abierto | fil
mientras que port.number el puerto trado; el script no se ejecuta con puertos cerrados y
del escaneo actual. puertos filtrados
La función hostrule llama a la fun-
ción de la librería ipOpts.isPrivate a .. añade \n a la dirección IP del obje- pre deben comprobar los valores
fin de comprobar si el objetivo de la tivo escaneado de host.ip. Dentro de devueltos.
IP actual es una dirección privada tal un bucle infinito que comienza en la
y como se definen en el RFC 1918 (un línea 23, La API de Nmap
test RIPE no tiene sentido con una La API de Nmap permite que los
dirección privada). NSE ejecuta local status, lines = U scripts NSE se comuniquen con
entonces el cuerpo del script, la fun- socket:receive_lines(1) Nmap. Las tablas host y port de Lua
ción de la acción que comienza en la proporcionan acceso a valores críticos
línea 15. lee la respuesta de la base de datos como la dirección IP, el puerto, el ser-
Si no se está interesado en investigar RIPE hasta que la entrada de datos vicio o el estado del puerto. La tabla
la máquina, sino simplemente algún acaba. La variable booleana status host devuelve los valores mostrados
servicio en particular, lo más lógico es indica si la conexión está aún en la Tabla 1, suponiendo que Nmap
usar una línea como la que sigue: enviando datos o no. los haya recolectado; de lo contrario,
Si no es así, el break de la línea 27 devuelve una cadena vacía. Esto es
portrule = shortport. U termina el bucle. La respuesta anali- aplicable a los detalles de los puertos
port_or_service(21, ”ftp”) zada está disponible en lines. result activos, que se almacenan en la tabla
va acumulando la entrada. Después port de Lua junto con los atributos del
Para hacerlo habilitamos la extensión de que se han leído todas las líneas, protocolo, el servicio y el estado.
shortport de Lua, llamando a require socket:close() cierra el socket. El ejemplo muestra cómo llamar a
shortport. Las siguientes líneas fueron diseña- estos valores e integrarlos en un
La función espera de nuevo que se das para detectar qué contiene la script NSE. Para comunicarse con
le pasen el host y el puerto como entrada de la dirección IP enviada. El otros sistemas, los scripts NSE necesi-
argumentos. En la línea 16, el script servidor de Whois devuelve un tan una interfaz. Una API hace posi-
crea primero un nuevo socket TCP/IP número elevado de líneas de res- ble el uso de la librería Nsock (que
que define el estado de las variables puesta; nuestro ejemplo simplemente Nmap usa también internamente).
locales, la línea y el resultado. La busca las líneas que comienzan por
línea 20, role:. Para hacerlo, el script llama a la Programación del Socket
función string.match() de Lua. Las comunicaciones siempre han
socket:connect U La línea usado el método del socket. El
(“whois.ripe.net”, 43) siguiente código crea un nuevo socket
local value = string.match U hacia el host en el puerto especifi-
le dice al script que conecte a la base (result, ”role:(.-)\n”) cado.
de datos RIPE, que responde a las El protocolo es opcional, pudiendo
peticiones al puerto TCP 43. El servi- busca en la variable result las líneas ser tcp, udp o ssl:
cio de Whois espera una dirección IP coincidentes.
en formato de puntos entrecomilla- La línea comienza por role:; aunque sock = nmap.new_socket()
dos. El código socket:send(host.ip .. la función sólo devuelve el resto de la sock:connect(Host, Port U
“\n”) envía la dirección IP. La línea línea entre paréntesis. Para simplifi- [, Protocol])
de petición debe acabar con un carác- car el ejemplo hemos editado un
ter de nueva línea. Para que esto script distribuido con Nmap. Para que El código sock:send(request) ya puede
suceda, el operador de concatenación sean más robustos, los scripts siem- enviar una petición debidamente ela-

WWW.LINUX-MAGAZINE.ES Número 39 55
ADMINISTRACIÓN • NMap y NSE

borada al host de destino. La semán-


tica de la línea,
Tabla 2: Extensiones Lua para NSE
Extensión Función
status, value = U bit Soporta operaciones de bit; por ejemplo, bit.lshift(a, b) realiza un desplaza
miento a la izquierda de b bits sobre a.
sock:receive_lines(lines)
pcre Se refiere a Expresiones Regulares Perl-Compatible y soporta su uso. Permite
a los scripts extraer cadenas de búsqueda de las respuestas de los servicios.
que lee datos desde el socket, no es
ipOps Soporta operaciones relacionadas con direcciones IP. Tal y como se muestra
muy intuitiva. en el script de ejemplo, ipOps.isPrivate(address) comprueba si la dirección IP
Si las líneas solicitadas, o un especificada es una dirección IP según la definición del RFC 1918.
número menor de líneas terminadas shortport Proporciona pruebas estándar para reglas de puertos. Muchos scripts usan
con fin-de-línea, llegan antes del fin esta opción y ejecutan shortport.portnumber(port) para comprobar el puerto.
de la espera, se almacenan en la listop Lista el procesamiento como lo hacen otros lenguajes como Lisp o Haskell.
Los desarrolladores consideran a la extensión como experimental.
variable value. De todas maneras, si
strbuf Soporta ciertas operaciones con cadenas; por ejemplo, strbuf.eqbuf(string1,
el búfer de red contiene más líneas
string2) compara dos cadenas.
que se han anticipado, la API también url Amplia la capacidad de manipulación de URLs de Lua, añadiendo funciones
envía más líneas, tal y como se des- que crean o analizan listas de parámetros.
cribe en la documentación [2].
Si todo ha ido bien, status contiene
true. Finalmente, sock:close() cierra el cerrar un socket en caso de error. El librería de extensiones NSE son perfec-
socket. La API de Nmap ofrece mucha manejador se crea con la línea: tos para ampliar la funcionalidad
más funcionalidad, aunque los casos básica del lenguaje de script Lua sub-
más comunes se explican en los ejem- try = nmap.new_try() yacente. La API de Nmap proporciona
plos proporcionados. al programador la capacidad de refe-
La anterior línea espera que se le pase renciar las tablas host y port y de anali-
Manejo de Excepciones un argumento a la función zar los contenidos. La API añade ade-
La API de Nmap implementa también err_catch(), que cierra el socket. más numerosas opciones de comunica-
un mecanismo para el manejo de Cuando una función devuelve un ción para scripts.
excepciones, la captura de errores y la error, el intérprete cancela la función
cancelación de scripts que pudieran sin comentario alguno. La función, Conclusiones
proporcionar resultados equívocos pasada como argumento, especifica Los scripts NSE están conquistando
debido a condiciones erróneas. las acciones a llevar a cabo en ese rápidamente los antiguos dominios de
El manejo de excepciones es algo caso. herramientas de seguridad como Nes-
importante para la elaboración de NSE es una extensión potente y fle- sus. No hay una versión estable de NSE
scripts robustos. Con servicios esca- xible que los administradores pueden en el momento de escribir estas líneas.
neados a través de la red se suelen usar para diseñar escaneos personali- Nmap 4.21 incluía las versiones alfa
obtener respuestas inesperadas. Si zados con Nmap. Los módulos de la y el 4.22 era parte del “Google’s Sum-
echamos un vistazo al script mer of Code”.
finger.nse mostrado en el Listado 2, Listado 2: finger.nse La versión estable Nmap 4.5 incluye
podemos ver el funcionamiento del (Fragmento) NSE, que definitivamente tiene el
manejo de errores. potencial para convertirse en parte
01 local err_catch = function()
Cuando ocurre un error en el sis- indispensable de Nmap. ■
02 socket:close()
tema objetivo o la conexión expira, el
03 end
manejador de excepciones cierra el RECURSOS
04
socket correctamente.
05 local try = [1] Nmap: http://www.insecure.org/
El script comienza con la llamada a nmap/
nmap.new_try(err_catch())
una función cuyo único propósito es
06 [2] Documentación de NSE: http://www.
07 socket:set_timeout(5000) insecure.org/nmap/nse/
Extensiones Lua 08 try(socket:connect(host.ip, [3] Sitio web de Metasploit Project: http://
Mientras que Nmap API controla las 09 port.number, www.metasploit.org/
comunicaciones entre Nmap y los 10 port.protocol)) [4] Proyecto Nessus: http://www.nessus.
scripts NSE, las extensiones Lua aña- 11 try(socket:send(“\n\r”)) org
den funcionalidad significativa a NSE. 12 [5] GFI LANguard: http://www.gfi.com/
Los módulos se localizan en el subdi- 13 status, results = languard
rectorio nselib. Un script NSE une los socket:receive_lines(100) [6] ISS Internet Scanner: http://www.iss.
módulos a través de require Modula-
14 socket:close() net/products/Internet_Scanner/
name. La Tabla 2 lista las extensiones
15 if not(status) then product_main_page.html
disponibles. No importa si los múdulos
16 return results [7] Lua: http://www.lua.org/
se unen antes o después del encabeza-
miento. 17 end
[8] RIPE: http://www.ripe.net/

56 Número 39 WWW.LINUX-MAGAZINE.ES
Zafara • ADMINISTRACIÓN

Servidor de Software Colaborativo de Linux da servicio a Clientes Outlook

INTERCAMBIO

www.onlinebc werbng.de, Fotolia


Zarafa reemplaza a Microsoft Exchange en un servidor Linux y colabora con las alternativas libres como Kolab, el
coste de Zarafa es comparablemente más
con Outlook gracias a su soporte nativo de MAPI. favorable que el coste de Microsoft
Exchange, y como el servidor se ejecuta
POR SEBASTIAN KUMMER Y MANFRED KUTAS en Linux, pueden evitarse muchos de los
problemas asociados con los sistemas

L
a mayoría de los servidores Linux muchos casos, cada función tiene que ser Windows. Contacte con la empresa para
funcionan en entornos heterogé- configurada de forma separada en el lado más información sobre los precios y las
neos, sirviendo a clientes Windows del cliente, lo que lleva a una sobrecarga opciones de soporte.
que utilizan MS Outlook para las funcio- de administración. Además, esta clase de
nes de correo y agenda. Incluso si se pre- integración sólo cubre una pequeña por- MAPI4Linux
senta un nuevo sistema de software cola- ción de la funcionalidad de Outlook. MAPI4Linux es la contrapartida Linux
borativo, el uso tan extendido de los clien- El servidor de software colaborativo compatible de Exchange. Zarafa engloba
tes Windows hará que Outlook sea una Zarafa [1] toma una solución diferente. En la librería MAPI4Linux, que controla el
alternativa inevitable. Desafortunada- vez de convertir las peticiones de Outlook, acceso al almacen MAPI, como núcleo, y
mente, Outlook utiliza el Interfaz de Pro- Zarafa ofrece una exhaustiva interfaz una colección de herramientas periféricas.
gramación de Aplicaciones de Mensajería compatible con Microsoft MAPI para Se utiliza una base de datos MySQL para
(MAPI) nativo de Windows, y el cliente entornos Linux. Ya no es necesario reali- el almacenamiento, lo que hace que las
Outlook está diseñado para dialogar con zar complejas conversiones de las peticio- copias de seguridad y la replicación de los
un servidor Windows Exchange. Esta pre- nes, ya que el servidor Zarafa “habla” datos sea mucho más sencilla.
ferencia por Exchange hace que la integra- MAPI, específicamente MAPI4Linux. MAPI4Linux controla las operaciones
ción con los sistemas de software colabo- Zarafa es un servidor de software cola- de lectura y escritura. No se recomienda el
rativos de Linux sea difícil. borativo comercial que se ejecuta en acceso directo a la base de datos, ya que
Las aplicaciones de software colabora- Linux. Como se comunica directamente podría corromper la caché y afectar al
tivo como Scalix, Kolab y Open Exchange con los clientes Windows utilizando una tiempo de respuesta.
utilizan un conector de Outlook para inte- variante de MAPI, proporciona compatibi-
grarse con los clientes Windows que utili- lidad de alto nivel con Outlook con una Interfaces Abiertos
zan Outlook. Estas herramientas convier- configuración mínima de los clientes. Zarafa se basa en interfaces abiertos y en
ten las consultas MAPI de Outlook a otros Véase el cuadro titulado “Compra de componentes de servidor probados y vali-
protocolos parcialmente propietarios. Zarafa” para un resumen de los precios dados; utiliza Postfix, por ejemplo, para
Aparte de esto, el procesamiento se basa ofrecidos por su sitio web. Aunque estos enviar el correo electrónico y Apache
en servicios tales como WebDav. En precios son realmente caros comparados como servidor web, haciendo que sea más

WWW.LINUX- MAGAZINE.ES Número 39 57


ADMINISTRACIÓN • Zafara

fácil la integración en entornos que ya Conexión Outlook


implementen estos servicios. El proveedor MAPI de Zarafa pro-
La Figura 1 muestra los principales porciona a los clientes Windows
componentes del servidor Zarafa. El que sólo hablan el lenguaje nativo
núcleo MAPI está rodeado por diversos del servidor Microsoft Exchange
conectores. La figura muestra la ruta que acceso al almacén MAPI. La
un correo electrónico toma desde su Figura 2 muestra el menú de
recepción física por el Agente de Transfe- configuración.
rencia de Correo (MTA) hasta el almacén Los mensajes SOAP manejan las
de Zarafa. El MTA puede complementarse comunicaciones entre el provee-
con diversas herramientas, como filtros dor MAPI y la cuenta de Outlook
antispam o antivirus. Cuando un mensaje en el servidor. Un proxy o un ser-
de correo entrante esté listo para entre- vidor web Apache anuncian de
garse al destinatario, el MTA lo pasa al forma transparente este servicio
Agente de Entrega de Zarafa. Este proceso en las Intranets o en Internet. Para
está controlado por la variable permitir que esto suceda hay que
mailbox_command en tener las siguientes líneas en la
/etc/postfix/main.cf: configuración de Apache:

mailbox_command = U <IfModule mod_proxy.c>


/usr/bin/zarafa-dagent ”$USER” ProxyPass /zarafa U
http://127.0.0.1:236/
Para Qmail hace falta el fichero ~/.qmail: ProxyPassReverse U
/zarafa U
| /usr/bin/zarafa-dagent U http://127.0.0.1:236/ Figura 1: Resumen de los principales componentes de
-q user_name <Location /zarafa> servidor Zafara.
Order Allow,Deny
La opción -q le indica al Agente de Allow from all despacharse por medio de la puerta de
Entrega que utilice los códigos de error de </Location> enlace, parecería en un principio un des-
Qmail en su respuesta. El agente pasa </IfModule> perdicio de recursos; sin embargo, los
entonces el correo a MAPI4Linux, que lo beneficios en términos de compatibilidad
convierte en un objeto de almacena- Con esto se soportan los accesos de con cualquier componente valen la pena.
miento MAPI para almacenarlo en la base Outlook sin acceder a una VPN o sin tener Las aplicaciones de agenda alternativas
de datos. que reenviar puertos en el cortafuegos. como Mozilla Sunbird están soportadas
Las conexiones entre el servidor y el gracias a la interfaz iCalendar de Zarafa. El
Compra de Zarafa cliente son simples conexiones web. Utili- interfaz iCal emula los perfiles de servidor
La página web de Zarafa lista los
zando las herramientas propias de Apache para permitir que Sunbird funcione con
siguientes precios: pueden habilitarse tanto las conexiones datos en vivo desde el almacén de Zarafa.
estándar como las conexiones SSL. Ade- Los cambios o las citas nuevas se refle-
• Precio base para hasta 5 usuarios:
más, los administradores pueden restrin- jan inmediatamente en el almacén MAPI,
300fl (439$ US)
gir el acceso a subredes específicas. La donde estarán disponibles en tiempo real
• Cada 5 usuarios adicionales: 150fl
Figura 3 presenta la correspondencia entre para todos los usuarios por medio de
(219$ US)
Outlook y MAPI4Linux. todos los interfaces soportados.
• Más de 100 usuarios: 5% de des-
cuento Se Permiten Aplicaciones
• Más de 250 usuarios: 10% de des- Alternativas
cuento Se pueden continuar utilizando clientes
• Más de 1000 usuarios: 15% de des- POP o IMAP como Mozilla Thunderbird.
cuento Una puerta de enlace POP/IMAP permite
Los municipios se pueden beneficiar el acceso a las carpetas de correo, que son
de un 25% de descuento. Una versión fáciles de configurar, ya que lo único que
educativa para colegios puede benefi- hay que hacer es especificar los servicios y
ciarse de un 25% de descuento del pre- los puertos a habilitar en /etc/zarafa/gate-
cio base, con grandes descuentos dis-
way.cfg. La puerta de enlace convierte los
ponibles para grandes volúmenes.
correos desde el formato MAPI al formato
Para las actualizaciones y mejoras des- normal de texto plano antes de que llegue
pués del primer año habrá que pagar al cliente. La doble conversión del correo,
una tasa anual del 20% del precio que
en el formato MAPI para el correo entrante Figura 2: Menú de configuración del provee-
aparece en el listado.
y de nuevo al formato original antes de dor MAPI.

58 Número 39 WWW.LINUX- MAGAZINE.ES


Zafara • ADMINISTRACIÓN

Grandes Sistemas Notificaciones conexiones paralelas del servidor web.


Una configuración multiservidor es útil Una de las características más importante Apache restringe este valor a 100 por
para las grandes instalaciones con miles de MAPI es su mecanismo de notificación, defecto. Como las peticiones sólo generan
de usuarios. Aunque no se pueda insta- que los servidores pueden utilizar para unos cuantos bytes de tráfico de red, no
lar el núcleo de Zarafa en múltiples siste- mandar mensajes a los clientes. Los cam- son ningún problema.
mas, la arquitectura basada en servicios bios se hacen visibles en el sistema tras un
permite la siguiente configuración: corto intervalo de tiempo menor a un Gestión de Usuarios
• Servidor 1: Base de Datos MySQL segundo y no requieren de la interacción La gestión interna de los usuarios es ade-
• Servidor 2: El núcleo de Zarafa del usuario. cuada para entornos pequeños. Actual-
• Servidor 3: MTA + antispam/antivirus A menudo, las topologías de red no per- mente esto implica una herramienta de
• Servidor 4: Servidor Web miten que los servidores lleguen a los línea de comandos con soporte para
La configuración del núcleo del servidor clientes directamente cuando se envían OpenLDAP y Active Directory. El adminis-
Zarafa define la conexión entre la base mensajes de esta clase. Para solucionar este trador simplemente añade los atributos
de datos y el núcleo de Zarafa, que es la problema el cliente abre una petición http requeridos a un fichero de configuración.
única entidad con la que tiene que dialo- larga (máximo 60 segundos), a la espera de Como los cambios en el servicio de directo-
gar. El resto de los componentes pueden resultados relevantes para el cliente. Una rio no disparan ningún evento para actuali-
utilizar el puerto 236 para acceder al vez que este intervalo haya expirado, la zar los datos, Zarafa autentica a cada usua-
núcleo del servidor. conexión termina; la petición comienza de rio en el momento de la conexión.
El servidor MTA entrega el correo nuevo entonces. Cada cliente Outlook esta- Los cambios tienen efecto inmediato en
entrante al Agente de Entrega, que se blece cuatro o cinco conexiones de esta el almacén. Por ejemplo, Zarafa creará los
ejecuta en el servidor MTA y utiliza un clase para evitar las interrupciones. buzones de correo para los usuarios nue-
certificado SSL para autenticarse con el Si se poseen muchos clientes, tendrá vos. Los administradores pueden utilizar
servidor donde está el núcleo de Zarafa. sentido incrementar el número máximo de políticas y scripts para indicar al sistema
El servidor web sigue una solución simi- cómo reaccionar ante otros tipos
lar para comunicarse con el núcleo de de cambios (como cuando se
Zarafa y de este modo vincular los com- modifican los grupos a nivel del
ponentes web con el almacen MAPI. servicio de directorio).
Si el volumen de spam es particular-
mente alto, será lógico distribuir el soft- Copias de Seguridad
ware MTA y el de antispam o antivirus La utilidad de copias de seguridad
entre varios servidores. de Zarafa realiza lo que su nombre
Este escenario también muestra cómo indica. La utilidad crea dos fiche-
ejecutar el servidor web en la DMZ, ros: Uno que contiene los datos, y
mientras que la base de datos y el núcleo otro que contiene un índice. Crear
de Zarafa residen en la red interna una imagen consistente del alma-
segura. cén completo sin bloquear la base
de datos no es posible, lo que
Importación de Datos implica que los elementos que
Zarafa ofrece varias opciones para cambien o que se creen durante el
importar conjuntos de datos al almacén. proceso de la copia de seguridad
Utilizando la herramienta de código no se incluirán dentro de ésta.
abierto imapsync [2] se pueden migrar La versión actual 5.20 de Zarafa
los datos desde otros servidores IMAP. presenta opciones de copias de
Para ello, los usuarios administradores seguridad avanzadas. Las nuevas
deberían crear un usuario en Zarafa y características incluyen el soporte
luego, utilizando la puerta de enlace de copias de seguridad “brick-
IMAP de Zarafa, realizar el proceso de level”. Los almacenes individua-
sincronización. les, incluyendo el almacén
Si se tienen que migrar múltiples usua- público, pueden copiarse ahora
rios, los scripts son la respuesta. Para los completamente o incremental-
sistemas Outlook existentes, ya sean mente. La copia de seguridad
sueltos o con un servidor Microsoft “brick-level” permite en estos
Exchange, Zarafa ofrece su propia herra- momentos que los administrado-
mienta de migración (véase la Figura 4) res restauren el almacen com-
para importar los ficheros .pst. Esta pleto, los mensajes individuales o
herramienta debe ejecutarse en un sis- los directorios.
tema Windows; posee un modo desaten- Como no almacena los metada-
dido y puede manejar cerca de 7GB de Figura 3: Correspondencia entre Outlook y tos, este método no es útil a la
datos por hora. MAPI4Linux. hora de realizar una restauración

WWW.LINUX- MAGAZINE.ES Número 39 59


ADMINISTRACIÓN • Zafara

para implementar funcionalidades MAPI de IMAP a teléfonos móviles de forma


desde PHP. Zarafa también ofrece una gratuita [6].
descripción detallada de la interfaz en
línea [4]; puede encontrarse información La Tecnología PHP-MAPI
general sobre MAPI en [5]. Las empresas utilizan diversas aplicacio-
Aunque Zarafa almacena los datos en nes de Intranet que se benefician de la
una base de datos MySQL, se recomienda posibilidad de mostrar y modificar citas o
el uso de PHP-MAPI para acceder desde contactos del sistema de software colabo-
las aplicaciones web al almacen MAPI. La rativo. PHP-MAPI ofrece la capacidad de
Figura 5 muestra la integración con un integrar la funcionalidad MAPI con las
servidor web PHP-MAPI. aplicaciones web existentes.
Figura 4: La herramienta de migración de Básicamente hay dos opciones para
Zafara puede manejar 2GB de datos por Z-Push acceder al servidor Zarafa desde una apli-
hora. Antes, la única forma que había para sin- cación PHP: por medio de un socket UNIX,
cronizar los datos con una PDA era
tras un desastre. Si se realiza una restaura- conectarla a un PC y utilizar una herra- $zarafaserver = U
ción completa desde la copia de seguridad mienta como SyncML. En Abril de 2007, “file:///var/run/zarafa”
“brick-level”, se utilizarán todas las confi- Zarafa presentó Z-Push, una implemen-
guraciones de vista, de reglas, de usuarios tación de código abierto del protocolo de o por medio de la interfaz SOAP,
y de IDs almacenados. Los administrado- Microsoft ActiveSync.
res deben crear también los perfiles de Las PDAs con Windows Mobile 2003, $zarafaserver = U
usuario MAPI desde cero en Windows. 2005 y 6.0 pueden sincronizar sus con- “http://url_zum_zarafaserverU
En línea [3] hay disponible más infor- tactos locales, correos electrónicos, citas :236/zarafa”.
mación sobre otras características, como y diversas tareas con el servidor en línea
las herramientas de sincronización para GPRS o UMTS. Para facilitar la conexión con el servidor
PDAs (por medio de SyncML), la gestión Z-Push de Zarafa está basada en por medio de un socket se puede hacer
de privilegios vía ACLs o la interfaz web WBXML (WAP Binary XML), como que el usuario que ejecute la aplicación
móvil para los móviles con soporte HTML. Microsoft AirSync, que es el original; sea un administrador de Zarafa, con lo
Afortunadamente Zarafa no sólo consiste en una clase ligera de XML para que se puede tener acceso al almacén sin
soporta las distribuciones Linux comercia- anchos de banda escasos. tener que introducir la contraseña. Con
les, como RedHat y Novell SLES, sino tam- Los usuarios no tienen que instalar ello se consigue que cualquier programa
bién Debian y Ubuntu. Además, Zarafa 5 ningún software adicional en la PDA, ya PHP tenga acceso administrativo al servi-
está ahora disponible para los sistemas de que Z-Push se encarga de la sincroniza- dor, aunque este método no se reco-
64 bits. ción de forma nativa. Antes, los servido- mienda por razones de seguridad.
res integraban Zarafa y MailDirs. Gracias
MAPI vía PHP a su soporte completo de la descripción Ejemplo de una Aplicación
Muchas aplicaciones en línea están pro- de la interfaz, Z-Push puede comuni- PHP-MAPI
gramadas en PHP, un lenguaje de progra- carse con cualquier sistema de software El Listado 1 es un ejemplo de una agenda
mación que es una elección obvia debido colaborativo. Además, Z-Push soporta que muestra cómo funciona la integración
a su rápido potencial de desarrollo y su ahora IMAP, proporcionando servicios con MAPI:
extendido uso.
Las características de Zarafa programa-
das en PHP incluyen la interfaz web,
Webaccess. Webaccess se asemeja al
cliente Outlook y se comunica directa-
mente con la capa MAPI4Linux por medio
del módulo PHP-MAPI. PHP-MAPI posee
opciones útiles para añadir funcionalida-
des de software colaborativo a soluciones
de código abierto en áreas tales como
CRM (Gestión de Relaciones con los Clien-
tes), ERP (Planificación de Recursos
Empresariales), sistemas de gestión de
documentos o wikis.
El módulo es un fichero .so precompi-
lado. El fichero de configuración de PHP,
php.ini, carga el módulo de la siguiente
manera: extensión= mapi.so. Los desarro-
lladores pueden acceder a este módulo Figura 5: Integración del servidor web PHP-MAPI.

60 Número 39 WWW.LINUX- MAGAZINE.ES


Zafara • ADMINISTRACIÓN

Listado 1: Ejemplo de Aplicación PHP-MAPI


01 <?
02 // Fichero de definici̳n propio
03 require “mapidefs.php”;
04
05 // Se conecta al almacen y obtiene las propiedades de la agenda
06 $store = mapi_openmsgstore_zarafa(“john”, “”, “file:///var/run/zarafa”);
07
08 $receivefolder = mapi_msgstore_getreceivefolder($store[0]);
09 $rcvFProps = mapi_getprops($receivefolder, Array(PR_IPM_APPOINTMENT_ENTRYID));
10
11 // Obtiene entryid de la agenda en formato binario
12 $entryID = $rcvFProps[PR_IPM_APPOINTMENT_ENTRYID];
13
14 // Obtiene la carpeta de la agenda
15 $folder = mapi_msgstore_openentry($store[0], $entryID);
16
17 // Obtiene el contenido de la carpeta de la agenda
18 $contents = mapi_folder_getcontentstable($folder);
19
20 // guids para la agenda
21 $guid = makeguid(“{00062002- 0000- 0000- C000- 000000000046}”);
22 $guid2 = makeguid(“{00062008-0000- 0000-C000-000000000046}”);
23
24 // Obtiene los ids de las propiedades
25 $namedproperties = mapi_getIdsFromNames($store[0], array(0x820D, 0x820E, 0x8223, 026 0x8216, 0x8205,
0x8214, 0x8215, 0x8506, 0x8217, 0x8235, 0x8236, 0x8208, 0x8233),
26 array($guid, $guid, $guid, $guid, $guid, $guid, $guid, $guid2, $guid, $guid, $guid, $guid, $guid));
27
28 // Genera los ids mapi y los almacena en el array
29 $props[0] = mapi_prop_tag(PT_SYSTIME, mapi_prop_id($namedproperties[0])); // Comienzo
30 $props[1] = mapi_prop_tag(PT_SYSTIME, mapi_prop_id($namedproperties[1])); // Fin
31 $props[2] = mapi_prop_tag(PT_BOOLEAN, mapi_prop_id($namedproperties[2])); // Recurrente
32 $props[3] = mapi_prop_tag(PT_BINARY, mapi_prop_id($namedproperties[3])); // Datos recurrentes
33 $props[4] = mapi_prop_tag(PT_LONG, mapi_prop_id($namedproperties[4])); // BusyStatus - [Free,
Temporarily Occupied, Occupied, Not Available]
34 $props[5] = PR_ENTRYID; // ID único de la cita
35 $props[6] = PR_DISPLAY_TO; // Receptores
36 $props[7] = PR_SUBJECT; // Asunto
37 $props[8] = mapi_prop_tag(PT_LONG, mapi_prop_id($namedproperties[5])); // label
38 $props[9] = mapi_prop_tag(PT_BOOLEAN, mapi_prop_id($namedproperties[6])); // Eventos del dÃ&a
39 $props[10] = mapi_prop_tag(PT_BOOLEAN, mapi_prop_id($namedproperties[7])); // privado
40 $props[11] = mapi_prop_tag(PT_LONG, mapi_prop_id($namedproperties[8])); // encuentro
41 $props[12] = mapi_prop_tag(PT_SYSTIME, mapi_prop_id($namedproperties[9])); // Comienzo
42 $props[13] = mapi_prop_tag(PT_SYSTIME, mapi_prop_id($namedproperties[10])); // Fin
43 $props[14] = mapi_prop_tag(PT_STRING8, mapi_prop_id($namedproperties[11])); // localizaci̳n
44 $props[15] = mapi_prop_tag(PT_BINARY, mapi_prop_id($namedproperties[12])); // datos del huso horario

WWW.LINUX- MAGAZINE.ES Número 39 61


ADMINISTRACIÓN • Zafara

mapi_openmsgstore_zarafaU
Listado 1: Continuación (string $user , U
45 $props[16] = PR_BODY; string $password, U
46 string $server)

47 // Array de restricciones
Este ejemplo utiliza un socket para realizar
48 $restriction = Array(RES_OR, la conexión. Téngase en cuenta que la apli-
49 Array( cación se conecta al almacen MAPI como
un usuario administrador y por ello no se
50 // OR
requiere una contraseña para autenticarse.
51 // (item[start] >= start && item[start] <= end)
52 Array(RES_AND,
Éxito en la Conexión
Una conexión con éxito devuelve un array
53 Array(
con dos almacenes: el almacén privado
54 Array (RES_PROPERTY, Array(RELOP => RELOP_GE, ULPROPTAG del usuario con datos del propio PIM del
=> $props[0], VALUE => $start)), Array (RES_PROPERTY, Array(RELOP usuario, y el almacén público con datos
=> RELOP_LE, ULPROPTAG => $props[0], VALUE => $end)) compartidos.
Los almacenes MAPI poseen una estruc-
55 )
tura en forma de árbol. Para acceder a una
56 ), rama o a una hoja hay que conocer su
57 // OR dirección. Para ello existen propiedades.
La función mapi_prop_tags() crea direc-
58 // (item[end] >= start && item[end] <= end)
ciones a partir de un tipo y de un ID.
59 Array(RES_AND, El fichero mapitags.php, en la carpeta
60 Array( {webaccess}/mapi (en Zarafa 5) o en
61 Array(RES_PROPERTY, Array(RELOP => RELOP_GE, ULPROPTAG =>
{webaccess}/incluye/mapi (en Zarafa 4),
contiene una lista de constantes.
$props[1], VALUE => $start)), Array(RES_PROPERTY, Array(RELOP =>
Por otro lado, pueden utilizarse herra-
RELOP_LE, ULPROPTAG => $props[1], VALUE => $end))
mientas como OutlookSpy [7] para buscar
62 ) propiedades. Si el programador utiliza
63 ), como incluye los ficheros MAPI de los
directorios anteriormente mencionados,
64 // OR
no hay que crear las direcciones.
65 // (item[start] < start && item[end] > end) Una vez establecida la conexión con el
66 Array(RES_AND, almacén, se puede abrir la bandeja de
entrada del usuario para acceder a todos
67 Array(
los objetos del almacén:
68 Array(RES_PROPERTY, Array(RELOP => RELOP_LT, ULPROPTAG =>
$props[0], VALUE => $start)), Array(RES_PROPERTY, Array(RELOP => mapi_msgstore_getreceivefolder U
RELOP_GT, ULPROPTAG => $props[1], VALUE => $end)) (mapimsgstore $store);
69 )
La función mapi_getprops() lee las propie-
70 ),
dades del objeto requerido. En este caso es
71 ) una entrada ID para la agenda.
72 ); // OR global mapi_msgstore_openentry() permite crear
un puntero a la agenda y acceder a otras
73
propiedades del objeto agenda. mapi_fol-
74 $start = mktime(0, 0, 0, 9, 1, 2007); der_getcontentstable() abre la carpeta de
75 $end = mktime(23, 59, 59, 9, 30, 2007); mensajes.
Antes de poder empezar a leer las citas de
76
la agenda hay que generar los IDs para las
77 // Obtiene los elementos requeridos de la agenda propiedades requeridas (comienzo, fin, loca-
78 $rows = mapi_table_queryallrows($contents, $props, $restriction); lización, etc) utilizando mapi_prop_tag() y
mapi_getIdsFromNames().
79 foreach ($rows as $appointment) {
80 /* hacer algo */ Restricciones
81 } El ejemplo sólo muestra las citas del mes
de Septiembre; para ello utiliza las restric-
82 ?>
ciones MAPI.

62 Número 39 WWW.LINUX- MAGAZINE.ES


Zafara • ADMINISTRACIÓN

El array restriction contiene una marca Ahora ya se sabe dónde se encuentra la La función mapi_table_queryallrows()
de tiempo para el inicio y la finalización carpeta con las entradas de la agenda, qué almacena las entradas relevantes en un
del periodo requerido. Luego, el array se propiedades de las citas se desean consul- array de resultados, proporcionando la
pasa en la petición MAPI. tar y a qué restricciones están sujetas. posibilidad de mostrarlo.

Listado 2: Fichero de Definición Conclusiones


01 <? Zarafa es un servidor de software colabora-
02 /* Definiciones de Objetos */ tivo robusto que se integra fácilmente con
03 define (‘PT_LONG’, 3); /* Valor de 32-bits con signo */
los entornos Linux existentes. Otros com-
plementos de código abierto, como Apache,
04 define (‘PT_BOOLEAN’, 11); /* Booleano de 16-bits (Distinto de
Postfix o MySQL, suplementan el núcleo.
cero: true) */
Además del acceso nativo de Outlook,
05 define (‘PT_SYSTIME’, 64); /* FILETIME 64-bit int w/ número de
los clientes pueden beneficiarse de las
períodos de 100ns desde el 1 de Enero de 1601*/
interfaces POP3, IMAP o iCalendar. PHP-
06 define (‘PT_STRING8’, 30); /* Cadena de caracteres de 8-bits
MAPI proporciona a los desarrolladores
terminada en null */
un acceso rápido a los datos y la posibili-
07 define (‘PT_BINARY’, 258); /* Sin interpretar (array de bytes) */
dad de manipular los datos del almacén.
08 define (‘PT_TSTRING’, PT_STRING8); /* Nombre de tipos de Webaccess viene con una interfaz AJAX
propiedades alternativos para facilitar el uso */
y funciones nuevas. Como las característi-
09 cas son similares a las de Outlook,
10 /* Definiciones de etiquetas de propiedades para las propiedades muchos usuarios comenzarán a utilizar de
estándar de los objetos MAPI */ forma exclusiva Webaccess.
11 define (‘PR_SUBJECT’, mapi_prop_tag( PT_TSTRING, 0x0037)); Z-Push proporciona acceso continuo a
12 define (‘PR_BODY’, mapi_prop_tag( PT_TSTRING, 0x1000)); las PDAs a los últimos datos.
13 Los interfaces abiertos y bien documen-
14 /* Propiedades de mensajes no transmitibles */ tados facilitan la integración de Zarafa con
los sistemas existentes. Por ahora Zarafa
15 define (‘PR_DISPLAY_TO’, mapi_prop_tag( PT_TSTRING, 0x0E04));
está trabajando en la integración servidor-
16 define (‘PR_NORMALIZED_SUBJECT’, mapi_prop_tag( PT_TSTRING,
servidor con sistemas CRM tales como
0x0E1D));
SugarCRM y vTiger, además de proporcio-
17
nar los mismos datos a todos estos siste-
18 /* Propiedades comunes a múltiples objetos (incluyendo objetos mas en tiempo real.
mensajes); Zarafa es un producto comercial, pero
19 * — Estos ids se encuentran en el rango no transmitible */ es una solución de software colaborativo
20 define (‘PR_ENTRYID’, mapi_prop_tag( PT_BINARY, 0x0FFF)); completa a un buen precio, y su desarrollo
21 se encuentra en continua expansión. ■
22 /* Propiedades extras */
23 define (‘PR_IPM_APPOINTMENT_ENTRYID’, mapi_prop_tag RECURSOS
( PT_BINARY,0x36D0)); [1] Zarafa: http://www.zarafa.com/
24 [2] ImapSync: http://freshmeat.net/
25 /* Restricciones */ projects/imapsync
26 define(‘RES_AND’, 0); [3] Características de Zarafa: http://
27 define(‘RES_OR’, 1); zarafa.com/features.html

28 define(‘RES_PROPERTY’, 4); [4] PHP-MAPI: http://download.zarafa.


com/zarafa/en/zarafa_php_ext_5.00.
29
pdf
30 /* Restricciones Comparables */
[5] MSDN-MAPI: http://msdn.microsoft.
31 define(‘RELOP_LT’, 0); com/library/default.asp?url=/library/
32 define(‘RELOP_LE’, 1); en-us/mapi/html/
33 define(‘RELOP_GT’, 2); ef00004c-893c-4136-8cd4-89b729b7
401e.asp
34 define(‘RELOP_GE’, 3);
35
[6] Z-Push: http://z-push.sourceforge.
net
36 /* Valores para el índice del array de restricciones */
[7] Listados de Programas: http://www.
37 define(‘VALUE’, 0); // propval
linux-magazine.es/Magazine/
38 define(‘RELOP’, 1); // método de comparación Downloads/39/Zarafa
39 define(‘ULPROPTAG’, 6); // propiedad [8] OutlookSpy: http:// www.
40 ?> dimastr.com/outspy

WWW.LINUX- MAGAZINE.ES Número 39 63


ADMINISTRACIÓN • Puppet

Gestionamos nuestras máquinas con Puppet

MOVIENDO HILOS
Mostramos cómo ahorrar tiempo en la administración de nuestro sistema con la ayuda de Puppet, una herra-

mienta de gestión y centralización de configuraciones. POR JULIET KEMP

P
uppet es una herramienta de cen- Otra ventaja de Puppet es el uso de una Debian tratado en este artículo. El
tralización de configuraciones herramienta llamada Facter. Facter archivo de configuración principal, muy
que usa una especificación de define variables por-host (como el nom- simple, se encuentra en /etc/puppet/pup-
lenguaje multiplataforma. Para usarlo bre de host, la dirección IP o el sistema petmaster.conf; por ejemplo:
iniciamos un servidor Puppet central, el operativo) automáticamente, permitién-
puppetmaster, y los demonios puppet de donos modificar configuraciones especí-
cada máquina a administrar. Las opcio- ficas en clientes determinados mante-
nes de configuración de todas las máqui- niendo las ventajas de una configuración
nas cliente se definen en el puppetmas- distribuida.
ter, desde donde se propagan luego los
cambios en las configuraciones hacia los Instalación y Configuración
clientes. Puppet nos permite gestionar El código fuente de Puppet se encuentra
archivos (propietario, modo, contenido y disponible en el sitio web del proyecto
existencia), usuarios, grupos, paquetes y [1]. Los paquetes de Puppet están inclui-
servicios desde una localización central. dos en los repositorios de varias distribu-
Podemos ejecutar comandos o scripts, e ciones Linux. En Debian, el paquete del
incluso gestionar servidor de Puppet es puppetmaster.
crontabs, mon- Además, son necesarios ciertos paquetes
tajes de sistemas de Ruby, que podemos instalar con apt-
de archivos o get. Puppet se encuentra disponible tam-
hacer configura- bién para otras distribuciones,
ciones de red. Cada
elemento gestionado
se conoce como recurso,
los cuales se organizan en
tipos (como archivo, paquete,
servicio, cron…). Puppet se
encuentra actualmente en
desarrollo, por lo que se añaden regu-
larmente nuevos tipos, incluso pode-
mos crear el nuestro propio

¿Por Qué Usar Puppet?


Los tres motivos principales son:
• 1. Puppet guarda un registro de la
configuración del cliente. Si un cliente
cae, podemos generar una pudiéndose
configuración idéntica en un nuevo compilar además
sistema basándonos en la información desde el código
almacenada en el Puppetmaster fuente.
Paulus Rusyanto, Fotolia

• 2. En caso de tener más de una Nótese que el paquete


máquina, podemos configurarlas de actual para Debian stable
forma idéntica (o usar el mismo sis- está en su versión 0.20.1,
tema base y aplicar luego modificacio- mientras que los fuentes actua-
nes individuales). les van por la v0.24.1. Por este
• 3. Nos facilita la gestión de múltiples motivo, las últimas funcionalidades
sistemas desde una sola localización. no están disponibles en el paquete

64 Número 39 WWW.LINUX-MAGAZINE.ES
Puppet • ADMINISTRACIÓN

ción del manifiesto de sitio master. El cliente se parará si el certifi-


y la gestión de las configu- cado no existe, hasta que le digamos al
raciones. Por defecto, el puppetmaster que firme el certificado
manifiesto de sitio inicial de del cliente. Con el comando puppetca -
Puppet se encuentra en -list se muestran todos los clientes que
/etc/puppet/manifests/ están esperando la firma. Con pup-
site.pp. Lo que hay en este petca --sign cliente.ejemplo.com firma-
archivo se ejecutará en cada mos el certificado de
cliente. Para comenzar, cliente.ejemplo.com, y con puppetca --
podemos probar a poner la sign --all se firman todos los certifica-
siguiente receta; el archivo dos. Pasados 60 segundos, el cliente
sudoers es muy útil: coge el certificado firmado y se inicia.
La opción test hace que el cliente se
file { ”/etc/sudoers”: ejecute en modo verbose.
Figura 1: Una ejecución algo más complicada de Puppet del owner => ”root”, La Figura 1 muestra un ejemplo lige-
lado del cliente. Nótense los facts cargados en el inicio y los group => ”root”, ramente más complicado ejecutándose
servicios en proceso de actualización en rojo. mode => ”440” en uno de nuestros clientes.
} Tras la ejecución, comprobamos /etc/
[puppetmasterd] sudoers; los modos deben ser los que
# Nos aseguramos de que U Así nos aseguramos de que este archivo especificamos en el puppetmaster.
todos los mensajes de registro U sudoers tiene esas propiedades en el Además de gestionar estos atributos,
se envían al directorio correcto cliente. también podemos gestionar los conteni-
# Puppet debe tener permisos U Para las pruebas, ejecutamos puppet- dos de los archivos usando Puppet
de escritura en ese directorio masterd —verbose, que envía la salida a como servidor de archivos. Primero cre-
user logdir=/var/log/puppet la pantalla en vez de hacerlo a los regis- amos un archivo sudoers de muestra y
vardir=/var/lib/puppet tros, con lo que podemos ver inmediata- lo ponemos en /etc/puppet/files/
rundir=/var/run mente qué está sucediendo. sudoers.
Luego editamos site.pp de nuevo, de
Necesitamos también la configuración Instalación de un Cliente forma que la receta para sudoers quede
del servidor de archivos, en /etc/puppet/ Lo siguiente será iniciar el puppetmaster así:
fileserver.conf, para guardar los conteni- y añadir un cliente para poder hacer
dos de los archivos. El ejemplo muestra pruebas. En los clientes necesitamos el file { ”/etc/sudoers”:
la ruta al almacenamiento de archivos del paquete puppet. Definimos el nombre owner => ”root”,
puppetmaster y permite el acceso a todas del servidor de nuestro sitio editando el group => ”root”,
las máquinas del dominio ejemplo.com: archivo /etc/puppet/puppetd.conf, mode => 440,
source => U
[files] server = U ”puppet://servidorpuppet.U
path /etc/puppet/archivos servidorpuppet.ejemplo.com ejemplo.com/files/U
allow *.ejemplo.com sudoers”,
# deny *.excluido.ejemplo.com luego cambiamos los modos o propieta- }
# allow 192.168.0.0/24 rios del archivo /etc/sudoers del cliente
de manera que difieran con lo definido Editamos el archivo del cliente para
Además, podemos denegar el acceso a en el site.pp del puppetmaster. Ya pode- poder diferenciarlo (añadiendo algún
máquinas o dominios determinados, mos iniciar el cliente por primera vez comentario, por ejemplo) y ejecutamos
pudiendo especificar direcciones IP si lo con el comando puppetd --waitforcert 60 Puppet en él con puppetd --test. Vemos
preferimos. Para crear los archivos de --test. cómo el contenido del archivo cambia.
Puppet bajo los que se ejecuta el servi- Los clientes se autentifican mediante Con la gestión de archivos puede com-
dor iniciamos el demonio de Puppet por una petición de certificado al puppet- probarse si existen determinados enlaces
primera vez con la opción mkusers.
Como aún no hemos creado definiciones Listado 1: Tarea Cron para Reiniciar Puppet
de nodo, necesitaremos además la
01 cron { restart-puppet:
opción —nonodes:
02 command => ’if [ -e /var/run/puppetd.pid ];
03 then ps uw -p `cat /var/run/puppetd.pid`
/usr/bin/puppetmasterd U
04 | grep -q ’ ruby /usr/sbin/puppetd’
—mkusers —nonodes
05 || (rm /var/run/puppetd.pid; /etc/init.d/puppet start); fi’,
06 user => root,
Receta Básica
07 minute => ’0’,
Ahora que ya tenemos el servidor inicial
08 }
instalado, comenzamos con la instala-

WWW.LINUX-MAGAZINE.ES Número 39 65
ADMINISTRACIÓN • Puppet

simbólicos o directorios. Este trozo de Puppet es capaz de gestionar multitud • Cron. Gestiona tareas de cron. Un
código muestra también cómo usar un de tipos: posible uso es rearrancar Puppet en
contenedor de archivo simple { } para • Paquetes: Puppet interactúa con la los clientes cuando ha fallado, como
varios recursos de archivo. mayoría de los sistemas de paquetes se muestra en el Listado 1.
existentes, asegurando que se instalan Para optimizar la impresión, el comando
file { paquetes determinados, algo particu- se muestra dividido en varias líneas,
”/star”: larmente interesante en la instalación aunque en realidad debe ser una sola.
ensure => link, de una nueva máquina: Podemos definir la hora y el día en que
target => ”/soft9/star”; queremos llevar a cabo la tarea cron, así
”/test/dir”: package { ”slapd”: U como el usuario bajo el cual se debe eje-
ensure => directory; ensure => installed; } cutar. El comando se añade al crontab
} del usuario.
• Exec: Ejecuta comandos internos. El • Mount: Puntos de montaje y ensure. Si
Nótese el punto y coma del final de cada comando subscribe es útil aquí. Por se define el parámetro ensure como
especificación de recurso. ejemplo, esta parte actualiza exim4 present, el sistema de archivos se
cuando cambia algún archivo de incluye en la tabla, pero no se monta.
Dependencias configuración. Si el parámetro se define como moun-
Los recursos interactúan los unos con los ted, el sistema de archivos se incluye
otros. Por ejemplo, determinados paque- exec { ”exim4-update”: en la tabla y además se monta. Si el
tes pueden ser necesarios para determi- command => U parámetro se define como absent, el
nados servicios. También podríamos ”/usr/sbin/U sistema de archivos se elimina de la
desear que un servicio se reiniciara cada update-exim4.conf”, tabla.
vez que se modifica un archivo dado. user => ”root”, • También se dispone de otros atributos
Puppet usa dependencias, principal- subscribe => U de red: hosts, interfaces, listas de
mente require y subscribe, para definir File[“update-exim4”], correo, alias de correo o claves de host
estas interacciones. refreshonly => true, de SSH.
El ejemplo de más abajo usa el tipo } En el sitio web del proyecto de Puppet
service, que podemos usar para exim, podemos encontrar un listado completo
Apache o cualquier otro demonio que • Usuarios y grupos: Este tipo está orien- de tipos.
queramos mantener ejecutándose: tado sobre todo a la gestión de usua- Se están desarrollando nuevos tipos
rios de sistema, más que a usuarios continuamente, aunque hay que actuali-
service { ”slapd”: regulares. Es posible gestionar el direc- zar a la última versión de Puppet para
ensure => running, torio de inicio (por ejemplo para cre- poder usarlos.
hasrestart => true, arlo), así como otros atributos:
require => U Predeterminado
Package[“slapd”], user { ”manager”: Se pueden definir valores predetermina-
subscribe => U ensure => present, dos para todos los recursos. Por ejemplo,
[File[“ldap.conf”], U home => U si la mayoría de nuestros archivos son
File[“/etc/ldap/schema”]], ”/local/manager”, propiedad de root y tienen el chmod en
} managehome => true, 644, lo siguiente establece esos valores
gid => ”systemusers”, como lo predeterminado con todos los
La opción hasrestart hace saber a Puppet } archivos:
si el servicio se reinicia con stop/start o
con restart. require simplemente propor- Listado 2: Varias Clases y Herencia
ciona una interrelación ordenada; garan-
01 class base { 13 include latex
tiza que el recurso al que se hace refe-
02 # Básico 14 include gnome
rencia, que en este caso es el paquete
03 include autofs 15 # etcétera
slapd, se gestione antes.
04 include cron 16 }
subscribe es una dependencia de tipo
05 include puppet 17
reactivo. Si el recurso especificado cam-
06 include ssh 18 class server inherits base {
bia, se actualiza. Los tipos exec, service y
07 # etcétera 19 # De nuevo, todo lo de la
mount soportan esta dependencia.
08 } clase base se incluye
Nótese el modo en que definimos los
09 automáticamente
recursos de Puppet en este contexto:
10 class desktop inherits base { 20 # Y ahora las cosas
usando el nombre del tipo en mayúscu-
11 # Todo lo de la clase base específicas del servidor
las y dando el nombre del recurso. Ade-
se incluye aquí 21 include nfs
más, estos recursos se deben especificar
automáticamente 22 # etcétera
en algún sitio más, de lo contrario se
12 # Luego también podemos 23 }
produce un error.

66 Número 39 WWW.LINUX-MAGAZINE.ES
Puppet • ADMINISTRACIÓN

File { (p.e., apt.pp, configuración de la configuración básica


owner => ”root”, apache2.pp) o predeterminada ( Listado 2 ).
group => ”root”. |- Definiciones Podemos definir todas las clases en un
mode => ”644” |- Plantillas único archivo, o tener un archivo por
} cada clase; nosotros recomendamos esto
Los subdirectorios contienen todos archi- último para facilitar la gestión de la
Si queremos obviarlo, podemos definir vos de clase (ver más abajo) y, para que configuración.
otros valores para un recurso en particu- se incluyan éstos, site.pp quedaría así:
lar. Nótese que los valores predetermina- Facter, Plantillas, Variables
dos sólo afectan a su propio ámbito import ”classes/*” Una característica muy útil de Puppet es
(clase) o cualquier otro por debajo de él; import ”definitions/*” que viene con Facter, una utilidad que
si queremos que sean aplicables de import ”nodes/*” define varios facts (características) dada
forma global, hemos de situarlos fuera import ”users/*” una determinada máquina. Los facts
de cualquier clase, por ejemplo, en comprenden el nombre de host, la direc-
site.pp. ción IP, la arquitectura, el sistema opera-
Nodos tivo, la clave de SSH, la información
El Directorio de Puppet Hasta ahora sólo hemos tenido en cuenta sobre el procesador, la información sobre
En el sitio web del proyecto se sugieren la configuración para una sola máquina, memoria, etc.
algunas formas de organización de archi- pero el verdadero potencial de Puppet se Para ver el listado completo de facts
vos y manifiestos. Independientemente demuestra cuando existen múltiples predeterminados introducimos facter en
de cuáles use nuestro sistema, debemos máquinas. Si son todas idénticas, sólo la línea de comandos. Podemos hacer
asegurarnos de que sean lo suficiente- tenemos que definir una configuración, referencia a estos facts mediante $fact-
mente comprensibles y actualizables. la predeterminada. name. Estos facts tienen dos usos impor-
Nuestro sistema presenta el siguiente tantes: la creación de estructuras condi-
aspecto: # site.pp cionales y su uso en plantillas.
default {
- Dir. principal de Puppet: include sudo Condicionales
|- Archivos } Puppet tiene tres tipos de condicionales:
|- Aplicaciones 1. Los selectores que se usan dentro de
- Usuarios Si ésta es la única configuración, se eje- una declaración; por ejemplo:
|- Manifiestos cutará en cada cliente Puppet que se
|- site.pp conecte al puppetmaster. package {
|- Nodos - dir. con Puede que queramos una ”krb-clients”:
varios configuración diferente para cada ensure => U
manifiestos de nodo - máquina, o una configuración base que $operatingsystem ? {
ver siguiente sección hereden todas o se incluya en la ubuntu => absent,
|- Clases - directorio configuración del nodo. Por ejemplo, es debian => U
con posible que tengamos una configuración installed,
varios manifiestos de para un servidor muy básico que difiere default => undef
clase, de acuerdo de la configuración de nuestro escritorio, };
con el programa pero que ambas hereden su }

Listado 3: iptables.erb Aquí, si $operatingsystem está definido


como ubuntu, el paquete no se instala; si
01 *filter
está definido como debian, sí se instala.
02 :INPUT DROP [0:0]
Por defecto no se define el atributo.
03 :FORWARD DROP [0:0]
Nótese la ausencia de coma en la línea
04 :OUTPUT ACCEPT [0:0]
final.
05 -A INPUT -d 127.0.0.0/255.0.0.0
2. case, que proporciona un método
06 -i ! lo -p tcp -j DROP
para la aplicación condicional de clases:
07 -A INPUT -d <%= ipaddress %> -m state —state RELATED,ESTABLISHED -j
08 ACCEPT
case $operatingsystem {
09 -A INPUT -i lo -j ACCEPT
ubuntu: { include ubuntu }
10 -A INPUT -s 104.198.153.0/255.255.255.0 -d <%= ipaddress %> -j
debian: { include debian }
11 ACCEPT
default: { include basic }
12 -A INPUT -d <%= ipaddress %> -p tcp -m tcp —dport 22 -j LOG
}
13 —log-prefix ”ssh:”-A INPUT -d <%= ipaddress %> -p tcp -m tcp
14 —dport 22 -j ACCEPT
Aquí se incluye la clase específica de
15 COMMIT
cada sistema operativo, dependiendo del

WWW.LINUX-MAGAZINE.ES Número 39 67
ADMINISTRACIÓN • Puppet

valor de $operatingsystem. Se pueden (“/etc/puppet/templates/U ENV[‘HOME’]


definir varias condiciones usando la iptables.erb”), end
coma. } end
3. La estructura if/else simple; por
ejemplo: Mientras los archivos necesitan la sinta- La próxima vez que se ejecute Puppet en
xis los clientes, se sincronizará este fact y se
if $unejemplo { puppet://servidorpuppet.ejemplo.com, las podrá usar en cualesquiera recetas que
file { U plantillas no. elaboremos.
”/usr/local/ejemplo”: U
ensure => present } Facts Personalizados Otras Variables
} Los facts predeterminados están disponi- Las variables son útiles también en otras
else { bles de forma automática en todos los situaciones. Una variable definida en
file { ”/usr/local/test”: U clientes. De cualquier modo, si escribi- site.pp está disponible en el resto de
ensure => present } mos facts personalizados, querremos manifiestos o clases. Por lo que, por
} conservarlos en el puppetmaster y luego ejemplo, si tenemos un juego estándar
hacer que los clientes sincronicen sus de usuarios a quienes se les permite
Actualmente sólo es posible determinar facts con el servidor. ingresar en nuestros servidores y quere-
si una variable está definida o no, pero Se añade una sección a /etc/puppet/ mos editar /etc/ssh/sshd_config de
no distinguir entre los valores que pueda fileserver.conf en el puppetmaster, acuerdo a este escenario, podemos
contener. Para hacerlo hay que usar las hacer algo como lo, mostrado en el Lis-
declaraciones case o selector. [facts] tado 4.
path /etc/puppet/facts Instalar el servidor de archivos a partir
Plantillas allow *.ejemplo.com de una variable puede ser también
Las plantillas usan Ruby para colocar las buena idea; si el servidor cambia no hay
variables en un archivo fuente. Dicho de y en cada cliente, se añade una línea a que ir cambiando los archivos uno por
otro modo, es como proporcionar un /etc/puppet/puppetd.conf: uno.
archivo central que puede mutar depen-
diendo de la máquina a la que se destina. factsync = true Conclusión
Un buen ejemplo de uso de un fact en Con esta breve introducción no pode-
una plantilla es la definición de una polí- Después reiniciamos puppetmasterd en mos más que vislumbrar la posibilida-
tica de ipchains. Por ejemplo, el archivo el servidor y puppetd en los clientes. Ya des que nos brinda Puppet. Las versio-
iptables.erb (ERB es la sintaxis para las podemos poner facts personalizados en nes más recientes del software nos per-
plantillas de Ruby) mostrado en el Lis- /etc/puppet/facts para hacer que se pro- miten organizar nuestra instalación en
tado 3 emplea $ipaddress. Luego pode- paguen. Por ejemplo, para instalar un módulos, con lo que podemos obtener
mos referenciar esta plantilla: fact que define $home como la variable incluso más flexibilidad. En caso de
de entorno $HOME, creamos el archivo estar usando LDAP para almacenar la
file { ”iptables_config”: /etc/puppet/facts/home.rb: información de los usuarios y la
name => U máquina, podemos tomar de ahí nues-
”/etc/sysconfig/iptables”, Facter.add(“home”) do tras definiciones de nodo.
content => template U setcode do Teniendo los contenidos de los archi-
vos en un solo lugar se facilita también
Listado 4: Uso de Variables en la Instalación de SSH el uso de Subversion (u otro sistema de
control de versiones). Recomendamos
01 # en site.pp
encarecidamente hacerlo de este
02 $server_ssh_users = ”root jkemp admin”
modo.
03
Para más información, o ayuda adi-
04 # en ssh.pp o donde quiera que lo queramos conservar
cional, se puede consultar el sitio web
05 file { ”sshd_config”:
de Puppet, la wiki [2] o la lista de
06 name => ”/etc/ssh/sshd_config”,
correo [3]. ■
07 allow_users => ’AllowUsers $server_ssh_users’,
08 template => ”/etc/puppet/templates/sshd_config.erb”,
09 } RECURSOS
10 [1] Proyecto Puppet: http://
11 # parte relevante de sshd_config.erb reductivelabs.com/projects/puppet/
12 LoginGraceTime 600 [2] Wiki de Puppet: http://reductivelabs.
13 PermitRootLogin without-password com/trac/puppet/wiki
14 StrictModes yes [3] Listas de Correo de Puppet: http://
15 reductivelabs.com/trac/puppet/wiki/
16 <%= allow_users %> GettingHelp#mailing-list

68 Número 39 WWW.LINUX-MAGAZINE.ES
LINUX USER • Gnash

Reproductor libre para películas Flash

¡ACCIÓN!
Ferenc Szelepcsenyl, Fotolia

Hasta muy recientemente, el formato Flash ha sido del dominio particu- para Linux como descarga libre [1]. El
plugin soporta cualquier navegador
lar de Adobe. Gnash introduce un reproductor Flash libre para Linux y reciente basado en Mozilla, como pue-
den ser Firefox o Seamonkey, y también
BSD con un diseño de pretensiones mucho más ambiciosas que las del Opera.
Para permitir a los usuarios Linux ele-
rey de Adobe. POR ERIK BÄRWALDT
gir un reproductor Flash libre, la Free
Software Foundation lanzó el Proyecto

S
hockwave Flash se ha establecido Estas propiedades, adaptadas a las Gnash [2]. Su nombre resulta de la com-
como el estándar para contenido necesidades de la edad de Internet, han binación de las palabras “GNU” y
multimedia en Internet, haciendo ayudado a Flash a establecerse en un “Flash”. El reproductor libre Gnash no
que los usuarios de plataformas de TV o tiempo récord; sin embargo, el formato sólo ambiciona proporcionar la misma
vídeo como YouTube y Lulu.tv disfruten posee una importante desventaja: Como funcionalidad que el reproductor Adobe
de películas Flash. Pero además, tam- software propietario no se encuentra dis- como plugin para navegadores web
bién está conquistando rápidamente el ponible libremente, estando su populares, sino también añadir capaci-
campo de las materias educativas y mul- desarrollo actualmente en manos de una dades de reproducción independientes
timedia profesionales. sola compañía, Adobe. que hagan que sea más fácil el uso de
Este formato, originalmente desarro- películas Flash en escenarios educativos.
llado por Macromedia, es el preferido Flash en el Navegador El software se encuentra aún en alfa,
por los desarrolladores web porque El software reproductor más generali- pero el desarrollo está progresando muy
soporta elaboradas animaciones gráficas, zado para animaciones Flash también es bien. Tanto los archivos del código
permitiéndoles realzar el diseño de una de Adobe, y sólo se encuentra disponi- fuente como la documentación en distin-
página web. Las capacidades de strea- ble como plugin para algunos navegado- tos formatos se encuentran disponibles
ming del formato Flash lo hacen perfecto res web, no como reproductor indepen- en la web [3]. La compilación de un
para una conexión a Internet de banda diente. La desventaja de esto es que, por binario desde las fuentes puede ser toda
estrecha, evitando las típicas esperas que ejemplo, los vídeos de formación sólo se una experiencia, incluso para los usua-
conlleva la descarga de una película en ejecutarán en un navegador web. Adobe rios Linux más versados, debido a la
un formato tradicional. ofrece variantes de su reproductor Flash gran cantidad de dependencias que hay

70 Número 39 WWW.LINUX- MAGAZINE.ES


Gnash • LINUX USER

Una vez hayamos completado la insta- gin del navegador, lo cual se debe a las
lación, encontraremos Gnash en el menú excelentes capacidades de streaming del
Aplicaciones | Entretenimiento en reproductor. La calidad de la reproduc-
Gnome. Buscamos la entrada Gnash SWF ción de sonido es buena incluso para los
Viewer. Si pulsamos en la entrada del requerimientos más exactos. Después de
menú, en principio no pasará nada más. todo, Gnash usa OpenGL para soporte
Si pulsamos con el botón derecho en un 3D basado en hardware. Otro punto posi-
fichero SWF almacenado localmente, y tivo es la carencia de problemas de esta-
luego seleccionamos el Gnash Player, bilidad con las dos versiones de Gnash
aparecerá una ventana con apariencia que probé, la 0.7.2 y la 0.8.1. La CPU
espartana y se reproducirá el contenido cargada también estaba dentro de unos
del fichero. límites aceptables.
Hasta ahora la única manera de con-
trolar Gnash es pulsando con el botón Conclusiones
derecho en la ventana del programa, lo Gnash ha conseguido finalmente que
cual nos permite pasar hacia adelante o las cosas funcionen con su reproductor
hacia atrás la película, y nos da acceso a Flash. El software, que actualmente se
funciones típicas como Reproducir/ encuentra en fase alfa, se está desarro-
Parada, Pausa, Cerrar y Salir. En estos llando rápidamente gracias al empuje de
momentos Gnash carece de menú. la Free Software Foundation para sumi-
nistrar una alternativa libre a Flash Pla-
Funcionalidad yer de Adobe.
El Flash Player libre me dejó con una Gnash posee algunas ventajas concep-
impresión ambivalente, pues aunque el tuales comparado con su homólogo pro-
plugin del navegador en nuestro labora- pietario de Adobe; por ejemplo, el repro-
torio reprodujo varios ficheros de vídeo y ductor también está diseñado como una
ejemplos de YouTube sin ningún pro- aplicación independiente y no depende
blema, el reproductor independiente no de un navegador web. Además, comien-
pudo reproducir ninguna de las anima- zan a brillar las increíbles capacidades
ciones Flash que le introduje, a pesar de de streaming de Gnash.
no arrojar ningún mensaje de error Como mantiene la carga del sistema
que resolver. Afortunadamente, los (Figura 1). agradablemente baja, este reproductor
paquetes binarios Gnash se encuentran O bien existían problemas relaciona- es apropiado para usarlo en máquinas
ahora disponibles para casi cualquier dos con aspectos visuales de la película de menor potencia, siendo destacable
distribución y sus derivadas (ver [4], [5] o con el sonido, que estaba distorsio- además su excelente calidad de imagen.
y [6]). Además del reproductor en sí, nado, o incluso se iba. Déficits atribui- Los ciclos de edición corta muestran
también necesitamos descargar las libre- bles a la naturaleza propietaria del for- que Gnash es un proyecto de alta priori-
rías Libgnash0 y Libgtkglext1 para com- mato Flash. Aquellos que deseen dad, debiéndose resolver cuanto antes
pletar las dependencias. Si queremos eje- desarrollar un reproductor libre para los fallos en la actual versión alfa. En
cutar Gnash Player como un plugin para ficheros SWF no pueden esperar que resumen, todo indica que Gnash será
un navegador, también deberemos insta- Adobe les revele las especificaciones pronto una alternativa genuina a Adobe
lar el paquete mozilla-plugin-gnash en Flash. La única opción que tenemos es Player. ■
nuestro sistema. reconstruir laboriosamente el códec, un
arduo proceso de prueba y error. RECURSOS
Para colmo, Adobe habitualmente
[1] Descarga: http://www.adobe.com/
introduce nuevas tecnologías con cada
shockware/download/download.
nueva versión del formato, por lo que no
cgi?P1_Prod_Version=ShockwaveFlas
es suficiente con desarrollar un códec h
para una versión del formato Flash. Al
[2] Gnash: http://www.gnu.org/software/
contrario, los desarrolladores se ven for- gnash
zados a seguir cada paso que da Adobe,
[3] Fuentes Gnash: http://www.gnu.org/
razón por la que la Free Software Foun-
software/gnash/#downloading
dation está intentando no solamente
[4] Paquetes para Fedora/RHEL: http://
soportar la versión 4 del formato de
dag.wieers.com/rpm/packages/gnash
Adobe con Gnash, sino implementar el
juego de funcionalidades completo de la [5] Paquetes para Ubuntu: http://
packages.ubuntu.com
Figura 1: Estos pececillos se sienten obvia- última versión 7.
mente bastante felices con Gnash en el nave- Algo destacable de Gnash es lo rápida- [6] Paquetes para Mandriva, openSUSE:
http://rpm.pbone.net
gador. mente que la película aparece en el plu-

WWW.LINUX- MAGAZINE.ES Número 39 71


LINUX USER • ImageMagick

Procesado de imágenes en la consola

PÍXEL PERFECTO
Timbec, photocase.com

GIMP no es la única opción para la manipulación de fotos. ImageMagick, una colección de programas de la

línea de comandos para el procesamiento de imágenes, puede ayudarnos a procesar un lote de fotos de una

sola pasada. POR TIM SCHÜRMANN

L
as vacaciones han acabado y nues- las. Normalmente arrancaríamos GIMP, repitiendo todo el proceso hasta tener
tra nueva cámara digital está ates- abriríamos una foto, la procesaríamos, todas nuestras fotos clasificadas. Este
tada hasta arriba. Antes de crear definiríamos su
una galería de fotos en nuestra página tamaño y al final
web necesitaremos clasificarlas y reunir- la guardaríamos,

Tareas Típicas
El programa ImageMagick está especialmente indicado para los
siguientes tipos de tareas:
• Conversión de fotos a distintos formatos de imagen
• Cambiar el tamaño de la imagen
• Rotar, escalar y cortar secciones con una precisión de píxel
• Usar filtros y efectos
• Creación de animaciones para la web
• Creación de imágenes simples usando formas geométricas
básicas o copiando y pegando pequeños fragmentos de gráfi-
cos
• Generación de thumbnails y marcos
Figura 1: Pulsando con el botón izquierdo del ratón sobre la foto abri-
• Unir distintos dibujos o fotos (por ejemplo, un póster, collage
mos el menú; la ventana reducida ayuda a navegar en imágenes
o una galería fotográfica)
sobredimensionadas.

72 Número 39 WWW.LINUX- MAGAZINE.ES


ImageMagick • LINUX USER

Figura 3: Para ver información más detallada acerca de nuestra foto,


incluyendo resolución, color y tamaño.
Figura 2: El comando “display” crea una perspectiva de las fotos
que no se han abierto aún. las imágenes JPG en el ción acerca del tamaño del fichero. La
directorio actual. Pul- información Exif oculta en muchas fotos
método podría llevarnos horas de nuestro sando la barra espaciadora nos movere- la obtenemos a través del parámetro -ver-
tiempo libre. mos desde una imagen a la siguiente. bose:
Afortunadamente, ImageMagick Podemos generar una perspectiva de
incluye una colección de herramientas de nuestras fotos actuales (Figura 2) $ identify -verbose image.jpg
la línea de comandos para nuestras imá- mediante el comando display vid:*.jpg,
genes. Podemos acceder a ellas casi que también podemos salvar pulsando Después de haber determinado las fotos
exclusivamente desde la consola y nos Ctrl + S. que no deseamos y de borrarlas, ha lle-
permite procesar un paquete de imáge- El comando identify imagen.jpg nos da gado el momento de preparar las que nos
nes fácilmente como si de una linea de información más detallada de la foto quedan para nuestra web.
ensamblaje se tratara. Por ejemplo, aña- (Figura 3), incluyendo alguna informa- Las cámaras normalmente generan
dir un marco a cada una de nuestras 451 ción un tanto críptica. fotos en formato JPEG, el cual tiene una
fotos solamente requiere un único El ejemplo mostrado en la Figura 3 seria desventaja. Para conseguir una
comando. concierne a un fichero JPEG con una compresión alta, JPEG tiende a eliminar
resolución de 3264x2448 píxeles, donde información de la imagen por todas par-
Saldos cada canal de color contiene 8 bits de tes, lo cual se hace evidente tan pronto
En primer lugar, el programa display información de color. Usando tres cana- como comenzamos a aplicar filtros y
puede ayudarnos a clasificar todas nues- les de color (rojo, verde y azul) da como efectos. Estos cambios pueden dejar arte-
tras imágenes (Figura 1). El comando dis- resultado una profundidad de color de 24 factos no deseados en la imagen. Si aún
play *.jpg, por ejemplo, presenta todas bits. El último valor suministra informa- así deseamos procesar las fotos de nues-

Figura 4: El efecto de solarización genera una imagen en negativo. Figura 5: … aunque los resultados finales pueden quedar bastante
Los beneficios prácticos de la mayoría de los filtros son un tanto bien. En este ejemplo, el efecto remolino mete la imagen en una bati-
limitados… dora.

WWW.LINUX- MAGAZINE.ES Número 39 73


LINUX USER • ImageMagick

tras vacaciones, deberemos convertirlas Filtros


primero a un formato no comprimido. Determinado número
Por ejemplo, los fotógrafos prefieren el de efectos y filtros
formato TIFF, que está generado por el pueden cambiar o real-
comando convert imagen.tiff. zar nuestras imágenes.
En muchos casos es
Conversión de Ficheros útil el filtro sharpen
Si disponemos de un número elevado de (realzar):
ficheros, el comando de la shell que sigue
nos ayudará a convertirlos de una sola convert
vez: -sharpen 6
imagen.tiff U
$ for i in *.jpg; do convert U scharf.tiff
$i $(basename $i .jpg).tiff; U
done El número que sigue al
parámetro -sharpen
En cada fichero que acaba en .jpg, la indica la fuerza del
shell elimina el final del nombre del efecto del filtro. Usando Figura 6: Aquí puedes ver a Tux flotando sobre la foto como un
fichero, lo reemplaza por .tiff, y llama a convert, rápidamente logo, aunque resulta un poco grande
convert con los resultados. podremos aclarar fotos
que están muy oscurecidas: Este comando extrae el canal rojo en la
Extensiones de Ficheros imagen y convierte los valores de inten-
Al igual que todos sus compañeros en el $ convert sidad a una escala de grises en la imagen
paquete ImageMagick, convert detecta imagen.tiff final.
independientemente el formato del -sigmoidalU
fichero por su extensión. Cada aplicación -contrast 4,0% U Efectos Divertidos
sabe automáticamente que una foto imagen-clara.tiff Además de estos efectos básicos, existen
denominada image.jpg es una foto JPEG. unos cuantos efectos divertidos. Para
Si el fichero convertido necesita un Si una imagen no transmite realmente la convertir un foto a un dibujo a carbonci-
final exótico por alguna razón, por ejem- atmósfera que esperábamos, debería- llo haríamos:
plo, exot.exo, simplemente colocamos el mos intentar convertirla a blanco y
formato al comienzo del nombre del negro: $ convert imagen.tiff U
fichero: - charcoal 5 U
$ convert imagen.tiff U imagen-carboncillo.tiff
$ convert imagen.jpg U colorspace gray U
TIFF:exot.exo blanco-negro.tiff El valor detrás de -charcoal determina la
oscuridad del “lápiz de carboncillo”.
Vueltas y Vueltas Sin embargo, los resultados de este tipo El parámetro -solarize (Figura 4) pro-
El comando mogrify junto con el paráme- de conversiones pueden resultar bastante duce un negativo, con -swirl se genera
tro -rotate rota las imágenes situadas de aburridos en algunos casos. una espiral (Figura 5), y -implode implo-
lado a una posición vertical. Con el siona una imagen.
siguiente comando podremos rotar nues- Canales de Color
tras imágenes: Si ocurre esto, un truco muy popular es Filigranas y Marcas de
usar un canal de color: Agua
$ mogrify -rotate ”90>” U Antes de cargar los resultados finales en
imagen.tiff rotado.tiff $ convert imagen.tiff U nuestra web deberíamos invertir un poco
-channel R U más de trabajo en prevenir que cualquier
Este comando rota imagen.tiff 90 grados -separate blanco-negro.tiff merodeador pueda robarnos nuestras
en sentido contrario a las agujas del reloj.
Obsérvese que necesitamos las comi- Listado 1: Convert
llas; de lo contrario, la shell interpretaría
01 $ convert -font @/home/tim/fonts/font.ttf -pointsize 20 -fill black
el símbolo “mayor que” (>) como una
draw ”text 100, 150 ’Vacaciones en la montaña’” imagen.tiff pie.tiff
redirección y borraría imagen.tiff.

Consejo Listado 2: Añadir un Marco


En vez del nombre del fichero, también 01 $ convert -font @/home/tim/fonts/font.ttf -pointsize 20 -fill red
podemos usar el nombre de la fuente, -stroke black -strokewidth 3 -draw ”text 100,150 ’Vacaciones en la
por ejemplo, Courier. montaña’” imagen.jpg pie.tiff .

74 Número 39 WWW.LINUX- MAGAZINE.ES


ImageMagick • LINUX USER

imágenes. Para ello les, aplicaremos una En KDE y


marca de agua. Gnome se rea-
Para aplicarla, creamos primero un lizan búsque-
logo y lo situamos, por ejemplo, en la das para las
esquina superior izquierda: fuentes usando
motores de
$ composite -geometry +100+100 U búsqueda
logo.png foto.tiff U como Tracker
foto_logo.tiff o Beagle. En
este momento
Este comando copia la imagen de podemos vol-
logo.png a la posición (100, 100) en la ver a usar con-
imagen foto.tiff y sitúa los resultados en vert de nuevo,
el fichero foto_logo.tiff (Figura 6). el cual se pasa
Un logo insertado de esta manera detrás de -font,
indica efectivamente el origen de la ima- donde se loca-
gen; sin embargo, esto no parece una liza la fuente.
marca de agua típica. El parámetro El Listado 1
-watermark se creó específicamente para muestra el un
ocuparse de este problema: tanto largo, Figura 7: La opción -polaroid permite crear imágenes que parecen haber
aunque com- sido tomadas con una cámara Polaroid.
$ composite -watermark 30% U pleto,
- gravity south logo.png U comando. Jugando con los Bordes
foto.tiff marca-de-agua.tiff El símbolo @ antes del nombre de Si nos gusta decorar nuestros álbumes de
fichero le dice a convert que está tratando fotos, podemos colocar marcos alrededor
En él, el porcentaje indica lo visible que con una fuente True-Type. El resto del de las imágenes fácilmente con lo
debería ser la marca de agua. El comando comando coloca el texto Vacaciones en la siguiente:
composite no sólo integra logos y marcas montaña (-draw) en la posición (100,
de agua, sino que crea collages fácil- 150) en negro, con un tamaño de puntos $ convert -bordercolor blue U
mente. Por ejemplo, podríamos añadir de 20 píxeles (-pointsize 20), en la fuente -border 10x10 imagen.tiff U
una flecha desde una foto que tiene un font.ttf. Introducimos el nombre del color marco.tiff
pequeño refugio para esquiadores en el en inglés después de -fill, por ejemplo,
fondo a otra foto del refugio. red, o bien los valores RGB correspon- El comando genera una imagen con un
También puede ser una buena idea dientes directamente. En el segundo caso borde (-border) con una anchura de
añadir un pie de foto. seleccionamos entre anotaciones decima- 10x10 píxels. El color de este borde se
les, por ejemplo, rgb(255,0,0,) o hexade- especifica con el parámetro bordercolor,
Pie de Fotos cimales, ”#FF0000”, que ya debemos azul en este ejemplo.
Un pie de foto puede indicar el lugar pre- conocer por programación HTML. La opción adicional polaroid curva la
ciso en el que fue tomada o quién es la En ambos casos deberíamos ver el imagen de manera que parece una foto
gente que aparece en ella. Para añadirlos color rojo. El comando convert -list color que se ha pegado y que tiene ligeras
necesitaremos primero un fichero con la lista todos los nombres de los colores ondas (Figura 7):
fuente que deseamos usar, preferible- conocidos y sus valores RGB.
mente en un formato TrueType (acabado $ convert -bordercolor snow U
en .ttf). Marcos de Texto -background black +polaroid U
Ésta no es una lista imagen.tiff foto-polaroid.tiff
Tabla 1: Visión del Programa de todo lo que Ima-
geMagick puede Para crear un filo con efecto tridimensio-
Programa Función
hacer con texto. nal configuramos el parámetro -frame, el
convert: Convierte la imagen original a otro formato; en el
Por ejemplo, pode- cual también añade un borde a la ima-
proceso, los filtros o efectos usados se aplican
solamente a la imagen resultante. mos añadir tam- gen, aunque permite un ajuste más fino
mogrify: Cambia la imagen directamente, a diferencia de bién un marco alre- que -border. Con la opción -mattercolor
convert. dedor del texto y
composite: Reviste múltiples imágenes. rellenarlo de verde Consejo
montage: Combina imágenes en un póster, panorama o en usando el paráme-
una perspectiva. Algunos parámetros se usan por más de
tro -stroke para el
import: Crea capturas de pantalla. una herramienta de ImageMagick. Esto
borde y -stroke
identify: Proporciona información sobre un fichero imagen. significa que composite produce texto
width para estable-
display: Muestra imágenes en una ventana. usando los mismos procesos que con-
cer el grosor de este
animate: Ejecuta una animación. vert, por ejemplo.
borde (Listado 2).

WWW.LINUX- MAGAZINE.ES Número 39 75


LINUX USER • ImageMagick

podemos establecer el color del filo. Por salvan espacio de


ejemplo: una sola vez:

$ convert -mattercolor peru U $ for i inU


-frame 9x9+3+3 imagen.tiff U *.tiff; do U
imagen-con-3D-bordmen.tiff convert U
$i -resize U
Los números tras el símbolo + determi- 800x600 U
nan la anchura del borde interior y exte- $(basename U
rior de la imagen. $i.tiff).png;U
done
La Increíble Foto
Menguante El comando
Una vez que tengamos los efectos desea- reduce el tamaño
dos procesamos las fotos para publicarlas de las imágenes a
online. En primer lugar deberíamos esca- una amigable con
lar su tamaño un poco. Las imágenes el monitor de
gigantes con una resolución de 800x600 píxeles, Figura 9: La opción montage crea esta perspectiva y también reduce
3264x2448 píxeles sólo muestran una convirtiéndolas automáticamente las fotos.
pequeña esquina en la mayoría de los simultáneamente
monitores, además se comen innecesaria- también a un económico formato PNG. pequeñas previsualizaciones de imáge-
mente todo el espacio en disco. Si desea- nes que representan la foto correspon-
mos disminuir el peso extra usaremos la Thumbnails diente cuando se pulsa sobre ellas. Pode-
opción -resize: Los futuros visitantes de nuestra web mos crear un directorio visual usando
posiblemente no querrán ver todas nues- convert vid:*.png midir.vid, cuyos resul-
$ convert -resize 200x200 U tras fotos, por lo que les será de gran tados se abren con display midir.vid. Para
foto.tiff mini-foto.png ayuda una previsualización (thumbnail). ver una foto abrimos el menú de contexto
Ésta también es útil cuando deseamos y seleccionamos Load. Con el comando
Este comando reduce la foto a un tamaño imprimir cualquiera de nuestras imágenes
de 200x200 píxeles, o al menos lo intenta. al permitir localizarlas más fácilmente. convert ’vid:*.png’ U
Para evitar distorsiones, convert lo limita La recopilación de todas las fotos se HTML:index.html
sólo a las dimensiones especificadas. Una realiza con la opción montage, que, de
imagen que tenía originariamente hecho, prefiere trabajar con thumbnails: el directorio visual puede generar una
3264x2448 píxeles acabó en 320x100. Si página de previsualización completa para
es imprescindible que la imagen mida $ montage -label nuestra web, resultando en múltiples
200x200 píxeles, incluso aunque corra- ’%f’ *.png U ficheros.
mos el riesgo de deformarla (Figura 8), -frame 5 index.png contiene la vista gráfica
colocaremos un signo de exclamación overview.png actual y index.html la enlaza y notifica al
detrás del tamaño: navegador qué foto está detrás de la ima-
Este comando añade un gen previsualizada.
$ convert -resize borde a cada previsuali- Para trabajar apropiadamente coloca-
200x200! U zación de imagen, mos ambos ficheros juntos con las fotos
foto.tiff escribe el nombre del correctas en el servidor web. Tan pronto
mini-foto.png fichero en la parte infe- como los visitantes soliciten index.html,
rior (-label ‘%f’) y empa- verán todas las fotos disponibles. Pul-
Alternativamente, queta los aspirantes en el sando sobre una de las previsualizacio-
podemos trabajar con fichero overview.png. El nes de las imágenes se carga la foto a su
porcentajes. El ejemplo resultado es un gran pós- tamaño actual en el navegador.
que sigue reduce un ter como el que se mues-
75% el tamaño original: Figura 8: La casa ha sido reducida tra en la Figura 9. Conclusión
a 200x200 píxeles. Las herramientas disponibles en el
$ convert -resize Ha Nacido una paquete ImageMagick usan una sintaxis
75% Estrella bastante críptica a la que cuesta acostum-
foto.tiff U Debería ser posible obtener la foto com- brarse, aunque la curva de aprendizaje
mini-foto.png pleta al pulsar sobre la imagen previa en merece la pena si tenemos que manipular
nuestra web. Esta tarea no supone nin- un elevado número de imágenes. Ade-
La shell siguiente puede ayudarnos a gún problema para ImageMagick, incluso más, los scripts de la shell ofrecen opcio-
convertir fácilmente todas las fotos de si se desvía ligeramente usando directo- nes casi ilimitadas para la automatiza-
nuestras vacaciones en thumbnails que rios visuales. Estos directorios contienen ción. ■

76 Número 39 WWW.LINUX- MAGAZINE.ES


Funambol • LINUX USER

Sincronización de código abierto, simplificado

FUNAMBOL
Mantener los datos del calendario y de contacto en dispositivos y aplicaciones sincronizados no es un pro-

blema nuevo, aunque no por ello deje de ser un problema. Funambol ofrece una solución de sincronización
de código abierto. POR DMITRI POPOV

F
unambol es software de código difícil de resolver, pero Funambol lo hace navegador. La interfaz web de myFU-
abierto de calidad comercial que posible. De hecho, suministra dos cami- NAMBOL es dura de roer; el calendario,
proporciona una solución de sin- nos hacia el nirvana de la sincronización por ejemplo, ofrece solamente una frac-
cronización potente y elegante. Para perfecta. ción de las funcionalidades encontradas
demostrar lo que Funambol [1] puede en Google Calendar. Sin embargo, hay que
hacer por nosotros examinaremos un Portal myFUNAMBOL recordar que esta interfaz no intenta com-
escenario simple en el que usaremos una El Portal myFUNAMBOL [2] es un servicio petir con servicios web dedicados, en su
combinación consistente en el cliente de de alojamiento que sirve de escaparate lugar ofrece una manera de buscar un
correo Mozilla Thunderbird y el módulo para las habilidades de Funambol (Figura número de teléfono o introducir una cita
de calendario Lightning como herramienta 1). La ventaja obvia de usar este servicio con el menor lío posible.
principal para administrar contactos y alojado es su comodidad, ya que no tene- Cuando creamos una cuenta myFU-
datos del calendario en una máquina mos que perder tiempo instalando el ser- NAMBOL, nos preguntará por el modelo
escritorio o portátil. Mientras estemos de vidor ni pensar en cómo configurarlo. de nuestro móvil y nos pedirá que intro-
aquí para allá, querremos acceder a estos Además, myFUNAMBOL puede pasar duzcamos el número de teléfono. El servi-
datos desde nuestro móvil a través de su opciones de configuración a nuestro telé- cio usa esta información para enviar un
agenda y aplicaciones calendario integra- fono móvil, por lo que no necesitaremos fichero de configuración a nuestro telé-
das. hacerlo manualmente. fono móvil. Una vez hayamos aceptado y
También querremos ver y administrar la La ventaja más importante es una inter- guardado las opciones de configuración,
agenda y calendario en la web. Debería faz web que nos permite administrar podemos sincronizar el móvil con el portal
sonar como si se tratara de un problema nuestra agenda y calendario a través del myFUNAMBOL. Para ver las instrucciones

WWW.LINUX- MAGAZINE.ES Número 39 77


LINUX USER • Funambol

Figura 1: El Portal myFUNAMBOL presenta una simple y funcional Figura 2: El plugin Mozilla Funambol permite sincronizar datos entre
interfaz web. un servidor Funambol y Thunderbird.

sobre cómo hacerlo debe comprobarse el En la sección Synchronization podemos cio como un servicio intermediario para
manual del teléfono. especificar las agendas y calendarios que recibir y enviar correo electrónico a través
Para mantener los datos sincronizados, debería usar el plugin. Por ejemplo, para de una aplicación cliente basada en Java
myFUNAMBOL usa SyncML, de modo sincronizar datos podemos elegir Libreta Funambol instalada en nuestro móvil. A
que podemos utilizar el servicio con vir- de Direcciones Personal y el calendario Tra- pesar de que la mayoría de los teléfonos
tualmente cualquier teléfono móvil bajo. Una vez estemos satisfechos con móviles vienen actualmente con un
moderno sin la instalación de software nuestras opciones, cerramos la ventana de cliente de correo integrado, deberíamos
adicional (puede verse una lista de dispo- diálogo Options y pulsamos el botón darle a la aplicación de Funambol la opor-
sitivos compatibles en la página web de Synhronize para sincronizar los datos. El tunidad de que nos muestre algunas de
Funambol [3]). myFUNAMBOL también plugin también incluye la funcionalidad sus funcionalidades más interesantes,
dispone de plugins para otros dispositivos Recover, que nos permite restaurar los tales como la habilidad de marcar mensa-
móviles, incluyendo Pocket PCs, iPods y datos de contacto y de calendario en el jes, su soporte IMAP y la integración con
smartphones basados en Mobile Win- caso de que algo vaya mal. Para realizar los datos de las direcciones almacenadas
dows. una sincronización de sentido único que en myFUNAMBOL. Para habilitar la fun-
Una utilidad que nos permita sincroni- sustituya los datos en Thunderbird o en ción de correo de myFUNAMBOL usamos
zar datos entre myFUNAMBOL y Mozilla myFUNAMBOL, pulsamos el botón Reco- la sección Set Up Email, donde podremos
Thunderbird es la única pieza que nos ver. configurar una cuenta de correo. A conti-
falta. Afortunadamente, el plugin Ahora ya tenemos los datos de las direc- nuación myFUNAMBOL envía un enlace
Funambol Mozilla [4] ocupa ese vacío ciones y del calendario en nuestro telé- de descarga a nuestro teléfono móvil. Ins-
muy bien (Figura 2). Éste puede sincro- fono móvil y en Thunderbird. Aunque talamos el cliente de correo basado en
nizar datos de contacto y calendario myFUNAMBOL tiene aún algo más que Java y ya estaremos listos para ponernos
almacenados en la agenda integrada de mostrarnos, ya que podemos usar el servi- en marcha.
Thunderbird y en el módulo de calenda-
rio Lightning. [5]. Para instalar el plugin El Servidor Funambol
Funambol en Thunderbird descargamos Como con cualquier servicio hospedado,
la extensión, arrancamos Thunderbird, la mayor comodidad de myFUNAMBOL
elegimos Tools | Adds-on, pulsamos el está en su flexibilidad. Si preferimos tener
botón Install y seleccionamos el fichero mayor control y la posibilidad de ajustar el
.xpi descargado. servicio a nuestro gusto, podemos sacar
Para activar el plugin, reiniciamos nuestra propia solución de sincronización
Thunderbird. Como podemos usar el plu- basada en Funambol instalando el servi-
gin Funambol para sincronizar datos con dor Funambol en una máquina local.
myFUNAMBOL, deberemos configurarlo. Mejor aún, utilizar y administrar nuestro
Elegimos Tools | Funambol Plugin, pulsa- propio servidor Funambol es relativa-
mos Options y cambiamos a la sección mente fácil, así que puede usarse por
Account. Aquí introducimos http://my. usuarios individuales y por grupos de tra-
funambol.com/sync en el campo Server bajo con pericia y recursos limitados. Los
URL, y escribimos nuestro nombre de requerimientos del hardware del servidor
usuario y contraseña en los campos apro- Figura 3: La web de demostración del servi- también son modestos: sólo necesitamos
piados. dor Funambol es sencilla. una máquina con un procesador de

78 Número 39 WWW.LINUX- MAGAZINE.ES


Funambol • LINUX USER

muy limitada (http:// a nuestro móvil a través del cliente de


localhost:8080/ correo Funambol basado en Java (véase la
webdemo), que pode- Figura 5).
mos probar registrán- El servidor Funambol viene con GMail
donos como “guest” preconfigurado, Yahoo! y servidores de
como nombre de correo AOL. Para administrar los servido-
usuario y contraseña res nos vamos a Modules | Email | Funam-
(Figura 3). bolEmailConnector, y pulsamos el botón
Aunque Funambol Search para visualizar una lista con los
es una solución de servidores de correo disponibles. Luego,
sincronización, no es con el botón Add configuraremos otros
un PIM basado en servidores de correo.
web, así que su inter- Asociar uno de los servidores de correo
Figura 4: La Funambol Administration Tool proporciona una interfaz faz es básica. Para con un usuario ya existente es igual de
gráfica para la administración del servidor Funambol. añadir un nuevo con- fácil. En la sección Accounts, pulsamos
tacto o cita rápida- Add, luego Search para ver una lista de los
1.8GHz, 512 MB de RAM y 200 MB de mente y comprobar el calendario, la inter- usuarios disponibles y hacemos un doble
espacio en disco duro libre. De hecho, no faz resulta muy útil. clic en la cuenta de usuario que necesita-
existe razón alguna por la que no poda- Una vez que el servidor está habilitado mos. Introducimos los detalles de inicio de
mos instalar el software de Funambol en y ejecutándose, podemos configurar nues- sesión y seleccionamos el servidor de
nuestra máquina de producción junto con tro teléfono móvil y Thunderbird para que correo deseado de la lista desplegable Mail
Thunderbird, es decir, convertirla en una trabaje con él. Esto es muy sencillo: sim- server. Para añadir uno que no se encuen-
solución de sincronización personal. plemente introducimos el servidor URL tre en la lista, seleccionamos Custom de la
Lo primero que hay que hacer, evidente- correcto (http://locaslhost:8080/ lista Mail server y especificamos las opcio-
mente, es descargar e instalar el paquete funambul/ds) y las credenciales en la sec- nes requeridas. Finalmente, el usuario
software del servidor Funambol. Este ción Options | Account del plugin Funam- debe configurar las opciones de la cuenta
paquete incluye mucho más de lo que bol. Los pasos exactos para configurar el en el teléfono móvil, algo que puede
necesitamos realmente, incluidos los com- teléfono dependen del modelo, así que hacerse en la sección Options | Account
ponentes PIM y de correo, el software del deberemos comprobar el manual para del cliente de correo Funambol.
servidor requerido y de la base de datos y más detalles.
las herramientas de administración. Para Una de las ventajas principales que Conclusión
instalar el paquete descargado, simple- supone ejecutar nuestro propio servidor Gracias a Funambol, mantener los datos
mente ejecutamos como root el comando Funambol es la posibilidad de adminis- sincronizados entre distintas plataformas y
sh funambol-x.x.x.bin y seguimos las ins- trarlo. La herramienta Funambol Adminis- aplicaciones ya no es una quimera. Con
trucciones. tration Tool es la que nos permite hacerlo myFUNAMBOL puedes permitir que el ser-
Para iniciar el servidor cambiamos al (Figura 4). Para iniciarla, cambiamos al vicio hospedado realice el trabajo sucio y
directorio /opt/Funambol/tools/bin y eje- directorio /opt/Funambol y ejecutamos el sincronice nuestros datos sin tener que
cutamos el comando sh funambol.sh start. comando admin/bin/funamboladmin, preocuparnos de la parte técnica del
Para comprobar que se ha iniciado, seña- luego nos registramos usando las creden- asunto. Si preferimos nuestra propia solu-
lamos nuestro navegador a http://local- ciales por defecto. ción de sincronización, podemos hacerla
host:8080/funambol, y deberíamos ver la Para editar las cuentas de usuario prede- instalando el servidor Funambol en una
página Funambol por defecto. El servidor terminadas y añadir otras nuevas vamos a máquina local. No importa qué camino eli-
viene como una web de demostración la sección Users, pulsamos el botón Search jas, Funambol hace la magia de la sincroni-
para listar todos los zación igual de bien en ambos casos. ■
usuarios existentes, y
a continuación, con RECURSOS
el botón Edit, las edi-
[1] Página web de Funambol: www.
tamos. Para añadir un
funambol.com
nuevo usuario, pulsa-
mos el botón Add y [2] Portal myFUNAMBOL: http://my.
funambol.com
completamos los
campos relevantes. [3] Dispositivos compatibles con Funam-
Al igual que el Por- bol: http://www.funambol.com/
solutions/devices.php
tal myFUNAMBOL, el
servidor Funambol [4] Plugin Funambol Mozilla: http://
sourceforge.net/projects/sync4mozilla
puede manejar cuen-
tas de correo, así que [5] Extensión Lightning Calendar para
Figura 5: El servidor Funambol puede controlar servidores de correo podemos usarlo para Thunderbird: http://www.mozilla.org/
projects/calendar/lightning/
y enviar correo al teléfono móvil del usuario. enviar y recibir correo

WWW.LINUX- MAGAZINE.ES Número 39 79


LINUX USER • Educación: Olivar

Software educativo para actividades bilingües

OLIVAR
Con Olivar se pueden crear actividades educativas bilingües en cuestión de minutos. Con unas cuantas imá-

genes y muy poco esfuerzo ya se pueden configurar toda clase de actividades.

POR ORLANDO SOLDÁN POZO

O
livar tiene su origen, como cual- esta idea tomamos lo que llevábamos reali- texto descriptivo y, si lo deseamos, sonidos
quier aplicación informática, por zado del proyecto y nos fuimos al Colegio (si bien estos son opcionales) podremos
necesidad. No existía ningún pro- Olivar de Quintos (Dos Hermanas- Sevi- crear nuestras actividades. Además, como
grama para trabajar en el aula con alum- lla). Además, con la ayuda del Centro de cualquier aplicación escrita en Java, nece-
nos de educación infantil y que fuese Profesorado de Alcalá de Guadaira, monta- sitamos JRE (Java Runtime Enviroment)
adaptable a las necesidades de este tipo de mos un aula con guadalinex. El programa y/o el JDK (Java Development Kit) para
alumnos, es decir, que se pudiese configu- toma el nombre del Centro donde se probó ser ejecutada. Para la versión 0.1.4 de Oli-
rar para aquello que se estaba estudiando. por primera vez. Por ese aula pasaron var Alumno se necesitan tener instaladas
Un grupo de dos maestras, un profesor de niños de tres a cinco años y las conclusio- al menos las versiones 1.6 de JRE y JDK.
inglés y yo como director del proyecto nos nes muy resumidas son las siguientes: Ambos productos son propiedad de Sun
presentamos a las ayudas a proyectos para • El grado de atención con los alumnos en Microsystems y podemos obtenerlos gra-
la elaboración de materiales de apoyo al el nuevo medio (los ordenadores) sor- tuitamente de su página web o bien de los
desarrollo del currículo en soporte infor- prendió a todos los profesores, ya que repositorios de su distribución. Olivar pro-
mático o para su utilización en la red en la no se aburrían y no se cansaban de utili- fesor funciona en cualquier sistema opera-
convocatoria del 2006, resultando apro- zar el ordenador. tivo, pero Olivar alumno sólo funciona en
bado por la Consejeria de Educación de la • Pese a la complejidad de algunas de las distribuciones Linux.
Junta de Andalucía. Nos pusimos a traba- actividades propuestas, los alumnos, en
jar. Lo que surge de las distintas reuniones, contra de lo que nos parecía a los docen- ¿Sólo para Niños?
así como la programación posterior fue el tes, resolvieron las actividades sin difi- La respuesta tras el uso de casi seis meses
programa que puede descargarse gratuita- cultad. es que no. Puede ser usado por cualquier
mente desde [1]. En esa dirección, además • Los grupos de alumnos no eran homo- persona que tenga la necesidad de utilizar
de compartir el proyecto, podremos des- géneos, es decir, se eligieron algunos a una de las actividades que pueden reali-
cargarnos las aplicaciones Olivar alumno, los que incluso no les gustaba el medio, zarse con el programa. Así en cualquier
Olivar profesor y consultar los manuales y aun así la respuesta fue muy positiva. ámbito de la educación infantil y primaria,
on-line. • La solución de los alumnos a las activi- y como herramienta para alumnos de com-
dades propuestas, así como la soltura en pensatoria y de necesidades educativas
Los Comienzos el uso del ratón sorprendieron a los pre- especiales.
Finalizando la primavera de 2007, cuando sentes en la prueba. Por ejemplo, nadie Cuando empezamos con Olivar pensa-
sólo estaba desarrollado una parte del pro- pensaba que pudiesen resolver el mos en realizar una herramienta que fuese
grama, nos vimos en la necesidad de pro- puzzle ni dibujar con el ratón como lo bilingüe, por ello todos los enunciados
barlo. ¿Y si era demasiado complicado hicieron. sonarán por los altavoces en dos idiomas,
para los niños? ¿Tendría mucha compleji- primero en castellano y posteriormente en
dad para un aula de niños de 3 a 5 años de Cómo Utilizarlo inglés. Además tendremos la posibilidad
edad? Lo que a nosotros nos parecía muy La materia prima es bien sencilla de obte- de trabajar con textos y sonidos en dos
fácil, pudiera no serlo para un niño. Con ner: Con sólo imágenes y la creación de un idiomas.

80 Número 39 WWW.LINUX- MAGAZINE.ES


Educación: Olivar • LINUX USER

Olivar Profesor. Para modificar cualquier texto o


Antes de usar Olivar profesor debemos imagen que hayamos añadido bas-
instalarlo. La instalación es muy sencilla tará con hacer clic con el ratón en
desde un terminal. En el lugar donde nos la tabla sobre lo que pretendemos
descargamos el programa escribimos: modificar. Para eliminarla debere-
mos estar situados sobre ella y pul-
$java -jar InstallU sar el botón de Eliminar (está junto
OlivarProfesor.jar al de Agregar). Es obligatorio relle-
nar al menos Imagen, Texto 1
La aplicación arrancará, y tras unos senci- idioma, siendo opcional el resto.
llos pasos podremos ejecutarla. Para ello Lo que vamos a realizar con Oli-
nos situaremos en el directorio en el que se varprofesor es una configuración
instaló. Normalmente en /home/usuario/ de las distintas actividades que
Olivar/profesor. Reemplazaremos usuario deseemos utilizar, posteriormente Figura 1: Programa Olivar profesor.
por el nombre de usuario, con lo cual en OlivarAlumno se usarán aqué-
escribiremos: llas que se encuentren aquí configuradas, lario puede ser el habitual del fútbol:
y algo muy importante: las actividades se campo de juego, equipo, árbitro, portería,
$cd /home/usuario/Olivar/U generan de forma aleatoria, por lo que el etc. Introduciendo las imágenes correspon-
profesor/bin resultado en dos ordenadores es total- dientes y recomendablemente el sonido.
$java -jar OlivarProfesor.jar mente distinto. Debemos configurar cómo deseamos las
Habíamos comentado antes que cada pasadas de la presentación, que siempre
Ahora seleccionaremos Proyecto-Nuevo e vez que añadíamos una imagen con su serán tres, y dependiendo de la
indicaremos la ubicación, el nombre del texto, ésta se añadía a todos y cada uno de configuración que realicemos además de la
proyecto y el (los) autores del mismo. los desplegables que tienen las distintas imagen (que siempre se muestra), se mos-
Con esto debemos tener la imagen de la pestañas de las actividades. Pasemos, trará el texto y/o escucharemos los soni-
Figura 1. En ella podemos observar dos pues, a configurar las actividades teniendo dos.
partes.En la superior seleccionamos las en cuenta las características y las restric- La parte derecha es una actividad de
imágenes con las que deseamos configurar ciones de cada una de ellas. Tan sólo están relacionar el texto con la imagen, y debe-
las actividades, el lugar para escribir el visibles ocho pestañas de actividades. Para mos seleccionar tres imágenes distintas.
texto y el fichero de sonido (opcional). que aparezcan más debemos pulsar sobre Esta configuración nos dará como resul-
Además, como se comentó anteriormente, la flecha que aparece en la parte de dere- tado en OlivarAlumno que podamos reali-
es bilingüe, por lo que el texto descriptivo cha de la pantalla junto a Adivinan… zar las dos actividades dentro del rincón
y el sonido pueden ser insertados en el Lo más importante es que lo que se estu- de vocabulario.
segundo idioma. die en un proyecto debe ser homogéneo, La primera que hemos configurado reali-
es decir, podemos realizar un proyecto zará las pasadas en formato presentación
Actividades. sobre cualquier cosa, pero es importante tal y como se hayan indicado en el pró-
Hemos repetido varias veces que sólo que se estudie lo mismo a lo largo de las grama de profesor. La segunda actividad
necesitamos imágenes y texto, y así es. El distintas actividades que nos permita el nos permitirá relacionar el texto a la ima-
texto es meramente descriptivo y sólo es proyecto. Vamos a desarrollar un proyecto gen (pinchando y arrastrando el texto
necesario escribir algo en una actividad, suponiendo que deseamos estudiar el fút- hacia la imagen) y, si tiene sonido, tendre-
pero todo es muy sencillo. Para el formato bol, y realizaremos la configuración de las mos la posibilidad de escucharlo. Aquí
de las imágenes podemos usar las habitua- actividades para que el objetivo sea el fút- podremos observar si el alumno sabe rela-
les JPG, GIF o PNG. bol. cionar la gráfia con el dibujo.
Con las pestañas de actividades configu- Actividad Colores En OlivarProfesor
raremos las actividades que serán usadas. Actividad Vocabulario. esta actividad se realiza para que se distin-
Sólo las que se configuren en Olivar profe- Partimos desde el programa del profesor. gan los diferentes colores. Tenemos que
sor se activarán posteriormente en Olivar Esta pestaña es una de las que configuran seleccionar diez imágenes, e indicaremos
Alumno. Si bien tenemos dieciocho activi- dos tipos de actividades. La parte el color de cada una. Por ejemplo, para
dades, tan sólo tenemos dieciséis pestañas izquierda configura una especie de presen- esta actividad podemos seleccionar varios
para configurarlas, ya que en dos de ellas tación, en la que pasarán las imágenes, equipos de fútbol cada uno con un color
se configuran dos actividades. tres veces. Es una especie de programa de claramente definido, e indicar cual es el
Rellenemos la parte superior: Imagen, presentaciones integrado en el programa color de dichas equipaciones en el desple-
Sonido 1 idioma, Texto 1 idioma y pulsa- de alumno. gable de al lado. De igual forma podríamos
mos el botón de Agregar. Esto realiza dos Aquí vamos a configurar el vocabulario añadir las equipaciones arbitrales como
cosas: la primera añade a la tabla de la que deseamos que el alumno conozca. color negro.
parte inferior la información que acaba- Para ello reconocerá la grafía, asociándola Olivaralumno eligirá aleatoriamente el
mos de rellenar, la segunda añade el texto con el sonido. Éste puede ser en dos idio- color que debe marcar el alumno. La per-
a los distintos desplegables que tenemos mas. Para un segundo idioma usaríamos sona que use este programa deberá marcar
en las distintas pestañas de las actividades. Texto2, y sonido2. En este caso el vocabu- el color que aparezca en el recuadro.

WWW.LINUX- MAGAZINE.ES Número 39 81


LINUX USER • Educación: Olivar

dan realizar esta actividad. La adivinanzas, leerlas y marcar la correcta


opción de activar o desactivar nos de entre tres opciones. Las otras dos imá-
permite que la imagen secundaria genes las coge el programa de alumno ale-
se muestre o no. atoriamente entre las cargadas en el pro-
Actividad Completar Palabras grama.
En esta actividad se debe seleccio- Actividad Relaciona Texto e Imagen
nar la imagen con el desplegable y En el programa Olivar profesor deberemos
escribir al lado la palabra que dese- escribir el texto que deseamos asociar a la
amos completar. En nuestro caso imagen, teniendo en cuenta que debemos
podemos tomar tres objetos rela- seleccionar tres imágenes distintas y escri-
cionados con el fútbol, como el bir la descripción. Para esta actividad
balón, la portería y el banderín del basta con seleccionar alguna de las imáge-
Figura 2: Menú principal de Olivar alumno. córner. Rellenamos las tres imáge- nes anteriores, como por ejemplo, portería
nes y colocamos las palabras aso- o balón, teniendo que escribir nueva-
Actividad Rodea la Imagen En el pro- ciadas. mente su grafía. Es similar a una actividad
grama de profesor debemos indicar lo que Posteriormente, en el programa alumno, que anteriormente hemos visto, la diferen-
se estudia en el proyecto. Cada proyecto es eliminará aleatoriamente una de las letras cia es que en este caso el alumno cuando
para estudiar algo: “insectos”, “medio de cada una de las palabras. En la parte de use Olivaralumno no escuchará sonidos,
ambiente”, “historia”, “los piratas”, “el abajo aparecerán distintas letras para que sino que deberá reconocer la grafía y pin-
cuerpo humano” y, en nuestro caso, “el el alumno las arrastre y complete las pala- char y arrastrar la misma a la imagen
fútbol”. Debemos indicar algo que se bras. correcta. Hay que tener en cuenta que sólo
encuentre dentro del proyecto que desea- Actividad Cuento Esta actividad es la se muestran en el programa de alumno
mos estudiar, por ejemplo una portería de más creativa. Lo único que requiere son dos imágenes de las tres seleccionadas.
fútbol, una equipo… y además tendremos seis imágenes diferentes en el programa Éstas se eligen en cada turno de manera
que indicar algo que se encuentre fuera del Olivarprofesor. En nuestro caso puede ser aleatoria.
proyecto y que esté poco relacionado con la secuencia de un partido de fútbol, en Actividad Creativo En esta pestaña se
el mismo, por ejemplo, una imagen de una una serie de seis imágenes. configuran dos actividades. La primera es
canasta de baloncesto. Señalando la Posteriormente, en el programa Olivara- una imagen que debe ser de fondo trans-
opción como correcta le indicamos si per- lumno se podrán ordenar como se deseen, parente. Ésta puede ser la de un futbolista
tenece al proyecto, y con la opción de inco- no existiendo en este caso una respuesta o un campo de fútbol. Posteriormente en
rrecto le indicamos si está fuera del correcta o incorrecta, ya que se permite el programa de alumno se mostrará la ima-
mismo. que el alumno use la secuencia de imáge- gen para que el alumno la dibuje seleccio-
Posteriormente, el programa de alumno nes que él desee para inventar su propio nando el grosor del pincel y el color del
en esta actividad nos pedirá que marque- cuento o historia. A pesar de ello, existe la dibujo.
mos aquéllo que hemos estudiado, y con- posibilidad de que le contemos un cuento La segunda actividad es una imagen
siste en arrastrar el círculo verde a lo que al alumno y éste tenga que ordenar la para que el alumno la complete, bien por-
hayamos marcado como correcto y el cír- secuencia de imágenes en función de la que le falte algo o un dibujo por simetría.
culo rojo a lo que hemos marcado como historia que le hemos contado. Aquí podemos seleccionar el dibujo de una
incorrecto. Actividad Sílabas En esta actividad el portería incompleta, o un campo de fútbol
Actividad Cuenta Partes La idea tras profesor ha de indicarle mediante números al que le falte una parte del dibujo. Las
esta actividad es que se cuenten cuántas las sílabas de cada una de las imágenes en paletas y los colores son similares en el
partes tiene un determinada imagen. Para el programa de profesor. Podemos, por programa de alumno a las comentadas
que quede correctamente definida necesi- ejemplo, seleccionar la imagen de un anteriormente.
tamos la imagen principal y las imágenes balón (2), futbolista (4) y bota (2). Actividad Memory Aquí basta con
secundarias que, como máximo, serán En el programa de alumno aparecerán seleccionar seis imágenes distintas en los
tres. Por ejemplo, la imagen principal los números desde el 1 hasta el 10,
puede ser una persona, un futbolista en y el alumno deberá arrastrarlos
nuestro caso, y las secundarias brazos o indicando el numero de silabas de
piernas, de forma que el alumno tenga que cada uno de las palabras de las
contar cuántos brazos o piernas aparecen imágenes seleccionadas anterior-
en la imagen. Además de la imagen princi- mente.
pal se necesitan las imágenes secundarias, Actividad Adivinanza Podemos
es decir, imágenes de los brazos o de las escribir en dos lenguas la adivi-
piernas, y la cantidad de cada una de ellos nanza, y se puede grabar con dos
en la imagen principal. Existe la opción de sonidos. Debemos indicar la ima-
que, en lugar de números, el alumno gen que se asocie con la solución
pueda señalar palitos (tantos como se indi- de la adivinanza. Posteriormente,
quen). Esto permite que los alumnos que en el programa de alumno se nos
no conozcan la grafía de los números pue- dará la posibilidad de escuchar las Figura 3: Rincón lógico matemático de Olivar alumno.

82 Número 39 WWW.LINUX- MAGAZINE.ES


Educación: Olivar • LINUX USER

seis desplegables. Podemos, por ejemplo, hayamos introducido en el pro-


cargar seis equipaciones de fútbol. grama del profesor. Se mostrarán
En el programa de alumno se mostrará un cierto numero de veces, presen-
posteriormente el juego de Memory con tándose también la grafía del
las equipaciones como si fuesen cartas, de numero. A diferencia de la anterior
forma que el alumno deba encontrar las actividad, que muestra todas las
parejas de entre las doce cartas que se imágenes iguales juntas, en ésta se
muestran. mezclan las distintas imágenes en
Actividad Laberinto En el programa de la pantalla. De esta forma el
profesor se nos solicita la imagen inicial y alumno deberá asociar el número
la final para crear el laberinto, en este caso de veces que aparecen cada una de
podemos seleccionar un balón como ima- las imágenes a la imagen que se
gen de inicio y la portería como imagen de muestra en la parte inferior.
final. Actividad Serie Consiste en Figura 4: Olivar alumno. Memory.
Posteriormente en el programa de seleccionar cuatro imágenes y el
alumno aparecerán las imágenes de inicio tamaño que deben tener cada una de las El programa de alumno siempre reali-
y de fin. Junto a la imagen de inicio apa- series. Las series pueden contener 2 ó 3 zará una respuesta a la actividad bien
rece el numero uno (1) y habrá un camino imágenes. Para configurar las series es mediante señales sonoras, bien mediante
de números hasta la imagen final. No suficiente con seleccionar cuatro de las un símbolo verde o rojo, indicando que
sabemos cuántos números habrá, ya que imágenes de las que se han cargado pre- todo va bien o que se ha producido algún
el camino será aleatorio. El alumno debe ir viamente de, en nuestro caso, fútbol. Por fallo.
marcando los números que forman parte ejemplo, podemos seleccionar el balón, el Esta aplicación está pensada para que
del camino. No importa que no los marque árbitro, etc. funcione en el ordenador tal y como los
en orden, pero cada vez que los marque Posteriormente el programa de alumno alumnos de la etapa de infantil tienen
correctamente el numero se coloreará en creará automáticamente dos series de los organizada el aula: por rincones. Así las
verde, y cuando lo haga de forma inco- tamaños configurados, y los alumnos las actividades se agruparán dentro de los
rrecta se coloreará en rojo. completarán arrastrando cada una de las siguientes rincones:
Actividad Puzzle En el programa de imágenes que nos muestran. • Rincón de Vocabulario.
profesor se debe seleccionar la imagen que Los ficheros usados, tanto imágenes • Rincón del Explorador.
deseamos que se realice, el puzzle y el como sonidos, son renombrados (interna- • Rincón del Escritor.
tamaño del mismo, es decir 2x2 o bien mente por parte de la aplicación) durante • Rincón de Biblioteca.
3x3. En nuestro caso podemos coger la el uso de la misma, por lo que es normal • Rincón Creativo.
imagen de un estadio de fútbol. que en lugar del nombre original observe- • Rincón Lógico-Matemático
El programa de alumno nos mostrará el mos números. Dentro de cada uno de los rincones se
puzzle dividido en el numero de piezas encontrarán las actividades que hemos
que se configuraron antes y el patrón de Creando las Actividades configurado en Olivarprofesor. Aquellas
muestra. El juego consiste en arrastrar y Una vez configuradas las actividades pul- actividades que no hemos configurado
soltar, colocándose la otra pieza en su samos en el botón de Generar. Sólo queda aparecerán desactivadas. En la parte infe-
sitio. llevarnos o usar el proyecto en Olivara- rior de la aplicación tendremos tres boto-
Actividad Número y Cantidad En este lumno. El tamaño final del proyecto nes que nos permitirán volver a la pantalla
caso seleccionamos cuatro imágenes dis- dependerá del tamaño de las imágenes y anterior, reiniciar la actividad y pasar a la
tintas de los desplegables y se realizará la de los ficheros de sonido. Y puede ocupar actividad siguiente.
actividad. Las imágenes podrían ser cual- unos pocos de kilobytes o bastantes Una vez abierta la aplicación, ésta nos
quiera de las cargadas, como por ejemplo, megabytes. Para llevar las actividades a mostrará una pantalla solicitándonos el
cuatro equipaciones de fútbol de distintos Olivaralumno copiaremos la carpeta que nombre del proyecto. Debemos seleccio-
colores. hemos creado en el proyecto con todo el nar únicamente la carpeta en la que hemos
Posteriormente, en el programa de contenido hasta el ordenador en el que se almacenado el proyecto, y los alumnos
alumno aparecerán tres de las imágenes ejecutará Olivaralumno. Este paso nos lo podrán empezar a trabajar en las tareas.
una serie de veces y el numero para que podremos saltar si la aplicación de alum- Los creadores de Olivar os animamos a
éste sea asociado al numero de veces que nos se ejecuta en el mismo ordenador que probar el programa y a que compartáis los
aparece la imagen. el del profesor. proyectos que realicéis. En breve podréis
Actividad Cuenta Objetos En esta acti- subirlos a la web que se indica en el apar-
vidad basta con que seleccionemos cuatro Olivar Alumno. tado subir tu proyecto. ■
imágenes distintas de las que hemos car- La instalación del programa de los alum-
gado. Éstas podrían ser un balón, un nos es similar a la comentada para el del RECURSOS
equipo de fútbol, la portería y el árbitro. profesor, con la única diferencia que debe
[1] Página del Proyecto Olivar: http://
Posteriormente aparecerán en el pro- realizarla el usuario root del sistema y que,
www.juntadeandalucia.es/averroes/
grama de alumno tres imágenes aleatoria- lógicamente, el programa que hay que ins- olivar
mente seleccionadas de los cuatro que talar es el fuente OlivaAlumno.jar.

WWW.LINUX- MAGAZINE.ES Número 39 83


LINUX USER • Línea de Comandos: Uso de Udev

Uso de udev

JUNGLA DE
DISPOSITIVOS

www.sxc.hu
Aprende a crear tus propias reglas udev y a utilizar las herramientas

de la línea de comandos para monitorizar y controlar eventos udev

que despejen el camino a través de la jungla de dispositivos de Linux.

POR HEIKE JURZIK

E
n los últimos años Linux ha progre- refieran cómo descubrir el nombre de dis- sitivo. Sólo tiene sentido que el nombre de
sado en el campo de la detección y positivo y cómo manejarlo. un dispositivo desaparezca cuando desco-
administración de hardware. Los nectamos el hardware correspondiente. Lo
días en los que los ficheros de dispositivo Garaje de Dispositivos que mantiene al directorio limpio y diná-
estáticos se apiñaban bajo el directorio /dev El “repositorio” udev es el directorio /dev, mico, evitando al mismo tiempo que el
hace tiempo que se han ido. También en el cual residen los ficheros de dispositivo usuario se confunda sobre el cambio de los
Devfs está obsoleto. Desde el kernel 2.6, que permiten a las aplicaciones el acceso al nombres de dispositivo, son las reglas udev.
udev [1] ha sido responsable de la manipu- hardware. Si miramos dentro de la carpeta,
lación tanto del sistema de ficheros de dis- podremos ver no sólo los nombres de los Listado 1: Reglas
positivo como de Hotplug, el cual incluye ficheros de nuestros discos duros y particio- 01 $ ls -la /etc/udev/rules.d/
las configuraciones de los ficheros requeri- nes (por ejemplo, sda, as en sad1, sda2),
02 ...
dos, configuraciones de permisos y opcio- sino también ficheros para dispositivos tipo
nalmente el arranque de determinados pro- CD y DVD (un symlink a cdrom normal- 03 lrwxrwxrwx 1 root root 20
gramas. mente apunta hacia un dispositivo 2007-05-09 23:40 020_
“genuino”, por ejemplo, hdc), puertos serie permissions.rules -> ../
Espacio de Usuario (por ejemplo, ttySO, ttyS1), etc. (Figura 1). permissions.rules
En contraste con sus predecesores, udev se El sistema operativo almacena el conte-
lrwxrwxrwx 1 root root 19
ejecuta en espacio de usuario, es decir, nido de la carpeta /dev en un sistema de
como un programa normal. Esto supone fichero temporal, tal y como puede verse 2007-05-10 00:39 025_
algunas ventajas, incluyendo la liberación listando el RIS montado: libgphoto2.rules -> ../
del kernel bajo la responsabilidad de la libgphoto2.rules
administración y el nombramiento de dis- $ mount 05 lrwxrwxrwx 1 root root 16
positivos adjuntados, los cuales facilitan la ...
2007-05-10 00:39 025_libsane.
configuración. udev on /dev type tmpfs (rw,mode
Udev tiene más beneficios para los usua- =0755) rules -> ../libsane.rules
rios. Por ejemplo, podemos elegir nuestros ... 06 ...
nombres de dispositivo y las asignaciones 07 lrwxrwxrwx 1 root root 12
de hardware son siempre únicas. Linux siempre configura los ficheros en /dev 2007-05-10 00:36 z99_hal.rules
Para que todo se mantenga ejecutándose en el tiempo de arranque, aunque también
-> ../hal.rules
sin problemas, udev necesita reglas que lo hace cuando se conecta un nuevo dispo-

84 Número 39 WWW.LINUX- MAGAZINE.ES


Línea de Comandos: Uso de Udev • LINUX USER

orden alfa- Paso a Paso


bético Evidentemente, podríamos conectar el disco,
cuando ocu- esperar hasta que esté correctamente mon-
rre un tado, descubrir a continuación los puntos de
evento. Este montaje y arrancar un script para realizar la
método ase- copia para completar el trabajo. Gracias a
gura que las udev podamos ahorrarnos unos cuantos
reglas críti- pasos. Para hacerlo necesitamos crear una
cas se pro- regla que asigne automáticamente el mismo
cesen pri- nombre de dispositivo al disco duro. Si lo
mero. El deseamos, podemos añadir un comando
último sitio montador a la regla o ejecutar un script shell
donde se para iniciar la copia.
apea es nor- En primer lugar necesitamos alguna infor-
malmente mación del dispositivo. Para averiguarlo
en el demo- podemos usar el programa lsusb (Listado 2).
nio HAL Es aconsejable anotar los detalles que siguen:
Figura 1: El garaje donde aparcan los dispositivos Linux está localizado en la (udev noti- iVendor, idProduct o Serial, necesarios para
carpeta /dev. fica el identificar únicamente el dispositivo.
demonio del
Reglas Udev nuevo dispositivo). Creando Nuestra Propia
Varios ficheros de reglas, localizados en Si ojeamos detenidamente un fichero- Regla
/etc/udev/rules.d/, controlan el comporta- regla descubriremos una o múltiples ins- Ahora necesitamos escribir un nuevo fichero
miento de udev. Algunas distribuciones, trucciones en una única línea (sin interrup- regla, que residirá en /etc/udev/rules.d. Como
como Debian, usan enlaces simbólicos en ciones en ella). Las instrucciones contienen root, arrancamos nuestro editor favorito para
este último directorio para señalar a las varias condiciones separadas por coma y crear el fichero.
reglas en /etc/udev/. comandos de control. Usamos un solo número para insertar la
Como puede verse en el Listado 1, las Soporta comodines de estilo shell, como regla en la secuencia existente y añadimos el
reglas se enumeran o comienzan con una *, ?, […], etc. Además se usan típicamente prefijo .rules. En mi sistema de prueba Debian
letra porque udev recorre el directorio en varios operadores (Tabla 1). La Tabla 2 Etch, asigné el nombre z98_usb-platte.rules al
muestra una perspectiva de las constantes fichero, y luego añadí el siguiente contenido:
GLOSARIO y variables más frecuentemente usadas. La
página man (man udev) también dispone SUBSYSTEM==”block”,
Devfs: El predecesor de udev. A partir de una lista completa de operadores, cons- SYSFS{idProduct}==”2338”,
del kernel 2.4, el sistema de ficheros de
tantes y variables. SYSFS{idVendor}==”152d”,
dispositivo fue responsable de la admi-
La creación de reglas udev propias, es NAME=”backup”
nistración de ficheros en el directorio
decir, la extensión de la funcionalidad de
/dev. Las tareas Devfs incluían la
creación y borrado de ficheros de dis-
detección de hardware, es bastante fácil. Si Aparte de decir que el dispositivo es un dis-
positivos para medios renovables. Por usamos dispositivos de memoria USB positivo de bloques, la regla declara la
encima de esto, Devfs fue responsable externos, se les asignarán nombres dife- información idProduct y idVendor descu-
de los derechos de administración y de rentes dependiendo del orden en el que los bierta ejecutando lsusb y luego especifica el
esta manera controlaba el acceso de los conectemos. En este caso, asumiremos que nombre del fichero de dispositivo.
usuarios a los dispositivos. tenemos un disco duro en el que grabamos Ejecutando como root el comando
Hotplug: El sistema Hotplug controla la copias de seguridad de nuestros datos regu-
inicialización hardware, lo que significa larmente. udevcontrol reload_rules
cualquier hardware descubierto en el
curso del proceso de arranque además Tabla 1: Operadores
de los dispositivos que se añaden y
eliminan en el momento de ejecución. Operador Tipo Significado
== Comparación Verdadero si la segunda expre
Espacio de Usuario: Área de memoria
sión es idéntica
reservada para las aplicaciones usuario
!= Comparación Verdadero si las dos expre
(por ejemplo, para programas y datos
siones no son idénticas
que no están directamente relacionados
= Asignación Asigna el valor de la derecha a
con el kernel).
la expresión a la izquierda
HAL: Hardware Abstraction Layer. El := Asignación Como =, protege la parte
demonio HAL suministra los detalles de izquierda de los últimos cam
dispositivos disponibles a programas bios
(por ejemplo, información del driver, += Asignación Añade el valor de la derecha al
tipos de dispositivos, etc). de la izquierda

WWW.LINUX- MAGAZINE.ES Número 39 85


LINUX USER • Línea de Comandos: Uso de Udev

DEVNAME=/dev/backup /dev/backup /media/backup ext3


Listado 2: Isusb ... users, atime, noauto, rw, nodev,
01 $ lsusb -v exec, nosuid 0 0
02 ... Si chequeamos rápidamente el directorio
/dev veremos que udev ha creado realmente Esto nos permitiría añadir el comando de
03 Bus 003 Device 010: ID
un fichero de dispositivo /dev/backup, tal y montaje al script de backup para asegurar
04 152d:2338 como se le ordenó. Si desconectamos el que el disco externo se ha montado antes
Device Descriptor: disco USB, la entrada desaparece de nuevo. de hacer la copia de los datos. En la regla
05 ... udev, a continuación sustituiríamos ”/
¿Montaje o Script? bin/mount… por la ruta al script de back-
06 idVendor 0x152d
Tal y como muestra la Tabla 2, podemos up
07 idProduct 0x2338 usar RUN para definir el programa a ejecu-
08 bcdDevice 1.00 tar en nuestro fichero regla. ..., RUN+=”/home/chicken/bin/ U
09 iManufacturer 1 Si queremos montar /dev/backup en un backup.sh”
solo paso, podemos extender la regla de la
10 iProduct 2 Evitando el Caos de NIC
siguiente manera
11 iSerial 5 Si nuestro ordenador tiene una única tar-
12 bNumConfigurations 1 SUBSYSTEM==”block”, jeta Ethernet, probablemente se le domine
SYSFS{idProduct}==”2338”, con el nombre de eth0. Si añadimos una
13 ...
SYSFS{idVendor}==”152d”, segunda, como un dispositivo WLAN, a la
NAME=”backup”, RUN+=”/bin/mount máquina, la tarjeta podría ser ath0 o eth1,
reanaliza las reglas. Alternativamente, /dev/backup /media/backup” dependiendo del driver. Si preferimos que
podemos desconectar nuestro dispositivo todas nuestras tarjetas de red usen los mis-
USB y volverlo a conectar luego. La herra- Debemos asegurarnos de introducir la ruta mos nombres, deberíamos crear una regla
mienta udevmonitor nos muestra lo que completa al programa (/bin/mount, en este para reforzar este comportamiento. En vez
está pasando detrás. En combinación con caso), aunque necesitamos crear primero el de idProduct o de idVendor escribimos la
la opción - -env se hace más prolija y mues- punto de montaje /media/backup con el dirección MAC para nuestro NIC, como se
tra varios detalles relacionados con la regla comando mkdir como root: muestra después de SYSFS{address}. Para
en la máquina de prueba: descubrir el MAC, podemos ejecutar ifcon-
$ mkdir /media/backup fig:
# udevmonitor —env
... A continuación podemos arrancar el pro- $ /sbin/ifconfig
ACTION=add grama copia de seguridad manualmente. eth0 Protocol:Ethernet
DEVPATH=/block/sda/sda1 Como alternativa, podríamos crear una Hardware Address
SUBSYSTEM=block entrada para el dispositivo en nuestro 00:10:A7:21:36:7C
... fichero /etc/fstab como sigue: ...
ath0 Protocol:Ethernet Hardware
Tabla 2: Udev: Constantes y Variables Address 00:00:c0:77:D8:F5
...
Nombre Significado
ACTION Evento, o add o remove
El Listado 3 muestra cómo crear una regla
SUBSYSTEM Dispositivo tipo, por ejemplo, usb_device, block, etc
de coincidencia. ■
BUS Dispositivo del sistema bus, por ejemplo, ieee1394 o
usb
ID Dispositivo ID (en relación al bus) Listado 3: Regla de
NAME Nombre del dispositivo de red (eth0, eth1, etc) o el Coincidencia
fichero de dispositivo en /dev 01 KERNEL==”eth*”,
KERNEL Nombre de dispositivo de acuerdo al kernel SYSFS{address}==”00:10:
SYSFS{Datos} Usa información de varios ficheros en /sys (contiene A7:21:36:7C”, NAME=”eth0”
detalles hardware); máximo de 5 constantes SYSFS
por regla KERNEL==”eth*”,

OWNER Propietario (nombre de usuario o UID) SYSFS{address}==”00:00:C0:77:


GROUP Grupo (nombre o GID) D8:F5”, NAME=”wlan0”
MODE Permisos (número octal)
RUN Ejecuta el programa especificado
SYMLINK Crea un enlace simbólico que señala al nombre pro RECURSOS
pio de dispositivo [1] Página de inicio de udev: http://www.
GOTO Salta a una etiqueta específica kernel.org/pub/linux/utils/kernel/
LABEL Nombre de etiqueta hotplug/udev.html

86 Número 39 WWW.LINUX- MAGAZINE.ES


Juegos: MUDs III • LINUX USER

Multi-User Dungeons al descubierto (III)

EL COFRE DORADO
Completamos nuestra serie de artículos sobre MUD’s con esta tercera entrega. En ella pretendemos dar a

conocer una herramienta más avanzada de creación que nos permitirá añadirle a nuestra obra interactividad,

misiones, y en definitiva darle ese toque personal que lo diferenciará del resto: el lenguaje MUSHcode.

POR VICENTE CARRO

E
s posible que el lector más ave- @create vaso; marcaría para ser destruido “después”.
zado se haya dado cuenta de que @adrop vaso=: se resbala cuandoU Si probamos a dejar el vaso…
con el uso de los comandos admi- lo estas dejando... y se
nistrativos que se vieron en la anterior rompe;U drop vaso
entrega de esta serie de artículos sólo se @recycle
puede conseguir crear un mundo con me;@recycle me; Vemos cómo aparece el texto adecuado y
posibilidades muy limitadas. Para solucio- el vaso se destruye, ya no está.
nar esta limitación únicamente existen
dos alternativas, que los expertos llaman Con Retraso
softcoding y hardcoding. Podemos retrasar (re)acciones en
El harcoding consiste en progra- el tiempo. Para ello usaremos el
mar directamente la modificación comando @wait segundos= que
deseada en el código del servidor detendrá la secuencia durante
MUD, lo cual requiere una destreza tantos segundos como se le indi-
programando que pocos lectores ten- que. Veamos un ejemplo:
drán. El softcoding en cambio es un
lenguaje de scripting (algo similar a la @create rosa
programación, pero mucho más sim- @adrop rosa=
ple) asequible a cualquiera que @pemit %#=
invierta algún tiempo en aprender. DejasU
En el servidor pennmush, el que la rosa
se usa en estos artículos, se utiliza el cuidadosamente
lenguaje MUSHcode[1], que vamos a en elU
presentar a continuación. suelo.;@wait
3=@pemit
Un Mínimo de Teoría %#=PeroU
Antes de empezar con la programación En la segunda línea, @adrop vaso= es un es tan bonita la
hay que conocer unos “sustitutos” que se comando que define que la acción que rosa queU
usarán luego. Cada acción realizada en un activará la reacción será drop vaso. Des- quieres recogerla de nuevo;U
MUD tiene un enactor y un objeto. El pués aparecerá el
enactor es el jugador que realiza la acción, texto : se resbala… Tabla 1: Sustituciones
mientras que el objeto se refiere al objeto/ …rompe, además
persona/habitación sobre el que se realiza tenemos que saber código Qué representa
la acción (ver la Tabla 1: Sustituciones). que los : se traducirán %N el enactor, nombre del personaje
%n igual pero en minúsculas
NOTA: Las tres últimas sustituciones de por el nombre del
%l el identificador numérico de habitación de la
la lista pueden dar problemas en idiomas objeto. A continua-
acción
que no sean el inglés. ción aparece un ; que
%# identificador numérico del enactor
separa diferentes
Acción y Reacción acciones. Y por
%! el objeto accionado
%0 el primer trozo del comando ejecutado, existen
Casi toda la programación MUSHcode se último dos @recycle
del %0 al %9
basa en el principio de acción-reacción. me. Esto es un truco
%s artículo relativo al objeto
Una secuencia de acciones (reacción) se para destruir comple- %o pronombre objeto (del inglés) relativo al objeto
ejecutará cuando pase algo concreto tamente un objeto. %p posesivo relativo al objeto
(acción). Por ejemplo: Hacerlo una vez lo

WWW.LINUX- MAGAZINE.ES Número 39 87


LINUX USER • Juegos: MUDs III

elementos del comando (aunque la


Listado 1: Creación de la Llave y la Naranja forma de separarlos puede cambiar de
01 @create llave (#4) un comando a otro). Y si antes (en las
02 @desc llave=Preciosa llave dorada que encaja en la cerradura de la sustituciones) comentamos que %0 era
palanca. el primer elemento de una cadena,
03 give llave to viejo entonces %1 será el segundo. Es decir
@switch %1 reaccionará de acuerdo a la
04
orden que le den al perro.
05 @create naranja (#6) La forma de usar un switch es: @switch
06 @desc naranja=Jugosa y gran naranja. variable=valor,accion,valor,accion,valor
07 @asucc naranja = @emit ”El viejo te dice -Traeme esa naranja, ,accion… Así en nuestro ejemplo “sién-
viajero. Ten esto a cambio.”; @wait 2 = { @emit ”Se la das y te tate”,“da vueltas” y “hazte el muerto”
lanza una llave que acaba en el suelo.”; @tel #4=#10} son las distintas órdenes posibles que le
podemos dar al perro. A continuación de
08 drop naranja
cada una, y separadas por comas, ven-
drán las acciones asociadas a esa orden.
@wait 6=@emit ¡NecesitasU @create perro Lo probamos:
esa rosa! @listen perro=*”perro, *”
@ahear perro=@switchU drop perro
Ahora no usamos : porque no queremos %1=sientate,:se sienta.,daU “perro, hazte el muerto
que aparezca la palabra “rosa” al princi- vueltas,:da vueltasU Dices ”perro, hazte el muerto”
pio. En su defecto usaremos @pemit para felizmente.,hazte el muerto,:U perro se hace el muerto
enviar un mensaje únicamente al jugador se hace el muerto.
(%#, ver Tabla 1: Sustituciones). Este ¿Está Vivo?
código muestra un mensaje. A los 3 @listen perro= permite que el objeto La diferencia entre un objeto y un ser “vivo”
segundos aparecerá otro, y finalmente oiga, pero sólo las frases de cualquier puede ser tan simple como que se le haya
otros 3 segundos más tarde un último persona (*) que empiecen por “perro, . dado la capacidad de oír, como al perro del
mensaje. La tercera línea va a definir reacciones ejemplo anterior. Además también conta-
Obsérvese que el wait 6 empieza a con- cuando el perro escuche (@a hear mos con atributos, unos valores libres que
tar desde el principio de la ejecución del perro=”). Pero como las acciones van a podemos configurar para cada sujeto. La
comando, no desde que termina el ante- ser condicionales, entonces tenemos manera más sencilla de hacerlo es usando
rior wait 3. que usar el comando @switch. Cuando @_atributo objeto=valor. Por ejemplo:
alguien le diga algo al perro, el comando
Agrupando Acciones que usará será similar a este: “perro, @_hambre perro=1
A veces necesitaremos que una serie de salta. Si nos fijamos, vemos que el pri-
acciones se agrupen, especialmente mer espacio está a continuación de la Con esto hemos creado un atributo ham-
cuando van a ir retrasadas en el tiempo o coma. Este espacio es lo que separa los bre con valor 1 en el objeto perro. Para
cuando sean parte de una condición. Para
ello únicamente hay que agruparlas entre Listado 2: Creación del Sello y la Palanca
llaves: { acciones;acciones;acciones }.
01 @create sello (#18)
Hagamos el ejemplo del vaso un poco
02 @desc sello=Un bonito sello real de plata y con joyas engarzadas.
más dramático:
03
@adrop vaso=@emit alU 04 @create palanca (#8)
dejarlo se te resbala;@waitU 05 @desc palanca=Una gran maquina que esta incrustada parcialmente en
2=@emit Y toca el suelo;@waitU la pared. Parece que su cometido es mantener el cofre cerrado y asi
6={@emit ¡y se rompe!;@recycleU permanecera hasta que se pueda mover la palanca. Pero esta es de
me;@recycle me} recio metal y no puede forzarse. Al lado hay una cerradura y una
ranura donde entran una llave y un sello real respectivamente.
Cuando hayan pasado los 6 segundos del 06 @lock/use palanca = +#18 & +#4
segundo wait aparecerá un mensaje y se 07 @ufail palanca=No se va a mover hasta que consiga desbloquear la
destruirá el objeto. cerradura.
08 @use palanca=No sin esfuerzo la palanca empieza a moverse hacia
Condicionando abajo y escuchas a toda la maquinaria ponerse en funcionamiento.
El comando switch valor= nos permite
09 @ause palanca=@pemit %#=Finalmente el cofre se abre iluminando la
realizar diferentes acciones dependiendo
cueva con la dorada luz del oro. Enhorabuena, has superado esta
del valor dado. Se verá más fácilmente
misión!!!;
con un ejemplo:
10 drop palanca

88 Número 39 WWW.LINUX- MAGAZINE.ES


Juegos: MUDs III • LINUX USER

comprobar el valor de un atributo se usa @create viejo (#7)


get_eval(persona/atributo). @listen viejo=*”viejo, *
@_saludo viejo=0
Reacciones Aleatorias @ahear viejo=@switchU
A veces necesitaremos reacciones aleato- get_eval(viejo/saludo)=0,U
rias. Esta aleatoriedad se puede lograr con {say ”Hola viajero. No puedoU
el uso de la funcion rand(), el cual es muy moverme y tengo un poco deU
simple. Cuando escribamos rand(numero) hambre”; @_saludo viejo=1},1,U
se sustituirá por un número del 0 a ese {say ”Quiero una naranja. Si,U Figura 1: Nuestra humilde creación no se ve
número menos 1. Generalmente el rand una jugosa naranja.”} mejor (ni peor) que MUDs de renombre como
irá asociado a un switch. drop viejo Balzhur.

@create dado Hemos creado un “viejo”. Le hemos aña- insistes te diga algo.
@ause dado=@switch rand(5)=0,U dido un atributo personalizado saludo @listen loro=*”loro, *
{@emit %N se para mostrando unU que usamos para ver si es la primera vez @ahear loro=@switch rand(4)=0,U
valor de 1},1, {@emit %N seU que hablamos con él. También consegui- {say ”Come la manzana, usala,U
para mostrando un valor de 2},U mos que pueda comunicarse, enten- usala.!!!”}
2, {@emit %N se para mostrandoU diendo las frases que se dirijan a él como drop loro
un valor de 3},3, {@emit %N seU “viejo, lo-que-sea. Hemos usado el
para mostrando un valor de 4},4U @switch get_eval(viejo/saludo) para Cuando le hablemos a nuestro nuevo loro
, {@emit %N se para mostrandoU escoger la respuesta dependiendo del atri- tenemos un 25% de posibilidades
un valor de 5},5, {@emit %N seU buto “saludo”. (@switch rand(4)=0,) de que nos revele
para mostrando un valor de 6} En el Listado 1 hemos creado una llave una pista importante.
y una naranja que, cuando se coge, activa
Así, cuando usemos el dado se generará una serie de acciones que acaban @lock cofre=#1
un valor aleatorio del 0 al 5 y, de acuerdo dejando la llave #4 en el suelo #10. Tam- @lock palanca=#1
a este valor, nos devolverá un texto con el bién hemos usado @emit para que lo que @lock viejo=#1
valor del dado. dice el viejo lo escuchen todos los juga- @lock loro=#1
dores.
Una Misión Básica En el Listado 2 se crea el sello real y Con estos cuatro últimos locks evitamos
Todas las herramientas anteriores se pue- después creamos la palanca. Ésta tiene que un jugador pueda mover objetos
den usar para crear misiones, uno de los un “cierre de uso” |ock/use para que sólo que no debería (solo One #1 podría
pilares de los MUDs. Vamos a diseñar una. pueda usarla quien lleve la llave y el sello hacerlo).
El objetivo de la misión será abrir el (#18 y #4). También hemos tenido que
cofre del tesoro. Éste está unido a una añadir un mensaje de error ufail para Para Finalizar
máquina con una palanca y dos cerradu- cuando alguien intente usarlo sin éxito. Ciertamente MUSHcode no es el más
ras que hacen imposible abrirlo sin Por fin, el mensaje de uso con éxito, avanzado de los lenguajes de programa-
mover la palanca. La cerradura se abre ause, nos felicitará por completar la ción, y puede hacer titánicas algunas
con una llave y un sello. La llave nos la misión. Se usa @pemit %#= para enviar tareas que podrían parecer sencillas, pero
dará un viejo, y el sello está en una man- este mensaje sólo al jugador que lo haya dedicándole tiempo nos servirá para dotar
zana. logrado. de vida a nuestros mundos.
NOTA: Hemos indicado el número de No queríamos terminar este artículo sin
objeto creado después de algunos coman- @create manzana (#3) comentar que existe un tipo de MUD más
dos para facilitar la compresión del @desc manzana=Manzana podridaU violento, basado en combates, que se
código. No hay que teclearlos. con muy mal aspecto. denomina MUF (y similares). Nuestro ser-
@ause manzana=@pemit %#=TeU vidor Pennmush no es un MUF, y por
@dig cueva (#10) comes la manzana sorprendidoU tanto no soporta combates, razas, profe-
@tel #1=#10 por su buen sabor. Y de suU siones, etc. De hecho, casi todos los (mal
@create cofre (#9) interior se cae un sello deU llamados) MUD que hay activos en la
@desc cofre=Cofre de metalU plata.; @tel #18=#10 actualidad son derivados de MUFs con
sujeto al suelo firmemente y aU drop manzana infinidad de opciones de personalización,
una maquinaria que lo mantieneU algo de lo que carece nuestro robusto pero
cerrado. Cuando se usa la manzana, @ause man- limitado Pennmush. ■
drop cofre zana, aparecerá(@tel) en la sala #10 el
sello real #18. RECURSOS
Hemos creado (dig) la cueva de la misión.
[1] Tutorial MUSH incluyendo MUSH-
También hemos creado el cofre del tesoro @create loro (#5)
code: http://www.mux.net/~bele/
con su descripción y lo hemos soltado en @desc loro=Un feo loro verdeU
mushman.html
la habitación. que guarda silencio. Quizas siU

WWW.LINUX- MAGAZINE.ES Número 39 89


COMUNIDAD
COMUNIDAD ·· Konsultorio
Konsultorio

EL
KONSULTORIO
DE KLAUS
blemas con mi P5K Deluxe MB al usar el SCSI, USB o SATA, seguidos de una letra que
disco de arranque de True Image. indica el disco (a para la primera, en orden
Ahora mi pregunta: tengo dos discos alfabético), y a continuación, si no estamos
duros SATA de 250GB que funcionan en usando el disco completo, un número que
modo compatible IDE. Tengo instalado Win- indica la partición, donde 1-4 son particiones
dows XP en la primera partición del Disco 1, primarias y a partir de la 5 son particiones
Klaus Knopper es el creador de Fedora en la segunda partición, y Ubuntu en lógicas (con tabla de partición extendida).
la tercera, controlando el MBR. Tengo dos Por tanto, /dev/sdb9 sería la novena parti-
Knoppix y co-fundador de la particiones más y un par de particiones ción del segundo disco SATA, USB o SCSI
NTFS para las copias de seguridad del Acro- conectado al sistema. Al contrario que con
LinuxTag Expo. En la actuali-
nis True Image. IDE, donde hdb es siempre el “disco esclavo
dad trabaja como profesor, Me gustaría juguetear con las otras distri- conectado al primer controlador”, el disposi-
buciones de Linux, pero esto causa cambios tivo sd* toma su nombre según la secuencia
programador y consultor. Si en las IDs de las particiones. Y entonces en su detección, por lo que puede depender
tengo problemas para arrancar Ubuntu y de la secuencia de drivers que se carguen
tiene algún problema de Fedora. cuando un dispositivo flash USB aparezca de
Normalmente soy capaz de arrancar repente con el nombre de un disco duro
configuración, o simplemente Ubuntu, ejecutar blkid y editar fstab para SATA que teníamos con anterioridad.
arreglarlo. Con Fedora puede costar un poco Muchas distribuciones, sin embargo, cargan
quiere conocer mejor cómo más. Me han aconsejado que mire man 2ext, los drivers SATA antes que los USB, por lo
pero no tengo claro qué hacer. ¿Tiene alguna que es poco probable que ocurra un cambio
funciona Linux, no dude en
sugerencia? ¿Qué tal un fstab configurado de disco inesperado.
escribir sus preguntas a: para aceptar cambios en las IDs de las parti- La partition ID normalmente significa el
ciones? “tipo” de partición, que será un número en
klaus@linux-magazine.com Otra cosa que podría ser útil es un CD la tabla de particiones que se fija o cambia
autoarrancable de emergencia, desde donde por fdisk, cfdisk, gparted o programas de
se pueda acceder a las distintas particiones y particionado similares.
editar fstab tras ejecutar blkid. La ID de partición indica a la BIOS si se
Discos SATA Gracias Klaus. Disfruto realmente con tu puede usar esa partición para arrancar, si
La pregunta del artículo del número sección. Le adjunto la información de los dis- está marcada como espacio libre, o si está
37 “Reemplazar Windows” me hizo cos en el Listado 1. siendo usada por particiones “lógicas”.
mucha gracia. Yo también estoy en la edad La ID también indica al sistema operativo
de jubilación y comencé en los viejos tiem- Antes de contestar directamente a el tipo de contenido que tiene a priori (en
pos del DOS. Soy, sin embargo, un converso su pregunta comenzaré con una Linux, sin embargo, el tipo de partición real-
a Linux al 95%. Estoy de acuerdo con que breve descripción de algunos conceptos mente no importa. Es decir, podríamos mon-
Linux no es un reemplazo para Windows. Yo importantes. Linux usa nombres específicos tar un sistema de archivos en una partición
hubiera aconsejado al lector que probara para las particiones, bien con nombres de marcada como NTFS o Swap, pero obvia-
una configuración multiarranque. Se trata de archivo de dispositivo de bloques creados mente, no es muy recomendable).
mantener XP mientras que te acostumbras a estáticamente en dev, o bien creados dinámi- La ID 82 es “Linux swap”, la ID 83 es
Linux. Uso Windows para jugar al Chess- camente (por udevd). “Linux filesystem”, etc. (véase la Tabla 1
master 10000 y para ejecutar el True Image El acuerdo general para nombrarlos es hd sacada de fdisk). El contenido real de la par-
de Acronis, que por alguna razón tiene pro- para IDE y sd para discos o almacenamiento tición, sin embargo, no tiene nada que ver

90 Número 39 WWW.LINUX-MAGAZINE.ES
Konsultorio ·• COMUNIDAD
Konsultorio COMUNIDAD

con esta ID. De hecho, la ID ni siquiera cam- filesystem es la parte del driver que indica a
bia si reformateamos o destruimos el conte- mount de qué manera se va a organizar la Tabla 1: Algunos Tipos de
nido de la partición, ya que no se ubica en la información, mientras que options son fun- Partición Conocidos por
propia partición, sino dentro de la tabla de cionalidades que pueden activarse para ese Linux
particiones. sistema de archivos. La secuencia backup ID Descripción
Un UUID es un identificador único uni- sequence raramente se usa por ningún pro- 0 Vacío
versal para un sistema de archivos nativo grama de copias de seguridad, pero debe 1 FAT12
de Linux, como ext* o reiserfs. El UUID estar presente en /etc/fstab por razones de 4 FAT16 <32M
está contenido en la cabecera del sistema compatibilidad. El último campo, filesystem 5 Extendido
de archivos de la partición. Puede usarse check order, indica qué sistema de archivos 6 FAT16
para buscar e identificar un sistema de debería verificarse y repararse automática- 7 HPFS/ NTFS
archivos en /etc/fstab mediante la palabra mente en caso de aparecer problemas al b Win95 FAT32
clave UUID= en lugar de por el nombre de arrancar. c Win95 FAT32 (LBA)
la partición. Las UUIDs se suponen únicas. La mayoría de las entradas de /etc/fstab e Win95 FAT16 (LBA)
82 Linux swap
Un sistema de nomenclatura automático tienen una sintaxis muy flexible, que se des-
83 Linux
asegura que sólo existe una partición con cribe en parte con man 5 fstab, man 8
8e Linux LVM
un UUID dado en nuestro sistema. Este mount, y en distintos manuales específicos
fd Linux raid auto
valor puede fijarse durante la creación del de sistemas de archivos en línea, como man
sistema de archivos, y puede cambiarse ntfs-3g.
más tarde mediante tune2fs -U o reiserfs- Ahora, volvamos a la pregunta inicial. En # /dev/sda3
tune -uuid. la entrada partition de /etc/fstab tenemos UUID=2d9d00d3-4809-4f57-b65d-U
La etiqueta label es similar al UUID, pero que dar una descripción de un recurso para 97f70d497dbd /media/sda3 U
generalmente se usa para dar al sistema de mount, de manera que encuentre la informa- ext3 defaults 0 2
archivos un nombre legible como Root o ción para acceder. Para sistemas de archivos
incluso nombres de puntos de montaje ubicados en particiones de discos duros cambiaría a
como var_log, de manera que podamos puede hacerse, en el caso más sencillo, indi-
hacernos una idea de su contenido. Esta eti- cando el nombre de la partición, o con una /dev/sda3 /media/sda3 U
queta puede usarse para buscar e identificar etiqueta de sistema de archivos, o UUID (que ext3 defaults 0 2
un sistema de archivos en /etc/fstab se buscará en todas las particiones conoci-
mediante la palabra clave LABEL=. Una eti- das, véase /proc/partitions). Muchas Live CDs de recuperación también
queta no tiene por qué ser única en un sis- Por lo que parece, su mejor opción es usan /dev/nombreparticion en lugar de eti-
tema. montar buscando una partición específica y quetas de sistemas de archivo para crear
/etc/fstab es el archivo de configuración constante, en lugar de un UUID, para encon- automáticamente /etc/fstab. Pero podemos
para mount. La sintaxis general de fstab es: trar automáticamente la partición que con- usar también el script del Listado 2 para
tiene un sistema de archivos. crear automáticamente entradas basadas en
partition mountpoint U En teoría, el UUID no debería cambiar, a UUID para copiar y pegar.
filesystem filesystem-options U menos que haya una reinstalación completa Si usted quiere hacer copias de seguridad
backup check del sistema de archivos, cosa que puede ser con frecuencia y restaurar instalaciones de
el problema en este caso, si lo que desea es Linux en diferentes particiones, distintas de
donde partition hace referencia a un disposi- experimentar con distintas distribuciones. las que se habían instalado en primer lugar,
tivo de bloques, archivo, recurso de red, o en Mi recomendación para este caso sería no su método original para /etc/fstab es mejor,
general, un recurso que contiene la informa- usar UUID=, sino escribir directamente los ya que en este caso los nombres de parti-
ción física que va a ser accedida. mountpoint nombres de partición como fuente de los dis- ción cambian realmente, mientras que el
es la ubicación donde un directorio/archivo positivos de bloques. Por ejemplo, su línea UUID debería permanecer constante al estar
se va a mostrar tras un montaje con éxito. /etc/fstab contenido en la imagen con la información
de la partición. Sin embargo, en caso de que
Listado 1: Información de Disco ni el nombre de la partición ni el UUID del
sistema de archivos permaneciese cons-
01 # /etc/fstab: static file 07 # /dev/sda1
tante, tenemos un problema. En este caso,
system information. 08
lo mejor que puede hacer es mantener su
02 # 09 UUID=1201DEF75EAE43A9
fstab actual constante y volver a fijar el
03 # <file system> <mount point> /media/sda1 ntfs
UUID y/o la etiqueta tras una restauración.
<type> <options> <dump> <pass> defaults,umask=007,gid=46 0
Por ejemplo,
04 proc /proc proc default 0 0 1
05 # /dev/sda5 10 # /dev/sda3
tune2fs -U 2d9d00d3-4809-U
06 11
4f57-b65d-97f70d497dbd
UUID=54a4d859-f595-40f4-b139-e UUID=2d9d00d3-4809-4f57-b65d
/dev/sda3
f30e21237d9 / ext3 -97f70d497dbd /media/sda3
defaults,errors=remount-ro 0 1 ext3 defaults 0 2
restaura el UUID usado en fstab. ■

WWW.LINUX-MAGAZINE.ES Número 39 91
COMUNIDAD · Linux Legal

Jose María Lancho, abogado, contesta a las dudas legales de los lectores.

LINUX LEGAL
■ Tengo el Mandriva PowerPack 2008 que la apropiación indebida de secreto industrial tecnológicas de protección se pretenden vul-
se regalaba con el número 35 de Linux de los socios de la DVD Copy Control Associa- nerar los derechos de propiedad intelectual,
Magazine. Veo que viene con una aplica- tion a través de burlar la encriptación, y que cosa que en aquel caso desde luego no fue
ción llamada “LinDVD” que sirve para ver ese programa, puesto al conocimiento del posible. Tampoco prosperaron las acciones
los DVDs de vídeo cifrados… vamos, público, podía servir para la violación de dere- penales contra el programador Jon Lech
todos los DVDs comerciales de un tiempo chos de propiedad intelectual. La capacidad Johansen por su implicación en este programa
a esta parte. Según la web de Mandriva, de demandar por parte de la industria sobre de decodificación, precisamente porque nadie
usar Lin DVD es la manera “legal” de ver este monopolio de información estaba muy tiene derecho a decirnos qué debemos hacer,
DVDs en Linux. Entonces ¿qué pasa? incrementada con la Digital Millennium dentro de la legalidad, con nuestra propiedad.
¿Hasta ahora ver los DVDs que había com- Copyright Act fruto de su inmensa labor de Aunque no es fácil encontrar una distribu-
prado con mi dinero gracias a libdvdcss lobby. De esta forma la industria cosechó ción libre que incluya el programa DeCSS, no
era ilegal? algunos éxitos que sin embargo entornaban la obstante el programa es fácil de conseguir en
■ La mayoría de los DVDs comerciales contie- puerta de cara al futuro, así en UNIVERSAL la red, y jurídicamente es casi imposible de
nen una tecnología DRM de cifrado denomi- CITY STUDIOS, INC., PARAMOUNT PICTU- objetar que un consumidor pueda utilizar este
nada CSS (Content Scramble System). Esta RES CORPORATION, METRO-GOLDWYN- programa para poder ver sus DVDs adquiridos
tecnología se ha convertido en un estándar MAYER STUDIOS INC., TRISTAR PICTURES, legalmente, donde le parezca.
industrial de facto. Con la excusa de salva- INC., COLUMBIA PICTURES INDUSTRIES, En cuanto a la posibilidad de considerar a
guardar de copias ilegales los contenidos digi- INC., TIME WARNER ENTERTAINMENT “libdvdcss” como un programa ilegal, mi res-
tales multimedia, se constituyó la “DVD Copy COMPANY, L.P., DISNEY ENTERPRISES puesta es un no rotundo. Por un lado,
Control Association” (DVD CCA), que es la INC., TWENTIETH CENTURY FOX FILM “libdvdcss” opera de una manera distinta a
asociación que “licencia” la tecnología CSS de CORPORATION contra ERIC CORLEY y 2600 DeCSS, no es ingeniería inversa y jamás ha
cifrado tanto a productores de contenidos que ENTERPRISES INC. La resolución en apela- provocado una acción ante los tribunales. En
se vayan difundir en DVD como a fabricantes ción de la UNITED STATES COURT OF APPE- Estados Unidos desde luego no lo es, pues la
de lectores y reproductores de DVD. ALS para el 2º Circuito, sentencia de 28 de Sección 1201(f) de la Digital Millennium Copy-
En este contexto, es cierto que la empresa noviembre de 2001, supuso técnicamente una right Act autoriza los actos de elusión de medi-
desarrolladora de LinDVD tiene una licencia victoria pírrica para las industrias del audiovi- das tecnológicas de protección con propósitos
de CSS (Content Scramble System) para ese sual, puesto que la Sala decidió sobre la evi- de interoperabilidad del software, y en
producto, y cualquier distribución que incluya dencia de que los demandados tenían la España, el artículo 100 de la Ley de Propiedad
LinDVD no va a tener ningún problema. La intención principal de proveer el DeCSS al Intelectual establece los límites para el titular
cuestión legal es si es necesario obtener una público con el fin de copiar DVDs protegidos y de los derechos de explotación de un pro-
licencia para poder decodificar el contenido de no, en cambio, la intención de distribuir grama de ordenador aún más amplios.
un DVD que ya he adquirido legalmente, o DeCSS para permitir el visionado de DVDs en El derecho al uso, el derecho a aprender y el
también: ¿cuántas veces hay que pagar por múltiples plataformas. La utilización de la derecho a interoperar por el usuario legítimo
tener acceso al mismo contenido? Digital Millennium Copyright Act como están previstos en el artículo 100 de la LPI, y la
Debemos partir de que sobre la tecnología comodín de la industria multimedia tradicio- Jurisprudencia ha dejado claro que el usuario
CSS se ha pretendido constituir un monopolio nal se vio también limitada por otra sentencia, final no tiene que soportar las medidas técni-
definitivo, una forma de control de la difusión la Chamberlain v. Skylink, 381 F.3d 1178 (Fed. cas de protección cuando quiere dar un uso
de información que, en su pretensión de Cir. 2004), en la que también se eludió una legítimo al bien del que es propietario (por
dominar el acceso al contenido a través de medida tecnológica, se burló un mecanismo ejemplo: Audiencia Provincial de Valencia,
controlar el formato, resulta casi utópica. Su de encriptación por medio de ingeniería Auto de 7 de Marzo de 2008 – Sección 5ª Nº
difícil defensa propició una actitud legal muy inversa efectuada por un consumidor final, Recurso: 58/2008, sobreseyendo el caso de la
agresiva por parte de la gran industria aso- que había adquirido un objeto con un soft- supresión no autorizada o la neutralización de
ciada a la “DVD Copy Control Association”, ware incorporado (en concreto una puerta de dispositivos técnicos de una videoconsola,
con resultados diversos. El 27 de diciembre de garaje que se alzaba automáticamente) que pues no estaba probado que fuera para utili-
1999 la DVD CCA inició su gran caza de bru- estaba codificado. El demandado, a los efec- zarla con juegos “pirateados”, sino que podía
jas particular. En unos 11 países del mundo al tos de servirse más cómodamente del objeto servir como un ordenador).
mismo tiempo demandó hasta 500 personas y adquirido, decodificó las claves del software La guerra de los DVDs ha concluido, pero
entidades por hacer accesible una tecnología pero con un fin legítimo. El Tribunal le dio la los nuevos formatos están abriendo sus pro-
libre, la DeCSS, un programa informático razón al demandado sosteniendo que la Digi- pios frentes, disfrazando bajo la apariencia de
libre, logrado por medio de ingeniería inversa tal Millennium Copyright Act no proveía de más y mayor servicio al consumidor o usuario
y que era capaz de desencriptar el contenido un segundo derecho de propiedad al titular de el asalto hacia el control total de las obras inte-
de los DVDs que estuvieran codificados por un copyright y, en cualquier caso, debe lectuales por medio del monopolio sobre su
tecnología CSS. El meollo de la demanda era demostrar que cuando se eluden las medidas formato.. ■

92 Número 39 WWW.LINUX-MAGAZINE.ES
PRÓXIMO NÚMERO

EN EL NÚMERO 40 DE LINUX MAGAZINE

SEGURIDAD
Para un usuario final, no existe el exceso de seguridad.
Cuando hemos de confiar hasta la información más
sensible, ya sea personal o corporativa, a nuestras
máquinas, no podemos permitirnos el lujo de que por
falta de conocimientos se comprometa.
Sin embargo, también tenemos que mantener un
compromiso con las restricciones que impongamos a
los usuarios del sistema, evitando convertir su existen-
cia en un laberinto de contraseñas, permisos y producti-
vidad perdida. Para ello, el mes que viene examinamos
una tecnología que permite abrir el cortafuegos sólo a
ciertos paquetes de ciertos usuarios.
Siguiendo con nuestra sección de portada, veremos
cómo impedir que nos roben la contraseña con sistemas
de fuerza bruta que utilicen diccionarios, para, a conti-
nuación, aprender a conseguir un sistema de permisos
más granular utilizando listas de control de acceso.
Terminaremos nuestro especial con un taller en pro-
fundidad de SELinux, la potentísima infraestructura de
seguridad de Red Hat/Fedora.
En el número 39, seguridad en serio en Linux Maga-
zine.

SIOX ¿Ruby o Java?


El veterano programa de retoque de imágenes y manipula- Ruby es un lenguaje cada vez más popular para aplicaciones
ción de fotografías, The GIMP, ha sufrido un completo lavado y servicios de software online. Sin embargo, es sobre Java
de cara en su última versión, la 2.4. Y los cambios no sólo donde se ejecutan la gran mayoría de los programas de ges-
afectan a la superficie. tión hoy en día.
Lo último en The GIMP es SIOX, un sistema que permite Para tener la flexibilidad de Ruby y no perder el soporte de
extraer de manera sencilla objetos del fondo de una imagen. los antiguos programas en Java, presentamos JRuby, un intér-
Veremos cómo sacarle todo el jugo a esta funcionalidad en el prete que permite programar y ejecutar aplicaciones en
próximo número de Linux Magazine. ambos lenguajes.

A LA VENTA: JULIO 2008


98 Número 3
39 WWW.LINUX- MAGAZINE.ES

También podría gustarte