Sei sulla pagina 1di 87

EDITORIAL

AGNESIA Nos sentimos orgullosos de nuestros


orígenes como publicación, que se
remonta a los primeros días de la
revolución Linux. Nuestra revista
hermana, la publicación alemana
Linux Magazine, fundada en 1994, fue
la primera revista dedicada a Linux en
Estimado Lector de Linux Magazine Europa. Desde aquellas tempranas
fechas hasta hoy, nuestra red y

E
l señor Paul Graham, uno de vender un SO; suite ofimá- experiencia han crecido y se han
expandido a la par que la comunidad
los gurús de Lisp más promi- tico; paquete de diseño vec- Linux a lo ancho y largo del mundo.
nentes del mundo, afamado torial, de retoque fotográfico, Como lector de Linux Magazine, te
blogger y venture capitalist, hace unas 3D; navegador, servidor, edi- unes a una red de información
semanas hacía la controvertida afir- tor web; o cualquier otra dedicada a la distribución del
conocimiento y experiencia técnica.
mación de que “Microsoft ha muerto”. cosa que se haya convertido
No nos limitamos a informar sobre el
Aparte de la polvareda que levantó, de uso común entre los usua- movimiento Linux y de Software Libre,
expresaba su deseo de “ser el primero rios. sino que somos parte integral de él.
en decirlo”. No soy de los que se Personalmente, tenía claro
andan con falsas modestias, así que desde que superamos el obstáculo de de identidad de su comunidad. Sería
ahí va: siento decepcionarle señor la aceptabilidad corporativa, que el irónico que la crisis y fallecimiento
Graham, pero eso lo llevo diciendo en modelo de Software Libre iba a matar del más persistente de entre sus ene-
mis artículos desde hace ya algunos al modelo del software privativo, al migos causase peores estragos que sus
añitos. menos en lo que se refiere a aplicati- continuados ataques, pero es lo que
Lo siento, me sentía obligado a vos horizontales. Habrá un nicho para parece que sucede, al menos entre
decirlo, y el que crea que voy de farol, el desarrollo de software privativo aquellos miembros que han verte-
que repase la literatura. especializado (sin embargo, la licencia brado su justificación para pertenecer
Que no crea el lector que hago la para este tipo de software es mayor- a la comunidad sobre el enfrenta-
predicción de manera gratuita y para mente irrelevante), al igual que hay miento a un coloso.
llamar la atención. De hecho, voy a un nicho para los jardineros ornamen- Pero hay más. Junto con la caída de
condicionar mi afirmación y empezaré tales que hacen paisajismo personali- un modelo, el cerrado, viene la acep-
advirtiendo que no hay que creer que zado, pero ¿hacer dinero, dinero de tación en el mercado “convencional”
esto es una cosa que vaya a ocurrir de verdad, vendiendo el Office & Co. sin del otro modelo, el abierto, cosa que
la noche a la mañana, del mismo valor añadido? Eso se acabó, amigo parece hacer florecer una suerte de
modo que no se puede delimitar un mío. esquizofrenia dentro de la comunidad.
marco temporal preciso para el fatal (Claro que me puedo equivocar, y si Un miembro del público en un con-
desenlace, pero las primeras eviden- es el caso, prometo humildad en reco- greso al cual acudí hace unas semanas
cias del desastre están ahí para quien nocer mi error y aceptaré sin rechistar relataba que “hace años, cuando le
quiera verlas. Por otro lado, para que el escarnio público. Así que reco- proponía a alguien colaborar en una
no se diga que mis profecías son más miendo guardar este artículo para proyecto, la respuesta solía ser ‘Vale.
vagas que las de la bruja Lola, tam- poder echármelo en cara dentro de ¿Cuándo empezamos?‘. Sin embargo,
bién incluyo por el mismo precio unas unos años). ahora la gente dice ‘Vale. ¿Cuánto me
cuantas precisiones: Dudo que vea- Volviendo al señor Graham, a pesar vas a pagar?‘”. Puede que el caballero
mos a Bill Gates pidiendo a la puerta de que coincide conmigo en la apre- estuviera recordando los tempranos
de una iglesia, pero Microsoft se hará ciación del estado del mercado (o, días del software libre de una manera
irrelevante al mercado informático, para ser más precisos, su estado un poco nostálgica (y la nostalgia
cosa que, concederéis, es la muerte de futuro), me decepciona un tanto que nunca se ha llevado demasiado bien
la empresa tal y como lo conocemos, su artículo no haga ninguna referencia con la realidad), pero todos los que
una de cuyas señas de identidad es la al software libre, principal verdugo, llevan algún tiempo en este mundo
de disponer de una cuota de mercado para bien o mal, del antiguo modelo. admitirán que se esta produciendo un
superior al 90% (¿Microsoft es Micro- A mi entender, las razones de la cambio en la comunidad… y no preci-
soft sin su monopolio?). Y mi predic- muerte del sistema tradicional para samente a mejor.
ción tampoco cita exactamente a hacer dinero con el software son bas- Durante años se ha dicho que libre
“Microsoft”, sino que abarca más bien tante evidentes y las he expuesto en no era igual a gratuito, es decir que, a
a todo el modelo de negocio que sim- detalle a lo largo de mis artículos y no pesar de la pinta de hippies de sus
boliza, es decir, el del software propie- malgastaré este espacio ni el tiempo mayores gurús, siempre se ha insistido
tario de uso general. Por tanto, del lector repitiéndolas. Entre otros que era legítimo hacer dinero con el
incluyo en el mismo saco a Apple, motivos, porque lo que me preocupa software libre (siempre y cuando se
Adobe, Sun (estos últimos ya lo saben hoy es otra cosa. respetasen algunas sencillas reglas).
– y están tomando medidas) y todos Lo que me preocupa es la crisis del

los ilusos que creen que aún pueden software libre, me preocupa la crisis Continúa en la página 91

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


DVD LINUX MAGAZINE

Y en el DVD de Linux Magazine… La suite de productividad OpenOf-

UBUNTU 7.04
fice incluye todas las aplicaciones de
escritorio ofimáticas que se puedan
necesitar, como un procesador de
textos que es lo bastante sencillo
como para escribir una circular, pero
que asimismo contiene herramientas
lo bastante potentes como para

U
btuntu 7.04, “Feisty Fawn” tos de Firefox y contactos de mensa- hacerlo apto para la autoedición; un
(“El Cervatillo Vivaracho”) jería instantánea y los importa a programa para hojas de cálculo, sen-
es la última versión del Ubuntu durante el proceso de insta- cillo de aprender pero de gran poten-
popular Ubuntu Linux. Ubuntu es lación. También incluye un nuevo cia y con centenares de funciones;
célebre por su simplicidad, estabili- asistente para automatizar la insta- un programa de presentaciones con
dad y estilo. La espectacular acogida lación de codecs multimedia que no efectos multimedia; un programa de
por parte de la comunidad de esta vienen de manera predeterminada diseño para crear desde sencillos
distro la ha convertido en su corta con Ubuntu, permitiendo a los usua- diagramas hasta complejos objetos
vida en la distribución más instalada rios disfrutar de manera sencilla y 3D, animaciones y mucho más. Per-
y más premiada de toda la historia segura de música y vídeos. Descu- mite además abrir y compartir docu-
de Linux y la nueva versión promete brir y unirse a redes wireless es mentos con otros programas ofimáti-
covertirse en todo un éxito. automático con Avahi, un asistente cos como MSOffice, KOffice, Word
que permite a los usuarios compartir Perfect o StarOffice.
Lo que trae música, encontrar impresoras y
Ubuntu 7.04 “Feisty Fawn” trae lo mucho más. Software
mejor del mundo del código abierto Kernel 2.6.20 X.org X11 7.2 Gnome 2.18
al escritorio. Con esta sencilla y ele- ¿Por qué Ubuntu? Evolution 2.10 Firefox 2.0 Thunderbird
gante distribución se puede navegar Ubuntu es una distro desarrollada 1.5 GIMP 2.2.13 OpenOffice 2.2 AbiWord
2.4.6 Rhythmbox 0.10 Avahi 0.6.17
por la web, jugar a juegos, utilizar el por la comunidad, diseñada
Gstreamer 0.10 F-Spot 0.3.5 Ekiga 2.0.3
correo electrónico y crear documen- teniendo en cuenta estrictos paráme-
Apache 2.2.3 Samba 3.0.24 MySQL 5.0
tos de texto, hojas de cálculo, pre- tros de seguridad. Se instala rápido PostgreSQL 8.2
sentaciones y gráficos. La migración y, una vez en el disco duro, está lista
de Windows a Ubuntu o la comparti- para funcionar. Cuando arranca el Requisitos del Sistema
ción de ambos sistemas en una sistema, el usuario se conecta a un
misma máquina nunca ha sido más escritorio limpio y atractivo. La Procesador: Funciona en la mayoría de
los PCs basados en chips x86, tales
simple: la nueva versión de Ubuntu actualizaciones son sencillas y rápi-
como la serie Intel Pentium y AMD Ath-
ofrece una novedosa herramienta de das y su barra de tareas avisa
lon Memoria: 256 MBs de RAM mínimo
migración de Windows que reconoce cuando hay actualizaciones disponi-
Espacio en disco: 2GBs mínimo
marcas de Internet Explorer, favori- bles.
OSDir.com

OSDir.com

Figura 1: La versión 7.04 de Ubuntu permite ser ejecutado como Figura 2: La suite ofimática OpenOffice proporciona todas la herra-
Live DVD. mientas que se puedan precisar.

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


DVD LINUX MAGAZINE

filtros definidos por el usuario, alar-


mas personalizables, seguridad y
cifrado de mensajes y más. La aplica-
ción para la toma de notas de escri-
torio Tomboy tiene un sistema de
enlazado tipo wiki, ideal para sepa-
rar el trigo de la paja y organizar de
manera eficiente ideas e informa-
ción.
Se incluyen muchas otras herra-
mientas en nuestro DVD Ubuntu 7.04
(¡más de 4.900!), y existen miles de
paquetes de software libre adiciona-
les en los repositorios en línea de
Ubuntu que se pueden descargar e
instalar con un solo clic.
¡Prueba Ubuntu ya! ■

Ayuda y Soporte
Existe documentación y soporte de la
comunidad en: http://www.ubuntu.com/
support

RECURSOS
[1] Ubuntu Linux: http://www.ubuntu.
com/
[2] Portal de Ubuntu hispano: http://www.
ubuntu-es.org/
[3] Foros de Ubuntu: http://
ubuntuforums.org/
[4] Ubuntu Wiki: https://wiki.ubuntu.com/
Con la suite de comunicaciones esta herramienta libre de virus son [5] Kubuntu – derivado de Ubuntu, con
Evolution se puede recibir y enviar las búsquedas de mensajes, soporte KDE: http://www.kubuntu.org/
correo electrónico, crear calendarios para múltiples cuentas, filtrado de [6] Edubuntu – derivado de Ubuntu,
y administrar los contactos. Las correo basura, calendarios web, especial para colegios: http://www.
características más destacadas de soporte para dispositivos móviles, edubuntu.org/
OSDir.com
OSDir.com

Figura 3: Desde el escritorio Live podemos acceder a la instalación Figura 4: Existen miles de aplicaciones a disposición del usuario que
gráfica asistida. se pueden instalar con un solo clic.

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


LINUX USER
INSEGURIDADES
Schlagwort sollte hier stehen

INSEGURIDADES
Fetchmail Referencia Mandriva: MDKSA-2007:016 puntero de una función no iniciali-
Fetchmail es una utilidad de recuperación Referencia Red Hat: RHSA-2007:0018-10 zada, el cual puede crear una vulnera-
y reenvío de correo remoto. Referencia Slackware: SSA:2007-024-01 bilidad de seguridad para kadmind.
Se encontró un fallo de denegación de • CVE-2006-6143 / MITKBR5-SA-2006-
servicio cuando se ejecuta en modo multi- krb5 003: la capa GSS-API podría fallar al
drop. krb5 es una implementación de un sis- inicializar algunos punteros de salida,
Un servidor de correo malicioso podría tema de autenticación Kerberos. haciendo que los que llaman intenta-
enviar un mensaje sin encabezamiento Se encontraron varios errores en las ran liberar punteros no inicializados.■
que podría hacer que Fetchmail se colgara librerías Kerberos5 y en otras herramien- Referencia Gentoo: GLSA 200701-21
(CVE-2005-4348). tas relacionadas. Estos fallos han sido Referencia SUSE: SUSE-SA:2007:004
Se encontró un fallo en la manera en la corregidos, pero en versiones no actuali-
que Fetchmail usaba encriptación TLS zadas potencialmente podrían ser usadas X.org
para conectarse a hosts remotos. por atacantes remotos para que el sistema X.org es una implementación de código
Fetchmail no suministra ningún modo se colgara o se ejecutara código arbitrario abierto del Sistema X Window. Propor-
de uso de encriptación TLS y no en kadmind. ciona la funcionalidad de bajo nivel sobre
autenticaría conexiones de protocolo POP3 • CVE-2006-6144 / MITKRB5-SA-2006- la que están diseñadas las interfaces de
adecuadamente (CVE-2006-5867-9). ■ 002: la librería RPC puede llamar a un usuario gráficas habituales.
iDefense informó de tres fallos de des-
POLITICAS DE SEGURIDAD DE LAS DISTRIBUCIONES MAYORITARIAS bordamiento de entero en las extensiones
Distribuidor Fuente Seguridad Comentario X.org Render y DBE. Un cliente malicioso
Debian Info:http://www.debian.org/security/ Los avisos de seguridad actuales se in- autorizado podría explotar este problema
Lista:http://www.debian.org/debian-security-announce/ cluyen en la página de inicio. Los avisos
Referencia:DSA-…1) se proveen como páginas HTML con
causando una denegación de servicio (el
enlaces a los parches. Los avisos también sistema se cuelga) o potencialmente per-
incluyen una referencia a la lista de mitiendo ejecutar código arbitrario con
correo. privilegios de superusuario en el servidor
Gentoo Info:http://www.gentoo.org/security/en/index.xml Los avisos de seguridad actuales para
Foro:http://forums.gentoo.org/ la lista Gentoo en el sitio web de
X.org (CVE-2006-6101, CVE-2006-6102,
Lista:http://www.gentoo.org/main/en/lists.xml seguridad de Gentoo enlazan desde la CVE-2006-6103). ■
Referencia:GLSA:… 1) página principal. Los avisos se presentan Referencia Gentoo: GLSA 2007-01
en HTML con códigos para fusionar las Referencia Red Hat: RHSA-2007:0003-3
versiones corregidas.
Referencia Ubuntu: USN-403-1
Mandrake Info: http://www.mandrakesecure.net Mandrakesoft posee su propio sitio web
Lista:http://www.mandrakesecure.net/en/mlist.php que versa sobre temas relacionados con
Referencia:MDKSA:… 1) la seguridad. Entre otras cosas,incluye Squid
avisos de seguridad y referencias a las Squid es un servidor proxy web de código
listas de correo. Los avisos son páginas
abierto. Se descubrió una vulnerabilidad en
HTML,pero no contienen enlaces a los
parches. squid que podría ser explotada remota-
Red Hat Info:http://www.redhat.com/errata/ Red Hat archiva los fallos de seguridad mente mediante el uso de una URL ftp://
Lista:http://www.redhat.com/mailman/listinfo/ bajo lo que denominan erratas. A especial (CVE-2007-0247).
Referencia:RHSA-… 1) continuación los problemas para cada
Se descubrió otra vulnerabilidad de
versión de Red Hat se agrupan. Los avisos
de seguridad se proveen como una
denegación de servicio en squid 2.6 que
página HTML con enlaces a los parches. permite a los atacantes remotos hacer que
Slackware Info:http://www.slackware.com/security La página de inicio contiene enlaces al el servidor se cuelgue causando una sobre-
Lista:http://www.slackware.com/lists/(slackware-security) archivo de seguridad de la lista de correo. carga external_acl_queue (CVE-2007-0248).
Referencia:[slackware-security]… 1) No existe información adicional sobre
seguridad en Slackware.
Adicionalmente, se ha corregido un fallo
Suse Info:http://www.suse.de/en/private/support/ Ya no existe un enlace a la página de en squid 2.6 para max_user_ip en
security/index.html seguridad tras un remodelado en el sitio ntlm_auth. ■
Parches:http://www.suse.de/en/private/ web de SuSE. Existe información en la Referencia Gentoo:GLSA 200701-22
download/updates Lista:suse-security-announce lista de correos y los avisos. Los parches de
Referencia Mandriva:MDKSA-2007:026
Referencia:SUSE-SA… 1) seguridad para versiones individuales de
SuSE Linux se muestran de color rojo en el Referencia SUSE:SUSE-SA:2007:012
sitio de actualizaciones generales. Referencia Ubuntu:USN-414-1
Contiene una corta descripción de la
vulnerabilidad que soluciona el parche. gtk2
1) Todos los distribuidores muestran correos de seguridad en el campo Subject.
El paquete gtk2 contiene el juego de
herramientas de GIMP (GTK+), una

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


INSEGURIDADES

librería para la creación de interfaces de ISC BIND 9.0.x, 9.1.x hasta 9.2.7, 9.3.0 formato en una URI udp:// no válida,
usuario gráficas para el Sistema Win- hasta 9.3.3., 9.4.0a1 hasta 9.4.0a6, 9.4.0b1 posiblemente una variante de CVE-2007-
dow. hasta 9.4.0b4, 9.4.0rc1 y 9.5.0a1 (sólo Bind 0017 (CVE-2007-0255). 
Se encontró un fallo en la manera en la Forum) permiten que atacantes remotos Referencia Gentoo:GLSA 200701-18
que la función gtk2 GdkPixbufLoader() causen una denegación de servicio (cuel- Referencia Mandriva:MDKSA-2007:027
procesa entradas no válidas. gue) a través de un tipo de respuesta de Referencia SUSE:SUSE-SA:2007:013
Aplicaciones linkadas contra gtk2 consulta * (ANY) DNS que contiene múlti-
harían que el sistema se colgara si car- ples RRsets, los cuales desencadenan un Samba
gan un fichero de imagen malformado error de inserción (CVE_2007-0494).  Samba es una aplicación servidor SMB
(CVE-2007-0010).  Referencia Debian:DSA-1254-1 de código abierto.
Referencia Debian: DSA-1256-1 Referencia Mandriva:MDKSA-2007:030 Un error lógico en el código abierto
Referencia Red Hat: RHSA-2007:0019-3 Referencia Slackware:SSA:2007-026-01 de deferencia para smbd puede permi-
Referencia SUSE: SUSE-SR:2007:002 tir que un usuario autenticado agotara
Referencia Ubuntu: USN-415-1 Xine sus recursos en el servidor, tales como
Xine es una aplicación de reproducción memoria y CPU, abriendo múltiples
Bind multimedia. Una vulnerabilidad en la sesiones CIFS, cada una de las cuales
Bind, libremente disponible bajo licencia cadena de formato en la función errors_cre- normalmente engendrarían un nuevo
BSD, es un servidor DNS de código ate_window en errors.c en xine-ui permite a proceso smbd, enviando cada cone-
abierto. los atacantes ejecutar código arbitrario xión a un bucle infinito (CVE-2007-
Vulnerabilidades en ISC BIND 9.3.0 mediante vectores desconocidos (CVE- 0452).
hasta 9.3.3, 9.4.0a1 hasta 9.4.0a6, 2007-0254). El nombre de un fichero en la compar-
9.4.0b1hasta 9.4.0b4, 9.4.0rc1 y 9.5.0a1 XINE 0.99 permite a los atacantes remo- tición del servidor se usa como la
(sólo Bind Forum) permiten a atacantes tos asistidos por el usuario causar una cadena de formato cuando se configura
remotos causar una denegación de servi- denegación de servicio (la aplicación se un descriptor de seguridad NT a través
cio (denominado daemon crash) a través cuelga) y posiblemente ejecutar código del plugin afsacl.so VFS (CVE-2007-
de vectores inespecíficos que causan el lla- arbitrario a través de un fichero M3U deter- 0454). 
mado “dereference a freed fetch context” minado que contiene una línea larga Referencia Debian:DSA-1257-1
(CVE-2007-0493). #EXTINF y especificadores de cadenas de Referencia Mandriva:MDKSA-2007:034

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


NOTICIAS DEL KERNEL

NOTICIAS DEL
KERNEL
Eliminación de Código que cuando remitió el parche a la man- vertir este driver al núcleo 53c700. Pero
El esfuerzo por eliminar código dañino, tenedora oficial, Pauline Middelink, no necesita el marco DMA, lo que conti-
sin mantener o inutilizado del kernel obtuvo respuesta y no se adoptó la núa causando regresiones en m68k,
sigue contra viento y marea. Se preve la modificación en el kernel. cosa en la que se está trabajando”. Si
eliminación de JFFS para la versión Peter Schlaf también utiliza el driver esta explicación será suficiente para
2.6.21 del kernel, a menos que se des- y ha estado usando una versión modifi- mantener vivo el driver, aún está por
cubra un grupo de usuarios descono- cada del código de Pauline para su ver.
cido que lo utilice. Lleva sin mante- soporte. En la lista de correos, Schlaf Otros drivers son menos problemáti-
nerse desde hace años y ha sido susti- ofreció encargarse del mantenimiento cos. Adrian remitió parches para elimi-
tuido por JFFS2 desde ese mismo de este driver y Pauline dijo que no nar los siguientes: BINFMT_IRIX,
periodo de tiempo. Jeff Garzik sugirió tenía ningún problema en cederle el FB_S3TRIO, SUN_AURORA y OAKNET,
desecharlo y remitió un parche, mien- privilegio. Asimismo, Mauro Carvalho y nadie los reclamó. En el caso de
tras que Andrew Morton, por su parte, Chehab dijo que se haría cargo de los S3Trio, Geert Uytterhoeven señaló que
no tiene nada que objetar al respecto, parches que se remitiesen para el dri- la escritura del nuevo driver genérico
por lo que parece un hecho consu- ver, ya que él es el mantenedor del sub- S3Trio ya estaba en marcha y que, por
mado. ¡Adios, JFFS! sistema V4L, por lo que parece que este tanto, no existía una verdadera necesi-
La eliminación de los drivers de driver ha sido rescatado de las garras dad de mantener la FB_S3TRIO. ■
sonido OSS ha estado en la lista de que- de la muerte en el último momento.
haceres de Adrian Bunk desde hace El driver VIDEO_PLANB también Nuevas Características
tiempo, y ya se han borrado unos cuan- encontró un nuevo mantenedor. Adrian A pesar de que parezca que lo único
tos a medida que más y más drivers remitió un parche para eliminarlo, pero que se hace es eliminar código viejo
ALSA consiguen funcionar al mismo Benjamín Herrenchsmidt se ofreció del kernel, en realidad se están aña-
nivel para el mismo hardware. DMA- voluntario para intentar arreglarlo. Por diendo nuevas características todo el
SOUND_PMAC y SOUND_ES1371 son su lado, Michel Lanners, el autor origi- tiempo. Andries Brouwere tenía que
los últimos candidatos en ser liquida- nal del código, expresó un gran interés leer un sistema de ficheros Minix
dos. Tanto Thomas Sailer como Kyle en ayudar con explicaciones del hard- versión 3 recientemente, pero quedó
Moffett han confirmado que ambos dri- ware y el código existente, aunque sorprendido al descubrir que ni la
vers pueden ser borrados y nadie se ha reconoció no tener tiempo de mante- versión 2.6.19 ni la última 2.6.20 lo
opuesto a la medida. nerlo él mismo. soportaba.
Adrian también ha intentado cargarse La supervivencia del driver Una rápida búsqueda reveló que
el driver VIDEO_ZR36120, pero en esta SCSI_AMIGA7XX está en vilo en estos Daniel Aragones ya había escrito un
caso se ha topado con algo de resisten- momentos. Adrián envió un parche parche para soportar el sistema de
cia. Resulta que Joe Feise utiliza el dri- para liquidarlo, pero Geert Uytterhoe- ficheros y, después de hacerle una
ver e incluso lo ha parcheado para fun- ven ofreció su asesoramiento diciendo limpieza a fondo, Andries lo remitió
cionar en su sistema doméstico, aun- que “existe un arreglo que permite con- a la lista del kernel para su inclu-
sión. Andrew Morton dijo que el par-
che parecía lo bastante inofensivo
La lista de correo del kernel de Linux comprende lo princi- como para ser incluido de inmediato.
pal de las actividades de desarrollo de Linux. El volumen Jiri Kosina ha resucitado el driver
del tráfico es inmenso, alcanzándose a menudo los diez
de ipwireless_cs 3G PCMCIA, de-
mil mensajes semanales. Mantenerse al día de todo lo que
sarrollado originalmente por Symme-
sucede en el desarrollo del kernel es casi imposible para
tric Systems, y lo ha portado al ker-
una sola persona.
nel 2.6 actual. Los autores originales
Sin embargo Zack Brown es uno de los pocos valientes
también participan en el depurado y
que lo intentan y a partir de ahora, podrá leerse lo último
de las discusiones y decisiones con respecto del kernel de
la mejora del código, tarea, por
Linux llevados de la mano de este experto. cierto, nada sencilla. El código en sí
viola reglas de estilo de programa-
Zack ha publicado un resumen online semanal llamado
“The Kernel Traffic Newsletter” durante cinco años. Linux
ción y no utiliza algunos recursos
Magazine te trae ahora la quintaesencia de las actividades intrínsecos del kernel, pero Jiri y el
del kernel de Linux del mayor especialista en el tema. resto de los desarrolladores creen

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


NOTICIAS DEL KERNEL

poder devolverlo a la vida y anun- sitivos proporcionan una conexión problema con un driver podría ejecu-
cian que un driver plenamente fun- de propósito general entre un orde- tar un script que realizaría una con-
cional estará listo dentro de poco. nador e instrumentos de laboratorio. sulta en el fichero MANTAINERS
Sascha Sommer ha implementado Nicolas Ferre ha modificado el para saber quién es el dueño correcto
un driver experimental para el lector código del driver ads7846 para del código y el estado del proyecto.
de tarjetas SD de Ricoh, disponible soportar el controlador de la pantalla Muchos desarrolladores han expre-
en portátiles como el Samsung P35 y táctil ads7843. sado su apoyo a la idea y Matthias
Dell X300. Samuel Thibaul está muy Parece ser que existen muchos más Schniedermeyer también ha sugerido
ilusionado con este trabajo y Pierre proyectos en marcha y mucha gente partir MANTAINERS en ficheros más
Ossman también encuentra fasci- se dedica a ir de aquí para allá inten- pequeños, tal y como se había hecho
nante el desarrollo. El driver de tando averiguar dónde está cada par- con el monolítico fichero de configu-
momento sólo soporta la lectura, es che y a quién preguntar. Sin ración antes de que apareciera KCon-
lento y presenta otros problemas, embargo, no parece haber ningún fig. Sin embargo, entre otros desarro-
pero Samuel ha sido capaz de utili- problema grave en el desarrollo.  lladores, como por ejemplo, Andrew
zarlo con su X300. Morton, la idea no ha calado. Éste ha
David Brownell ha escrito un Eliminando el Spam con declarado: “en mi opinión, la manera
marco para drivers para el reloj en vger… Más o Menos más práctica de averiguar realmente
tiempo real de relojes integrados en Matti Aarnio está probando un técnica quién mantiene un driver es ejecutar
PCs, así como para los relojes inte- de filtrado gris para la lista de correo un git-whatchanged sobre él para ver
grados en otras plataformas. Esto no del kernel. Esto implica retrasar cada quién ha tocado qué”.
es algo íntegramente nuevo, ya que correo hasta cinco minutos, ya que los Mientras tanto, Leonard Norgard
ya existe un driver similar. Pero el servidores de correos legítimos inten- se ha interesado también en la auto-
trabajo de David tiene una serie de tarán reenviar el mensaje nueva- matización del análisis del fichero
características más extensible y un mente, mientras que la mayoría de los MANTAINERS y, con esto en mente,
interfaz de usuario estándar a través servidores de spammers se rendirán. ha remitido un parche para convertir
de SysFS. El problema es que sólo ha Las pruebas iniciales de Matti indi- las instancias de las líneas de estado
sido probado en x86 con ACPI y sin can una caída del 90% del spam “Orphaned” al más ortodoxo estado
HPET, y por tanto, podemos esperar enviado a la lista como resultado del de “Orphan”. Está por ver si los
una maduración difícil del código. cambio. Sin embargo, Matti predice scripts que leen el fichero MANTAI-
Philip Langdale ha escrito código que en unos 200 días, la mayoría de NERS serán reemplazados en un
para empezar a soportar las nuevas los spammers se aprenderán el truco y futuro próximo por git-whatchanged.
tarjetas flash SDHC (Digitalmente harán que sus mensajes sean reenvia- Mientras tanto, han habido cam-
Seguras y de Alta Capacidad). John dos, al igual que los servidores legíti- bios de mantenimiento reales. Aparte
Gilmore donó el hardware y, como la mos. Por tanto, avisa que su solución de la actualización de direcciones de
Asociación de tarjetas SD ha publi- sólo proveerá un breve respiro y que correos o de páginas web aquí y allá,
cado las especificaciones, el proyecto no es una mejora permanente.  Martin Waitz ha abdicado del mante-
va viento en popa. El código no ha nimiento del proyecto kernel-doc
sido probado de una manera exten- Mantenimiento DocBook, dejando el trabajo íntegra-
siva, pero Philips declara no haber Richard Knutsson ha sugerido cam- mente en las manos de su co-mante-
perdido ningún dato en sus pruebas. biar ligeramente el formato del nedor, Randy Dunlap. Martin declaró
David Lopez ha remitido reciente- fichero MANTAINERS para incluir la no disponer de tiempo suficiente
mente un driver para soportar los variable de configuración actual para para dedicarse a ello, por lo que no
dispositivos de adquisición de datos cada proyecto listado en él. De esta tenía ningún sentido seguir listado
USB LabJack U3 y UE9. Estos dispo- manera, cualquiera que tuviera un como mantenedor oficial. 
NOTICIAS

NOTICIAS
LA NUEVA
A JUGAR GRAN *COSA*
En vista de su rendimiento, posi-
blemente ya sepas que Vista no te
DE JIMBO
iba a servir para ver DVDs, pero si
pensabas que al menos ibas a
WALES
poder jugar, más vale que también
lo vayas olvidando.
Según un estudio publicado por
Phoronix, un sistema Linux con un
kernel 2.6.20 ejecuta mucho mejor
que el nuevo SO de Microsoft los
más populares juegos de acción de
los últimos tiempos. Para la
prueba se estudiaron dos de los
juegos más jugados: Enemy Terri-
tory y Doom 3. Ambos se esco-
gieron por existir versiones nativas
tanto para Linux como para Win- Jimmy Wales, el fundador de la
dows, y las pruebas se realizaron Wikipedia, ya está trabajando en su
sobre equipos de idénticas carac- de 20,30 FPS. Windows Vista con- siguiente gran proyecto: un busca-
terísticas de hardware con Win- siguió renderizar 15,20 FPS. dor para acabar con todos los busca-
dows XP (con Service Pack 2), Doom 3 se negó a funcionar en dores.
Windows Vista, Linux, Linux con Linux con WINE, por tanto la com- Según Wales, la búsqueda, algo
WINE y Linux con Cedega (la ver- petición en esta categoría se limitó intrínseco de Internet, en estos
sión de WINE customizada para a comparar Windows XP, Vista, momentos “está rota” y está rota por
juegos). Linux y Linux con Cedega. Lo sor- la falta de libertad, comunidad, res-
Windows XP superó amplia- prendente es que, a las dos resolu- ponsabilidad y transparencia. Wales,
mente a los demás contendientes ciones a las que se probó el juego, cuya animadversión hacia los gran-
ejecutando Enemy Territory a una los dos sistemas Linux batieron des motores de búsqueda tipo Goo-
resolución 640 x 480, alcanzando claramente a ambos sistemas Win- gle, Yahoo y similares, es algo que le
56,90 FPS (fotogramas por dows: a una resolución de 800 x viene de antiguo, propone desde el
segundo). Windows Vista fue 600, la versión nativa para Linux sitio de su nuevo proyecto, Wikia
último con un decepcionante 32.20 se ejecutó a 12,90 FPS, mientras Search, un modelo basado en tecno-
FPS. Sin embargo, ejecutando que con Cedega se llegó a los 13 logía wiki y administrado por huma-
Enemy Territory a una resolución FPS. XP alcanzó los 11,60 FPS y nos, lo que recuerda a su anterior
de 1024 x 768, el ganador fue sor- Vista se quedó en 9,40 FPS. gran opus.
prendentemente Linux con WINE, A una resolución de 1024 x 768, A pesar de que estas cosas se han
alcanzando 33 FPS. De nuevo Vista las versiones para Linux intentado en el pasado (y fracasaron
fue último, sólo pudiendo alcanzar empataron entre sí, superando a – véase, por ejemplo, el Open Direc-
22,10 FPS. las versiones para Windows, con- tory patrocinado por AOL y parte del
Ejecutando Enemy Territory a siguiendo ejecutar 8,60 cuadros proyecto Mozilla), el wikipedista
una resolución de 1280 x 1024, de por segundo. De nuevo Vista fue el jefe parece convencido de que su
nuevo XP superó a los otros tres farolillo rojo de la competición, idea calará y obtendrá la masa crí-
sistemas con 21,70 FPS. Sin sólo pudiendo renderizar 6,10 FPS. tica necesaria de los usuarios para
embargo, a esta resolución la cosa Wow. que prospere.
estuvo mucho más reñida: Linux Conclusiones del estudio: Que así sea.
nativo obtuvo una marca de 19,90 http://www.phoronix.com/scan. La búsqueda humana de Mr.Wales:
FPS y Linux con WINE empató con php?page=article&item=681&num http://search.wikia.com/wiki/
Linux con Cedega con un resultado =1 ■ Search_Wikia ■

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


NOTICIAS

Héroe Anónimo del Mes


Recientemente, en la redacción de Linux conseguimos hacer fun-
Magazine pretendimos montar una video- cionar la última cámara,
conferencia para poder satisfacer un com- sino todas las anterio-
promiso que habíamos contraído con los res.
organizadores de la primera EbroParty, con- En una cándida entre-
sistente en dar una charla a distancia a los vista a The Enquirer, el
asistentes. modesto Xhaard explica
Sin embargo, descubrimos que, si sigue que inició el proyecto a
existiendo algo que es difícil de hacer en finales del 2003, cuando
Linux, eso es videoconferencia. Pero no por descubrió que las dos
culpa de Michel Xhaard: Este doctor en cámaras que había
electrónica de sesenta años, profesor en la comprado para sus hijas
Universidad Pierre y Marie Curie y cuya por Navidad no funcio-
especialidad es el procesamiento de imáge- naban. En vez de devol-
nes Doppler y de Ultrasonidos, autor en verlas o molestar a
solitario y sin ningún apoyo, ni corporativa, otros desarrolladores
ni institucional de ninguna clase, del de- mucho más ocupados con cosas más impor- Este “Panoramix” de la era digital sigue
sarrollo de drivers que funcionan en no tantes que hacer (como decidir si instalar añadiendo dispositivos a su lista y su sitio es
menos de doscientas treinta webcams. Gnome o KDE), Michel se sentó ante su referencia obligada para todo aquel que desee
De hecho, después de googlear varias ordenador y, al estilo del que están hechas hacer funcionar estos recalcitrantes trastos.
horas, consultar en foros, repositorios y for- las leyendas del software libre, se escribió Entrevista en The Enquirer:
jas, ya habíamos desechado tres cámaras y sus propios drivers, y varios más, adaptán- http://www.theinquirer.net/default.
estábamos a punto de abandonar la cuarta dolos, depurándolos y haciéndolos funcio- aspx?article=39291
y desistir… cuando nos topamos con el sitio nar en un buen número de chipsets de web- Sitio de Michel Xhaard:
de Xhaard. En unos pocos minutos, no sólo cams comerciales. http://mxhaard.free.fr/ 
NOTICIAS

NÚMERO MÁGICO
a las represalias lega-
les y Digg.com
intentó la misma
maniobra, eliminando
todo mensaje y bane-
ando a todo usuario
que mencionara la
ristra. La respuesta de
los usuarios fue
inequívoca, y en la
tarde del 1 de mayo
TODOS los mensajes
en la portada de Digg
mencionaban el
número de una
manera u otra. Poco
después a las 8 de la
mañana (hora espa-
ñola) del 2 de mayo,
Digg echó el cierre,
sacando el sitio de la
web “por razones téc-
nicas”. A las pocas
horas, el fundador de
Una ristra de 16 pares hexadecimales comercializan no se habían dig- Digg, Kevin Rose, publicaba en su blog
está extendiéndose como la pólvora nado a hacer, prefiriendo guardarse que volvía a abrir y que fuera lo que
por todo Internet en el momento de para una pequeña oligarquía su Dios quisiera, comentando que “[…]
escribir esto, y los sitios y blogs que Santo Grial con el objetivo de ins- después de leer centenares de artículos
se atreven a publicarlo están siendo taurar un nuevo monopolio sobre y miles de comentarios, lo habéis
acosados por los lobbies disco/cine- los medios de entretenimiento y dejado claro. Preferís que Digg muera
matográficos con innumerables car- discriminando deliberadamente a luchando antes de doblegarse ante una
tas de Cease and Desist, alegando la comunidad del software libre). empresa mayor”. El suceso llegó a las
que el numerito de marras infringe Como no podía ser de otra portadas la prensa generalista con artí-
su propiedad intelectual. manera, y repitiéndose la historia culos en Forbes y The New York Times
Pero, como en casi todo y como por enésima vez, la comunidad entre otros.
casi siempre, la industria llega hacker tardó muy poco en desen- ¿Hay una moraleja de lo anterior? De
demasiado tarde. El de 2 de mayo trañar la naturaleza de su celosa- hecho hay dos. Primero: Por un lado
del 2007, a las 8 de la mañana, una mente guardado secreto. ya es hora de que la industria de
consulta en Google utilizando como El autor de la hazaña, un hacker medios se de cuenta de que en esta
clave de búsqueda la cadena devol- que opera bajo el seudónimo de era, o juega limpio y le da a sus poten-
vía 28.000 resultados, a las doce de arnezami descubrió el 11 de ciales clientes lo que quieren sin
la mañana 34.000 y a las 18:00 casi febrero la clave, según sus propias trampa ni cartón, o la gente lo cogerá
60.000. palabras, “sin crackear, ni hackear, por sí misma y sin pedir permiso.
El número en cuestión es la clave sin siquiera tocar una sola línea de Y, segundo, si el objetivo de las
de procesamiento de los HD DVDs, código y sin ingeniería inversa”. redes sociales es darle el poder a sus
es decir, la piedra Rosetta que per- arnezami se limitó a estudiar dete- usuarios, nadie ha de extrañarse
mite romper el cifrado de los DVDs nidamente la memoria de su orde- cuando los usuarios esgriman ese
de alta densidad. Gracias a ella cual- nador mientras se reproducía la poder.
quiera puede escribir reproductores película “King Kong” en su Xbox. Post original que desató la controver-
para los nuevos DVDs de altísima Una vez conocida, la reacción de sia:
calidad, saltándose a la torera cual- la web fue espectacular y el código http://forum.doom9.org/showthread.
quier tipo de protección DRM y inmediatamente empezó a circular php?s=d9da68c11a88904641ba24b96ff9
abriendo este formato (y BluRay) a en blogs, foros y redes sociales. La 5a12&p=953036#post953036
los usuarios de Linux (cosa que sus Wikipedia prefirió retirar la página Kevin decide jugársela:
creadores y las empresas que lo dedicada a la secuencia por temor http://blog.digg.com/?p=74? 

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


Especial Control de Spam • PORTADA

Combatimos a los cerebros del correo no deseado en Internet

EL NEGOCIO
DEL SPAM
Los spammers cobran dinero real por sus dudosos servicios, y cientos de anunciantes están deseando pagar.

Os mostramos algunas técnicas innovadoras para controlar y contener el spam, incluyendo estrategias para

ralentizar spambots, impedir que los spammers consigan nuestra dirección y separar el spam del correo legí-

timo. POR JOE CASAD, ULRICH BANTLE Y TOBIAS EGGENDORFER

D
e acuerdo con el proveedor de correo electrónico Postini [1], de 524 millones
de correos que pasaron por este proveedor en todo el mundo en un periodo de
24 horas, el 88 por ciento era spam (345 millones de correos), incluyendo
2 millones de “ofertas especiales”, 650.000 planes para hacerse rico y 2 millo-
nes de correos con contenido sexual. Sólo 46 millones de correos legíti-
mos llegaron a su destino.
A pesar de los esfuerzos de los mejores expertos, el problema
del spam no remite. La mayoría de las organizaciones se
centran en contener el problema para evitar pérdidas en
tiempo de administración y productividad del usua-
rio final. En el tema de portada de este mes os
mostramos algunas de las últimas estrate-
gias para luchar contra el spam. Comenza-
mos examinando algunas técnicas para evi-
tar que los spammers consigan nuestra
dirección de correo, como primera medida.
A continuación veremos cómo podemos ale-
jar a los spammers de nuestro camino con
un tarpit. Revisamos también algunas apli-
caciones y servicios anti-spam, y describi-
mos una solución a medida consistente en
un filtro entrenable por el usuario que opera
desde el lado servidor.

Conocer al Enemigo
El origen del término “spam” no está com-
pletamente claro. El término se acuñó origi-
nalmente en Usenet, donde hacía referencia
a publicidad no solicitada. Cuando el fenó-
meno golpeó al correo electrónico, los usua-

EN PORTADA
Protección de direcciones................... 18
Tarpits.................................................. 23
Aplicaciones anti-spam....................... 25
Filtro Spam con IMAP.......................... 31

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


PORTADA • Especial Control de Spam

investigación del laboratorio de la empresa


anti-malware Karpersky, los spammers
rusos ofrecen gran variedad de paquetes en
función del número de direcciones, desde
100 a 3,7 millones, sin ningún tipo de restric-
ciones de grupos objetivo. La mayoría de los
anunciantes optan por el número máximo
de direcciones, sin importar la audiencia.
Las empresas implicadas en actividades
de spam no se preocupan de si sus acciones
generan los resultados deseados. En una
encuesta de Kaspersky, ninguna de las
empresas encuestadas medía realmente la
efectividad de su inversión en spam. Algu-
nos encuestados suponían un impacto de
sus actividades spammers en torno a un
0,01 a 0,05 por ciento de su facturación.

La Mejor Defensa
La industria informática ha desarrollado
Figura 1: Spamhaus mantiene una lista de los peores países en cuanto a spam, las peores todo un arsenal de estrategias para luchar
redes y los mayores spammers del mundo. contra el problema del spam. Las fuerzas
anti-spam se basan en herramientas
rios comenzaron a denominarlo UCE “…algunos países hacen poco por impe- como:
(Unsolicited Commercial Email) spam. dir que los spammers operen dentro de • Listas negras y listas blancas: Estas lis-
Hoy día, la mayoría de la gente deno- sus fronteras. Estos países se convierten tas contienen las direcciones de correo
mina a cualquier tipo de correo no solici- en paraísos seguros para las operaciones de spammers conocidos (listas negras),
tado simplemente spam. de spam que afectan a todo el mundo, y de remitentes legítimos y conocidos
El proyecto anti-spam Spamhaus [2] incluyendo a sus propios compatriotas. (listas blancas). Las listas blancas redu-
estima que 200 spammers generan el 80 Los países con el mayor número de cen la aparición de falsos positivos. Las
por ciento de todo el spam en los EEUU y spammers operando en sus redes suelen listas negras suelen ser poco efectivas,
Europa. Como las organizaciones spam- ser aquellos con poca o ninguna legisla- ya que los spammers suelen falsificar las
mers son generalmente grupos en lugar ción referente al spam”. direcciones del remitente.
de personas, Spamhaus supone que Spamhaus sitúa a EEUU como el país con • Listas negras y listas blancas basadas
campan por algún lado 600 profesionales la mayor población de spammers con en la IP: usan un método similar. Estas
del spam. Podemos encontrar el top ten mucha diferencia, aunque de acuerdo al top listas catalogan a los spammers a partir
de los spammers mundiales en la página ten de Spamhaus, se aprecia que países de su IP. Esta técnica fue útil cuando los
de Spamhaus [3]. como China o Rusia son también grandes relays abiertos eran los principales dis-
Aunque la mayoría de los usuarios centros de distribución de spam. Según una tribuidores de spam. Hoy día, las listas
desprecian al spam, muchas empresas
aún recurren a él. Una de las razones de
que siga existiendo es que los directores
de marketing no pueden resistirse a su
extremo bajo coste. Los spammers
cobran usualmente entre 100 y 200 dóla-
res (80 a 160 euros) por envío masivo. El
coste es tan bajo que las compañías pue-
den asumirlo sin afectar a sus presu-
puestos. Los spammers tienen un flujo
constante de clientes, incluso si los
correos se envían a direcciones descono-
cidas de manera indiscriminada.
Los spammers operan bordeando los
límites de la legalidad, a veces hacién-
dose pasar por negocios legítimos,
incluso cuando usan herramientas como
gusanos y virus para generar redes de
ordenadores secuestrados para sus Figura 2: Los intentos de engañar a los filtros anti-spam no son siempre tan obvios como en
sucios propósitos. Como dice Spamhaus, este caso.

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


Especial Control de Spam • PORTADA

negras son demasiado agresivas, han lle- blancas ayudan a evitar


gado a bloquear todas las IP dinámicas e clasificaciones incorrec-
incluso países asiáticos enteros. Des- tas. Los filtros más cau-
afortunadamente, esto deja fuera de tos esperan a que el
combate a muchas fuentes legítimas. usuario clasifique el
• Listas negras basadas en URL: Muchos correo como spam. Estos
correos spam anuncian páginas Web filtros aplican otros crite-
específicas. Si una URL sospechosa apa- rios adicionales para dis-
rece en un correo, se puede suponer que tinguir entre spam y
es spam. ham. Para cumplir con la
• Filtros de contenido: estos filtros anali- legislación de protección
zan el contenido y tratan de separar el de datos, el filtro central
spam del ham mediante la detección de sólo recibe checksums
frases típicas de spam. Las expresiones de correos recientes. El Figura 3: La propuesta Sender ID de Microsoft recibió una
favoritas son “pulse aquí” y “suscrí- algoritmo de checksum fría acogida desde el Proyecto Debian.
base”, así como “Viagra”. Las estrategias tiene que ser a prueba de
de combate tratan de detectar palabras cambios menores en el contenido de los
clave. correos, ya que el método es perfecta- Lo Que Viene
• Lazy HTML / Webbug: se trata de un mente conocido por los spammers, quie- A pesar del gran arsenal de estrategias, el
tipo especial de filtro de contenido que nes añaden texto aleatorio a su correo spam continúa inundando los buzones por
busca en los correos imágenes que se basura. todo el mundo. Los spammers se han vuelto
supone que ha de descargar el cliente de • Listas grises: la estrategia basada en lis- muy sofisticados, y son tan ingeniosos y crea-
correo desde Internet. Las imágenes se tas grises retarda la aceptación de correo tivos como los chicos buenos. Las campañas
sirven desde un script del lado servidor entrante, fingiendo un error temporal en del pasado verano mostraron lo agresivo y
que evalúa un parámetro GET específico las comunicaciones SMTP. En ese sofisticados que se han vuelto sus métodos.
al mismo tiempo. Los spammers usan momento, el remitente ya habrá enviado Los spammers han adoptado nuevas técni-
esta técnica para detectar si un mensaje su IP, junto con las direcciones de correo cas para evitar las tecnologías de huellas
se ha leído, verificando de esta manera del remitente y del destinatario. El servi- empleadas por los filtros anti-spam, por ejem-
sus listas de direcciones. dor de correo guarda esta información y plo, incluyendo GIFs animados a sus creacio-
• Filtros bayesianos: al contrario que los acepta el correo si el remitente vuelve a nes. Una vez que el filtro ha reconocido los
filtros de contenido configurados intentarlo. La idea es que los gusanos patrones en el correo spam y creado su huella
manualmente, que incluyen una lista que usan los spammers no tienen moto- digital, la imagen integrada cambia de
estática de palabras apropiadas, el filtro res SMTP completos y entienden el error tamaño, color o posición para evitar la detec-
bayesiano intenta generar una lista temporal como un error permanente. ción. Pequeños cambios que el receptor no
basándose en la teoría de probabilida- Desafortunadamente, los spammers de notará nunca al leer el correo, ya que cambiar
des. Para ello, analiza correos spam y hoy día ya conocen este sistema y saben el color a un solo pixel puede evitar su detec-
ham y basa la probabilidad de que un sortear las listas grises. ción.
correo sea publicidad no solicitada en • SPF, Sender ID, DK: el Sender Permitted Por tanto, la guerra armamentística conti-
función de la frecuencia de expresiones From, o Sender Policy Framework, así núa. No es de esperar una solución final a
específicas. Los spammers tratan de como el Sender ID, o la clave de domi- corto plazo. La batalla seguirá mientras los
confundir a estos filtros añadiendo listas nio de Yahoo, crean un registro de DNS anunciantes sigan queriendo pagar por hacer
de palabras aleatorias a los correos. Esta definiendo las fuentes desde donde un spam y la infraestructura de correo electró-
es la razón de la maraña de palabras sin dominio específico podrá recibir email. nico mundial sea incapaz de contenerlo. Lo
sentido que acompañan frecuentemente Además de la situación incierta sobre las mejor que podemos hacer es filtrar lo que
al spam de hoy día. patentes, todos estos métodos tienen un podamos e intentar evitar que nuestra direc-
• Filtros de imágenes: estos filtros inten- inconveniente importante: la mayor ción caiga en manos de los spammers. Siga
tan analizar el contenido de las imáge- parte del spam de hoy día se envía leyendo para saber cómo puede sumarse a
nes. Los primeros filtros se limitaban a desde ordenadores identificados por los esta lucha. ■
la detección del color de tonos de piel registros DNS como responsables del
comunes en pornografía. dominio. Registrar dominios y crear RECURSOS
• Filtros de checksum y filtros colabora- registros de DNS es parte del trabajo dia-
[1] Estadísticas de Postini: http://www.
tivos: los filtros colaborativos comparan rio del spammer. Después de todo, los
postini.com/stats/
los correos que llegan a muchas cuentas spammers están constantemente mejo-
e intentan descubrir similitudes. La rando para sortear los filtros URL y los [2] Spamhaus: http://www.spamhaus.org
lógica es aplastantemente simple: si reportes de abusos. [3] Top ten de spammers: http://www.
muchos usuarios reciben el mismo Podemos esperar la aparición de más téc- spamhaus.org/statistics/spammers.
lasso
correo, probablemente sea spam. Por nicas anti-spam conforme los sistemas
supuesto, esta técnica amenaza a los informáticos vayan cambiando, y la histo- [4] Kaspersky Lab: http://www. aspersky.
boletines legítimos, aunque las listas ria del spam seguirá su curso. com/de/

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


PORTADA • Protección de Direcciones

Eliminación del correo basura antes de que llegue al filtro

FRENO AL SPAM
A veces, la mejor forma de evitar que nos llegue el spam es impidiendo riencia de una dirección de correo para que
los robots recolectores no la reconozcan.
que los spammers consigan nuestra dirección.
Efecto Sponts
POR TOBIAS EGGENDORFER
Los fabricantes del sistema Sponts, que
hemos investigado en este artículo, hacen

S
i alguien publica en la web su direc- Dos técnicas que hacen que los spam- referencia a un fenómeno llamado Efecto
ción de correo electrónico, los spam- mers ignoren una dirección son: Sponts. La teoría es que si un spammer fra-
mers inundarán su buzón con a) hacerles creer que la dirección es invá- casa a la hora de enviar un mensaje de
basura (Figura 1). El filtrado de la entrada lida y correo electrónico y recibe un mensaje de
requiere potencia de CPU y se corre el riesgo b) disfrazar la dirección para evitar que “usuario desconocido”, eliminarán la direc-
de perder mensajes legítimos. Hasta ahora, sea descubierta por los recolectores ción de su lista para mantenerla actuali-
el trabajo a la hora de proteger un sistema Este artículo examina ambas técnicas. zada.
contra el spam se ha concentrado en el reco- Vamos a comenzar con un estudio sobre el Los spammers utilizan programas conoci-
nocimiento y filtrado de los mensajes de dispositivo Sponts, una herramienta hard- dos como verificadores de direcciones para
spam que llegan. Otra solución, es conven- ware que envía un mensaje de “usuario des- validar las direcciones de sus listas. El verifi-
cer a los spammers de que nos dejen en conocido” al spammer, y terminaremos con cador toma una lista de direcciones de
paz, desde primera hora, nuestra dirección. una técnica automática para alterar la apa- correo electrónico, lee la parte del dominio,
comprueba si el dominio posee una entrada
SMTP Autenticado DNS MX (Mail Exchange – Intercambio de
Correo) y entonces se conecta a la máquina.
Una de las razones por las que existe la Hace diez años, los servidores abiertos A continuación , los spammers suelen
epidemia actual de spam se debe a que fueron prohibidos y se registraron en lis- seguir con el diálogo del protocolo SMTP
SMTP no tiene un sistema de autentica- tas negras. Una rápida visita a ordb.org hasta RCPT TO: o utilizan el comando SMTP
ción. Aunque han aparecido diversas revelará que actualmente hay aún 250.000 VRFY para comprobar la dirección.
sugerencias para mejorar la seguridad de servidores abiertos. El cambio del proto- Ambos comandos preguntan al MTA
SMTP, todas han fracasado porque restrin- colo SMTP afectaría al menos a unos 25 (Mail Transfer Agent – Agente de Transfe-
gen o deshabilitan algunas funciones de millones de servidores de correo electró- rencia de Correo) para ver si conocen la
SMTP, incluyendo algunas tan triviales nico de todo el mundo, y a muchos más dirección y si es responsable de ella. Si es
como el reenvío de correo, una función clientes, que tendrían que ser actualiza- así, el MTA devolverá un OK en el diálogo
que es tan imprescindible como el desvío dos. SMTP, y en el caso de que no lo sea, devol-
de una llamada en el mundo de la telefo- Además, las soluciones son bastante verá un mensaje de error. El verificador eva-
nía. Al mismo tiempo, las sugerencias inefectivas. El ochenta por ciento de todos luará la respuesta y marcará las entradas
hacen uso de estándares competentes, los dominios que poseen una entrada SPF que hayan producido un mensaje de error
algunos de los cuales están protegidos (Sender Policy Framework – Marco de como entradas inválidas.
por patentes. Política de Envío) en sus registros DNS Aquí es donde el Efecto Sponts podría ser
Aparte de las disputas empresariales y pertenecen a spammers. Por ello tendría útil, pero el dispositivo hace algo más com-
políticas sobre los estándares, los merca- sentido utilizar una entrada SPF como un plejo. Primero trata de detectar el spam en el
dos, el poder y la influencia, además de la criterio adicional a la hora de detectar el comando SMTP HELO, y lo hace investi-
inefectividad de las propuestas actuales, spam. Microsoft manifiesta que SPF fue gando la línea MAIL FROM:. Estos coman-
existe otra razón por las que estas solucio- diseñado para excluir a los spammers y dos son anteriores a RCPT TO: en el diálogo
nes tienen poca probabilidad de triunfar. hacer de SMTP un protocolo más seguro. SMTP (Figura 2). Si el software no está
seguro de que el remitente sea un spammer,

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


Protección de Direcciones • PORTADA

entonces acepta el mensaje como pertene-


ciente a una lista gris y lo analiza ejecu-
tando una serie de reglas. En caso de spam
devuelve un mensaje SMTP de error tempo-
ral. Cuando el spammer intente conectarse,
el dispositivo Sponts reconocerá la dirección
IP, el nombre del dominio HELO, las propie-
dades MAIL FROM: y RCPT TO: y devuelve
un mensaje de “Usuario Desconocido”. Des-
afortunadamente, los verificadores sólo se
conectan una vez. Si en el primer intento
reciben una respuesta positiva, entonces
marcarán la dirección como buena. Por ello,
el dispositivo Sponts sólo será efectivo si el
verificador ya ha sido incluido en la lista
negra.

Desintegración de la Figura 1: El círculo vicioso del spam comienza con la publicación, por parte de la víctima, de su
Comunicación dirección de correo electrónico en un sitio web. Los Spiders recolectan la dirección y la envían
Estas consideraciones son sospechosas, así a los spammers. Éstos se encargan de enviar la “basura electrónica”, a través de los servi-
que tomamos dos dominios con bastante dores de correo, a las víctimas.
spam. Ambos recibían 30000 mensajes de
spam al mes y programamos un SMtarPit- tiempo, la dirección que eliminamos y la
based [1], un servidor de correo en minia- dirección que añadimos en Octubre. Fuera de Vista
tura en Perl, que parecía aceptar cada men- Encontramos dos efectos obvios. Primero, Nuestras pruebas han mostrado que simple-
saje entrante de un dominio. Sin embargo, el volumen de spam se incrementó rápida- mente añadiendo espacios en blanco a una
este servidor creó una trampa y rechazó mente en la nueva dirección. Después de dirección de correo electrónico puede ser un
cada mensaje del otro dominio, devolviendo unos cuatro meses, la dirección recibía tanto método de ofuscación efectivo y teórica-
un mensaje de “Usuario Desconocido” y spam como la dirección del grupo de control mente es seguro. Es difícil ocultar la direc-
registrando los resultados. y lo superó hacia el final de la prueba. ción de correo en el caso de que se tenga
Permitimos que el servidor de correo Segundo, la curva del spam de la dirección que publicar en la web. Sería más práctico
aceptara los mensajes de los dos dominios oculta es inversamente proporcional a ésta. reemplazar la información de contacto por
de prueba (Figura 3) durante tres meses. No Después de unos cuatro meses, el volumen una versión ofuscada (camuflada) cuando
hubo ningún incremento en el número de spam se redujo a la mitad respecto al del se sirvan los datos. La idea es que la direc-
medio de mensajes por día y ningún cambio grupo de control. Se esperaría que se redu- ción se introduzca y se almacene de forma
entre ambos dominios (Tabla 1). El dominio jera de nuevo en un par de meses cuando natural y que cuando se muestre, un filtro
cuyos mensajes eran aceptados recibió más los spammers obtuvieran CDs nuevos de proporcione la dirección con espacios en
correo al comienzo y a la finalización de la direcciones en las que ya no apareciese. blanco, es decir:
fase de pruebas, pero el dominio cuyos La eliminación de una dirección de un
correos fueron rechazados superó al otro sitio web tiene el mismo efecto que si se
durante el resto de la prueba. camufla. Algunos usuarios insertan nospam
La única explicación es la naturaleza arbi- en la parte local o en la del dominio de la
traria del spam. No apreciamos ningún dirección de correo electrónico. Para pro-
cambio significativo; ambos servidores de barlo, publicamos la dirección de correo
correo tuvieron la misma cantidad de tra- electrónico max.sample.nospam@exam-
bajo y no hubo ningún signo del Efecto ple.com y
Sponts. betty.sample@nospam.example.com, pero
recelosamente, configuramos el servidor de
Ofuscación correo para que aceptara y contara los
Aún teníamos esperanza en poder combatir correos enviados a
el spam ofuscando la dirección. Publicamos max.sample@example.com y betty.sam-
un par de direcciones durante once meses ple@example.com. La mayoría de los spam-
en diversas páginas web y las eliminamos mers obtuvieron la dirección de Betty elimi-
en Octubre de 2005. Para evitar confundir a nando el subdominio nospam, pero no lo
los spammers, les proporcionamos una hicieron en la mayoría de los casos con la Figura 2: El dispositivo Sponts se encarga de
dirección nueva para que pudieran mandar dirección de Max. Sin embargo, como algu- comprobar diferentes partes del protocolo
el spam. La Figura 4 muestra el volumen de nos spammers fueron capaces de enviar SMTP para ver si el mensaje es spam o no. Si
correo basura que llegó a la dirección de spam a Max, este método de ofuscación no se detecta el spam, entonces se envía un men-
control que estuvo en línea durante todo el es tan seguro como pudiera parecer. saje de “usuario desconocido”.

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


PORTADA • Protección de Direcciones

proveedores; en los servidores propios, sólo La Ofuscación


hay que poner una única línea por sitio en el Todo el mundo tiene preferencias a la hora
fichero httpd.conf. Las siguientes secciones de seleccionar una técnica de ofuscación
describen una solución que implementa adecuada. Si prefiere una técnica diferente,
esta forma de ofuscar las direcciones de no hay ningún problema. El filtro que
correo por medio de un filtro de salida de vamos a investigar utiliza una función inde-
Apache. pendiente para el proceso obfuscate() (Lis-
tado 1, línea 17).
Filtro para Apache El siguiente problema aparece durante el
El servidor Apache httpd permite a los procesamiento del sitio web. Apache no le
administradores la posibilidad de instalar proporciona al filtro el fichero completo,
filtros, más o menos, en cualquier parte del sino que lo divide en segmentos que hay
proceso de gestión del sitio web, desde fil- que procesar secuencialmente (líneas 39 a
tros de entrada en el flujo de datos de 85). Esta forma de actuar tiene sentido, ya
Figura 3: El volumen de spam entrante per- entrada, hasta filtros de salida que directa- que un filtro de salida podría ser aplicado a
manece constante a lo largo de un periodo de mente operan sobre el flujo de datos de una imagen de un DVD, además de a fiche-
tiempo de tres meses, sin importar que el salida. La solución es simple: se elige un ros simples text/html o text/plain. Si Apache
servidor de correo haya aceptado cada men- lenguaje de programación apropiado, se pasara el fichero de imagen entero, el sis-
saje o los haya rechazado con un “usuario aceptan los datos pasados por la API de tema podría quedarse sin memoria y col-
desconocido”. Apache, se utiliza una expresión regular garse.
para buscar las direcciones de correo elec- La división de los ficheros en bloques pre-
trónico, se reemplazan las direcciones con senta algunas desventajas a la hora de reali-
usuario@example.com sus versiones ofuscadas y se manda de zar la ofuscación. Si una dirección de correo
vuelta la versión modificada del sitio web a electrónico coincide en una de las divisiones
se transforma en: Apache. de bloques, el filtro probablemente se pasa-
Los filtros de Apache normalmente se ría por alto parte de la dirección. Para evi-
u s u a r i o @ e x a m p l e .U programan en C y C++, y las APIs están tarlo, tiene que almacenar parte de la infor-
c o m disponibles para ambos lenguajes. Perl mación que esté próxima a los límites de los
tiene una alternativa apropiada en la forma bloques para poder identificar una posible
La dirección será reconocible por un visi- de mod_perl. Como mod_perl compila el dirección que haya coincidido entre los dos
tante, pero no por un robot recolector. Para script cuando se ejecuta Apache, no hay bloques. Desde un punto de vista técnico, es
un sitio web grande, o para un proveedor de que preocuparse por el posible efecto que fácil pasar datos sobre los límites de los blo-
servicios que soporte páginas diseñadas por pudiera tener en tiempo de ejecución. Des- ques, sin embargo, es más difícil decidir qué
sus usuarios, esta técnica para ofuscar uni- afortunadamente, mod_perl es un devora- datos pasar. Si el filtro almacena demasiada
formemente todas las direcciones reduce la dor de memoria y Apache lo carga en información, desperdiciará espacio de
sobrecarga y elimina la incertidumbre que memoria para cada instancia que ejecute. memoria, y si no almacena la suficiente, no
va asociada a cada dirección que se ofusque Un módulo en C consumiría menos memo- funcionará tal y como se espera.
de forma individual. ria, pero al estar mejor documentado y al
Desde el punto de vista del usuario, sería poseer mejores funciones para la gestión Soporte Estándar
ideal disponer de una solución que con un de las cadenas de caracteres, nos decidi- El RFC 822 y la variante actual 2822 [2] espe-
clic ocultara las direcciones de los sitios vir- mos por utilizar mod_perl para este pro- cifican el formato de una dirección de correo
tuales que se ejecutan en la mayoría de los yecto. electrónico en la que no está permitido la

Figura 4: Cuanto más se publique una dirección de correo en un sitio web, más cantidad de spam se recibirá (amarillo). La dirección de las
barras rojas es eliminada de la web en octubre de 2005 y reemplazada por la dirección azul. El volumen de spam no se incrementa notable-
mente cuando la dirección se elimina de la web.

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


Protección de Direcciones • PORTADA

inclusión de espacios en blanco bajo nin- de espaciado en blanco (espacio en blanco, El único bloque que el filtro procesa es el
guna circunstancia. Afortunadamente, el tabulador, nueva línea) como separador. último, de modo que se puede estar seguro
carácter espacio en blanco es el carácter que Esto nos proporciona una solución para de que el filtro no dividirá ninguna dirección
se usa con mayor frecuencia en textos nor- determinar los límites a la hora de gestionar de correo. La expresión regular de la línea
males escritos en cualquier idioma europeo. los bloques. El filtro procesará cada bloque 68 busca la última palabra del límite y
La distribución de los caracteres probable- hasta el último espacio en blanco y añadirá el divide el búfer. Cualquier cosa que suceda
mente siga los mismos patrones en los fiche- siguiente bloque que se le pase a los resulta- tras la última palabra, la función la pasará
ros (X)HTML, si se utiliza cualquier variante dos. en la siguiente llamada en $leftover.

Listado 1: Filtro de Salida


01 # Filtro de Salida Perl para 31 $obfus = join(‘ >(2*BUFF_LEN)) {
Apache 2.0: ‘,split(//,$mail));
61 # Nunca espera los espacios en
02 # Disimula automáticamente las 32 blanco
direcciones de correo 33 # Reemplaza todas las
62 $f->print(obfuscate($buffer));
03 # para impedir que los robots ocurrencias
web la capturen 63 $buffer = $leftover = “”;
34 $line =~ s/$mail/$obfus/gi;
04 35 } 64 } else {
05 package MyApache::ObMail; 36 return $line; 65 # Conserva el último comienzo
06 37 } de una palabra
07 use strict; 38 66 # con la idea de trabajar sólo
08 use warnings; 39 sub handler { con direcciones
09 use Apache::Filter (); 40 # Llamada por apache.Trabaja 67 # completas y ni con
10 use Apache::RequestRec (); con los bloques fragmentos
11 use APR::Table (); 41 # de datos suministrados por
68 $buffer =~ /(.*)(\s\S*)\z/gs;
12 use Apache::Const -compile => httpd.
69 $leftover = $2;
qw(OK DECLINED); 42
13 43 my $f = shift; 70 $f->print(obfuscate($1));

14 use constant BUFF_LEN => 44 unless ($f->ctx) { 71 }


10240; 45 # Comprueba por primera vez el 72 }
15 # Almacena los datos de salida tipo de contenido
73
de apache 46 unless ($f->r->content_type =~
16 74 if ($f->seen_eos) {
47 m!text/(html|plain)!i ) {
17 sub obfuscate { 75 # El final del flujo de datos
48 # Sólo modifica text/html y
18 # Invocación: obfuscate(data) text/plain a la vista.

19 # Oculta todas las direcciones 49 return Apache::DECLINED; 76 if (defined $leftover) {


de correo 50 } 77
20 51 # Inicializa Content-Length $leftover=obfuscate($leftover)
21 my $line = shift; calculada por el ;
22 my $mail_regexp = 52 # servidor. Vamos a cambiar la
78 $f->print(scalar $leftover);
‘[A-Za-z_0-9.-]+@’. cantidad de datos
79 }
23 ‘([A-Za-z_0-9-]+\’. 53
24 ‘.)+[A-Za-z]{2,6}’; $f->r->headers_out->unset(‘Con 80 } else {
tent-Length’); 81 # Pasa el resto de los datos a
25 my $adr = undef;
54 } la siguiente invocación
26
55
27 while ($line =~ 82 $f->ctx($leftover) if defined
/($mail_regexp)/g) { 56 my $leftover = $f->ctx;
$leftover;
28 # Divide la dirección en 57 while ($f->read(my
83 }
caracteres individuales $buffer,BUFF_LEN)) {
58 $buffer = $leftover.$buffer 84 return Apache::OK;
29 # y la ensambla con los
espacios intercalados 59 if defined $leftover; 85 }

30 $mail = $1; 60 if (length($buffer) 86 1;

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


PORTADA • Protección de Direcciones

direcciones X.400 feridos. La función obfuscate() a la que nos


Tabla 1: Respuesta de Mensajes como posible fuente referimos anteriormente se encarga de
y Mensajes Recibidos de direcciones de camuflar la dirección en las líneas 17 a 37.
Aceptados Usuarios Desconocido mayor tamaño. La función espera un bloque del tamaño
Comienzo 29958 29820 El RFC recomienda correcto y utiliza la expresión regular alma-
1 Mes después 33424 36582
que no se implemen- cenada en $mail_regexp (líneas 22 a 24)
ten restricciones de para extraer la dirección de correo electró-
2 Meses después 34839 36768
tamaño. Si no se nico (línea 27).
3 Meses después 36738 35287
siguiera esta reco- La función split() trocea una cadena de
mendación, el filtro caracteres en un array de caracteres; join()
podría utilizar un valor de 320 bytes para añade los espacios en blanco y junta de
Falta de Memoria $leftover. Se podría pensar en implementar nuevo la cadena (línea 31). Además,
Esta solución podría dejar de funcionar si el esta alternativa o bien establecer un límite a@bc.de se transforma en a @ b c . d e. Si
script procesara una gran cantidad de datos de 985 caracteres. se prefiere alguna otra técnica de ofusca-
en los que no aparecieran espacios en ción, aquí es donde hay que realizar los
blanco. Si el contenido es proporcionado Afinando cambios.
por un usuario (una entrada de formulario, El tamaño del búfer es decisivo para el ren- Para instalar y activar el módulo Perl, hay
por ejemplo), un atacante podría introducir dimiento del filtro. No debe ser ni dema- que almacenarlo en la ruta de búsqueda del
datos sin espacios en blanco, haciendo que siado pequeño ni tampoco demasiado módulo mod_perl, que es la ruta normal de
el consumo de memoria del filtro se dispa- grande. Lo mejor será descubrir el valor Perl. Se podría llamar al directorio MiApa-
rara. Si el script falla a la hora de encontrar óptimo ejecutando el banco de pruebas che para los módulos que se desarrollen
un espacio en blanco entre los dos búfers, Apache 2,0 ab. El banco de pruebas accede para Apache y el nombre del fichero del
generará como resultado el búfer completo. a un sitio web un número determinado de módulo ObMail.pm (del inglés Obfuscate
Aunque se pueda pensar que la salida veces con un número específico de conexio- Mail). Los nombres de los directorios y
incluya una dirección de correo en texto en nes en paralelo para averiguar el tiempo ficheros deben ser idénticos a los nombres
claro, el tamaño de 10KB del búfer hace que medio de acceso para el sitio web. de la línea package del código fuente (línea
esto sea imposible. Cuanto más accesos en paralelo se ten- 5), y además son sensibles a las mayúsculas
El RFC 2821 [3] restringe la líneas de los gan, menor tendrá que ser el tamaño del y minúsculas. Los cambios en el ficheros de
comandos SMTP a un máximo de 1000 búfer, ya que Apache creará uno nuevo para configuración de Apache, httpd.conf se
caracteres, incluyendo CR + LF (fin de cada instancia del filtro. Si se tiene un búfer muestran en el Listado 2. Tras reiniciar el
línea). MAIL FROM: y los caracteres mayor grande, el sistema empezará más pronto de servidor web, el módulo debería modificar
que y menor que, que rodean la dirección lo esperado a hacer swapping. Uno dema- cualquier página que se sirva.
de correo electrónico, reducen esto a un siado pequeño implicará un mayor número
máximo de 985 caracteres para la dirección. de llamadas al filtro. Un buen ajuste para el Conclusiones
El RFC también restringe la parte local de la tamaño del búfer reduciría el retraso inevita- No hemos notado el Efecto Sponts en nues-
dirección a 64 caracteres y el nombre de ble con los ficheros HTML pequeños, aun- tro laboratorio. Por otra parte, la técnica de
dominio a 255. El carácter @ separa las dos que tener que reiniciar Apache cuando se ofuscación preferida por los usuarios de
partes. Si el búfer es mayor que 64 + 1 + modifique el código fuente es un fastidio. Usenet y los foros, que se basa en el añadido
255 = 320 caracteres y no incluye ningún Sería conveniente comprobar que siem- de la palabra nospam, tiene sus limitacio-
espacio en blanco, entonces no puede con- pre que se invoque al filtro éste reciba datos nes. Algo es cierto, sin embargo: es conve-
tener ninguna dirección de correo válida. de texto; esto impedirá que maneje acciden- niente proteger nuestra propia dirección de
Las direcciones de correo pueden ser más talmente ficheros binarios. Para ello, la línea correo, y si hay que revelarla en una página
largas, bajo ciertas circunstancias. El RFC 47 comprueba con una expresión regular el web, debemos asegurarnos de que la ofus-
dice “Los objetos mayores que estos tama- tipo de contenido detectado por Apache. camos. ■
ños deberían evitarse siempre que sea posi- El filtro se dispara para los tipos text/plain
ble”, pero hace referencia a conversiones de o para los text/html, en cualquier otro caso
le indicará a Apache que no está interesado RECURSOS
en los datos (línea 49). Dependiendo de los [1] Paul Grosse, SMtarPit 0.6.0: http://
Listado 2: Cargando el
requerimientos, se podrían añadir más tipos www.fresh.files2.serveftp.net/
Módulo
MIME [4] aquí, para cubrir sitios web que smtarpit/
01 SetHandler modperl
sirvan páginas WML para los teléfonos con [2] RFC 2822, “Internet Message For-
02 PerlModule MyApache::ObMail soporte WAP, por ejemplo. mat”: http://www.ietf.org/rfc/rfc2822.
txt
03
El Siguiente Paso [3] RFC 2821, “Simple Mail Transfer
04 <Directory /var/www/html> Si la función decide que es responsable, lo Protocol”: http://www.ietf.org/rfc/
05 PerlOutputFilterHandler primero que hace es restablecer el valor de rfc2821.txt
MyApache::ObMail Content Lenght en la cabecera HTTP (línea [4] MIME-Type-Listen: http://www.iana.
53). La ofuscación de la dirección de correo org/asignments/media-types/
06 </Directory>
cambia el tamaño de los documentos trans-

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


Tarpits • PORTADA

Cómo utilizar tarpits para atrapar a los spammers

TARPITS
Un tarpit ralentiza el spam, reduciendo la efectividad de las armas del Mejorar el Mundo
Los tarpits de SMTP autónomos, como
spammer. POR TOBIAS EGGENDORFER. Smtarpit [2], están diseñados para liberar
Internet de los spammers, que en teoría

E
n la Red se pueden encontrar cosechadoras durante días, lo que prueba la deben caer atrapados al toparse con uno de
muchas direcciones de email, que efectividad de los tarpits HTTP. ellos. Por desgracia, los mailers masivos
los spammers pueden conseguir modernos suelen ser aplicaciones multita-
para futuras campañas de mailing utili- Spamming rápido rea o multihebra: abren varias conexiones
zando bots de recolección. Algunas vícti- Hacer spam sólo merece la pena si el paralelas a los servidores de correo. Si uno
mas contraatacan con la herramienta lla- spammer es capaz de conseguir la mayor de los objetivos es un tarpit, el bot pierde
mada “tarpit”. Un tarpit es un sitio web cantidad de direcciones email, en un corto esa conexión; sin embargo, esto no suele
generado automáticamente que sirve de período de tiempo y con el mínimo servir de nada, ya que un cliente puede
cebo y confunde a esos bots con una esfuerzo. En algunas ocasiones se ha suge- abrir una conexión a un servidor SMTP
complicada maraña de URLs sin sentido rido la idea de empezar a cobrar por cada desde cualquier high-port. De estos, hay
(ver Figura 1). email para combatir el spam; sin embargo, más de 64.000, y el mailer masivo puede
Cuanto más tiempo podamos mantener la muchos expertos opinan que el precio de enviar cualquier número de mensajes a
verdadera información escondida, más larga los sellos virtuales afectaría a los usuarios cada conexión.
será la lista de direcciones de tarpit. En cir- de correo legítimos. Así pues, cada tarpit sólo puede bloquear
cunstancias ideales, el bot terminará con una Al ralentizar la transmisión del spam, una de 64.000 conexiones posibles. El
lista llena de enlaces inútiles. Para conseguirlo, convertimos la computación que hay spammer aún puede utilizar maliciosa-
el sitio-cebo tiene que publicar más enlaces detrás en algo muy caro. En un caso ideal, mente todos los demás servidores de
por sí solo que cualquier website medio. las conexiones quedarían ralentizadas correo, y el daño que se la he hecho es irre-
Probé a lanzar una miniaraña (que desarrollé hasta tal punto en que dejaría de ser atrac- levante. El argumento de que suficientes
yo mismo) a lo largo de 23.000 páginas, y tivo para el spammer. Y eso es exacta- tarpits de SMTP distribuidos podrían conse-
determiné que cada página tiene una media mente lo que los tarpits de SMTP preten- guir el milagro, es fácil de desmontar.
de 6.4 enlaces nuevos. El tarpit típico publica- den conseguir. Hay tipos distintos para De hecho, para bloquear el 25% de las
ría 20 por página: el triple del valor medio. diferentes escenarios: algunos están dise- conexiones de correos masivos de spam, el
La única forma que tienen estos bots de evi- ñados para proteger un sitio específico, 25% de todos los servidores de correos ten-
tar la trampa es limitar el tiempo a emplear en mientras que otros se destinan a exiliar el drían que ser tarpits. Si asumimos una can-
cada dominio; pero definir un tiempo límite spam de Internet para siempre. Este grupo tidad aproximada de 25 millones de servi-
hace que el bot se detenga antes de haber ter- de héroes existen sólo para aceptar los dores de correo en todo el mundo, esto sig-
minado, así que el spammer no conseguiría correos de spam. La idea es hacer que el nificaría tener 7,5 millones de tarpits, una
recolectar todas las direcciones del site. Se registro de MX de un dominio apunte al situación claramente inverosímil.
podría decir que, cuantos más operadores uti- tarpit de SMTP, y publicar una enorme
licen tarpits, más difícil será la vida de los lista de direcciones de correo que nadie Herramientas de Bloqueo
spammers. use. Si todo se ciñe al plan, cada email de Spam
Las pruebas prácticas nos muestran que enviado a estas direcciones debería ser la mayoría de mailers masivos utilizan
estos programas son capaces de distraer a las spam. en estos momentos tiempos de espera

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


PORTADA • Tarpits

Figura 1: Los tarpits de HTTP están diseñados para engañar a las herramientas de recolección de direcciones en sitios web. Las trampas bien
preparadas pueden enredar a los bots en una maraña de enlaces improductivos.

agresivos, y tienden a interrumpir la probable es que se les legitime e incluya Conclusiones


conexión tan pronto como es posible. Es en la lista blanca. Un tarpit de HTTP es una medida
esto lo que hace de los tarpits de SMTP Siempre que un mensaje proveniente de preventiva útil, más que capaz de
autónomos algo más o menos inefi- una dirección identificada como bot de molestar a las cosechadoras de email.
ciente. spam alcanza el programa, éste ralenti- Los tarpits de SMTP son útiles, pero no
El hecho de que estos bots de spam zará artificialmente la conexión. Dado que son la medida definitiva para luchar
traten de protegerse a sí mismos tiene esto suele ser interpretado por los mailers contra los spammers.
su parte útil: la segunda clase de tarpits masivos como una característica de los Para ello, sería preferible considerar
de SMTP se comportan como un proxy tarpit, el bot cerrará la conexión tan la opción de un tarpit SMTP,
de un servidor de correo ya existente. pronto como pueda. Al hacer esto, se con- configurado como proxy para nuestro
El tarpit acepta las conexiones de sigue que el spammer no llegue a enviar propio MTA. Gracias a la política de
entrada destinadas al MTA y las ralen- correo no deseado al servidor local de tiempos de espera agresivos, los
tiza. correo. mailers masivos detendrán su intento
Algunas herramientas muy elegantes de spamd también ralentiza las conexiones de envío rápidamente. ■
este tipo son el spamd de OpenBSD [3] y de aquellos remitentes incluidos en la lista
SMTP-Wrapper, de Lutz Donnerhacke. La gris. De nuevo, los bot tienden a rendirse
RECURSOS
herramienta de OpenBSD spamd incluye rápidamente cuando se les enfrenta así.
[1] Giovanni Donelli, Email Interferome-
una lista negra de IPs de spam conocidas, David Purdue [3] nos informa de que la
try: Spam Conference 2006, Mit,
y otra con las de servidores email legíti- decisión de parar se toma un par de
Cambridge, MA.
mos. Las demás se manejan mediante el segundos después de que se establezca la
[2] SMtarpit v.0.6.0, de Paul Grosse:
mecanismo de lista gris del programa, que conexión. Así, un tarpit puede conseguir,
http://www.fresh.files2.serveftp.net/
se utiliza para ir poblando la blanca. Para con efectividad, que la mayoría del spam
smtarpit/
ello, el daemon responde con un mensaje no alcance el servidor local, porque los
de error de “temporalmente no disponi- mailers masivos acostumbran a cortar la [3] David Purdue, Adventures in the
ble”; si el remitente no reintenta el envío, conexión. Esto protege al servidor contra tarpit – Implementing OpenBSD’s
la herramienta asume que la IP pertenece el spam, a la vez que conserva el ancho de spamd, AUUG 2005, Sydney. Tam-
a un spammer y añade la dirección a la banda que, de otro modo, el spammer bién en http://www.openbsd.org/
spamd/.
lista negra. A los que sí reintentan, lo más estaría desaprovechando.

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


Aplicaciones anti-spam • PORTADA

Una comparativa de aplicaciones y servicios antispam

CARRERA
CONTRA EL SPAM

BMW AG
Los filtros de spam pueden ayudar a reducir la cantidad de basura
reccionar una cuenta de correo existente no
que se cuela en los buzones, ya que son bastante fiables y no presen- sería bastante, ya que la guerra contra el
spam comienza en el propio diálogo SMTP.
tan demasiados efectos secundarios. Te mostraremos lo que hemos Así que cada candidato necesitaba su propio
dominio y entrada DNS MX (véase el cuadro
encontrado al probar cinco aplicaciones antispam y dos proveedores titulado “Intercambio de correo en DNS”).
de servicios. POR TOBIAS EGGENDORFER
Cuatro Meses de Spam Fresco
Lo primero que necesitábamos era garanti-

F
iltrar el spam según entra en la red bados y optimizados para luchar contra el zar un suministro de spam continuo a direc-
permirte a los profesionales IT mante- spam conocido. Sin embargo, los spammers ciones múltiples. Para ello, registramos diez
ner el control, lo que incrementa la desarrollan constantemente métodos de dominios y publicamos un website con cua-
efectividad del filtro y mejora la productivi- ocultación con la intención de engañar a los tro direcciones de correo en cada uno de
dad del usuario, al reducir el exceso de filtros existentes, y probando continuamente ellos. Todos estaban online desde seis meses
correo. En números anteriores de Linux su correo basura contra las técnicas de fil- antes de que comenzara la prueba, y había
Magazine hemos perfilado algunos escena- trado. muchos links que los señalaban desde otras
rios basados en software para integrar el fil- Los spammers suelen abrir cuentas de páginas. Añadimos una selección de pala-
trado de spam en un servidor mail. En este correo en los principales proveedores para bras clave para despertar el apetito de los
artículo echaremos un vistazo a algunas comprobar si sus correos pasan el filtro o se bots de spam, y nos sentamos a esperar a
alternativas, como SpamAssassin, a estos fil- envían directamente a la basura. Algunos que mordieran el anzuelo.
tros convencionales. En particular, atendere- programas de envío masivo de correo llegan Cosa de seis meses más tarde, los domi-
mos especialmente algunas aplicaciones a integrar SpamAssassin [3] para hacer sus nios y las dos cuentas de webmail estaban
basadas en hardware, y examinaremos un pruebas antes de enviar nada. El spammer perfectamente preparadas; cada una de ellas
par representativo de filtros de proveedores modificará el texto hasta que el mensaje sea recibía suficiente correo y cantidades pareci-
de servicio de Internet. capaz de saltarse los filtros más populares. das de spam. Durante la fase principal de las
En definitiva, la media de detección de pruebas, cada dirección víctima recibía entre
El Entorno de Pruebas spam conocido no nos dice mucho acerca de 50 y 100 mensajes de spam. El servidor de
El método típico para probar los productos la calidad de las heurísticas de un filtro. Es correo para los dominios era una máquina
antispam es tomar un gran archivo de spam difícil saber cómo va a reaccionar un filtro con diez direcciones IP asignadas. Cada una
[2] y lanzar a los filtros contra él (véase el basado en datos históricos a la marea diaria de ellas se introdujo como el MX de un
cuadro “Técnicas de filtrado”). En el mejor de spam. Esto fue lo que nos impulsó a pro- dominio registrado. Utilizamos Sendmail
de los casos, esto nos dirá si el vendedor ha bar cómo se enfrentaban a spam descono- para recoger los mensajes; este software sim-
hecho los deberes, y si sus filtros están pro- cido, recién salido de Internet. Sólo con redi- plemente los pasa a un pequeño script Perl,

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


PORTADA • Aplicaciones anti-spam

dor de correo objetivo. incluso, utilizar varios escaners al mismo


Este método subcontrata tiempo para compensar las carencias de un
la gestión del filtro de producto individual; una capacidad que se
spam al proveedor de ser- ve reflejada en la licencia de uso.
vicios; sin embargo, para
que nuestro correo pase Spam de Calidad
por un proveedor externo No todos los vendedores con los que contac-
hay que tenerle mucha tamos quisieron, de hecho, ofrecernos sus
confianza. equipos para pruebas; esto nos dejó con tres
Los dispositivos que dominios sin utilizar. Habíamos pensado, en
hemos probado funcio- principio, que uno de ellos sirviera para ofre-
nan como un proxy de cer resultados comparativos entre dominios
entrada SMTP: el servidor filtrados y sin filtrar. Finalmente, nos dimos
Figura 1: Cinco dispositivos entraron en nuestras pruebas. De de correo externo utiliza cuenta de que lo que podía haber resultado
abajo hacia arriba: Symantec Mail Security 8260, McAfee SMTP para contactar con un inconveniente se convirtió en un bonus,
Secure Content Management Appliance 3200, Ironport C10 el dispositivo y trata de al permitirnos definir un valor mucho más
Email Security Appliance, Canit Anti-Spam e IKU Sponts-Box. enviar el mail. Si éste estable del volumen del spam.
pasa el filtro, el aparato Dado que las direcciones de correo que
que separaba el cuerpo de la cabecera e emplea SMTP de nuevo para dirigirlo al ser- habíamos creado sólo eran conocidas por los
introducía los resultados en una base de vidor de correo local. Es un tejemaneje muy spammers, al principio los servidores de
datos. Cuando los dispositivos empezaron a habitual para los servidores de correo; en correo sólo recibían mensajes de ellos. Esto
llegar (algunas veces acompañados por un cuanto al usuario de la red interna, permane- es útil para comprobar la media de detección
técnico de mantenimiento; otras por correo cerá en una bendita ignorancia de todo el de un filtro, pero no nos dice nada sobre los
tradicional), a cada cual se le asignó a un asunto. Podrá seguir bajándose el correo del falsos positivos; y precisamente los falsos
dominio y la dirección MX IP (ver Figura 2). servidor o leyéndolo online. positivos son uno de los criterios principales
Así evitábamos la necesidad de cambiar los Hemos pasado por alto el filtrado de virus para definir la calidad de un filtro. Un solo
datos de DNS, lo que podría haber afectado a en este test de forma deliberada. Esos che- correo legítimo, calificado erróneamente de
los resultados de la prueba. queos están más allá de las expectativas de spam, puede ser más dañino que permitir
nuestras pruebas. Tampoco habríamos des- que pasen 10 correos basura.
SMTP Proxy velado gran cosa sobre los dispositivos, ya Para averiguar la media de falsos positivos,
Por supuesto, teníamos que cambiar la que la efectividad de la detección de virus hacia el final de las pruebas bombardeamos
entrada MX para acomodarnos a los provee- está definida por el escáner del que dependa a los candidatos con mensajes legítimos.
dores de servicios, Expurgate y Spam Stops el aparato. Para ello, un buen número de usuarios nos
Here. Para poder utilizarlos, tendremos que Sin embargo, un antivirus también puede dio permiso para utilizar sus direcciones, lo
introducir la IP del proveedor como MX del reducir el volumen de correos no solicitados, que nos aseguraba una muestra representa-
propio dominio. Ambos analizan y filtran los eliminando cualquier gusano que se detecte tiva de mensajes ham (que no son spam).
mensajes de entrada y los reenvían al servi- en el buzón. Algunos productos permiten, Así que reenviaban mensajes desde sus
buzones, incluyendo boletines de noticias, o
escribían sus propios emails de texto, algu-
Intercambio de correo en DNS nos en lenguas extranjeras como búlgaro o
Un agente de transferencias de correo entonces, de pasar el mensaje al servi- turco. Por supuesto, esto es una tortura para
(Mail Transfer Agent o MTA) descubre, dor de correo interno con el máximo de los filtros que intentan realizar análisis de
primero, la dirección IP a la que se prioridad. lenguaje.
quiere enviar un mensaje [4]. Para ello, En entornos laborales, esto significa, Al final de la fase de pruebas, pusimos a
extrae el nombre del dominio de la normalmente, que la prioridad MX más los sistemas bajo un gran estrés. Durante un
dirección de correo y envía una petición alta está en las direcciones de la propia par de días, hicimos que los registros MX de
MX (Mail Exchange, o “intercambio de compañía, gestionada por el departa-
correo”) a un servidor DNS. Éste res- dos dominios (que eran objetivo de un volu-
mento local de IT. El filtrado estricto de
ponde con la dirección IP del servidor de men de spam dos veces más grande que el
spam se suele aplicar aquí. El portador a
correo autorizado. Para redundancias, de nuestro medio de pruebas), redirecciona-
menudo tiene varios servidores MX adi-
se permite a los dominios tener múlti- cionales de backup; estos no suelen apli- ran su correo basura a cada uno de los dispo-
ples entradas MX con diferentes priori- car filtros, así que suelen ser un objetivo sitivos, lo que lo forzaba a manejar alrededor
dades (donde un valor bajo denota una prioritario para el spammer. Si éste tiene de 35.000 correos diarios.
prioridad más alta). éxito al enviar un correo basura, ha
El remitente MTA establece una cone- alcanzado su objetivo (o al menos se las Symantec Mail Security 8260
xión de la máxima prioridad MX e ha apañado para saltarse varios filtros, Se pidió a todos los vendedores que nos
intenta enviar el mensaje al MX. Si el como listas negras de Ips). Las listas suministraran un producto que sirviera para
intento falla, el MTA contacta con la negras verán a ese remitente como legí- negocios de pequeño o medio tamaño. Pese
siguiente prioridad más alta. Los servi- timo y con una baja prioridad MX, en a esto, Symantec nos envió su mejor pro-
dores de correo secundarios tratan, lugar de como un spammer.
ducto, el 8260. Esta máquina está diseñada

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


Aplicaciones anti-spam • PORTADA

para empresas con más de mil cuentas de del sistema antivirus, lo dejamos tal
correo, y se supone que es capaz de manejar cual. El menú secreto nos dio acceso
más de 10.000. a algunas opciones de configuración
El sistema soporta clustering para medios muy interesantes; por ejemplo, es
que requieren más alto rendimiento. El hard- posible modificar el mensaje de
ware incluye un Dell Poweredge Server con saludo del SMTP, lo que permite a
una caja de rack de 19 pulgadas, y una placa los administradores ocultar la exis-
frontal diseñada por Symantec. Este buque tencia del dispositivo de las sondas
insignia de la empresa ostenta dos CPUs sencillas enviadas por atacantes.
Xeon con una velocidad de reloj de 3 Ghz. El filtro de spam está basado en el
Gracias a sus 2 GB de RAM y sus dos discos Antispam de Brightmail; Symantec
duros Raid 1 en espejo de 73 GB, se asegura compró la empresa en Junio de 2004.
suficiente capacidad de almacenamiento. El Entre otras cosas, emplea SPF, varias
doble suministro de potencia redundante listas negras y blancas, filtrado URL y Figura 2: Durante la fase de recolección (arriba), un
conlleva el hecho de que este paquete está Sender ID con propósitos de detec- servidor de correo recogió spam en 10 direcciones IP
claramente dirigido a un mercado profesio- ción. Además, Symanted emplea de 10 dominios distintos. Durante la fase de pruebas,
nal. El sistema operativo es Red Hat Enter- detección de firma y un algoritmo de se introdujeron los dispositivos como proxies SMTP
prise Linux 3.0. El login como root no está detección comparativo basado en para las direcciones.
previsto. Según Symantec, el sistema utiliza hash. Cada filtro individual devuelve
una versión mejorada de Postfix. un valor, que se emplea para puntuar la posi- 2,8 Ghz y 1 GB de RAM es todo lo que nece-
El interfaz de configuración está basado en bilidad de que un mensaje sea spam. sita para más de 1000 usuarios. El subsis-
web, vía HTTPS por el puerto 41433. La No hay forma de desactivar los distintos tema de disco duro es un SCSI Raid 1. Este
configuración inicial puede realizarse tanto a mecanismos de filtrado de modo individual. aparato también utiliza Red Hat Linux; sin
través de una consola en serie, como Sin embargo, es posible definir valores indi- embargo, lleva más software a bordo que el
mediante el teclado y la pantalla local. Lo viduales de puntuación de spam para grupos anterior. Un Secure Web Gateway (“Gateway
único que configura es el nombre del host y de usuarios (definidos en un servidor de red seguro”) venía preinstalado en el dis-
el medio de red. Tanto la clave de licencia LDAP). positivo con el que probamos (este producto
como la dirección del filtro (de entrada o de En nuestras pruebas, el sistema Symantec está disponible individualmente y no lo
salida) utilizan el interfaz web. El técnico de consiguió puntuar en lo más alto en cuanto a tomamos en consideración en nuestras prue-
Symantec rebuscó en su sombrero de copa y falsos positivos, pero identificó menos de un bas).
conjuraron un menú secreto presionando el 90% del spam. Esto significa que, más o De nuevo, este aparato de McAfee emplea
atajo de teclado [Shift] + [A] en el menú Set- menos, un 10% de spam consiguió cruzar la la consola local para la configuración inicial,
tings (ver Figura 3). “verja”. pero también soporta un método basado en
web que utiliza un cable para conectarlo con
Menú secreto el cliente. HTTPS se emplea nada más como
El técnico activó la opción Rapid Release McAfee Secure Content protocolo de transporte; del lado del cliente,
(“Lanzamiento rápido”) para el filtro antivi- Management Appliance 3200 necesitararemos también un programa
rus; según nos contó, esta opción es estándar McAfee trabaja también con Dell. Este dispo- cliente de Java, o bien lanzar un applet en el
para otros clientes. Dado que nosotros no sitivo de McAfee es algo así como el her- navegador. Éste tardará un poco más que en
estábamos interesados en la funcionalidad mano pequeño del de Symantec: un Xeon de renderizar una página normal de HTML.
Con todo, el interfaz de Java era bastante
perezoso y parecía responder más despacio a
Dispositivos de seguridad la interacción del usuario que cualquier otro.
Todos los aparatos que hemos probado incrementa la posibilidad de un bug, y Por desgracia, el cliente del programa tam-
incluyen la palabra “seguridad” en sus por lo tanto la posibilidad de que apa- poco mejoraba gran cosa el trabajo.
nombres; sin embargo, algunos nos rezca un agujero de seguridad.
Para hacer funcionar el antispam de Mc-
dejaron preocupados, ya que usaban
Uno de nuestros deseos incumplidos Afee, se necesitará un CD de activación. Para
HTTP abierto para las comunicaciones
era la configuración para soportar admi- ello deberemos bajarnos la imagen del
servidor-cliente; u ofrecían un revoltijo
nistración local a través de la consola archivo (son sólo un par de megas) de la
de Javascripts, de aspecto tentador,
(como la posibilidad de desactivar el página de inicio de la compañía, quemar la
como interfaz web. ¿No había cierta
servidor web y otros servicios remotos). imagen en un CD e insertarlo en la disque-
norma para los sistemas de seguridad
que decía algo sobre reducir los servi- Esta posibilidad da al usuario la capaci- tera del dispositivo para leer el CD. En lugar
cios al mínimo y mantener el software dad de optar por un menor riesgo de de este sistema tan complicado y poco intui-
tan simple como fuera posible? Los fil- seguridad a cambio de una menor tivo, sería más fácil y comprensible para el
tros de spam son piezas muy complejas comodidad. El hecho de que algunos usuario simplemente bajarse la imagen ISO
de software. Añadir un interfaz web para fabricantes ni siquiera permitan que el directamente mediante el interfaz web. Y
contentar al usuario con gadgets y tru- usuario configure las reglas del filtro de sería más fácil todavía permitir al dispositivo
cos equivale a incrementar su vulnerabi- spam demuestra cuánto valoran los
contactar directamente con el site de McA-
lidad. Cada línea de código de más conocimientos de sus clientes.
fee.

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


PORTADA • Aplicaciones anti-spam

Ironport permite elegir entre dos filtros de Inmadurez


spam: Brightmail, que es además la elec- El sistema ofrece, en distintos puntos, cierta
ción de Symantec, y un producto propieta- sensación de inmadurez. Por ejemplo, el
rio. Hemos utilizado la segunda variante en modo de configuración, que requiere que el
las pruebas. El filtro tiene un rango convin- administrador conecte una pantalla y un
cente de opciones granulares que los admi- teclado, tiene una opción para cambiar la
nistradores pueden configurar en un menú contraseña de root y la del usuario de setup.
basado en web. El heho de que el interfaz Puede emplearse el menú para cambiar la
emplea HTTP en vez de HTTPS empaña del root, pero si se desea hacer lo mismo con
ligeramente la buena impresión. la de configuración, será preciso identificar-
De nuevo, empleamos las opciones por nos como root en la consola e introducir
defecto para Ironport. Además de los típicos manualmente passwd setup en la línea de
Figura 3: Este menú escondido aparece en el filtros antispam, el aparato emplea una comandos.
dispositivo de Symantec cuando el adminis- imagen de filtro y un sistema específico También es fastidioso que el interfaz de la
trador pulsa [Shift] + [A] en el interfaz web. conocido como Senderbase. Según el fabri- caja emplee HTTP por defecto. Sobre el
El técnico de Symantec configuró manual- cante, Senderbase registra buena parte del HTTPS, el manual dice: “Configurarlo está
mente la opción Rapid Release (“Lanza- tráfico global de correo, y así es capaz de más allá del objetivo de este manual, pero
miento rápido”). Otra opción, la SMTP Gree- detectar rápidamente nuevas oleadas de CanIt-Pro debería funcionar sin cambios
ting, también es muy interesante. spam e intrusiones maliciosas. En las prue- sobre HTTPS”. La segunda parte de la frase
bas, la detección de ham se mostró muy fia- resultó ser cierta.
Como la mayoría de aparatos empleados ble: no dio falsos positivos. Ironport consi-
en nuestras pruebas, éste de McAfee guió el mayor índice de detección de spam IKU Sponts
emplea una mezcla de numerosos sistemas con una tasa de falsos positivos perfecta de Linux Magazine probó el aparato de IKU
de filtrado. Además de SpamAssassin, cero: sólo un 7% del spam consiguió cru- Sponts de hace un par de años. Según la des-
incluye un filtro Bayesiano, listas negras y zar. cripción de su website, la caja puede presen-
blancas y autentificación del remitente. Al tarse como un Mini ITX o como un rack de
revés que el de Symantec, el aparato de CanIt Anti-Spam 19??, pero lo que nos mandaron fue un sis-
McAfee soporta una configuración de filtros El dispositivo CanIt Anti-Spam, desarro- tema Mini ATX. Aparte de eso, los otros
muy granular. Aunque hemos mantenido la llado por Roaring Penguin, se suministra en componentes parecían coincidir con las
configuración por defecto para las pruebas, una caja de media profundidad de 1 HE 19 especificaciones de Sponts. La gran ventaja
el sistema alcanzó un loable resultado del pulgadas. Bajo ella hay un sistema Pentium que este sistema ofrece es que no tiene par-
97%. Por desgracia, lo consiguió a costa de 4 de 3 Ghz, 1 GB de RAM y 80 GB de disco tes que sufran de desgaste natural (excepto
una cuota de falsos positivos no menor del duro IDE. el disco duro IDE de 40 GB), lo que implica
7%. Eso sí, el dispositivo manda el spam a El fabricante describe el sistema (basado una vida más larga para el producto. IKU
una carpeta de cuarentena, a la que el usua- en Debian 3.1) como el “líder de las solu- acepta un límite de 550.000 mensajes por día
rio puede acceder si es necesario. ciones antispam”. Con las estadísticas de para el sistema basado en Debian, lo que lo
nuestras pruebas en la mano, no nos queda pone más o menos a la par de los 1000 usua-
Ironport C10 Email Security más que llevarles la contraria: su aparato rios soportados por McAfee e Ironport.
La caja de Ironport supone un cambio agra- presenta el índice más alto de falsos positi- Enchufamos un teclado y un monitor para
dable con respecto a los habituales mamo- vos, que no compensa cazando más spam. el setup inicial. El sistema solicita que intro-
tretos grises: la unidad de 19 pulgadas de 1 En definitiva, su tasa de detección de spam duzcas las opciones de red en la consola.
HE, plateada, tiene un aspecto elegante y lo sitúa firmemente en la mitad inferior del Quitamos el teclado para el siguiente arran-
está diseñada a medida. El fabricante hasta ránking de nuestras pruebas. que y el sistema se colgó. La BIOS estaba
incluye una tapa para el output VGA, para Por otro lado, el sistema nos sorprendió
mantener los dedos curiosos de los admi- con algunas capacidades útiles: permite a
nistradores bien lejos de la caja (ver Figura los usuarios definir sus propias reglas de fil-
5). trado, que el administrador puede configu-
El diseño del interior es único: el sistema rar de forma previa. La caja incluye un
operativo que emplea el aparato se llama manual de usuario. Aunque puede resultar
Async OS. Es un Linux-filtro de correo opti- de difícil lectura para aquellos que no ten-
mizado, que trabaja con mayor eficiencia gan un conocimiento muy amplio sobre el
para Ironport que un Linux normal. Aparte tema, al menos quien quiera configurar una
de esto, incluye dos discos duros de 40 GB protección antispam individual tiene las Figura 4: Aquí mostramos los índices de
en un RAID 1. En lugar de publicar la velo- herramientas para hacerlo. error en falsos negativos (spam identificado
cidad de la CPU o su memoria, Ironport Por desgracia, el interfaz de usuario no es incorrectamente como legítimo) y falsos
afirma simplemente que su C10 es capaz de intuitivo; aunque cuando consigues cogerle positivos (correos legítimos identificados
proteger a más de 1000 usuarios contra el el truco, CanIt ofrece un amplio rango de como spam). El tanto por ciento de falsos
spam. Esto lo sitúa en la misma división opciones que podrían permitirnos mejorar negativos de Sponts está extrapolado (con
que el dispositivo de McAfee. el índice de detección. un margen de error entre -3 y 5 %).

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


Aplicaciones anti-spam • PORTADA

configurada para interrumpir el proceso de En nuestras pruebas, la Sponts Box se con- bajo a un proveedor de servicios. Expurgate
arranque si no se encontraba el teclado. figuró para responder con un User unknown se encarga de proveer de filtrados externos
Afortunadamente, nos dimos cuenta rápido (“Usuario desconocido”) al spam que se de spam. La empresa encargada es Eleven,
del origen del error. recibe. Gracias a ello, el servidor de correo no una compañía alemana. Los clientes sólo
recibirá ningún mail de spam (excepto los configuran el registro MX de sus dominios al
Un Interfaz Claro que pasen el filtro, claro). Es por esto que fui- servidor de correo de Expurgate. Para poder
El interfaz del sistema de usuario está bien mos incapaces de comprobar el índice de utilizarlo, tendremos que configurar cuatro
diseñado; la función de ayuda interna sirve detección. Aunque el dispositivo registra los MX con la misma prioridad. Cada uno de
realmente de ayuda. La capacidad de alma- intentos de conexión, este valor no sirve de estos nombres de host apunta a diversas
cenar mensajes temporalmente en la Sponts ayuda, ya que algunos spammers abren direcciones IP en varias subredes, implemen-
Box y después redireccionarlos al correo conexiones para probar las direcciones tando así una redundancia a través del
interno a través de la opción Replay también email. La Figura 4 muestra una tasa de detec- balanceo de carga round robin de DNS. La
es útil. La caja crea, además, un servidor ción que hemos extrapolado, gracias a los redundancia es una ventaja importante de
POP3 para mantener activo el servicio de valores comparativos con otros dominios. los proveedores de servicio, en comparación
correo, en caso de un apagón del servidor Las pruebas de ham revelaron que Sponts con una solución basada en un dispositivo.
interno. Box es más agresivo de la cuenta por defecto: Los filtros antispam de Eleven se benefi-
La Sponts Box emplea dos métodos espe- con un índice de falsos positivos del 18%, cian del hecho de proteger múltiples servido-
ciales para la protección antispam: el Sponts esta caja se cae al final de la tabla. res de correo, lo que implica estar en con-
Effect (“Efecto Sponts”) y el análisis del tacto con numerosos mensajes de spam. El
tiempo de transmisión SMTP. Además de Expurgate servicio calcula checksums para todos los
esto, el sistema incluye un número de técni- En lugar de comprar un dispositivo, actuali- mensajes entrantes y los emplea para com-
cas de filtros estándar; todas se pueden con- zarlo regularmente y gestionar el sistema por parar los correos entre sí. Si un checksum
figurar y personalizar de forma individual. nuestra cuenta, podemos subcontratar el tra- aparece con mayor frecuencia que el valor

Tabla 1: Los candidatos

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


PORTADA • Administración de Spam

tros, o detener el filtrado problema, aunque los envíos masivos puros


para buzones de correo de spam pueden hacer esto difícil. Para com-
específicos. Sorprendente- pensar esto, los fabricantes emplean filtros
mente, el índice de detec- adicionales para reducir más aún el riesgo de
ción de spam es bastante falsos positivos.
pobre: un 77,8% coloca a Donde hay un fabricante que combina fil-
Spam Stops Here al final tros agresivos con la generación de mensajes
de la tabla. El producto no de error automáticos en el diálogo SMTP (y
Figura 5: Ironport tapa el puerto VGA con una chapa: conectar produjo, eso sí, ningún esto es lo que hace Sponts), se puede dar
un monitor no es una opción. falso positivo. una combinación fatal. La idea de que el
remitente abrirá, leerá y entenderá un men-
medio, se asume que el mensaje es spam. El Asunto de la Compensación saje Mailer-Daemon es algo que sólo podría
Este método es parecido al del Senderbase Los resultados en la Figura 4 no suponen ocurrírsele a un ingeniero. Lo más normal es
de Ironport, pero elimina los ciclos de actua- ninguna sorpresa: cuanto más alto es el que el usuario se queje de ser espameado
lización. índice de detección de spam, más falsos por Mailer-Daemon. Si te pones a leer el
positivos suele haber. Una mejor tasa de mensaje, lo que descubrirás será una pala-
Especies en Peligro de detección (menos spam que pasa el control) brería críptica más o menos imposible de
Extinción implica el empleo de filtros más agresivos, lo entender. Los filtros de spam deberían mar-
Expurgate emplea criterios diversos para evi- que podría sacrificar correos de ham. car, pero no borrar: simplemente, no están
tar que el filtro identifique correos legítimos Es interesante comprobar cómo los filtros preparados para tomar la decisión final.
como spam. Uno de ellos es el camino que que emplean técnicas comparativas (como
ha seguido el mensaje: el spam suele origi- Senderbase y Expurgate) pueden mejorar la Tres Ganadores
narse a partir de múltiples máquinas en una detección sin aumentar los falsos positivos. Si se toma la tasa de falsos positivos como
red de bots, mientras que los correos norma- Aunque ambos valores son sólo aproxima- un criterio importante, y se espera un índice
les suelen originarse de una fuente única. ciones (debido al modo de trabajo de ambos de detección superior al 80%, sólo permane-
Además de esto, la compañía emplea lo que sistemas), nos permite evaluar la calidad del cen en el ruedo Expurgate, Symantec y Iron-
ellos llaman una “trampa de direcciones”: filtro. Los resultados mejorados quizá tengan port. Debido a su método ASP (Application
direcciones publicadas sólo en websites (algo algo que ver con la nueva generación de Service Provider, o “Proveedor de servicios
parecido al método empleado para realizar spam que comenzó a aparecer durante el de aplicaciones”), es difícil comparar Expur-
estas pruebas). Cuando la trampa recibe un período de las pruebas: imágenes de spam gate con los dos dispositivos, además su la
mensaje, lo más probable es que sea spam. esconden el mensaje en imágenes destroza- configuración de opciones era más que
Hay otra vía de retroalimentación, que per- das arbitrariamente. Los filtros tienen que espartana.
mite señalar un correo individualmente ponerse al día; de entrada, un sistema Con respecto a la calidad del filtro y su
como spam o ham. Para evitar el mal uso y basado en unas normas previas tiende a usabilidad, Ironport C10 gana la partida a
los errores, Eleven asegura que un miembro estar en desventaja frente al método compa- Symantec. No encontramos una gran dife-
del staff comprueba la legitimidad de los rativo. rencia en cuanto a la calidad del filtro
mensajes, ya que se sabe de usuarios que Aún hay un peligro latente en los filtros (Symantec falló en un 11% de los casos;
han devuelto mensajes de phishing, señala- comparativos que clasifican listas de correo Ironport, en un 7%), si bien Symantec posi-
dos como spam, con notas al efecto de que con un gran número de objetivos de spam. blemente supere a Ironport en la próxima
se trataba de importantes mensajes de sus Una lista blanca puede ayudar a resolver el actualización. Un aspecto positivo para
bancos. todos los fans de Linux es que todos los fil-
Por desgracia, los administradores casi no Agradecimientos tros que probamos están basados en siste-
tienen opciones para configurar los filtros de La complicada configuración de estas mas Linux. ■
Expurgate. Pueden crear una lista blanca de pruebas fue posible gracias a la ayuda
direcciones o definir acciones concretas a eje- de la Bundeswehr University de RECURSOS
cutar cuando se recibe un mensaje clasifi- Munich (Alemania). El Institute for [1] Spam-o-Meter: http://www.
cado en una categoría especial de spam. Information Technology Systems (Insti- spam-o-meter.com
Sería preferible una mayor capacidad de tuto para la Información de Sistemas
[2] Spam archive: http://spamlinks.net/
configuración granular. Pese a esto, Expur- Tecnológicos) nos proveyó del servidor
filter-archives.htm
gate alcanzó la segunda mejor marca de de correo, la conexión de red y el espa-
[3] SpamAssassin: http://spamassassin.
detección de spam, con sólo un 0,4% de fal- cio físico para los dispositivos, además
apache.org
sos positivos. de registrar los dominios de prueba. El
teniente Carsten Schulz configuró los [4] RFC 0974, Mail Routing and the
Spam Stops Here sistemas de pruebas y realizó las medi- Domain System: http://www.ietf.org/
ciones, como parte de su tesis. Quere- rfc/rfc0974.txt
La empresa de Canadá Greenview Data sigue
un método similar al de Expurgate, con su mos dar las gracias también a Daniel [5] Charlie Künhast, Bot Attack: Una
producto “Spam Stops Here” (“Aquí se acaba Rehbein, que nos dio acceso a dos insidiosa red de bots spammers
el spam”). Por ejemplo, los administradores dominios muy espameados para la ataca a Charly, p. 58, Linux Magazine
serie de pruebas. Nº 22.
pueden activar o desactivar módulos de fil-

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


Administración de Spam • PORTADA

Slade, Fotolia

Filtrado inteligente con Qmail, SpamAssasin y Maildrop

CLASIFICANDO
LA BASURA
Vamos a mostrar una solución a medida para mover el spam a una en la mayoría de las distribuciones Linux,
dejará el mensaje en un directorio que
carpeta y añadirle a SpamAssassin nuevos identificadores de spam. dependerá de su clasificación como spam, la
cual se encontrará registrada en la cabecera.
POR MATTHIAS JANSEN
Como característica de aprendizaje, se va a
crear una carpeta especial para los mensajes

M
uchos programas de correo elec- agente de entrega Maildrop y SpamAssas- que los usuarios hayan marcado como spam
trónico incorporan filtros antis- sin. y también se mostrará un script que compro-
pam. Estos clientes de correo Este ejemplo está basado en el agente de bará el contenido de este directorio especial y
también proporcionan algún medio de transferencia de correo de código abierto alimentará la base de datos Bayesiana de
aprendizaje para este filtro, de modo que Qmail [1]. Qmail posee una interfaz simple SpamAssassin con esta nueva información.
puedan aprender los nuevos identificado- para manejar los mensajes antes de asignar-
res del correo clasificado como spam. Para los a los buzones. Para ello, puede ejecutar Clasificando con Maildrop
que esto ocurra, los clientes etiquetan un cualquier programa, como puede ser un El agente de entrega Maildrop fue original-
mensaje no solicitado como spam, o bien script en Perl. (Otros servidores de correo mente diseñado para el servidor de correo
lo mueven a una carpeta separada. Algu- electrónico ofrecen funcionalidades simila- Courier. El propósito de Maildrop es la imple-
nos servidores de correo se podrían benefi- res. Si se está utilizando un servidor dife- mentación de reglas de filtrado y de instruc-
ciar de las ventajas que aportan los siste- rente, habrá que consultar al fabricante o en ciones de entrega para los mensajes de
mas de filtrado de spam con aprendizaje, la documentación del proyecto). correo. Su distribución Linux probablemente
gestionándolos internamente. En este artí- En en este artículo, un mensaje de correo tenga una versión de Maildrop, pero si no la
culo se describe un sistema de filtrado a entrante va a ser filtrado por SpamAssassin. tiene, puede obtenerla Maildrop desde el
medida con aprendizaje, utilizando Perl, el El agente de entrega Maildrop, que se incluye sitio web de Courier [4].

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


PORTADA • Administración de Spam

Maildrop posee un sistema de Si se opta por una variante específica del ante construcciones complejas. El ejemplo
configuración central en el fichero usuario, habrá que crear un fichero del Listado 1 explota tan sólo una fracción
/etc/mail-drop.conf. Un parámetro de la /var/vpopmail/domains/sudominio.com/us del potencial de la herramienta.
línea de comandos permite especificar un er/.mail-default. Maildrop espera la entrada Las primeras doce líneas inicializan las
fichero diferente en caso de necesidad. Para del correo por stdin. Hay que tener en variables y cargan las variables externas de
indicarle a Qmail que llame a Maildrop para cuenta que no soporta, en memoria, men- Qmail (véase la Tabla 1). La comilla (`)
cada correo electrónico, se añade una sajes muy largos; así que realizará swap- cumple el mismo papel que en Bash; es
entrada | maildrop al fichero .qmail-default o ping a disco para ahorrarla. decir, asigna la salida del comando entreco-
al fichero de configuración de Maildrop: | millado a la variable en cuestión. Esto per-
maildrop /path parameter config file. Doctor Correo mite a los usuarios realizar llamadas a
El fichero .qmail-default para nuestro Maildrop soporta varias opciones para exa- comandos externos, vuserinfo en nuestro
dominio sería /var/vpopmail/domains/jan- minar el correo entrante. Entiende las caso, para averiguar el directorio de correo
sen-systems.de/.qmail-default. expresiones regulares, que facilita el filtrado del usuario.

Listado 1: /etc/maildroprc
01 # Fichero Global del filtro 25 `test ”$VHOME” == ””` 45 `echo ”INBOX.Spamverdacht”
maildrop 26 if ( $RETURNCODE == 0 ) >>

02 SHELL=”/bin/bash” $VHOME/.maildir/courierimapsub
27 {
scribed`
03 28 log ”No such user,
46 `echo ”INBOX.spamteach” >>
04 import EXT delivering to normal qmail”
$VHOME/.maildir/courierimapsub
05 import HOST 29 to ”$VPOP”
scribed`
06 30 }
47 }
07 logfile 31
48
”/var/log/maildrop.log” 32 # Crea la carpeta para el spam
49 if (/^X-Spam-Status: *YES/)
08 en caso de no existir
50 {
09 VPOP=”| 33 `test -d
”$VHOME/.maildir/.$SPAMFOLDER” 51 log ”Spam!!!”
/var/vpopmail/bin/vdelivermail
’’ bounce-no-mailbox” ` 52 # Intenta entregarlo en la

34 if( $RETURNCODE == 0 ) carpeta de spam


10
VHOME=`/var/vpopmail/bin/vuser 35 { 53 exception {

info -d $EXT@$HOST` 54 to
36 }
11 SPAMFOLDER=”Spamverdacht” ”$VHOME/.maildir/.$SPAMFOLDER”
37 else
12 LEARNFOLDER=”spamteach” 55 }
38 {
13 56
39 `/usr/bin/maildirmake -f
14 log ”EXT is $EXT” ”$SPAMFOLDER” 57 # por si algo sale mal con

15 log ”HOST is $HOST” ”$VHOME/.maildir”` la carpeta de spam

16 log ”VHOME is $VHOME” 40 `chown vpopmail:vpopmail -R 58 exception {


”$VHOME/.maildir/.$SPAMFOLDER” 59 to ”$VPOP”
17
`
18 `test ”$EXT” == 60 }
41
”doublebounce”` 61 }
42 `/usr/bin/maildirmake -f
19 if ( $RETURNCODE == 0 ) 62 else
”$LEARNFOLDER”
20 { 63 {
”$VHOME/.maildir”`
21 log ”Delete doublebounce” 64 exception {
43 `chown vpopmail:vpopmail -R
22 exit ”$VHOME/.maildir/.$LEARNFOLDER 65 to ”$VPOP”

23 } ”` 66 }

24 44 67 }

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


Administración de Spam • PORTADA

En las líneas 18 a 23, Maildrop realiza una Si no, el Listado 1 estipula que el correo el agente resuelve el alias y pasa el mensaje
comprobación para detectar los correos no debería descartarse, ya que Qmail no a Maildrop para una investigación posterior.
doblemente rebotados (véase la Figura 1), y resuelve los alias antes de entregarlos, así Maildrop comprueba ahora si el destino
los borra. La siguiente comprobación detecta que el mensaje no posee una entrada para dispone de una carpeta para el spam, y si
si Qmail (o Vpopmail [2], que está funcio- la variable VHOME. Esta es la razón por la no la tiene, la crea el script. Todo el mundo
nando por detrás) posee una dirección de que el script pasa el correo al agente de es susceptible de recibir spam en algún
correo válida para el mensaje entrante. entrega normal en las líneas 25 a 30; luego momento. Como algunos clientes de correo

Listado 2: spamreport.pl
01 #!/usr/bin/perl -w 25 if ($lastuser ne $currentuser) 53 }

02 # { 54 }

03 # Script para recolectar todo 26 my @temp = (); 55


el spam y generar un informe 27 $spams{$currentuser} = 56 # Ahora generamos el informe
sobre el spam \@temp; de spam
04 # 28 $count = 0; 57
05 # Author: Matthias Jansen 29 } 58
06 # Version: 0.2, 2007/01/05 30 open(TPL,”</root/spamreport.tp
31 $lastuser = $currentuser; l”);
07
32 if (open(SP,”<”.$files[$i])) 59 my @a_tpl = <TPL>;
08 use strict;
33 { 60 close(TPL);
09 use Mail::Sendmail;
34 # Bloquea el correo antes de 61 my $tpl = join(“”,@a_tpl);
10 use HTML::Entities;
leer 62
11 use Fcntl ’:flock’; # import
LOCK_* constants 35 flock(SP,LOCK_EX); 63 while (my ($user,$data) =
36 my $subject = ’’; each(%spams)) {
12
37 my $from = ’’; 64 (my $text = $tpl)
13 # Obtiene todo el spam posible
38 =~s/###EMAIL###/$user/;
durante las últimas 24 horas
39 while(defined(my $line = 65 my $spam_text = ’’;
14 my @files = `/usr/bin/find
/var/vpopmail/domains/ -mtime <SP>) && (length($subject) == 66 for (my

-1 -a -type f -a \\( -path 0 || ($from eq ’’))) { $i=0;$i<scalar@$data;$i++) {

’*.maildir/.Spamverdacht/cur/* 40 if ($line =~ 67 $spam_text.=


’ -o -path /^Subject:\s*(.*)$/i) { ’<tr><td>’.@$data[$i]->
’*.maildir/Spamverdacht/new/*’ $subject = $1; } {‘from’}.’</td><td>’.@$data[$i
\\) -a -not -name ’*T’ 41 elsif ($line =~ ]-> {‘subject’}.’</td></tr>’;
-print`; /^From:\s*(.*)$/i) { $from = 68 }
15 my $lastuser = ’’; $1; } 69 $text =~
16 my $count = 0; 42 } s/###SPAMTEXT###/$spam_text/;

17 43 # Codifica los códigos HTML 70

18 # Recolecta todos los datos 44 encode_entities($subject); 71 my %mail = ( To => $user,

19 for (my $i=0;$i<@files;$i++) { 45 encode_entities($from); 72 From => ’Spamreporter


46 <spamreport@jansen-systems.de>
20
47 my %spam = (‘subject’ => ’,
21 my($domain, $user) =
$subject, ’from’ => $from); 73 Message => $text,
$files[$i] =~
/\/var\/vpopmail\/domains\/([^ 48 $spams{$currentuser}[$count] 74 Subject => ’Spamreport’,
\/]+)\/([^\/]+)\//; = \%spam; 75 ’Content-Type’ =>
22 49 $count++; ’text/html; charset=”utf8”’

23 my $currentuser = 50 76 );

$user.”@”.$domain; 51 flock(SP,LOCK_UN); 77 sendmail(%mail);

24 52 close(SP); 78 }

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


PORTADA • Administración de Spam

para ver si SpamAssassin ha esta-


blecido el spam status en la cabe-
cera del correo a un valor positivo
(Yes). Si existe esta etiqueta, el
comando to coloca el mensaje en
el directorio designado (Figura 2).
Para evitar los errores, Mail-
drop añade un bloque de excep-
ción para proteger los comandos.
El bloque captura los errores y
permite al script continuar ejecu-
tándose, como las excepciones en
Java o en C++. En caso de error,
Maildrop simplemente entregará
Figura 1: Maildrop realiza una comprobación para des- el mensaje como siempre lo hace.
cubrir el correo que haya sido doblemente rebotado. Una clase diferente de error
Los mensajes de error duplicados provocados por los podría noquear a Maildrop. Los
remitentes suplantados. interfaces web comunes, como
Qmailadmin, almacenan los Figura 2: Cooperación entre Qmail, SpamAs-
no poseen la capacidad de crear automáti- parámetros en el fichero .qmail-default. Si sassin y Maildrop. Soporta la asignación pre-
camente carpetas IMAP, Squirrelmail [5] el interfaz web descubre una entrada de cisa de los correos electrónicos en los buzo-
por ejemplo, las líneas 33 a 47 añaden las función diferente, Qmailadmin simple- nes correspondientes.
carpetas nuevas a la lista de suscripción. mente la sobrescribirá, expulsando a
Maildrop. Para impedirlo, hay que asegu- zar los usuarios con POP3, ya que POP
Spam Status y rarse de que el cambio se haya implemen- sólo entrega en el buzón principal.
Almacenamiento tado sólo en la variable VPOP del fichero Para permitir que los usuarios puedan
El siguiente paso es comprobar si SpamAs- maildroprc. investigar sus candidatos a spam, se va a
sassin ha identificado el mensaje como generar una lista de spam sospechoso. El
spam. Maildrop podría ejecutar una expre- Informe Diario script en Perl que se muestra en el Listado 2
sión regular contra el contenido del men- No importa cómo de buena sea la carpeta crea una lista tras comprobar los ficheros de
saje, es decir, tanto contra la cabecera como del spam sospechoso, no la podrán utili- la carpeta de mensajes sospechosos. La
contra el cuerpo. Esto permitiría añadir las
propias reglas del usuario, para descubrir el Listado 3: spamreport.tpl
nombre del jefe o de algún amigo, por 01 <html> horas<br><br>
ejemplo.
02 <head> 08 <table border=1 cellspacing=0
La configuración que hemos preparado
03 </head> cellpadding=5>
estará bien con una simple comprobación
04 <body> 09
<tr><th>Remitente</th><th>Asun
Tabla 1: Variables 05 <b>Informe de Spam por
to</th></tr>
Variable Función SU_NOMBRE para la dirección de
correo ###EMAIL###</b> 10 ###SPAMTEXT###
EXT Parte del usuario de la
dirección de correo 06 <br><br> 11 </table>
HOST Parte del host de la 07 Nuevos correos sospechosos de 12 </body>
dirección de correo ser spam de las últimas 24 13 </html>
VPOP Especifica el comando
por defecto para la
entrega del correo,
Listado 4: collectspam.sh
incluyendo los 01 #!/bin/sh
parámetros 02
VHOME Directorio del correo
03 if /usr/bin/ls /var/vpopmail/domains/*/*/.maildir/.spamteach/
para el usuario actual
04 cur/* >/dev/null 2>/dev/null; then
SPAMFOLDER Nombre de la carpeta
IMAP para el correo 05 /usr/bin/sa-learn —spam /var/vpopmail/domains/
spam 06 */*/.maildir/.spamteach/cur/* >/dev/null 2>/dev/null
LEARNFOLDER Nombre de la carpeta
07 /usr/bin/rm /var/vpopmail/domains/*/*/.maildir/
IMAP con los correos a
suministrar a 08 .spamteach/cur/* >/dev/null 2>/dev/null
SpamAssassin 09 fi

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


Listado 5: sa-learn —dump magic
01 # sa-learn —dump magic 07 0.000 0 1163003305 0 non-token
02 0.000 0 3 0 non-token data: data: newest atime
bayes db version 08 0.000 0 1162978202 0 non-token
03 0.000 0 2829 0 non-token data: data: last journal sync atime
nspam 09 0.000 0 1161566741 0 non-token
04 0.000 0 1753 0 non-token data: data: last expiry atime
nham 10 0.000 0 22118400 0 non-token
05 0.000 0 132715 0 non-token data: last expire atime delta
data: ntokens 11 0.000 0 30090 0 non-token
06 0.000 0 1139451052 0 non-token data: last expire reduction
data: oldest atime count

línea 12 genera la lista de candidatos, des- borra el mensaje. Se puede ejecutar


cartando los correos borrados (con una T al sa-learn —dump magic para asegurarnos
final de sus nombres). que todo funciona correctamente; el Lis-
Las líneas 23 a 25 comprueban la anti- tado 5 muestra un ejemplo.
güedad del spam no borrado para evitar No vale la pena comprobar en este punto
que se vuelva a incluir en la lista. los errores; en el peor de los casos una
Para entregar el informe, la línea 27 sugerencia de aprendizaje podría fallar. Sin
extrae el nombre del usuario a partir del embargo, si se insiste en ser notificado en
nombre del fichero; las líneas 43 a 46 pro- caso de error, sólo hay que eliminar la redi-
porcionan el asunto y el remitente del men- rección a /dev/null y cron nos pasará la
saje sospechoso. El correo se bloquea de salida.
forma exclusiva para evitar el acceso com-
petitivo. Escalabilidad
Tras completar la lista para el informe, las La configuración que hemos investigado
líneas 63 a 83 mezclan la lista con una plan- permitirá a los administradores de sistemas
tilla (Listado 3) y entregan el correo. En añadir una funcionalidad antispam efectiva
nuestro escenario, cron ejecuta el script en a sus sistemas Qmail, pero sin suponerles
Perl cada mañana a las 7. un gran esfuerzo. El MTA tiene una inter-
faz sencilla de manejar para ayudarnos, y
De Vuelta a la Escuela también ofrece soporte para múltiples
Para continuar añadiendo correos no solici- dominios y entornos de usuario.
tados al directorio de mensajes sospecho- Si se utiliza un MTA diferente, habrá que
sos de ser spam, el analizador tiene que adaptar los scripts para poder obtener unos
adaptarse a los trucos, cada vez más sofisti- resultados similares. Puede añadirse fácil-
cados, de los spammers. mente un directorio de “correos buenos” a
SpamAssassin tiene un comando la configuración mostrada para ayudar a
sa-learn que proporciona a los usuarios la SpamAssassin a detectar, más fácilmente,
opción de añadir tokens de correo spam y el correo bueno. ■
de correo bueno al software para mejorar
la heurística que implementa. Sin
embargo, SpamAssassin carece de un
RECURSOS
mecanismo interno de detección de bue-
[1] Qmail: http://www.qmail.org/top.
nos y malos. Para enseñar al programa esta html
diferencia, vamos a añadir un directorio
[2] Vpopmail: http://www.inter7.com/
IMAP, llamado Spamteach.
index.php?page=vpopmail
Cron ayuda a este script para bash,
[3] Qmail Rocks para Gentoo: http://
collectspam.sh en el Listado 4, compro-
gentoo-wiki.com/
bando regularmente el contenido de esta
QmailRocksOnGentoo
carpeta y ampliando la base de datos Baye-
[4] Maildrop: http://www.courier-mta.
siana de SpamAssassin, es decir, a sa-learn,
org/maildrop/
indicándole que la entrada es spam.
Tras integrar en la base de datos el men- [5] Squirrelmail: http://www.
squirrelmail.org
saje clasificado como spam, collectspam.sh

WWW.LINUX- MAGAZINE.ES
EVALUACIÓN • Nokia N800

Analizamos el Internet Tablet Nokia N800

MARAVILLAS WEB

Hace aproximadamente un año, Nokia sorprendió al mundo con una útil Internet Tablet, y la comunidad

Linux, ávida de nuevas tecnologías, quedó encantada con funcionalidades como la VoIP y el reconocimiento

de escritura en pantalla. Ahora, recién llegada a las tiendas, analizamos a su sucesora. POR NILS FAERBER

E
l sucesor del Nokia 770, que estéreo tienen buena parte de culpa de resultados. Si ésta es demasiado “rela-
acaba de aterrizar en las tiendas, ello, junto con la pequeña cámara inte- jada”, siempre podemos recurrir al gran (o
se llama N800, uno de los inte- grada, que rota y es retráctil. pequeño) teclado virtual en su lugar.
grantes de la serie N de Nokia. El chico La pantalla es fabulosa. Las ligeras fluc-
nuevo del barrio ha heredado muchas de tuaciones en las áreas blancas del color de Dos Slots de Expansión
las funcionalidades de su predecesor, la 770 han desaparecido casi por completo Nokia ha doblado los recursos de memo-
como una resolución de pantalla de en la N800. ria, tanto de RAM como de flash interna, y
800x400 y el diseño del teclado, perfecta- El reconocimiento de escritura en la ha añadido dos slots de expansión a esta
mente organizado y altamente funcional. pantalla táctil trabaja correctamente si verdadera ganga.
Por ejemplo, el conmutador en la parte escribimos cada letra, pero necesitamos Al contrario que en el 770, los slots
superior del dispositivo cambia el nivel una pulcra caligrafía para obtener buenos son totalmente SD compatibles. Uno está
de zoom en el modo navegador a la vez
que cambia el volumen si estamos Tabla 1: Nokia N800
usando el reproductor de audio. El fabri-
Descripción: Tablet Internet de mano, con OS 2007 (Linux) y pantalla táctil
cante ha mejorado la calidad del pro- CPU: TI OMAP-2420, 320MHz
ducto, y le ha dado una apariencia Memoria: 128MB SDRAM, 256MB Flash, dos slots para tarjetas SD/ MMC
mucho más exclusiva. Pantalla: TFT res. 800x480, 65,536 colores, 220 ppi
Interfaces: WLAN (IEEE 802.11b/ g), Bluetooth 2.0, Mini USB 2.0, Audio In/ Out para cascos
Cámara Retráctil, Magnífica Duración Batería: máximo 3,5 horas, 12 días en standby
Pantalla Dimensiones: 75x144x13mm (3x5.7x0.5 pulgadas)
En lugar del frágil soporte que se sumi- Peso: 206 gramos (0.5lb)
nistraba con el Nokia 770, el N800 tiene Elementos incluidos: Nokia N800, stylus extra, batería recargable de Li-polímero 1500mAh, tarjeta
un robusto pie metálico (véase la Figura MicroSD 128MB, auriculares estéreos, cargador de batería, funda, cable de
1). datos USB, guía rápida
Fuente: Nokia Phones http://www.nokiausa.com/phones
La carcasa es ligeramente más ancha
Precio: US$ 400 / EUR 400
que su predecesora: los dos altavoces

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


Nokia N800 • EVALUACIÓN

ubicado bajo la tapa de la batería, mien- La cámara pro-


tras que el otro está en la parte inferior porciona videotele-
del dispositivo y protegido por una fonía al N800, pero
pequeña tapa. desafortunada-
El dispositivo incluye una tarjeta mente, sólo video-
Micro SD de 128 MB y un adaptador SD. telefonía, ya que el
Esta configuración nos permite usar tar- dispositivo carece
jetas SD I/O en ambas ranuras, ya que de una aplicación
normalmente están ocultas bajo tapas fotográfica. Ade-
(véase la Figura 2). más de la telefonía
manos libres, el
CPU Más Rápida, Alarmas y N800, al igual que
Vídeos el 770, soporta VoIP
A la hora de hablar de la potencia del sobre XMPP Figura 2: El Nokia N800 incluye una tarjeta MicroSD de 128 MB. Un
dispositivo, debemos señalar que Nokia (Extensible Messa- adaptador SD logra integrar la tarjeta en el dispositivo.
ha remplazado la CPU con un modelo ging and Presence
nuevo y más rápido. Protocol). Dentro de la comunidad ducir los formatos de audio AAC, AMR,
Al igual que el 770, la CPU tiene un Linux, esto es más conocido como Jab- MP2, MP3, Real Audio, WAV y WMA. En
núcleo ARM estándar y otro núcleo DSP ber. Igualmente, algunas personas han cuanto al vídeo, soporta 3GP, AVI, H.263,
que controla la decodificación audio y estado especulando con la posibilidad de MPEG-1, MPEG-4 y Real Vídeo.0
vídeo basada en hardware. Un módulo que aparezca un cliente de Skype.
Bluetooth 2.0 estándar fabricado por ¿Obsoleto Tras Un Año?
CSR completa el hardware. Capitán Bluetooth La comunidad Open Source consideró al
Nokia proporciona una nueva versión El fabricante escandinavo ha remozado la departamento de desarrollo del 770 como
de su software IT OS 2007, bora, con conexión por Bluetooth modificando y una extensión de sus propias actividades,
este modelo. También está disponible adaptando su comportamiento para que pero el anuncio de Aari Jaksi, el Jefe de
una versión actualizada del SDK coincida con el de los teléfonos móviles. Desarrollo, de que no habría una versión
Maemo [1]. OS 2007 está diseñado para El usuario ya puede elegir explícitamente oficial del OS 2007 para la vieja 770 ha
ser compatible con OS 2006 (Mistral) en entre los modos visible e invisible, e molestado bastante a los usuarios de la
su mayor parte, y de esta manera con el incluso asociar un teclado Bluetooth (por comunidad. Nokia no parece interesada
770. Por supuesto, las nuevas funciones ejemplo el extremadamente caro y plega- en proporcionar actualizaciones libres de
del API no son compatibles hacia atrás ble Nokia SU 8W). Al igual que si fuera sus productos antiguos. Aunque esto
[2]. un teléfono móvil, se usa BT OBEX para tiene sentido económicamente hablando,
OS 2007 elimina algunos de los pro- enviar y recibir archivos. es bastante inusual para un proveedor
blemas más criticados en la versión Las aplicaciones principales son ya Open Source como Nokia. Dicho esto,
anterior. Por ejemplo, un entorno con conocidas: Opera 8 con Flashplayer 7, Jaksi prometió recientemente tratar el
alarmas ahora puede administrar múlti- mensajería instantánea, un cliente de problema en Nokia. Hasta entonces, el
ples citas, como evidencia la aplicación correo electrónico, un lector de feeds RSS, futuro es bastante incierto para los due-
de reloj, que puede guardar diversas un reproductor de radio por Internet que ños de la 770.
alarmas. Las API’s permiten el acceso soporta listas M3U y PLS, y un reproduc-
de otras aplicaciones a este servicio. tor multimedia. Este último puede repro- Recomendada
A pesar del debate acerca del manteni-
miento de su predecesora, el hardware y
el software que este nuevo dispositivo
ofrece a los usuarios es indiscutiblemente
superior a lo que ofrecía la 770. El tacto y
la ergonomía son también muy superio-
res. Si necesita la funcionalidad que el
N800 ofrece y tiene unos 400 euros dispo-
nibles, es una compra recomendada. ■

RECURSOS
[1] Maemo: http://maemo.org
[2] Compatibilidad de aplicaciones entre
las distintas versiones de Maemo:
http://maemo.org/downloads/
Figura 1: El precario soporte de su antecesor ha sido sustituido por un robusto pie metálico maemo_3_compatibility.html
en la N800.

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


EVALUACIÓN • Ulteo

Una revolcuión en los sitemas Live

ULTEO
El proyecto ultrasecreto de Ulteo pretende convertirse en la distribución de Linux más sencilla del mundo.

POR MARTIN LOSCHWITZ

E
n los últimos años, muchos sistemas instalación inicial, el sistema buscará auto- El escritorio es un KDE 3.5.2, y la distribu-
Linux debutaron con la promesa de máticamente actualizaciones e instalará ción incluye las versiones de Firefox y
hacerlo más fácil para el usuario todo el software alrededor de un “meca- Thunderbird 1.5.0.8. La primera contribu-
común. El último de estos aspirantes al nismo de actualización gradual”. ción original es Ulteo General Daemon, un
escritorio es la misteriosa distribución cono- La siguiente versión alfa, en apariencia, servicio que localiza automáticamente
cida como Ulteo. alcanzará el segundo objetivo, al proveer de actualizaciones para los programas instala-
Ulteo es una creación del fundador de herramientas adicionales para una fácil dos. Ulteo sólo está disponible para siste-
Mandrake Gaël Duval, recientemente administración; pero los planes posteriores mas x86 durante la redacción de este artí-
expulsado de la corporación que ahora se de Ulteo están velados de misterio. Según culo, aunque Duval planea desarrollar
hace llamar Mandriva. Según Duval, Ulteo su website, “con cada nueva versión, espe- variantes para x86-64 en un futuro. Además
no es sólo un sistema amistoso para el ramos explicar una nueva parte de la visión de KDE, también se planean variantes con
usuario, sino que representa, de hecho, un de Ulteo con mayor detalle”. los escritorios de Enlightenment y Gnome.
auténtico paradigma nuevo que cambiará la Hemos echado un La tecnología que sostiene Ulteo era un
manera en la que concebimos Linux. vistazo a la ver- tema de intensa especulación hasta poco
sión Ulteo Sirius antes del lanzamiento de Alpha1 Ulteo, con
El plan Alpha1 para el mismo Duval propagando algunos de los
El proyecto Ulteo [1] evolucionó a partir de comprobar si rumores, sólo para no revelar nada.
la filosofía de que los usuarios emplean esta revolución El proyecto Ulteo prevé una generosa
demasiado tiempo en tareas como actuali- está lista para ayuda para las herramientas básicas, ade-
zar, administración del sistema y gestión de salir a la calle. más del sistema operativo básico. Al revés
aplicaciones. La solución, según Duval, es que en otras distribuciones actuales, Ulteo
pensar en el sistema operativo y las aplica- Presentación no utiliza un sistema de gestión basado en
ciones como un solo sistema. Ulteo emplea de Ulteo paquetes para el software; de hecho, el sis-
el término “sistema de aplicaciones” (appli- El sistema está tema de paquetes es totalmente invisible
cation system), para referirse al sistema ope- basado en para el usuario. En su lugar, el sistema
rativo junto a su constelación de aplicacio- kernel carga una imagen de archivo al arrancar,
nes esenciales. 2.6.15 y como Knoppix y otras distribuciones en
El objetivo del proyecto Ulteo es crear un utiliza CD, y monta la imagen para proveer un
sistema que: X.org sistema básico.
*provea de las características más nove- 7.0. Los desarrolladores de Ulteo se refieren
dosas y estables, capaces de actualizarse a él como un sistema “live HD”. En otras
automáticamente; palabras, afirman que esta distribución
*requiera muy poca, o ninguna, adminis- es algo parecido a un live CD que fun-
tración del usuario; ciona sobre el disco duro. Según las
*provea al lector de acceso a “potencial- notas de lanzamiento de Alpha1, el sis-
mente, cada aplicación que existe”. tema de aplicaciones al completo está
En este momento del desarrollo, no está montado como un bucle de una imagen
del todo claro si Ulteo podrá estar a la SquashFS de sólo lectura. “Las capas
altura de esta nueva visión tan audaz. de sólo lectura y la de sistema de
Según su website, el plan para la sólo lectura se unen gracias a
actual versión alfa es cen- UnionFS” [2]. El UGD conecta a
trarse en el primero de los servidores de Internet de
estos objetivos. Ulteo, y va integrando las actuali-
Tras la zaciones del sistema según están
disponibles.
Los únicos datos archivados dinámi-
camente en el disco son los del usuario.
La idea es que, si cada usuario individual

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


Ulteo • EVALUACIÓN

tiene exactamente la misma imagen del El menú K apa-


sistema de aplicaciones, es mucho más renta incluir un
simple reemplazar la imagen por una ver- juego completo de
sión más moderna. ayudas para
El sistema de imagen permitirá también Kubuntu para aque-
la distribución centralizada de la mayoría llas tareas de admi-
de aspectos específicos de hardware de la nistración que no
configuración. pueden ser maneja-
A la luz de estos trascendentales anun- das de forma cen-
cios, la demanda de la versión Alpha1 de tral, como configu-
Ulteo era tan enorme que los servidores rar puntos de red
mirror se vieron sobrecargados en los pri- wireless locales.
meros días del lanzamiento. Actualmente,
se ha implementado un sistema más Pistas
potente de mirror para asegurarse de que Aunque el sistema
todo el que esté interesado en la distribu- completo de Ulteo
ción pueda acceder a ella [3]. está todavía en Figura 1: El escritorio de Ulteo parece bastante ordenado en una
Tras insertar el CD, no encontrarás gran desarrollo, podemos primera inspección.
cosa en lo que se refiere a innovaciones encontrar pistas de
(Figura 1). Ulteo está basado en Ubuntu, así la visión de Gaël Duval si echamos un vis- dando en secreto la mayoría de su Ulteo.
que se arranca en un sistema parecido tazo por el sistema. Por ejemplo, la carpeta Cuando Bruce Byfield le preguntó qué
desde el CD. La distro quiere ofrecer a los /boot/yuch contiene un archivo llamado había aprendido de su experiencia en Man-
usuarios la posibilidad de probarla antes de fylesystem.squashfs-2.6.15-27-268 con una drake, su respuesta fue: “Intentaré mante-
instalar nada. Para lanzar la instalación, versión comprimida del sistema raíz de ner el control tanto como pueda, o tanto
simplemente hacemos click en el icono del archivos al completo. Ni el sistema en sí ni como sea necesario, y no confiaré más en
escritorio Installation, lo que nos llevará a el website de Ulteo revelan ningún detalle gente que quiere decirme qué es lo que
una consola que recuerda al instalador de de cómo funciona el truco, lo que dificulta tengo que hacer y cómo he de hacerlo” [2].
Ubuntu. cotillear tras las cortinas de la distribución. El lado negativo de este secretismo es que
La instalación es fácil: la rutina nos pide Dado que una carpeta rofs con otra copia Ulteo no estará disponible para los efectos
que elijamos una lengua, un tipo de teclado del directorio raíz completo puede encon- de la sinergia habitual en FOSS, lo que deja
preferido y un nombre de login. El creador trarse en /nitrd, es probable que lo que se la pelota en el tejado de Duval y su pequeño
de particiones de Ubuntu se encarga de suele llamar “archivo SquashFS” esté mon- equipo de desarrolladores.
crear las particiones que hagan falta en el tado aquí. Sin embargo, el archivo no Esto puede, en parte, explicar la conclu-
disco duro, y el instalador continúa con lo puede encontrarse en el listado del árbol del sión sobre Alpha1, ligeramente reticente:
suyo. sistema de archivos montados (ver Figura por ahora, el sistema no es más que otra
Ulteo ocupa alrededor de 1,6 GB de datos 2). distribución basada en KDE, que promete
en el disco, y no requiere ninguna otra Por ahora, el proyecto Ulteo concibe la un mecanismo especial de actualización.
configuración a partir de aquí. Tras reiniciar, versión actual como una especie de prueba Dado que no había ninguna disponible
podemos identificarnos en el nuevo sis- de concepto. Encontramos poco en ella que cuando este artículo fue a imprenta, no
tema. El escritorio está modelado a imagen la distinga del Dapper Drake de Ubuntu. hemos podido probar la tecnología para ver
de Windows en muchos aspectos: el botón Una mirada rápida a los mensajes de kernel si funciona.
del menú de KDE está etiquetado como vía dmesg nos revela que, de hecho, el sis- La inestabilidad antes mencionada deja a
“Inicio”, y un panel de inicio rápido al más tema emplea el estándar de kernel de Ulteo fuera de cualquier uso productivo. Si
puro estilo Windows aparece a la derecha Ubuntu, con una extensión para SquashFS. las siguientes versiones alfa, beta y la defi-
del botón. El panel da acceso a programas La extensión causó al menos kernel panic nitiva tardan tanto en materializarse como
como Kopete, Thunderbird o Firefox. por minuto (más o menos) en nuestras la actual Alpha1, el proyecto de Duval quizá
pruebas, lo que explica, no llegue nunca a levantar el vuelo. ■
seguramente, porqué
algunas herramientas
KDE fallaban. Este tipo
de error no es lo que un RECURSOS
usuario habitual de [1] Página de inicio de Ulteo: http://www.
Ubuntu esperaría. ulteo.com
[2] Entrevista con Gaël Duval: http://
Conclusiones www.linux.com/article.pl?sid=06/12/
Quizá es inexplicable, a 08/2240242
la luz de las experiencias [3] Descarga de Ulteo: http://www.ulteo.
Figura 2: La imagen montada de SquashFS no aparece en la previas con Mandrake, com/main/download.php
tabla de montaje. que Gaël Duval esté guar-

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


EVALUACIÓN • Directorios 3D

bluestocking, Fotolia
Cómo explorar tus directorios con un explorador de archivos 3D

PUNTOS DE VISTA

Al pasar a la tercera dimensión un sistema de archivos de

jerarquía plana, convertimos la navegación por un árbol de

directorios en un juego de niños. POR HAGEN HÖPFNER.

E
scribiendo el comando ls -R / en tar xfvz fsv-0.9.tar.gz menú File | Change Root, o pulsarse el
la consola, conseguiremos una atajo [Ctrl] + [N].
cascada tan lineal como confusa Para construir el binario necesitaremos FSV analiza los archivos y directorios
de información sobre el directorio. Al ver el paquete de desarrollador de Gtk, que se localizan bajo la raíz, lo que
el listado completo en pantalla, resulta gtkglarea, junto con sus dependencias, y puede llevar un tiempo considerable si
obvio que debe haber un sistema mejor el compilador gcc. A partir de este punto, hay muchos niveles de subdirectorios
para seguirle la pista a nuestros conteni- se siguen los pasos normales: (por ejemplo, el caso del directorio raíz
dos en el disco duro. Los exploradores de /).
archivos 3D como FSV, Xcruizer, TDFSB ./configure && make U Al pulsar con el botón izquierdo del
y 3Dfm emplean la tercera dimensión && sudo make install ratón sobre una carpeta, centraremos la
para ofrecernos una visión más intuitiva vista en ella. El botón derecho abre un
de nuestros directorios. Cuando esté listo, se escribe fsv en una menú contextual que se puede utilizar
ventana de terminal o ([Alt] + [F2]) en para expandir (expand) y ver todo el
FSV: Ladrillo a ladrillo el inicio rápido para lanzar el explorador. contenido, o todos los directorios locali-
FSV muestra los directorios como una pila El panel derecho de la ventana de FSV se zados bajo este nivel (expand all). Pro-
de ladrillos (ver Figura 1) o, para ser más utiliza para navegar en la vista 3D. El perties muestra una lista de las propieda-
exactos, los muestra como un árbol cons- punto de partida es siempre el directorio des.
truido con ladrillos apilados. Podemos desde el que se ejecutó el programa. Cuando abrimos un directorio, FSV
bajarnos el código fuente del explorador de Si se prefiere emplear una carpeta dis- apila su contenido en una pirámide
la página del proyecto [1]; deberemos escri- tinta como base del montón de ladrillos, sobre el botón de la carpeta. Para escon-
bir lo siguiente para descomprimir el tarball: puede modificarse el directorio raíz en el der todo esto de nuevo, basta con hacer

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


Directorios 3D • EVALUACIÓN

clic derecho en la base de la pirámide y zarnos hacia delante; con el derecho,


seleccionar collapse (“colapsar”) en el hacia atrás. Si se mantiene pulsado el
menú contextual. botón, aceleraremos el paso. XCruiser
muestra la velocidad actual, con valores
XCruiser: Mundos Nuevos y negativos si se vuela hacia atrás.
Extraños Si entramos en un círculo vacío (es
La actual versión de XCruiser, la 0.3, decir, un directorio representado por una
representa la estructura de directorios galaxia), Xcruiser cambiará a este direc-
como una galaxia virtual (ver Figura 2). torio; lo abandonará si salimos de él
Los usuarios de Ubuntu pueden instalar volando de espaldas. La galaxia actual se Figura 1: FSV no es una aplicación exclusivamente
esta herramienta introduciendo: muestra automáticamente en la parte de 3D. Puedes ver el contenido del directorio actual en
arriba de la pantalla. la esquina inferior izquierda. Aparece, además, un
sudo apt-get install xcruise Además de esto, el programa presenta árbol plano en la superior izquierda.
información sobre los archivos y directo-
En la página de inicio del proyecto [1] se rios cuando pasamos sobre ellos. Si el ./compile.sh && sudo cpU
encuentra disponible un binario precons- objeto que inspeccionas es un link sim- tdfsb /usr/local/bin
truido, basado en distribuciones RPM. bólico, XCruiser lo mostrará como un
Una vez hayamos bajado el paquete, agujero de gusano a otra galaxia. A continuación escribe tdfsb en un ter-
escribimos lo siguiente: minal o en el inicio rápido para iniciarlo.
TDFSB (ver Figura 3) utiliza el ratón y
sudo rpm -Uhv U TDFSB: Vista Preliminar los cursores para navegar. Nos muestra
xcruiser-0-30-1.i386.rpm Incluida los archivos de forma diferenciada, en
Para configurar el explorador de archivos función de su contenido. Por ejemplo,
Luego lanzaremos Xcruiser escribiendo TDFSB en Ubuntu, basta con escribir sudo las imágenes se muestran como miniatu-
xcruiser en un terminal o en el inicio apt-get install tdfsb. Los usuarios con Suse ras, y los archivos de texto (y HTML)
rápido. Xcruiser acepta un par de pará- tendrán que bajar el código fuente [3] y como columnas amarillas con el conte-
metros de línea de comandos: xcruiser construir el binario por su cuenta. Para ello, nido del archivo en forma de bandera.
-help te dará una lista con todos los deta- necesitarán los paquetes de desarrollador Los vídeos MPEG se visualizan como
lles. Por ejemplo, xcruiser -background SDL-devel y SDL_image-devel. YaST se fotogramas de vista preliminar, y los
black se encarga de mostrar en Suse el encargará de las dependencias por nosotros. archivos MP3 como Cds. Al mantener
espacio en negro. Además de esto, para las vistas prelimina- pulsado el botón izquierdo mientras pul-
Podemos arrastrar el ratón para res de MPEG será necesario el mpeg-0.4.4- samos la tecla [Enter], se reproducirán el
movernos en una dirección específica; si 1.i386.rpm y smpeg-devel-0.4.4-l.i386.rpm. contenido de audio o vídeo. La tabla
nos pasamos de largo , la pantalla de Ambos archivos están disponibles en el “Atajos de teclado de TDFSB” nos ofrece
posición ayudará a encontrar el camino website de SMPEG [4] y se pueden instalar una vista general.
de vuelta. El horizonte (la línea azul) es tecleando sudo rpm -Uhv smpeg*.rpm.
el punto cero vertical. Tras completar este proceso, escribiremos 3Dfm: Una Tela de Archivos
Archivos y directorios se localizan en lo siguiente en el directorio de código fuente 3Dfm [5] organiza los archivos y directo-
el meridiano cero (horizontal 0). Un clic de TDFSB para instalar el programa en tu rios como una tela de araña. Tras bajar y
con el botón izquierdo nos hace despla- disco: descomprimir el código, se sigue el pro-

Figura 2: XCruiser muestra los directorios como galaxias (círculos Figura 3: TDFSB te ofrece una vista preliminar del contenido del
vacíos) y los archivos como planetas (círculos rellenos de color). archivo mientras navegas.

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


EVALUACIÓN • Directorios 3D

Figura 4: 3Dfm muestra la estructura del directorio como una espe- Figura 5: 3Dfm soporta personalización, a través de menús, si los
cie de tela de araña. El centro siempre es el directorio actual. colores no son de tu gusto.

cedimiento estándar para construir e insta- Sólo hace falta pulsar sobre un icono útiles, instalarlas puede resultar compli-
lar: para desplazarse a él. El actual siempre se cado. El actual Suse Linux no tiene
muestra en el centro de la ventana; si clic- paquetes de ninguno de nuestros candi-
./configure && make U kamos sobre él se mostrará una lista de los datos; Ubuntu, al menos, soporta XCrui-
&& sudo make install archivos que almacena (con los subdirecto- ser y TDFSB.
rios “colgando” de las líneas). El “padre” El soporte para otras distribuciones
Esto dejará el archivo de programa en /usr/ del directorio actual se muestra en rojo, suele ser difícil, y construir los explora-
local/bin. Bastará con escribir interface en mientras que los directorios ocultos son dores por cuenta propia nunca es senci-
una ventana de terminal o inicio rápido verdes. Para moverse a un directorio más llo, dada la cantidad de paquetes 3D
para lanzarlo (ver Figura 4). bajo en el sistema de archivos, se cambia la para Linux. De hecho, en nuestras prue-
La visión del sistema de archivos del pro- vista manteniendo pulsado el botón dere- bas no fuimos capaces con otro explora-
grama comienza a partir del directorio cho y arrastrando el ratón. dor, 3Dfile [6], ni sobre openSuse 10.1 ni
actual. Se emplean los típicos iconos de Si los colores por defecto no son los dese- sobre Ubuntu 6.0. ThreeDFM [7] es otro
carpeta para representar subdirectorios y ados, pueden personalizarse a través del ejemplo más de una aplicación 3D más
líneas para mostrar enlaces entre ellos. menú. La caja de diálogo (ver Figura 5) antigua que no funciona con las distribu-
está escondida tras el pictograma en la ciones actuales. ■
esquina de arriba a la izquierda de la ven-
Tabla 1: Atajos de
tana. Podemos utilizar la opción Filter (“Fil-
teclado de TDFSB tro”) para especificar a 3Dfm qué directo- RECURSOS
Tecla Función rios ocultos debe mostrar, por ejemplo.
[1] FSV: http://fsv.sourceforge.net/
[Esc] Cerrar programa Existe otro botón en la esquina izquierda
[2] XCruiser: http://xcruiser.sourceforge.
[T] Cambiar vista del nombre de la ventana. Al pulsarlo, abriremos una
del archivo (apagado, net
caja que permite acceder directamente a
rotando, fijo) [3] TDFSB: http://www.determinate.net/
cualquier directorio escribiendo a mano la
[C] Alternar cruceta encendida / webdata/seg/tdfsb.html
ruta.
apagada [4] SMPEG: http://www.lokigames.com/
[U] Desplazarse hacia arriba (cd ..)
[M] Representación del objeto
Conclusiones development/smpeg.php3

Los exploradores de archivos en 3D per- [5] Innolab: http://sourceforge.net/


(superficie liso / polígonos)
miten una navegación intuitiva del sis- projects/innolab
[H] Mostrar ayudar
[F] Modo pantalla completa tema de archivos. Existen muchas alter- [6] 3Dfile: http://turma.sourceforge.net/
[O] Ir al directorio de inicio (cd ~) nativas en cuanto a formatos de repre- software/3dfile/
[.] Activar / desactivar el listado sentación; sin embargo, cuál es el mejor [7] ThreeDFM: http://www.
de archivos es, sobre todo, una cuestión de gustos. thedumbterminal.co.uk/software/
Aunque estas herramientas son bastante 3dfm.Shtml

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


Algoritmos Diff • DESARROLLO

Examinamos los algoritmos que usa la herramienta diff

¿DÓNDE ESTÁ LA
DIFERENCIA?
Diff es capaz de encontrar las diferencias entre dos versiones de un archivo. Os mostramos cómo encuentra

los cambios y coincidencias de archivos sin afectar a los recursos del sistema. POR ANDREAS ROMEYKE

P
ara el usuario de la línea de Un método posible para convertir tier En aplicaciones prácticas, la mayor
comandos, descubrir las dife- en tor sería llevar a cabo los siguientes parte del archivo no presenta cambios
rencias entre dos archivos de cambios: tier -> ter -> tr -> tor. Aun- en las comparaciones. Por tanto, el pri-
texto es fácil: un simple comando como que una solución alternativa con mer paso es excluir las partes idénticas.
diff Version_1.txt Version_2.txt es todo menos pasos intermedios
lo que necesitamos. No obstante, si sería: tier -> ter -> tor.
hacemos un análisis más detenido, El menor número de
veremos que diff necesita una gran can- pasos necesarios para
tidad de memoria y algunos ingeniosos hacer el cambio nos pro-
algoritmos para comparar archivos. porciona una métrica
Este artículo investiga cómo consigue para evaluar el grado de
diff encontrar los cambios y coinciden- similitud entre dos cade-
cias en archivos de muchos megabytes nas. Esta métrica es cono-
sin perjudicar los recursos del sistema. cida como la distancia de
Levenshtein o distancia
Distancia de Edición de edición, y es la base
Cada cadena puede cambiarse por otra fundamental del método Figura 1: La visualización de la matriz revela las coinciden-
mediante inserción, borrado o reempla- que usa diff para hacer cias (ceros), incluso si la posición de los caracteres ha cam-
zamiento de caracteres individuales. cambios. biado entre las dos filas.

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


DESARROLLO • Algoritmos Diff

de

Figura 2: Los fragmentos coincidentes se muestran como diagonales Figura 3: Las conmutaciones se muestran como interrupciones en
de ceros que discurren en paralelo a largo de la diagonal central de la diagonales de ceros. Los caracteres que se han conmutado se locali-
matriz. zan con la línea que forma 90 grados respecto a la diagonal.

Para descubrir los cambios, incluso si byte de cada carácter. Por tanto, un - 2 * |LCS (X, Y )|, siendo X = x_1...
se han desplazado respecto del origi- cero representa un carácter que no ha x_n y Y = y_1... y_m.
nal, necesitamos organizar el texto en cambiado. A la coincidencia de mayor En una matriz así, los desplazamien-
una matriz como se muestra en la tamaño se le llama subsecuencia tos son fáciles de detectar: comparando
Figura 1. común mayor o LCS. otter con lotto (véase la Figura 2) los
Los números de la tabla hacen refe- La distancia de edición se puede deri- ceros (coincidencias) se localizan en
rencia a las diferencias entre los valores var de la longitud de la LCS aplicando una diagonal de la matriz (la diagonal
la siguiente fórmula: d(X, Y) = n + m que desciende de izquierda a derecha).
Listado 1: Búsqueda del
LCS Listado 2: Backtracking
01 sub lcs { 01 # run backtracking on 19 } else { # go upper
02 my $refmatrix=shift; lcs-matrix 20 $y—;
03 my $refxlst=shift; 02 sub backtracking_lcs { 21 }
04 my $refylst=shift; 03 my $refmatrix=shift; 22 # check if value is
05 my $m=scalar @$refxlst-1; 04 my $ref_xlst=shift; changed, then push to @lcs
06 my $n=scalar @$refylst-1; 05 my $ref_ylst=shift; 23 if ($actual_value >
07 foreach my $i (1 .. $m) { 06 my @lcs; $refmatrix->[$x]->[$y]) {
08 foreach my $j (1 .. 07 my $x=scalar @$ref_xlst 24 push @lcs,
$n) { -1; $actual_x;
09 if ($refxlst->[$i] 08 my $y=scalar @$ref_ylst 25 }
eq $refylst->[$j]) { -1; 26 }
10 09 while ($y>0 && $x>0) { 27 @lcs=reverse @lcs; #
$refmatrix->[$i]->[$j] = 10 my reverse because backtracking
$refmatrix->[$i-1]->[$j-1]+1; $actual_value=$refmatrix->[$x] 28 return \@lcs;
11 } elsif ->[$y]; 29 }
($refmatrix->[$i-1]->[$j] >= 11 my $actual_x=$x; 30
$refmatrix->[$i]->[$j-1]) { 12 if ( 31 # print out lcs matrix
12 13 32 sub print_lcs {
$refmatrix->[$i]->[$j] = ($refmatrix->[$x-1]->[$y-1] >= 33 my $ref_matrix=shift;
$refmatrix->[$i-1]->[$j]; $refmatrix->[$x-1]->[$y]) && 34 my $ref_xlst=shift;
13 } 14 35 my $ref_ylst=shift;
14 else { ($refmatrix->[$x-1]->[$y-1] >= 36 print “LCS: ‘“;
15 $refmatrix->[$x]->[$y-1]) 37 foreach my $i (@{
$refmatrix->[$i]->[$j] = 15 ) { # go left upper backtracking_lcs($ref_matrix,
$refmatrix->[$i]->[$j-1]; 16 $x—; $y—; $ref_xlst, $ref_ylst) }) {
16 } 17 } elsif 38 print $ref_xlst->[$i];
17 } ($refmatrix->[$x-1]->[$y] >= 39 }
18 } $refmatrix->[$x]->[$y-1]) { # 40 print “‘\n”;
19 return $refmatrix; go left 41 }
20 } 18 $x—;

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


Diff • DESARROLLO
Algoritmos Perl

Figura 4: Los palíndromos (orden inverso en los caracteres) se mues- Figura 5: En lugar de introducir las diferencias entre los valores de
tran como diagonales en la matriz que suben desde la izquierda a la carácter, es más eficiente escribir la longitud de las subsecuencias en
derecha. el parseo inicial.

Las conmutaciones (de las palabras de Los palíndromos (orden inverso en los
teir a tier del ejemplo, véase la Figura 3) caracteres) se revelan como secuencias Optimización del Tiempo de
se muestran como interrupciones en la de ceros que descienden desde la Ejecución
matriz con ceros formando un aángulo esquina derecha a la esquina izquierda El tamaño de la matriz depende de la
de 90 grados con respecto a la diagonal (la diagonal secundaria) en la matriz longitud de los textos. Si tenemos dos
principal a partir de sus centros. (véase la Figura 4). archivos de 10 KB, el número de compa-

Listado 3: Algoritmo Diff


01 # run backtracking on 23 $actual_direction=”l”; 41 }
lcs-matrix 24 } else { # go upper 42 }
02 sub backtracking_lcs { 25 $y—; 43 while ($y > 0) { # get last
03 my $refmatrix=shift; 26 $actual_direction=”u”; stuff of ylst
04 my $ref_xlst=shift; 27 } 44 push @lcs,
05 my $ref_ylst=shift; 28 # check if value is “+(“.$ref_ylst->[$y].”)”;
06 my @lcs; changed, then push to @lcs 45 $y—;
07 my $x=scalar @$ref_xlst -1; 29 if ($actual_value > 46 }
08 my $y=scalar @$ref_ylst -1; $refmatrix->[$x]->[$y]) { 47 while ($x > 0) { # get last
09 while ($y>0 && $x>0) { 30 # push @lcs, $actual_x; stuff of xlst
10 my 31 push @lcs, 48 push @lcs,
$actual_value=$refmatrix->[$x] “(“.$ref_xlst->[$actual_x].”)” “-(“.$ref_xlst->[$x].”)”;
->[$y]; ; 49 $x—;
11 my $actual_x=$x; 32 } else { 50 }
12 my $actual_y=$y; 33 if ($actual_direction eq 51 @lcs=reverse @lcs; # reverse
13 my $actual_direction; “u”) { because backtracking
14 if ( 34 push @lcs, 52 return \@lcs;
15 “+(“.$ref_ylst->[$actual_y].”) 53 }
($refmatrix->[$x-1]->[$y-1] >= ”; 54 # print out lcs matrix
$refmatrix->[$x-1]->[$y]) && 35 } elsif 55 sub print_diff {
16 ($actual_direction eq “l”) { 56 my $ref_matrix=shift;
($refmatrix->[$x-1]->[$y-1] >= 36 push @lcs, 57 my $ref_xlst=shift;
$refmatrix->[$x]->[$y-1]) “-(“.$ref_xlst->[$actual_x].”) 58 my $ref_ylst=shift;
17 ) { # go left upper ”; 59 print “DIFF: ‘“;
18 $x—; $y—; 37 } else { 60 foreach my $i (@{
19 $actual_direction=”ul”; 38 push @lcs, backtracking_lcs($ref_matrix,
20 “+(“.$ref_ylst->[$actual_y].”) $ref_xlst, $ref_ylst) }) {
21 } elsif ”; 61 print $i;
($refmatrix->[$x-1]->[$y] >= 39 push @lcs, 62 }
$refmatrix->[$x]->[$y-1]) { # “-(“.$ref_xlst->[$actual_x].”) 63 print “‘\n”;
go left ”; 64 }
22 $x—; 40 }

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


DESARROLLO • Algoritmos Diff

raciones es sorprendentemente alto: damente, la cadena debe contener una


10000 * 10000 = 100000000, lo que sig- secuencia de valores nulos al
nifica que necesitamos 100 MB de RAM comienzo, como se muestra en la
sólo para guardar la matriz. La búsqueda figura.
de las coincidencias requiere más memo- No habrá que añadir mucho al algo-
ria. ritmo visto en la anterior sección para
Un proceso computacional que calcula generar las diferencias entre dos archi-
valores múltiples veces se puede optimizar. vos o cadenas tal y como lo hace diff.
La Programación Dinámica (véase el cuadro Cada vez que el camino seguido por la
“Programación Dinámica”) reduce el con- matriz cambia de dirección hacia
sumo de memoria y ahorra tiempo de com- arriba o a la izquierda, se ha borrado
putación. un carácter o se ha insertado en la ver- Figura 6: Para descubrir la mayor subsecuencia,
Además consigue mantener bajo el sión nueva. comenzamos en el valor máximo de la tabla y
número de comparaciones cuando se com- El script del Listado 3 detecta estos caminamos hacia atrás por la matriz, usando un
paran dos versiones de un texto en una cambios. El bucle while de las líneas sencillo algoritmo.
matriz: en lugar de diferencias a nivel de 43 a 47 aseguran que el algoritmo
bits entre dos caracteres, la matriz mostrada toma en consideración los caracteres repre- Si la matriz de distancias (véase la Figura
en la Figura 5 guarda el número de caracte- sentados por ceros en la matriz. 4) muestra la diferencia entre las pulsacio-
res coincidentes desde el comienzo de la Aunque la programación dinámica evita nes de un teclado de ordenador (lo que se
cadena. El Listado 1 proporciona el código numerosos cálculos, los desarrolladores de conoce como distancia de tecleado), en
Perl usado para implementar este método. la herramienta diff de Unix (posteriormente lugar de la diferencia entre los códigos del
Usando los valores mostrados en la conocidas como las diff-utils, [1]) tuvieron carácter, se puede aplicar a palabras teclea-
Figura 5, un algoritmo de backtracking que sacarse otra carta de debajo de la das incorrectamente para averiguar lo que
puede determinar rápidamente la subse- manga. una persona quería teclear. Una aplicación
cuencia mayor común de la cadena: La herramienta diff se diseñó fundamen- interesante de diff se encuentra en biología,
1. Comenzamos por el valor máximo. talmente para usarla con código fuente. donde se usa para secuenciar y catalogar
Seleccionamos la entrada mayor arriba y a Para poder controlar el enorme tamaño de genes. ■
la izquierda, o a la izquierda, o arriba de la este tipo de archivos con la memoria de los
posición actual. ordenadores de los años 80, diff no compara
2. En caso de empate, tomamos el letra a letra, sino línea a línea. RECURSOS
camino en diagonal. Para ello, el programa calcula en primer [1] Manual de las GNU Diffutils, 2002:
3. Recorremos la matriz. El LCS se halla si lugar un hash para cada línea, antes de cal- http://www.gnu.org/software/diffutils/
existen varias entradas con el mismo valor cular las diferencias entre los hashes en un manual/diff.html
máximo. segundo paso. No necesita comparar las [2] Darren C. Atkinson y William G.Gris-
La Figura 6 muestra el camino resultado líneas letra a letra si los hashes son idénti- wold, “Effective pattern matching of
de este algoritmo en la matriz. El Listado 2 cos. Este método ahorra una eno0rme canti- source code using abstract syntax
implementa este mismo algoritmo en Perl. dad de memoria. patterns: Software Practice and Expe-
Para permitirle al script que termine adecua- En 1986, Eugene Myers desarrolló un rience”, 36 (4), p. 413-447, 2006.
veloz algoritmo que es la base de las popu- [3] K. Nandan Babu y Sanjeev Saxena,
Programación Dinámica lares diff-utils [6]. Las herramientas alterna- “Parallel algorithms for the longest
tivas a diff basadas en interfaz gráfica, common subsequence problem”,
La programación dinámica supone un Enero 1999.
como Meld [7] o KDE Kompare [8], se
importante concepto en las ciencias [4] J. W. Hunt y M. D. McIlroy “An algo-
basan todas en este método. De hecho, a
computacionales, y es también el mejor rithm for differential file comparison:
método para resolver problemas de pesar de sus bonitos gráficos, Kompare con-
Technical Report” CSTR 41, Laborato-
optimización. En muchos casos, es más fía en el fondo en la veterana herramienta
rios Bell, Murray Hill, NJ, 1976.
fácil dividir el problema, resolver las diff.
[5] Moritz G. Maaß, “Matching statistics:
subtareas de manera individual, y usar
los resultados en pasos sucesivos. Más Aplicaciones efficient computation and a new prac-
tical algorithm for the multiple com-
El cálculo de potencias es un sencillo La técnica que usa diff, además de descu-
mon substring problem: Software
ejemplo que se remonta a los tiempos brir diferencias, su algoritmo puede usarse Practice and Experience”, 36 (3), p.
en los que los recursos para computa- para encontrar también las coincidencias, y 305-331, Marzo 2006.
ción eran escasos: para calcular la por tanto probar qué cierto código ha sido
[6] E. W. Myers, “An o(ND) difference
octava potencia de un número podemos reutilizado. Para proyectos de gran tamaño, algorithm and its variations: Algorith-
dividir el cálculo n*n*n*n * n*n*n*n en la aparición de muchos duplicados en el mica, 1 (2)”, p. 251-266, 1986; http://
los pasos intermedios ((n*n) * (n*n)) *
código es prueba de un reaprovechamiento citeseer.ist.psu.edu/myers86ond.html
((n*n) * (n*n)). Si guardamos los resul-
exitoso. Una variante del algoritmo de diff [7] Meld: http://meld.sourceforge.net
tados de (n*n) y ((n*n)*(n*n)) de
es incluso capaz de comparar notas musica-
manera temporal, sólo necesitamos tres [8] Kompare: http://www.caffeinated.me.
multiplicaciones en lugar de siete. les tocadas con las notas que se supone
uk/kompare
debía tocar.

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


Perl: Monitorización LAN • DESARROLLO

Monitorizamos dispositivos LAN con Perl

HÁGASE LA LUZ
La oscuridad es amiga de los ladrones, pero el demonio Perl del artículo de este

mes ilumina los actos maléficos, sacando a la luz actividades ocultas y alertando

al administrador cuando las cosas empiezan a torcerse. POR MICHAEL SCHILLI

L
os usuarios normalmente no alcanzan a ver lo que hay riormente [3], el script arpcollect del Listado 1 fija en primer
por debajo de una LAN. Una actividad oculta puede lugar nuestra tarjeta de red a modo promiscuo. En este modo,
ser direccionar paquetes en el último tramo de una la tarjeta no sólo captura los paquetes dirigidos a ella, sino
ruta, lo que supone descubrir la MAC específica emparejada que le pasa todo paquete que encuentre al script de sniffing.
a una dirección IP. Esta actividad es del dominio del proto- Para ello se necesitan permisos de root, cosa que verifica
colo ARP. la línea 11. Si no los tenemos, el script simplemente mues-
Vigilar todas las direcciones MAC actualmente en uso tra un mensaje de error.
puede llevar a interesantes conclusiones acerca de quién usa La función lookupdev() llamada en la línea 16 devuelve
o abusa de la red de área local. el nombre del primer dispositivo de red disponible. Si sólo
Podemos recordar lo señalado en la revista anteriormente tenemos un NIC, éste debe ser “eth0”. En la siguiente lla-
[2] por mi compañero Charly Kühnast acerca de arpalert [4] . mada a open_live() se entra en un bucle infinito (el time-
El demonio monitoriza las peticiones ARP y las compara con out se ha deshabilitado con el valor -1), que lee los prime-
las direcciones MAC de una lista blanca. ros 128 bytes de cada paquete entrante, y entonces llama
Las direcciones MAC desconocidas hacen saltar una inmediatamente a la función callback.
alarma. Sin embargo, pueden generarse alarmas duplicadas Se pasa la función tanto a la dirección de red local de la
para un mismo incidente, dejando mucho que desear la docu- máscara de $user_data, como a la información en bruto
mentación incluida. Afortunadamente los módulos Net::Pcap del paquete $raw_packet.
y NetPacket::Ethernet de CPAN facilitan enormemente El módulo NetPacket::Ethernet decodifica la trama
las cosas a la hora de realizar un script en Perl Ethernet, y revela la dirección MAC de la fuente
para extraer la dirección MAC de los paque- en formato hexadecimal, en la clave hash
tes que circulan por nuestra LAN. src_mac.
Rose, el mapeador de base de datos Como la dirección no incluye aún los
orientada a objetos, nos propor- típicos dos puntos (:) cada dos dígi-
ciona una sencilla manera de tos, la línea 50 usa una expresión
guardar la información en una regular para insertar estos separa-
base de datos MySQL, que dores.
podemos revisar más tarde De la línea 62 a la 65, arpcollect
cuando tengamos tiempo. Si referencia las direcciones IP de
necesitamos determinar qué los paquetes para verificar si el
dispositivos han estado acti- paquete se originó en un dispo-
vos en nuestra LAN, digamos, sitivo de la red de área local.
en las últimas 24 horas, pode- Pueden descubrirse las direc-
mos simplemente realizar una ciones IP leyendo la información
llamada al script lastaccess extra del paquete Ethernet, que
(mostrado en el Listado 6), que se extrae por la función strip()
genera la salida presente en la del módulo NetPacket::Ethernet.
Figura 1. El paquete IP en bruto resultante se
desempaqueta con la función
Sniffing desde Root decode() del módulo NetPacket::IP, y
Al igual que el sniffer de red gráfico la dirección IP origen queda revelada por
capture ya revisado en esta sección ante- la clave hash src_ip.

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


DESARROLLO • Perl: Monitorización LAN

de líneas consumiría un device guarda las direcciones MAC


valioso espacio en disco y junto con la información del disposi-
recursos de computación. tivo. ip_address simplemente guarda
Esta es la razón por la cual las direcciones IP y las asigna a un
WatchLAN.pm (véase el Lis- número secuencial. Guardar las direc-
tado 3) guarda primero las ciones en la tabla principal no sólo
direcciones de paquete sería un desperdicio de espacio de
entrantes en un hash tempo- almacenamiento, sino que generaría
ral, que luego se transfiere a información redundante.
la base de datos una vez por
Figura 1: El script lastaccess revela qué dispositivos minuto. Tratamiento Especial para
han estado activos en nuestra LAN en las últimas 24 Se incrementa un contador MySQL
horas. por cada combinación IP/ MySQL no le facilita mucho al cargador
MAC y se guarda en la Rose::DB la detección estas relaciones
Si la operación de bit AND sobre la columna counter de la base de datos automáticamente. Según el autor de
dirección IP y la dirección de red activity por el método cache_flush(). El Rose::DB, John Siracusa, tenemos que
resulta la dirección de red, podemos parámetro flush_interval del construc- proporcionar las cláusulas REFEREN-
suponer que el paquete se envió por un tor WatchLAN determina la frecuencia CES correctas para las declaraciones de
dispositivo dentro de la red local y que con la que se vacía la caché. claves externas y para definir un índice
debe tenerse en cuenta para un proce- El momento de la siguiente operación index tanto en la columna referencia-
samiento posterior. de vaciado se calcula añadiendo dora como en la referenciada.
El método event_add() del objeto flush_interval a la hora actual y se Una vez establecida la definición SQL
base de datos WatchLAN acepta la guarda en la instancia de la variable como se ha mostrado, WatchLAN.pm
dirección IP y la dirección MAC y las next_update. sólo tiene que llamar al método
vuelca sobre la base de datos para un El Listado 2 muestra los comandos de make_classes para conseguir que
análisis posterior. shell necesarios para crear una nueva Rose::DB contacte con la base de datos
base de datos MySQL. y defina autónomamente el empaqueta-
Un Búfer de un Minuto Los comandos SQL para configurar dor de objetos completo de todas las
El módulo WatchLAN.pm implementa todas las tablas usadas (véase la Figura tablas y columnas, incluyendo aquellas
la capa de almacenamiento. Sería poco 2) están en un archivo separado sql.txt, referenciadas por las tablas separadas.
práctico escribir cada paquete directa- el cual se muestra en la Figura 3.
mente a la base de datos. Esto implica- Como se aprecia en la Figura 3, las ¿Qué Sabemos?
ría muchas operaciones por segundo, claves externas se usan para enlazar la El módulo WatchLAN realiza la lla-
incluso en una red de baja actividad. tabla principal activity con las tablas mada al cargador Rose cada vez que
Adicionalmente, una tabla con millones device e ip_address. una aplicación llama a useWatchLAN.

Listado 1: arpcollect
01 #!/usr/bin/perl -w 16 Net::Pcap::open_live( $dev, 29 # Add separating colons
02 use strict; 1024, 1, 30 $src_mac =~
03 use Net::Pcap; 17 -1, s/(..)(?!$)/$1:/g;
04 use NetPacket::IP; \$err ); 31 my $edata =
05 use NetPacket::Ethernet; 18 my $db = WatchLAN->new(); 32
06 use Socket; 19 Net::Pcap::loop( $object, -1, NetPacket::Ethernet::strip($ra
07 use WatchLAN; \&callback, w_packet);
08 die “You need to be root to 20 [ $netaddr, $netmask ] ); 33 my $ip =
run this.\n” 21 ############ NetPacket::IP->decode($edata);
09 if $> != 0; 22 sub callback { 34 # Package coming from
10 my ( $err, $netaddr, $netmask 23 ############ local network?
); 24 my ($user_data, $hdr, 35 if ((inet_aton(
11 my $dev = $raw_packet) = @_; $ip->{src_ip} ) &
Net::Pcap::lookupdev( \$err ); 25 my ($netaddr, $netmask) = 36 pack( ‘N’, $netmask )
12 Net::Pcap::lookupnet($dev, @$user_data; 37 ) eq pack( ‘N’, $netaddr
\$netaddr, 26 my $packet = )) {
13 NetPacket::Ethernet-> 38 $db->event_add( $src_mac,
\$netmask, \$err) and 27 39
14 die “lookupnet $dev failed decode($raw_packet); $ip->{src_ip} );
($!)”; 28 my $src_mac = 40 }
15 my $object = $packet->{src_mac}; 41 }

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


Perl: Monitorización LAN • DESARROLLO

WatchLAN guarda el esquema de la función similar, bien inser-


base de datos como una abstracción tando un nuevo dispositivo
orientada a objetos en el espacio de junto con la dirección MAC, o
nombres de Perl bajo WatchLAN::. modificando la entrada para el
Cuando el método cache_flush() dispositivo existente.
necesita guardar temporalmente infor- La llamada a
mación del hash en la base de datos, $device->load(speculative=>
WatchLAN responde creando un nuevo 1); carga un registro desde la
objeto $activity de la clase Watch- tabla devices que coincida con
LAN::Activity. la dirección MAC que se espe-
Esto no sólo facilita las actualizacio- cificó previamente en el cons-
nes de la tabla activity sino también en tructor WatchLAN::Device.
tablas referenciadas como devices e El método load funciona en
ip_addresses. El sencillo constructor: este caso debido a que defini-
mos la columna mac_address
$activity->device({ como clave única, usando UNI-
mac_address => $mac }); QUE(mac_address) al crear la
base de datos.
hace que ocurran dos cosas más tarde, Rose detecta esto y luego
cuando se llama al método del objeto nos permite cargar el registro
save(). Si la tabla devices aún no tiene basado en este criterio. Si no
una entrada para el dispositivo con la estuviera, sería necesario for-
dirección MAC dada, crea un nuevo mular una consulta para bus-
registro allí. En la tabla principal acti- car este registro.
vity, añade la recién creada id del dis- El parámetro speculative
positivo como clave externa en la especifica que es correcto que
columna device_id. un registro no exista. Por
Al contrario que la llamada del tanto, seguiría una llamada a
método anterior, no se necesitan cor- save() para crear el registro.
chetes para crear una nueva entrada en
la tabla activity que no alcance las Evitar Despilfarros
tablas referenciadas. Rose tiene un método bastante
Una llamada a despilfarrador en cuanto a
$activity->counter($counter) fija el conexiones de base de datos. Figura 3: Estos comandos SQL crean la base de datos
valor $counter de la columna contador Cada nuevo objeto de la clase MySQL necesaria.
en el registro activity actual al valor de WatchLAN::Activity llama a la
$counter. Tras una llamada a save() en función del módulo DBI connect(), y “el equipo Linux de Mike”. Al mismo
la línea 93, se vacía en la base de datos. cierra la conexión al acabar con el tiempo, el registro prueba que existe un
Para cuando haya terminado, objeto. Esto evita efectos colaterales dispositivo validado en la red de área
cache_flush() ya ha finalizado y puede indeseados a la hora de trabajar con local.
limpiar su caché, cosa que hace en la transacciones de bases de datos, pero Por otro lado, si nuestro vecino trata
línea 96. Calcula el siguiente intervalo obviamente es un desperdicio de de robar ancho de banda de nuestra red
de vaciado, y regresa a la función lla- tiempo si no estamos trabajando con inalámbrica, arpcollect detecta la intru-
mante. device_add() lleva a cabo una ellos, como en nuestro caso. sión e introduce la dirección MAC en la
Con solo cargar el módulo tabla devices dejando el nombre vacío.
Apache::DBI interferimos en El script de monitorización arpemail,
la manera en la que el que veremos más tarde, se da cuenta de
módulo DBI de Perl controla esta irregularidad y lo notifica al admi-
las conexiones y aseguramos nistrador por email. Para introducir las
que sólo se está usando una direcciones MAC de dispositivos cono-
única conexión de base de
datos persistente tras el esce- Listado 2: Nueva Base de
nario. Datos
La tabla devices no sólo #!/bin/sh
alberga direcciones MAC, DBNAME=watchlan
sino que también asigna mysqladmin -f -uroot drop $DBNAME
nombres de dispositivo des- mysqladmin -uroot create $DBNAME
Figura 2: Las tres tablas en el esquema de bases de criptivos. De esta manera, mysql -uroot $DBNAME <sql.txt
datos. 00:11:11:5b:ed:46 pasa a ser

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


DESARROLLO • Perl: Monitorización LAN

cidos en la LAN, el script namedev lee arpemail usa la clase WatchLAN::Acti- propia columna y los valores en las
las entradas de su sección DATA línea a vity::Manager para buscar registros tablas referenciadas.
línea. El formato que usa es exacta- mediante una consulta SQL. El método arpemail “recuerda” los dispositivos
mente lo que espera el script original get_activity() de la línea 14 consulta la que ha etiquetado como sospechosos
arpalert [4] en su archivo de tabla activity, y el parámetro en una caché basada en archivo
configuración. with_objects asegura que la informa- Cache::File para evitar repetir los mis-
ción referenciada en las tablas device mos mensajes de aviso. Si existe una
Alarma en el Sector B ip_address también se extrae. Rose enu- entrada en la caché para la dirección
Tras ejecutar namedev, sólo los disposi- mera las tablas como t1 (activity), t2 MAC $mac, entonces el siguiente cons-
tivos desconocidos en la LAN van a (device) y t3 (ip_address), por lo que la tructor devuelve el valor falso:
tener un valor NULL en name dentro de consulta SQL:
la tabla device. Para determinar todas !$cache->get($mac) &&
las entradas de activity que referencian query => [ “t2.name” =>undef ] ($cache->set($mac, 0) || 1);
a entradas de device con el campo
name a NULL, debemos hacer un JOIN de la línea 19 refiere a la tabla device y En caso de que $mac sea desconocida,
de las dos tablas. Si necesitamos tam- la verifica en busca de entradas con un el método get de la caché devuelve
bién las direcciones IP de la entrada, valor NULL en la columna name. El falso, que al negarse se convierte en
estarán implicadas al menos tres tablas. resultado de esta consulta es una refe- verdadero, lo que da lugar a que sea se
Rose controla esto tras el escenario. El rencia a un array de entradas coinci- ejcute la sentencia siguiente al AND
script arpemail (véase el Listado 5) dentes de la base de datos, cada una de lógico.
notifica al administrador del sistema las cuales es un objeto del tipo Watch- El método siguiente set se usa para
siempre que una MAC previamente des- LAN::Activity, que proporciona méto- añadir el nuevo valor a la caché, y el
conocida se detecta en la tabla device. dos para consultar los valores de su siguiente ||1 hace que siempre

Listado 3: WatchLAN.pm
01 ########### 30 } $minute);
02 package WatchLAN; 31 ############## 53 $activity->device(
03 ############## 32 sub event_add { 54 { mac_address => $mac }
04 use strict; 33 ############## );
05 use Apache::DBI; # share a 34 my($self, $mac, $ip)= @_; 55 $activity->ip_address(
single DB conn 35 56 { string => $ip } );
06 use Rose::DB::Object::Loader; $self->{cache}->{“$mac,$ip”}++ 57
07 use Log::Log4perl qw(:easy); ; $activity->counter($counter);
08 use DateTime; 36 $self->cache_flush() 58 $activity->save();
09 my $loader = 37 if time() > 59 }
Rose::DB::Object::Loader->new( $self->{next_update}; 60 $self->{cache} = {};
10 db_dsn => 38 } 61 $self->{next_update} =
‘dbi:mysql:dbname=watchlan’, 39 ############## time() -
11 db_username => ‘root’, 40 sub cache_flush { 62 ( time() %
12 db_password => undef, 41 ############## $self->{flush_interval} ) +
13 db_options => { 42 my ($self) = @_; 63 $self->{flush_interval};
14 AutoCommit => 1, 43 for my $key ( keys %{ 64 }
RaiseError => 1 }, $self->{cache} } ){ 65 ##############
15 class_prefix => ‘WatchLAN’ 44 my ($mac, $ip) = split 66 sub device_add {
16 ); /,/, $key; 67 ##############
17 $loader->make_classes(); 45 my $counter = 68 my ( $self, $name,
18 ############## $self->{cache}->{$key}; $mac_address ) = @_;
19 sub new { 46 my $minute = 69 my $device =
20 ############## DateTime->from_epoch( WatchLAN::Device->new(
21 my ($class) = @_; 47 epoch => 70 mac_address =>
22 my $self = { $self->{next_update} - $mac_address );
23 cache => {}, 48 71 $device->load( speculative
24 flush_interval => 60, $self->{flush_interval}, => 1 );
25 next_update => undef, 49 time_zone => “local”, 72 $device->name($name);
26 }; 50 ); 73 $device->save();
27 bless $self, $class; 51 my $activity = 74 }
28 $self->cache_flush(); WatchLAN::Activity->new( 75 1;
29 return $self; 52 minute =>

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


Perl: Monitorización LAN • DESARROLLO

En caso de que haya nuevos disposi-


Listado 4: namedev
tivos que reportar, el mensaje de alerta
01 #!/usr/bin/perl 14 } se formatea por el toolkit de plantillas.
02 use strict; 15 } La plantilla que se guarda en la sección
03 use warnings; 16 __DATA__ DATA al final del script se pasa como
04 use WatchLAN; 17 # Slimbox referencia al array $events, y usa un
05 my $db = WatchLAN->new(); 18 00:04:20:03:00:0d 192.168.0.74 bucle FOREACH para iterar sobre las
06 while(<DATA>) { ip_change entradas. La estrafalaria pero práctica
07 if(/^#\s+(.*)/) { 19 # Laptop Wireless sintaxis del toolkit de plantillas nos
08 my $name = $1; 20 00:16:6f:8d:58:db 192.168.0.75 permite llamar al encadenamiento de
09 my $nextline = <DATA>; ip_change métodos $e->ip_address()->string()
10 chomp $nextline; 21 # Laptop Wired como e.ip_address.string.
11 my($mac, $ip, $ip_change) 22 00:15:60:c3:44:10 192.168.0.71 arpemail usa entonces el módulo
= ip_change Mail::Mailer para conectarse con el
12 split ‘ 23 # Mike’s Linux Box servidor de correo local. Manda enton-
‘, $nextline; 24 00:11:11:5b:ed:46 192.168.0.18 ces el correo al administrador de siste-
13 $db->device_add($name, 25 ... mas indicado en el campo To de la
$mac); línea 41.

devuelva un valor verdadero, sin nes de ancho de banda que se guarda ¿Qué Ha Estado Pasando?
importar el valor de set devuelto en ese en $events. Para ver qué dispositivos ha visitado
momento. Si el array referenciado por $events nuestra LAN en las últimas 24 horas, el
El comando grep de la línea 24 y aparece vacío, entonces el script de script lastaccess usa el módulo Date-
siguientes usa esta retorcida lógica y fil- vigilancia arpemail, al que se llama Time de CPAN para especificar un
tra las direcciones MAC guardadas en la como un trabajo de Cron normal, sim- punto temporal hace exactamente 24
caché de la lista de potenciales ladro- plemente finaliza. horas.
DESARROLLO • Perl: Monitorización LAN

Listado 5: arpemail
01 #!/usr/bin/perl -w undef ], 27 });
02 use strict; 14 sort_by => [‘minute’], 28 my $t = Template->new();
03 use WatchLAN; 15 ); 29 $t->process(
04 use Mail::Mailer; 16 $events = [ grep { 30 \*DATA, { events => $events
05 use Cache::File; 17 my $mac = }, $mailer
06 use Template; $_->device()->mac_address(); 31 ) or die $t->error();
07 my $cache = Cache::File->new( 18 !$cache->get($mac) && 32 close($mailer);
08 cache_root => 19 ($cache->set($mac, 0) || 33 __DATA__
“$ENV{HOME}/.arpemail”); 1); 34 [% FOREACH e = events %]
09 my $events = 20 } @$events ]; 35 When: [% e.minute %]
WatchLAN::Activity::Manager-> 21 exit 0 unless @$events; 36 IP: [% e.ip_address.string
10 get_activity( 22 my $mailer = new Mail::Mailer; %]
11 with_objects => [ 23 $mailer->open({ 37 MAC: [%
‘device’, 24 ‘From’ => ‘me@_foo.com’, e.device.mac_address %]
12 25 ‘To’ => ‘oncall@_foo.com’, 38 [% END %]
‘ip_address’ ], 26 ‘Subject’ => “*** New MAC
13 query => [ “t2.name” => detected ***”,

El administrador Rose lanza entonces los últimos valores. Sería preferible listaccess define la función time_diff
una consulta SQL que devuelve cada dejar este tipo de cálculos a la base de en la línea 40 para calcular, en formato
evento ocurrido desde ese momento, datos. Sin embargo, el objeto empaque- entendible, la diferencia temporal entre
ordenado temporalmente con la hora tador de Rose aún no soporta la agrega- los valores de segundos.
redondeada a minutos, según la ción de funciones como MAX() con La sustitución de texto de la línea 56
columna minute de la base de datos. GROUP BY. A tenor del actual ritmo de transforma las unidades de tiempo en
El hash %latest guarda sólo los últi- desarrollo, sin embargo, esta funciona- plural a unidades en singular si el
mos eventos de varias direcciones lidad puede haberse implementado resultado es una única unidad. El resul-
MAC. lastaccess sobrescribe continua- para cuando este número esté en los tado generado por lastaccess se parece
mente las mismas direcciones MAC con quioscos. mucho a la Figura 1. Podríamos exten-
der el script arpemail para fijar IPs
Listado 6: lastaccess estáticas para dispositivos específicos
de la tabla device, siguiendo el ejemplo
01 #!/usr/bin/perl -w 21 $name ||= “unknown
de arpalert [4], y enviar una alerta cada
02 use strict; (id=$id)”;
vez que un dispositivo con una IP está-
03 use WatchLAN; 22 printf “%23s: %s ago\n”,
tica use de repente una dirección dife-
04 my $reachback = DateTime $name,
rente.
05 ->now( time_zone => “local” 23
Como siempre, simplemente no hay
) time_diff($event->minute());
límites a la imaginación del desarrolla-
06 ->subtract( minutes => 60 * 24 }
dor ahora que el entorno de trabajo se
24 ); 25 ###############
ha establecido convenientemente. Y
07 my $events = 26 sub time_diff {
afortunadamente, podremos acceder a
WatchLAN::Activity::Manager-> 27 ###############
la información de la base de datos para
08 get_activity( 28 my ($dt) = @_;
nuestra inmensa alegría. ■
09 query => [ minute => 29 my $duration =
10 { gt => DateTime->now(
$reachback }, 30 time_zone => “local”
RECURSOS
11 ], 31 ) - $dt; [1] Listados de este articulo: http://www.
12 sort_by => [‘minute’], 32 for (qw(hours minutes linux-magazine.es/Magazine/
Downloads/28/Perl
13 ); seconds)) {
14 my %latest = (); 33 if(my $n = [2] “Una Mirada a ARP”, por Charly Küh-
15 for my $event (@$events) { $duration->in_units($_)) { nast, Linux Magazine, Número 26,
pág. 57
16 $latest{$event->device_id()} 34 my $unit = $_;
= $event; 35 $unit =~ s/s$// if [3] “Perl: Traffic Control”, por Michael
Schilli, Linux Magazine, Diciembre
17 } $n == 1;
2004, http://www.linux-magazine.
18 for my $id (keys %latest) { 36 return “$n $unit”;
com/issue/49
19 my $event = $latest{$id}; 37 }
[4] El script Arpalert original: http://
20 my $name = 38 }
arpalert.org
$event->device()->name(); 39 }

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


Python y KOffice • DESARROLLO

Kspread y Python nos ofrecen una forma simple de realizar facturas automáticas.

FACTURACIÓN
mos instalar con nuestro sistema de
Python no sólo puede ayudarnos en nuestro ordenador personal, paquetes favorito el programa Koffice
cuya versión sea superior a 1.6. Todas las
sino también en el del trabajo. Vamos a ver cómo sacar el máximo
versiones de Koffice superiores a 1.6
partido a KOffice 1.6 con Python y Kross, el nuevo sistema de scrip- dependen de Kross, por lo que nuestro
sistema de paquetes probablemente ins-
ting que KDE incorporará en la versión 4.0. talará Kross, así como todas las depen-
dencias asociadas.
POR JOSE MARÍA RUÍZ AGUILERA Kross es muy reciente. De hecho el API
para la versión 1.6.2 es realmente
pequeño. Algunos dirían que incluso

L
a gente de KDE se encontraba librerías, y por ello decidieron crear poco útil, pero aún así se le puede sacar
ante un dilema. Necesitaban Kross. partido. Se encuentra aún en fase de pro-
incorporar algún sistema de Kross permite emplear lenguajes totipo, la versión 2.0 de Koffice ofrecerá
scripts en la nueva versión de Koffice. script como Python o Ruby dentro de un soporte muchísimo más amplio con
No pensaban reinventar la rueda, exis- KDE. De hecho, será parte integrante de todas las funcionalidades que Koffice
tiendo tantos intérpretes y lenguajes KDE 4 y no sólo de Koffice 1.6, como puede ofrecer, de forma que podremos
con comunidades fuertes y miles de hasta el momento. Por lo tanto, en un hacer casi cualquier cosa con Kross.
futuro muy próximo será posible crear Por el momento Kross no es una libre-
Listado 1: holamundo.py scripts que saquen el máximo partido ría que podamos importar, por lo que
01 #!/usr/bin/env krossrunner de todo KDE 4. Pero eso será dentro de debemos ejecutar nuestros scripts dentro
02 algún tiempo. de Koffice empleando el mecanismo que
03 import krosskspreadcore Ahora vamos a concentrarnos en lo veremos más adelante. El código que
04 que podemos hacer ahora. Mejor aún, aparece como ejemplo en la próxima sec-
05 doc = en lo que podemos hacer ahora y que ción no puede ejecutarse en un intér-
krosskspreadcore.get(“KSpreadD nos pueda hacer la vida más sencilla. prete normal de Python.
ocument”) Como demostración del scripting de La próxima versión de Kross permitirá
06 Python a través de Kross vamos a crear su carga como librería en cualquier intér-
07 hoja = doc.currentSheet() un programa que genere facturas a par- prete de Python, lo que hará mucho más
08 tir de una base de datos, Python y una sencilla la ejecución de scripts.
09 hoja.setName(“Hola Mundo”) plantilla de factura.
10
API Actual
11 celda = hoja.cell(1,1)
Kross Como ya se ha dicho, la API de Kspread
12 celda.setText(“Hola Mundo”) ¿Qué necesitamos para poder emplear (ver [1]) actual es muy simple. Tanto que
Kross? Pues realmente, sólo necesita- sólo consta de 4 objetos y sus métodos:

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


DESARROLLO • Python y KOffice

• KSpreadCoreModule (representa a nos devuelve una lista con las hojas que método setText(), que nos permite alma-
Kspread) existen: cenar una cadena de texto. Pero esta
• Doc (representa a un documento) cadena es posteriormente interpretada
• Sheet (representa una hoja) >>> doc.sheetNames() por Kspread. Por tanto, podemos pasar
• Cell (representa una celda) [“Sheet 1”,”Sheet 2”,”Sheet 3”] como cadena de texto una fecha o un
El primero, de nombre más complicado, número. El método setValue() no intro-
realmente sólo lo emplearemos una vez En nuestros ejemplos emplearemos el duce una cadena de texto a no ser que le
y con su método get(). Sirve para invo- método currentSheet() porque nos vale pasemos una. Intenta insertar el dato tal
car la creación de una instancia de con la primera hoja. Una vez que tene- como es, no se interpreta nada.
Kspread: mos nuestra hoja almacenada en una Bueno, ya está bien de teoría. Veamos
variable, es posible acceder a una celda cómo podemos crear nuestros propios
>>> doc = krosskspreadcore.getU en particular con el método cell() del scripts y usarlos desde Kspread.
(“KSpreadDocument”) objeto Sheet. Pero, repito, tener la celda
>>> no es tener el valor que ésta guarda. Para Hola Mundo
ello debemos almacenar en una variable En el Listado 1 aparece el código que
La variable doc contiene ahora un el resultado de la llamada a cell(): escribirá «Hola mundo» tanto en el nom-
objeto que nos permite acceder al docu- bre de la hoja como en la celda (1,1) de
mento dentro de KSpread, que no será >>> hoja = doc.currentSheet() una hoja de cálculo. ¿Pero qué hacemos
otra cosa que una hoja de cálculo. Ésta >>> celda = hoja.cell(1,1) con él? Debemos indicarle a Kspread que
se compone de diferentes páginas (o lo cargue para que podamos ejecutarlo.
sheets) con un nombre. Estas páginas Las celdas están numeradas comen- Para ello debemos ir al gestor de Scripts
contienen a su vez celdas y las celdas zando por 1, pero por alguna decisión en el menú «Herramientas». Cuando lo
contienen valores. realizada por los desarrolladores de ejecutemos aparecerá una ventana muy
Kspread nos ofrece exactamente la Kspread es posible acceder a la celda 0, parecida a la que se ve en la Figura 1. En
misma jerarquía. Para poder llegar a que no es otra que la 1. Esto puede llevar ella podemos distinguir 3 secciones:
modificar el valor de una celda necesi- a algunos equívocos, así que en este artí- Scripts, Cargados e Historial (en mi caso
tamos primero acceder a un docu- culo asumiremos que las celdas, tanto en aparece en inglés). La sección Scripts se
mento, después a una página y por filas como en columnas, comienzan en refiere a una serie de scripts que se
último a la celda en cuestión. Cada 1. encuentran almacenados en un directo-
página está compuesta por una canti- Ya tenemos la celda de la primera rio especial. Además, vienen acompaña-
dad de filas y columnas, y una celda columna y la primera fila almacenada en dos de un fichero «rc» que da a Kspread
está identificada por su fila y su la variable celda, y ahora podemos acce- datos sobre el script. Estos scripts son
columna. der a su valor: cargados cada vez que Kspread se
El objeto Doc posee métodos para arranca.
operar con las páginas que contiene. >>> celda.setText(“Hola”) Pero a veces no queremos andar arran-
Con currentSheet() podemos obtener la >>> print celda.text() cando y apagando Kspread para probar
hoja que se encuentra seleccionada en “Hola” nuestros scripts, simplemente queremos
ese momento (que no es otra que la que >>> cargarlos, probarlos y descargarlos para
vemos), si queremos acceder a otra hoja volver otra vez a cargarlos. Este ciclo de
debemos emplear su nombre. Podemos El objeto Cell, que no es otro que el que trabajo es normal cuando se está traba-
obtener los nombres de las diferentes representan las celdas, puede almacenar jando en un script nuevo.
hojas con el método sheetNames() que dos tipos de datos diferentes. Tenemos el Pues con el gestor de scripts podemos

Figura 1: Gestor de Scripts. Figura 2: Resultado del Listado 1.

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


Python y KOffice • DESARROLLO

cargar y descargar scripts sin tener que y esquemáticas. Como cuando encontra- mínimo razonable para poder trabajar.
cerrar Kspread. Para ello, sólo tenemos mos una web sin diseño, sólo con lo Usaré la base de datos Postgresql porque
que pulsar en el botón con la carpeta y básico para poder ser llamada web. es la que me gusta, no quiero entrar a
seleccionar el script a cargar. Una vez Todos los negocios quieren tener facturas discutir si es mejor o peor que otras por-
cargado podemos ejecutarlo pulsando el impresionantes y profesionales con logo- que aquí lo importante es Python ;).
botón de la rueda dentada. Para descar- tipos y buena tipografía. Para poder acceder a Postgresql nece-
garlo debemos pulsar en el botón con la Existe otra posibilidad. Podemos hacer sitamos emplear alguna de las distintas
equis dentro de un círculo. La sección una plantilla de una factura, con logoti- librerías que existen. En mi caso emple-
Historial no es otra cosa que una lista pos y todo lo que el diseñador quiera aré pgdb (ver [2]). Me gusta porque tiene
con los últimos scripts ejecutados. poner. Cuando tengamos que generar pocas funciones y es muy básica:
Podemos copiar el código del Listado 1 una factura cargaremos ese plantilla y
y guardarlo en cualquier sitio (digamos rellenaremos los datos necesarios. >>> con = pgdb.connectU
/tmp) y cargarlo con el gestor de scripts Con Kspread, Postgresql, Python y (“127.0.0.1:facturas”)
de Kspread para probarlo. El resultado Kross podemos hacer esto de forma muy >>> facturas = con.cursor()
será el que aparece en la Figura 2. sencilla y en pocas líneas de código. >>> facturas.executeU
Nuestro programa recopilará los datos de (“select id,nombre,U
Un Generador de Facturas la base de datos Postgresql (podría ser apellidos,fecha from facturas”)
Imaginemos que tenemos algún sistema Mysql o cualquier otra), cargará una >>> foreach factura inU
que registra compras en una base de plantilla en Kspread y la rellenará. Poste- facturas.fetchall():
datos. Puede que sea una tienda online o riormente guardará el fichero en disco >>> print factura[0]
un programa de algún tipo. Una vez que duro y pasará a procesar la siguiente fac- 1
ya están reflejadas las compras en la tura. 2
base de datos debemos generar las factu- ¡Y todo esto con sólo ejecutar un 3
ras. script! >>> con.close()
Existen muchos sistemas para hacer
esto. Normalmente implican el empleo La Base de Datos En este breve ejemplo podemos ver en
de alguna librería de generación de fiche- Este ejemplo únicamente pretende ser funcionamiento todos los métodos de
ros PDF. El problema que surge es que ilustrativo, por lo que no voy a crear pgdb que vamos a emplear. La idea es
las facturas generadas suelen ser básicas todo un sistema de facturación. Pero sí el simple. Nos conectamos con la base de

Listado 2: kfactura.py
01 #!/usr/bin/env krossrunner 19 facturas.id=facturas_productos
02 import pgdb 20 .factura and
03 import krosskspreadcore doc.openUrl(“/tmp/factura.ots” productos.id=facturas_producto
04 ) s.producto and facturas.id=%s”
05 con = 21 % (factura[0]))
pgdb.connect(“127.0.0.1:factur 22 nombre = factura[1]+” 34 fila = 17
as”) “+factura[2] 35 for compra in
06 23 compras.fetchall():
07 facturas = con.cursor() 24 hoja = doc.currentSheet() 36
08 25 escribe(hoja,1,fila,str(compra
09 facturas.execute(“select 26 escribe(hoja,2,8,nombre) [2]))
id,nombre,apellidos,fecha from 27 37
facturas”) escribe(hoja,6,3,str(factura[0 escribe(hoja,2,fila,str(compra
10 ])) [1]))
11 def escribe (hoja, col,fila, 28 38
valor): escribe(hoja,6,4,str(factura[3 escribe(hoja,5,fila,str(compra
12 celda = ])) [3]))
hoja.cell(col,fila) 29 39
13 celda.setText(valor) 30 # Buscamos sus artículos escribe(hoja,6,fila,str(compra
14 31 [2]*compra[3]))
15 doc = 32 compras = con.cursor() 40 fila += 1
krosskspreadcore.get(“KSpreadD 33 compras.execute(“select 41
ocument”) facturas.id,productos.descripc 42
16 ion,facturas_productos.cantida doc.saveUrl(“/tmp/factura-”+st
17 for factura in d,productos.precio from r(factura[0])+”.ods”)
facturas.fetchall() : facturas_productos,productos,f 43
18 # Nuevo KSpread acturas where 44 con.close()

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


DESARROLLO • Python y KOffice

datos, que aquí se encuentra en mi pro-


pio ordenador y se llama «facturas». Cre-
amos un cursor, que no es otra cosa que
una conexión para poder realizar peticio-
nes. Ejecutamos una consulta que no
nos devuelve nada. El resultado de la
consulta se queda en la base de datos
hasta que nosotros lo recuperemos con
fetchall(), que nos devuelve una lista de
las filas devueltas. Al ser una lista pode-
mos acceder a los campos de la fila
devuelta usando la notación normal de
listas de Python. Cuando hayamos aca-
bado cerramos la conexión y listo.

Nuestra Plantilla
La plantilla que emplearemos en nuestro
ejemplo ha sido diseñada sobre Kspread,
aparece en la Figura 3. No tiene nada
especial, es simplemente un fichero
Kspread vacío. Lo creamos, le damos for-
mato y lo guardamos en un directorio
conocido. Es recomendable cambiar el
formato de las celdas que vayamos a
rellenar para que sean de texto y que el
contenido se alinee con el fondo de la
celda. De esta forma el texto saldrá aline-
ado de forma correcta con el texto que
haya al lado. Además, me gusta guardar
este fichero como Template, plantilla, Figura 3: Nuestra plantilla de factura.
usando la terminación ots.
Una breve reseña. A pesar de que se plantilla que se ve en la Figura 3 cargado asignada. Los ficheros resultantes se
supone que tanto Koffice como Open- con OpenOffice muestra diferencias. guardarán con formato ods. Podremos
Office usan el mismo formato para guar- La plantilla incorpora, aunque no abrir estos ficheros con Koffice e
dar los documentos, las pruebas que he pueda verse, unas cuantas fórmulas, de imprimirlos o generar ficheros PDF. Por
realizado me demuestran que no son forma que se calculen ciertos valores, desgracia estas dos acciones aún se
totalmente compatibles. El fichero de por ejemplo el total a pagar. encuentran fuera del alcance de Kross.
Los ficheros tendrán el formato que
Script Final aparece en la Figura 4.
Conectaremos con la
base de datos y nos Conclusión
traeremos las facturas Los desarrolladores de Koffice no han
existentes y querido introducir en Koffice un soporte
pasaremos a conectar completo para Kross debido a que está
Kspread. Para cada planeado para la versión 2.0, no para la
factura cargaremos la actual, la 1.6. Aún así es posible realizar
plantilla de factura, scripts realmente útiles. Kross nos per-
nos traeremos los mitirá en KDE 4.0 programar scripts que
productos adquiridos afectarán a todos los componentes de
y los pondremos en KDE por lo que se abre muchas posibili-
las celdas dades para aquellos que quieren simplifi-
correspondientes. car su trabajo. ■
Cuando todos los
datos estén cargados, RECURSOS
guardaremos el
fichero con un [1] http://kross.dipe.org/old/
kspreadscriptingbook/
nombre que
dependerá del número [2] http://www.pygresql.org/
Figura 4: Una plantilla rellena. de factura que tenga

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


La Columna de Charly • ADMINISTRACIÓN

Configuración comandos disparados por eventos con Incron

APUNTEN… ¡FUEGO!
Mientras que cron se mantiene fiel a su agenda, Incron supervisa los Las llamadas a Incrontab siguen la sintaxis de
Crontab: incrontab -e abre la tabla para su edi-
directorios y ejecuta comandos cuando se produce algún cambio. ción, incrontab -l muestra el contenido y
incrontab -r borra la tabla. El formato de
POR CHARLY KÜHNAST incrontab es muy simple. Cada línea contiene
tres entradas:

C
ron es un compañero constante de los Ruta, Evento, Comando ruta evento comando +
administradores de sistemas como yo. Incrond es un servicio y desaparece, quedán- parámetros
Mi crontab y yo hemos crecido juntos dose en segundo plano, tras su ejecución. Por
a lo largo de los años: Crontab se ha hecho supuesto, Incrontab es el elemento central. Cuando se produce un evento en una ruta
grande y yo he engordado. Quizás sea un sen- supervisada, Incron ejecuta el comando
timental, pero decidí que era el momento para correspondiente. La Tabla 1 muestra los even-
dejar a mi viejo amigo que se aventurara por tos que Incron puede supervisar. Cuando se
un territorio inexplorado con ayuda de Incron produce un evento, Incron establece los pará-
[1]. Esta extensión de cron utiliza una solu- metros listados en la Tabla 2 y el comando
ción basada en el disparo de eventos, en vez entonces puede utilizarlos para sus propios
de utilizar la agenda tradicional, supervisando propósitos. Si se modifica Incrontab, no hay
los directorios y ejecutando comandos cuando porqué notificárselo a Incrond, ya que analiza
se produce algún cambio. el fichero periódicamente.
Antes de comenzar a trabajar con Veamos un ejemplo. Cuando un usuario
Incron, hace falta tener un kernel 2.6.13 borre un fichero en el directorio /var/run/dae-
con el soporte Inotify incorporado y su mon, quiero que Incrond borre también el
correspondiente fichero de cabecera Tabla 2: Parámetros para fichero /var/log/daemon.log. La línea para
inotify.h. El fichero normalmente se los Comandos Incrontab es la siguiente:
encuentra en /usr/include/sys/; algunas
Variable Descripción
distribuciones añaden un fichero deno- /var/run/daemon IN_DELETE rm U
$@ Proporciona la ruta
minado inotifysyscalls.h. /var/run/daemon.log
$# Nombre del fichero
Si lo prefiere, puede cambiar la ruta de que ha disparado el
instalación en el fichero Makefile y luego evento Esta simple entrada ilustra la potencia de
ejecutar make && make install. Tras $% Muestra el evento Incron. Por fin cron tiene un amigo con quien
completarse la compilación y la instala- disparado jugar. ■
ción debería tener incrond, incrontab y $$ El propio signo de
dólar RECURSOS
las páginas man correspondientes.
[1] Incron: http://incron.aiken.cz
Tabla 1: Eventos Supervisables
Evento Descripción SYSADMIN
IN_ACCESS Acceso de lectura
IN_MODIFY Acceso de escritura Upstart………………....................58
IN_ATTRIB Metadatos modificados (inodo o atributo) El proyecto Upstart ofrece una solu-
IN_CLOSE_WRITE Fichero abierto para escritura y luego cerrado ción nueva (y supuestamente más
IN_CLOSE_NOWRITE Fichero abierto sin escritura y luego cerrado rápida) para el arranque de Linux.
IN_CLOSE IN_CLOSE_WRITE o IN_CLOSE_NOWRITE Vamos a introducirnos en el proceso
IN_OPEN Fichero abierto de arranque de Upstart.
IN_MOVED_FROM Fichero movido a otro directorio Mondo y Mindi ………………........64
IN_MOVED_TO Fichero movido a este directorio Mondo nos a enseña que las copias de
IN_MOVED IN_MOVED_FROM o IN_MOVED_TO seguridad no tienen por que ser ni difí-
IN_DELETE Fichero borrado ciles ni tediosas. Esta sencilla herra-
IN_DELETE_SELF El directorio supervisado ha sido borrado mienta realiza copias de discs duros
IN_ALL_EVENTS Alguno de los eventos mencionados completos o directorios individuales.

WWW.LINUX-MAGAZINE.ES Número 28 57
ADMINISTRACIÓN • Upstart

Arranque rápido con Upstart, un sustituto para el legendario Sys V Init

ARRANQUE RÁPIDO
El lento arranque de Linux ha sido un problema que han estado pade- el kernel en el fichero
/usr/src/linux/init/main.c de Linux. Init tiene
ciendo los usuarios desde hace unos años. El proyecto Upstart supone la tarea de ejecutar el resto de los procesos del
espacio del usuario e inicializar el sistema. El
una buena solución al problema. proceso y sus scripts cargan los módulos del
kernel, comprueban y montan el sistema de
POR NICO DIETRICH Y DIRK VON SUCHODOLETZ
ficheros, configuran la red, ejecutan los servi-
dores y ejecutan el programa de login en
modo gráfico. Init tiene que ejecutar los servi-

L
a historia de Linux incluye bastan- arranque de Linux. cios en un orden determinado. Por ejemplo,
tes intentos por mejorar el largo El proyecto Upstart [1] presenta un servicio no tiene sentido establecer la hora del sistema
proceso de arranque del sistema. init genérico que es la base de muchos de los consultando a un servidor de tiempo de la red
Esto puede que no sea sorprendente, ya desarrollos de los sistemas Linux modernos. hasta que la máquina no haya activado la red.
que el arranque puede desesperar hasta Upstart, que tiene raíces Unix, inteligente- Para ello, tiene primero que inicializar el hard-
al más paciente de los usuarios. El tradi- mente evita las esperas innecesarias, ejecuta ware de red y establecer al menos una interfaz
cional diseño del sistema de arranque de los scripts de arranque de forma simultánea y de red para el acceso externo.
Unix, System V, fue revolucionario, pero reduce el tiempo de arranque al mínimo. El El número de servicios y agentes en
ha resultado ser un escollo para la mayo- plan a largo plazo es reemplazar los servicios segundo plano ha crecido a lo largo de los
ría de las distribuciones. del sistema que se ejecutan en segundo plano, años y esto ha hecho que el proceso init se
Aunque han aparecido diversos trucos para como el servicio at, cron y otros, por Upstart. haya convertido en una chapuza. Por el con-
acelerar el proceso a lo largo de todos estos Ubuntu 6.10 (Edgy Eft) muestra el primer trario, el uso en PC de escritorios, algo típico
años, la mayoría de las reformas del sistema efecto de este software prometedor. para Ubuntu, demanda una configuración
de arranque han resultado ser inviables en la dinámica del sistema. Sys V Init es también
práctica, y muchos de los turbo cargadores Todo Comienza con Init bastante lento para su uso en los dispositivos
empleados por los gurús no están al alcance La mayoría de los sistemas basados en Unix móviles. Esta clase de dispositivos requieren
de los usuarios normales y corrientes. Una comparten el concepto de init. El proceso una solución ad hoc para configurar la red, así
herramienta nueva, Upstart, adopta una solu- invoca al kernel y asigna al proceso del kernel como una configuración dinámica del hard-
ción diferente para acelerar el proceso de el ID 1. Esta secuencia está implementada en ware.

58 Número 28 WWW.LINUX-MAGAZINE.ES
Upstart • ADMINISTRACIÓN

Para colmo, los programadores de Linux expectativas o estaba disponible bajo una nes más complejas como “configuración de la
han desarrollado diversas herramientas: acpid licencia aceptable. red completada”, “Apache ejecutándose” o
y apmd para la gestión de la energía, el gestor Cuando comenzaron a pensar en el nuevo (en el futuro) “memoria USB conectada”.
de dispositivos HAL para montar dinámica- diseño, tuvieron que escoger entre un objetivo
mente las unidades de disco, y el gestor de o una opción orientada al resultado para la Horizonte de Eventos
recursos para la asignación dinámica de los ejecución del sistema. La orientación al des- Básicamente los eventos son simples cadenas
privilegios de los dispositivos para el usuario tino significaría la definición de los servicios de caracteres. Los desarrolladores de Upstart
que ejecute el escritorio GUI. que deberían ejecutarse al final de la secuen- han dividido los eventos en tres clases:
Cada uno de estos sistemas implementa su cia de arranque (KDM, el servidor SSH, etc). • Eventos Simples, como “el sistema está
propia lógica de configuración y los adminis- En este caso, sería necesario investigar cada arrancando” o “el usuario ha presionado
tradores tienen que familiarizarse con ella servicio y determinar en qué otros servicios se un botón”.
para poder ejecutar las tareas requeridas en el basa. Basándose en estas dependencias, el sis- • Los Eventos de Nivel poseen un paráme-
momento determinado. tema init tendría que deducir una secuencia tro adicional, como el estado del interfaz
No todos los procesos y servicios están liga- de arranque correcta. Esta es precisamente la de red. Los servicios y las tareas se ejecu-
dos al arranque o a la parada de la máquina. solución adoptada por Gentoo con su sistema tan para cualquier Evento de Nivel o sólo
Por ejemplo, hay algunos servicios especiales, de dependencias (véase el cuadro titulado cuando un parámetro alcance un valor
como cron y el servicio at, que ejecutan otros “Gentoo”); Suse también se basa en esta solu- determinado.
procesos en momentos determinados. No ción con una versión modificada de Sys V Init • Los Eventos Temporales suceden tras un
están ligados de ningún modo a los niveles de (véase el cuadro titulado “Suse Linux”). intervalo específico de tiempo o en un
ejecución del sistema, aunque poseen una En la otra esquina del ring estaban los even- momento determinado.
lógica subyacente similar. Este es otro punto tos. En vez de formular las dependencias, que Los desarrolladores se han mantenido fieles al
que Upstart modifica [3]. un script probablemente tendría que gestionar principio del código abierto “publica pronto y
en el tiempo de arranque del sistema, un sis- publica a menudo”. Por ello, el código fue
Cuestiones de Diseño tema basado en eventos no ejecutaría un publicado en una etapa muy temprana y lo
Antes de que los programadores de Ubuntu script hasta que se cumplieran una serie de presentaron en la distribución Edgy Eft, para
decidieran desarrollar un sistema nuevo, precondiciones. Por ejemplo, no tendría sen- demostrar hasta donde habían llegado. Su
investigaron las alternativas existentes al sis- tido llamar a un cliente NFS hasta que haya objetivo es recolectar el mayor número posible
tema Sys V [2]. Ninguno de los diseños que disponible una autorización NFS. El sistema de respuestas de los desarrolladores que estén
estudiaron cumplía completamente sus que adoptó Ubuntu abarca también condicio- trabajando en otras distribuciones de Linux.

Sys V Init
Las primeras versiones de Unix utilizaban mite que los administradores actualicen tema. Hay tres niveles de ejecución que
un simple script de la shell para configu- los scripts de arranque sin poner en peli- tienen una tarea definida de forma clara:
rar la máquina y lanzar los servicios. El gro la configuración local. Parada (0), Modo Monousuario (1) y Rei-
diseño detrás de la familia BSD /etc/rc, nicio (6).
Sys V Init hace uso de una solución más
por ejemplo, era realmente simple, pero El fichero /etc/inittab especifica los niveles
flexible, pero también más compleja que
presentaba un serio inconveniente. La existentes y define el nivel de ejecución
BSD, presentando los niveles de ejecu-
incorporación de programas de terceros, en el que entra el sistema tras el arranque
ción (runlevels) que definen estados
o simplemente la realización de cambios (Figura 1).
específicos de la máquina basados en los
en el sistema, implicaban la modificación
procesos que ejecuta. Es posible tener El diseño de Sys V supone que el sistema
del script. Desafortunadamente, la modi-
hasta ocho niveles de ejecución posibles, utilizará un número pequeño de estados
ficación de este código es bastante peli-
pero no son obligatorios, para cada sis- predefinidos, tales como “sin red”, “con
grosa y un simple error podría
red”, “con X11”, etc. Los admi-
ocasionar que el sistema no
nistradores pueden modificar el
volviera a arrancar.
nivel de ejecución con el
En muchos casos, ejecutar un comando init
servicio implica la ejecución de nivel_de_ejecución.
más de un comando, variando
Otra ventaja de esta solución son
los detalles dependiendo del
los scripts separados para cada
entorno actual. Por ejemplo, el
servicio o tarea de configuración.
servidor ISC DHCP puede ser
Por ejemplo, llamando a
configurado para escuchar en
/etc/init.d/dhcpd restart permite
una interfaz Ethernet especifi-
relanzar el servidor DHCP sin
cada, en vez de en todos los
afectar a los otros servicios. La
puertos. Para eliminar la nece-
idea de utilizar una colección de
sidad de que los administrado-
enlaces simbólicos para determi-
res tengan que modificar el
nar el alcance y el orden de los
script de arranque, los servicios
scripts utilizados por cada nivel
a menudo vienen con ficheros
de ejecución es también una
de configuración que el script
Figura 1: Este inittab típico define los niveles de arranque del 0 al 6. buena idea.
tiene que procesar. Esto per-

WWW.LINUX-MAGAZINE.ES Número 28 59
ADMINISTRACIÓN • Upstart

Sin embargo, esto también significa que las muestra con la barra de progreso y el logotipo medio plazo son permitir a /etc/event.d gestio-
especificaciones podrían cambiar en el trans- del sistema operativo oculta cualquier infor- nar las definiciones de los trabajos, lo que sim-
curso de unos meses. Los ejemplos descritos mación útil. Aunque los usuarios normales no plemente se reduce a ficheros no ejecutables
aquí se refieren a la versión 0.3 de principios se van a quejar por ello, los administradores como el mostrado en el Listado 1. El ejemplo
de diciembre. seguro que estarán interesados en ella. Incluso toma el camino fácil y simplemente llama al
Esta versión reemplaza el proceso init exis- si se elimina dicha pantalla (borrando el ele- antiguo script de arranque para el nivel de
tente. Sin embargo, no debe suponerse que mento splash de la línea de comandos del ker- arranque 2 (línea 20).
todos los scripts de arranque han sido modifi- nel en grub), no se verán muchos mensajes. Si Como puede verse en la línea 5, queremos
cados para usar el mecanismo de eventos. se quieren más, sólo hay que eliminar la que el script se ejecute cuando ocurra el
Upstart no soporta por ahora los eventos tem- entrada quiet. evento runlevel-2. Finaliza si los eventos con-
porales y hay planes para utilizar otros progra- A primera vista, las modificaciones apare- cluyen, o si suceden los eventos del runlevel-3
mas, como Udev y ACPI o los servicios APM, cen ocultas. Si se ejecuta el comando man init a runlevel-5 (de la línea 7 a la 10). En el futuro,
como eventos fuentes. o man telinit, se mostrará información indi- una semántica más compleja soportará condi-
cando que el sistema de niveles de ejecución ciones con operadores lógicos y pasarán pará-
El Estado del Arte tiene un nuevo motor. Otra pista es la ausen- metros a los scripts de eventos, si fueran nece-
La versión actual de Ubuntu arranca de forma cia del fichero /etc/inittab. /etc/init.d, y los sarios. Estos ficheros juegan el mismo papel
bastante rápida, aunque no se vea mucho de scripts de arranque que lo acompañan aún que las entradas del fichero /etc/inittab. Esto
lo que está ocurriendo si se usa la existen, ya que Ubuntu actualmente ejecuta es por lo que Edgy Eft tiene tanto el fichero
configuración por defecto. La pantalla que se Upstart en el modo compatible. Los planes a mostrado en la parte de arriba de la Figura 2
como rc2.
Gentoo
Como una de las más recientes incorpo- nombre. Mientras que las secciones
Los Trabajos Compatibles
raciones a la familia Linux, Gentoo solu- start, stop y restart se mantienen fieles con Upstart
cionó el problema de organización de al diseño tradicional, depend propor- Hay dos formas de definir los trabajos. El
los scripts de los niveles de ejecución de ciona una función más interesante. Un método sencillo hace uso de exec /ruta/al/pro-
una forma especial. Para ello, no utiliza servicio puede depender de otro servi- grama -O —parámetros_opcionales. Funciona
simples scripts bash como scripts para cio o de algunos parámetros previos,
los niveles de ejecución, sino que por el por un lado; pero por otro lado, puede
contrario ejecuta un interprete sepa- proporcionar funciones específicas que
Listado 1: Definición de
rado: /sbin/runscript. Un ejemplo de una otros servicios puedan requerir: Trabajos
estructura típica es el siguiente: • need service: Depende del servicio. 01 # /etc/event.d/rc2
• use service: Utiliza el servicio. 02 # Runlevel 2 script
01 #!/sbin/runscript • provide functionality: Proporciona una compatible
02 opts=”depend start stop funcionalidad específica. 03 con Upstart
restart” • before service: Debería comenzar 04 # Esta tarea ejecuta los
03 depend() { antes que el otro servicio. antiguos
04 # dependencias y condiciones • after service: Debería comenzar des- 05 scripts Sys V.
05 } pués del servicio especificado. 06
06 start() { 07 start on runlevel-2
Gentoo también soporta servicios vir-
07 # comandos para ejecutar los tuales, como net, ya que hay varias cla- 08
servicios ses de redes (Ethernet, Modem, WLAN). 09 stop on shutdown
08 # incluyendo las tareas Esto también se aplica a los servicios de 10 stop on runlevel-3
preparatorias correo (mta). El script de arranque 11 stop on runlevel-4
09 } puede incluso determinar las depen- 12 stop on runlevel-5
10 stop() { dencias dinámicamente, como muestra 13
11 # Comandos para parar los el ejemplo /etc/init.d/syslog-ng:
14 script
servicios 15 set $(runlevel —set 2
12 # demás de las acciones de case $(sed ‘s/#.*//’U 16 || true)
limpieza /etc/syslog-ng/syslog-ng.conf)U 17 if [ “$1” != “unknown”
13 } in *source*tcp*|*source*udp*|U 18 ]; then
14 restart() { *destination*tcp*|*destinationU 19 PREVLEVEL=$1
15 # Reiniciando el servicio *udp*) need net ;; 20 RUNLEVEL=$2
16 } esac 21 export PREVLEVEL
22 RUNLEVEL
La cadena que sigue a opts lista todas Como los cambios no entran en con- 23 fi
las funciones proporcionadas por el flicto con las dependencias existentes, 24
script. Si se necesitan añadir otras fun- los administradores pueden cambiar el 25 exec /etc/init.d/rc 2
ciones, sólo hay que añadirlas a la lista orden en el que los servicios de ejecu- 26 end script
y escribir una función con el mismo tan, utilizando before o after.

60 Número 28 WWW.LINUX-MAGAZINE.ES
Upstart • ADMINISTRACIÓN

exactamente igual que en la


shell. Upstart en realidad utiliza
una shell para manejar las
comillas, “” o $. Si la definición
del trabajo contiene algo más
que una simple línea de
comandos, el script de la shell
puede ubicarse entre las pala-
bras reservadas script y end
script. (Listado 1, líneas 12 a la
21). Figura 2: Edgy Eft almacena ficheros que definen
Hay dos variaciones, start trabajos para los eventos típicos de inittab en
script y stop script. El start script /etc/event.d.
realiza lo que el servicio
requiere, como crear directorios o comprobar quiere soportar la ejecución manual
los privilegios de acceso. stop script se encarga de los servicios, todo lo que se nece-
de realizar la limpieza tras la finalización del sita es una simple línea en el script Figura 3: La lista de comandos initctl proporciona un
servicio. del evento que arranque al servidor: resumen del estado del sistema.

Autoejecución exec /usr/local/bin/U tema. Sin embargo, la información que se


Utilizando un simple servidor como ejemplo, simple-server.sh registra puede ser muy valiosa, especial-
se puede ver lo que supone crear nuestros pro- mente si se ha modificado el sistema. Si se
pios scripts para Upstart. El servidor no tiene Para arrancar y parar los servicios, incluyendo prefiere que no aparezcan los mensajes en
que hacer nada, excepto mantenerse en ejecu- el que se acaba de definir, simplemente hay la pantalla cuando el sistema se esté arran-
ción. La siguiente sección /usr/local/bin/sim- que utilizar los comandos start y stop. Además cando, se pueden comprobar posterior-
pleserver.sh: de éstos hay un comando status. mente.
Con start simple-server se arranca el servi- A groso modo, la salida de un script de
#/bin/sh cio. Para ver si el comando ha funcionado, se Upstart es pasada a logd incluido en el
while true ; do sleep 1U puede utilizar initctl list o status simple-server. paquete, y el servicio se encarga de regis-
; done Con stop simple-server se finalizará el servicio trarlas en /var/log/boot (Listado 3). La lla-
(Listado 2). mada a initctl list proporciona otra fuente
Llamemos al script de evento para este servi- Si todo funciona, la mayoría de los usua- de consulta con propósitos de depuración
cio como /etc/event.d/simple-server. Si sólo se rios no querrán ver los mensajes del sis- (Figura 3).

Listado 2: Control de
Suse Linux Servicios
Mientras que el tradicional Sys V Init ### BEGIN INIT INFO 01 root@EdgyEft:~# start
sigue un procedimiento estricta- # Provides: nbd-server
02 simple-server
mente lineal, las versiones más # Required-Start: $network
03 simple-server (start)
recientes de Suse Linux (10.0 y poste- # Should-Start: $syslog
running,
riores) soportan la ejecución concu- # Required-Stop:
04 process 6507 active
rrente de los scripts de arranque. Los # Default-Start: 3 5
05 root@EdgyEft:~# stop
administradores pueden activar esta # Default-Stop: 0 1 2 6
06 simple-server
característica en el fichero # Description: U
/etc/sysconfig/boot estableciendo la 07 simple-server (stop) running,
Start Network Blockdevice Daemon
variable RUN_PARALLEL a yes. Esta ### END INIT INFO 08 process 6507 killed
opción cambia la secuencia clásica Con este sistema se oculta la mayor 09 root@EdgyEft:~# status
definida desde S00script1 a la parte de la complejidad al usuario, sin 10 simple-server
S99script25. embargo, esta solución ralentiza el sis- 11 simple-server (stop) waiting
Por el contrario, se aplican las depen- tema. Cuando probamos el arranque al 12 root@EdgyEft:~# start
dencias .depend.boot, .depend.start estilo Suse en el X41 mencionado ante- 13 simple-server
y .depend.stop. Si un administrador riormente (hay que admitir que la 14 simple-server (start)
añade un simple script, digamos, máquina tenía un disco duro antiguo) running,
S12nbd-server, a rc3.d creando un con el arranque concurrente tardó más o
15 process 6517 active
enlace de la forma tradicional, el sis- menos un minuto, bastante próximo a
16 root@EdgyEft:~# status
tema simplemente ignorará el cam- los 70 segundos que tarda el sistema tra-
17 simple-server
bio. El comando insserv gestiona dicional. Se puede incluso ver alguna
esta tarea evaluando la cabecera del evidencia de la ejecución paralela de los 18 simple-server (start)
fichero para asegurarse una resolu- servicios; la salida por pantalla aparece running,
ción correcta de las dependencias: mezclada. 19 process 6517 active

WWW.LINUX-MAGAZINE.ES Número 28 61
ADMINISTRACIÓN • Upstart

Listado 3: Arrancando con


Upstart

01 [...]
02 Dec 3 18:44:59 rc2:
03 * Starting deferred
execution
04 scheduler atd [ ok ]
05 Dec 3 18:44:59 rc2:
06 * Starting periodic command
07 scheduler... [ ok ]
08 Dec 3 18:44:59 rc2:
09 * Enabling additional
10 executable
11 binary formats ...[ ok ]
12 Dec 3 18:44:59 rc2:
13 * Checking battery state...
14 [ ok ]
Figura 4a: Este análisis de Bootchart muestra el arranque de Debian GNU/Linux con el proce-
15 Dec 3 18:44:59 rc2:
dimiento init tradicional.
16 * Running local boot scripts
17 (/etc/rc.local) [ ok ]

Uso de Upstart en Debian


Como Ubuntu está basado en Debian, las
oportunidades de acelerar Debian, gracias a
los cambios en Ubuntu, son bastante altas. Si
se está preparado para aceptar el riesgo, se
puede optar por reemplazar el sistema Sys V
Init completamente o bien utilizar Upstart en
paralelo.
Los pasos para implementar el plan A (utili-
zando Upstart para reemplazar completa-
mente el sistema antiguo) en Debian Unstable
son bastante simples y los desarrolladores de
la distribución ya han realizado el trabajo pre-
paratorio separando el paquete sysvinit-utils
del paquete sysvinit. Con ello se puede reem-
plazar fácilmente sysvinit por Upstart y man-
tener los viejos scripts.
En el repositorio Experimental de Debian
[2] está el paquete Upstart. Para utilizarlo, sólo Figura 4b: El cambio de Sys V por Upstart no cambia los resultados significativamente.
hay que añadir la siguiente entrada a
/etc/apt/sources.list: rre cuando se actualiza. apt-get ignorará los cambios o, peor aún, deci-
dist-upgrade eliminará los paquetes de dirá que el sistema está corrupto. Diga-
deb http://ftp.de.debian.org/U Upstart que se hayan instalado y resta- mos que es fácil compilar e instalar Ups-
debian/experimental main blecerá el paquete sysvinit. tart desde el código fuente [1]:
Si esta es su intención, es decir, si real-
Tras esto, con el siguiente comando se elimina mente se desea restablecer Sys V Init, se ./configure —prefix=/usr U
el antiguo paquete sysvinit: puede ejecutar el siguiente comando —exec-prefix=/U
apt-get install sysvinit para realizarlo. —sysconfdir=/etc
apt-get installU make
upstart-compat-sysv Autoadministración make install
Si se decide compilar Upstart por uno
Como sysvinit está marcado como mismo, habrá que eliminar manual- Tras completar estos pasos, el sistema
requerido, el gestor de paquetes esperará mente el paquete sysvinit. Si no lo logra, solicitará los scripts de inicio.
hasta que se teclee Yes, do as I say! (Sí, make install sobreescribirá los ficheros Para comenzar, hay que descargarse el
¡Haz lo que digo!). El siguiente fallo ocu- binarios y el gestor de paquetes, o bien archivo example-jobs-2.tar.gz desde el

62 Número 28 WWW.LINUX-MAGAZINE.ES
Upstart • ADMINISTRACIÓN

Análisis Sería injusto para el proyecto Upstart


Listado 3a: Configuración
Bootchart [4] proporciona a los ignorar el compromiso de Upstart en base
de Grub administradores un método excelente para a los resultados actuales de la prueba. Hay
comparar el proceso de arranque nuevo con el que recordar que el sucesor de init se
01 # /boot/grub/menu.lst
antiguo. La herramienta registra la carga de la estará ejecutando en modo compatible
02 [...]
CPU y el rendimiento de E/S del disco duro en hasta que la mayoría del progreso se haya
03 title Ubuntu, kernel
el momento del arranque, y posteriormente realizado.
04 2.6.17-10-generic
convierte los resultados en una estupenda Se pueden esperar mayores ganancias
05 root (hd0,0)
gráfica. Para ello, hay que instalar el paquete de velocidad tan pronto como los scripts
06 kernel /boot/vmlinuz-
Bootchart y añadir una entrada a la línea de de arranque individuales se hayan adap-
07 2.6.17-10-generic root=/dev/
comandos del kernel. bootchart se ejecuta tado al nuevo sistema. Además, Ubuntu
08 hdb1 ro quiet splash init=/
como primer proceso y se encarga de arrancar no espera ver mayores ganancias de velo-
09 opt/
de forma adecuada al proceso init. cidad en el proceso de arranque hasta que
10 upstart/sbin/init
El Listado 3b muestra la entrada para Grub. Edgy sea reemplazado por Feisty Fawn.
11 initrd /boot/initrd.img
Si se está ejecutando Upstart junto con el anti-
12 -2.6.17-10-generic Conclusiones
guo sistema Init, hay que indicárselo a Boot-
13 boot
chart añadiendo lo siguiente a la línea de Los días en los que los ordenadores se arran-
14 [...]
comandos del kernel: caban en un par de segundos han pasado, y la
clase de apaños que muchas distribuciones
bootchart_init=/opt/U utilizan para mejorar el tiempo de arranque
directorio /download [1] y descompri- upstart/sbin/init probablemente no logren corregir el pro-
mirlo en /etc/event.d. blema. Se les presenta un buen futuro a los
Tras ello, Bootchart registrará cualquier dato nuevos diseños como Upstart.
Mundos Paralelos interesante que se procese cada 0.2 segun- Incluso si Upstart no ofrece la misma clase
Si se desea evitar una instalación fallida de dos y lo almacenará en de sensación de “encender y listo” que se per-
Upstart estropeando System V Init, se puede /var/log/bootchart.tgz una vez que el pro- cibe en las consolas de videojuegos, requiere
instalar Upstart junto con Sys V. Para ello, hay ceso de arranque se haya completado. El menos paciencia que el antiguo sistema. Por
que seguir los mismos pasos de antes, sólo los comando bootchart -f png genera un gráfico supuesto, es preciso disponer de un buen
de la instalación, pero manteniendo el PNG a partir de los datos, también se pue- conocimiento de administración de sistemas
paquete sysvinit, y hay que asegurarse de que den utilizar las opciones svg y eps. para migrar desde un sistema Linux en funcio-
los nuevos ficheros acaban en /opt/upstart: Si se compara la gráfica del arranque con namiento sin tener que realizar una reinstala-
el sistema Sys V de la Figura 4a con la grá- ción.
./configure -prefix=/opt/U fica obtenida con Upstart 4b, los resultados Nuestra bola de cristal nos revela que
upstart —sysconfdir=/etcU que aportan serán engañosos. En nuestra Upstart está haciendo algo más que sim-
—enable-compat máquina del laboratorio, Bootchart informó plemente rejuvenecer el proceso de
que el antiguo sistema Sys V Init tardó unos arranque: los desarrolladores prevén un
En este escenario, habrá que modificar los considerables 33 segundos, mientras que servicio central que se encargará de rele-
scripts que se han ubicado en /etc/event.d. Upstart acabó en 23 segundos. var el popurrí de herramientas actuales.
Para ello, hay que añadir la siguiente línea des- Si se comprueban estos resultados deteni- Incluyendo la ejecución de eventos espe-
pués de la línea script en rc-default y rcS-sulo- damente se revela que la ganancia real es de cíficos en momentos determinados, es
gin: tan sólo dos segundos. Bootchart para el decir, que reemplacen a cron y a at. A
cronómetro tan pronto como KDM o cual- medio plazo, Upstart aún tiene que
export PATH=/opt/upstart/U quier otro gestor de login se ejecute. El demostrar su habilidad para organizar el
sbin:$PATH hecho de que Upstart ejecute los trabajos en proceso de arranque de una forma clara,
paralelo implica que este proceso comience y por ahora, parece que va por buen
Como el directorio de Upstart está al comienzo antes de que todos los otros procesos críti- camino. ■
de la ruta de búsqueda, los scripts utilizarán el cos del arranque se hayan completado.
nuevo comando telinit. RECURSOS
El sistema aún arrancará con Sys V Init por Listado 3b: Bootchart [1] Ubuntu Upstart: http://upstart.
defecto, pero en el arranque, se le puede indicar ubuntu.com
al kernel que utilice el nuevo sistema. El
01 # /boot/grub/menu.lst [2] Upstart en la rama Experimental de
siguiente parámetro de la línea de comandos del
02 [...] Debian: http://packages.debian.org/
kernel se encargará de ello:
03 kernel /boot/vmlinuz experimental/admin/upstart
init=/opt/upstart/sbin/init.
04 -2.6.17-10-generic [3] Upstart en el blog de Scott: http://
Para realizar pruebas, puede que se prefiera
05 root=/dev/hdb1 ro quiet www.netsplit.com/blog/articles/
introducir los parámetros en el prompt del gestor
06 splash init=/sbin/bootchartd 2006/08/26/upstart-in-universe
de arranque, pero se podría añadir una entrada
07 [...] [4] “Encendido” por Charly Kühnast,
nueva en el menú de configuración del gestor de Linux Magazine número 5, pg. 59
arranque si lo desea (Listado 3a, línea 5).

WWW.LINUX-MAGAZINE.ES Número 28 63
ADMINISTRACIÓN • Mondo y Mindi

Copias de seguridad del sistema y de los datos

GUERRAS CLON

Mondo nos enseña cómo las copias de seguridad no tienen porqué llevarnos mucho tiempo ni ser difíciles.
Esta simple herramienta realiza sorprendentemente copias de seguridad de discos duros completos o de

directorios individuales. POR KARL DEUTSCH

I
magínese que lleva días configurando un CD o en un servidor NFS externo. Mondo crea una imagen live en un CD o DVD con
sistema hasta que finalmente lo tiene permite realizar esta copia y restaurarla fácil- la copia de seguridad que haya creado
funcionando perfectamente. Las particio- mente. Uno de sus objetivos es permitir los Mondo.
nes están tal y como se deseaban, el sistema cambios en el sistema subyacente, ya sea de Ambas utilidades pueden utilizarse de
operativo está instalado correctamente y hardware o del sistema de ficheros, y aún manera conjunta para guardar la
todo funciona a la perfección. Antes de preservar la configuración del sistema previo. configuración de Linux en un CD o DVD de
poner el sistema en uso, sería una buena Mondo permite la restauración de siste- arranque. Si una copia de seguridad com-
idea realizar una copia de seguridad de la mas de ficheros sin RAID y con RAID (inclu- pleta es demasiado grande como para
máquina, de modo que pueda restaurarse yendo la partición raíz). También es posible caber en un único disco, puede realizarse
rápidamente en el caso de que suceda algún encoger o agrandar las particiones, cambiar en múltiples imágenes.
desastre. el sistema de ficheros, reasignar los dispositi- La utilidad de copias de seguridad
La utilidad para realizar copias de seguri- vos o añadir nuevas unidades y aún será Mondo permite dividir los ficheros grandes
dad de código abierto Mondo puede llevar a capaz de preservar el sistema previo sin la de modo que quepan en varios discos. Ade-
cabo una copia de seguridad completa de un necesidad de tener que realizar una instala- más, se puede comenzar el sistema básico
sistema operativo Linux o incluso de un ción nueva. desde el disco de arranque y restaurar el
disco duro entero, incluyendo la tabla de par- Mondo está diseñado para trabajar con resto de los datos desde una cinta o desde
ticiones y el gestor de arranque, en un DVD, otra utilidad denominada Mindi. Mindi un servidor NFS.

64 Número 28 WWW.LINUX-MAGAZINE.ES
Mondo y Mindi • ADMINISTRACIÓN

Image [2], que. Ésta última puede utilizarse para crear


sino que se un CD de rescate con el kernel, los módu-
puede reali- los, las herramientas y las librerías de un
zar una sistema.
copia de Antes de comenzar a utilizar Mondo,
seguridad de probablemente se desee comprobar que
un disco Mindi realmente es capaz de crear un CD
completo o de arranque de prueba para el sistema. Para
de un con- confirmar que realmente se crea el CD,
junto de como root hay que teclear mindi para lan-
directorios zar el proceso.
individuales. A continuación se solicita cierta informa-
Si un ción. Cuando el sistema pregunte ¿Desea
único medio utilizar su propio kernel [...]?, hay que pre-
Figura 1: Mondo permite crear copias de seguridad por medio de una interfaz de almacena- sionar [Y], y presionar [N] cuando pre-
en modo texto. miento no es gunte ¿Desearía utilizar LILO [...]?. De
lo suficiente- nuevo hay que presionar [N] a la pregunta
mente grande como para almacenar la ¿Desea crear un disco de arranque + datos
Copias de Seguridad copia de seguridad completa, Mondo escri- [...]?, y finalmente hay que decir sí a la pre-
Profesionales birá la copia en múltiples discos. gunta ¿Desea crear una imagen de un CD
Mondo [1] es una solución para realizar de arranque?. Seguidamente la aplicación
copias de seguridad rápidas y fiables, y es Requerimientos creará la imagen mindi.iso en /root/ima-
utilizada por compañías como Siemens, HP Los requerimientos hardware de Mondo ges/mindi.
e IBM. son un PC con al menos 128 MB de RAM, Como root, hay que grabar la imagen en
Como pueden utilizarse tanto paráme- 800 MB de espacio libre en disco y una uni- un disco utilizando el comando cdrecord -v
tros como una interfaz basada en modo dad para realizar la copia, que puede ser -data/root/images/mindi/mindi.iso. Luego
texto para controlar el programa, incluso una unidad óptica (CD-R/RW, DVD-R/ hay que arrancar el sistema con el disco
los usuarios de Linux con menos experien- RW), una cinta, un directorio NFS o incluso que se acaba de crear, debiéndose tener
cia son capaces de aprovechar sus ventajas. más espacio en el propio disco. acceso a una consola de texto del sistema
Mondo soporta la Gestión de Volúmenes Se recomienda la versión del kernel de rescate.
Lógicos (LVM) 1 y 2, los RAID software y 2.2.19 o posterior. Sus dependencias soft- Si el proceso de arranque funciona,
hardware, Ext2/3, JFS, XFS, ReiserFS y ware incluyen los paquetes afio, gzip, mki- ahora se podrá utilizar Mondo para realizar
VFAT. Durante la etapa de restauración, se sofs y busybox. una copia de seguridad del sistema.
puede modificar la geometría del disco y el La mayoría de las distribuciones inclu-
sistema de ficheros si fuera necesario. yen estos paquetes por defecto, así que pro- Copia de Seguridad Completa
También soporta la migración de discos bablemente se podrá utilizar el propio ges- Para evitar interferir con la copia de seguri-
individuales a RAID y la migración de siste- tor de paquetes de la distribución para ins- dad hay que cerrar cualquier aplicación
mas RAID a discos individuales. No alma- talarlos. que esté activa. Esto es especialmente
cena las particiones individuales físicas de Los usuarios de Ubuntu pueden utilizar importante en el caso de las bases de datos
los discos duros, al contrario que Partition Synaptic; habilitando el repositorio Uni- y las conexiones a las bases de datos. Hay
verse y tecleando lo siguiente en la línea de que crear un directorio como /tmp/iso para
Windows comandos: almacenar los ficheros ISO.
A continuación se ejecuta Mondo con los
Aunque Mondo fue desarrollado origi-
sudo apt-get install mondo mindi privilegios del root en una ventana de ter-
nariamente para realizar copias de
seguridad en sistemas Linux, también
se puede utilizar para realizarlas de sis- Knoppix 5.0 incluye la
temas Windows. Si bien, hay que utilidad Mondo. Los
tener en cuenta las siguientes restric- servidores de FTP de
ciones: Mondo ([3], [4]) con-
Windows 95/98/ME: Primero hay que tienen las últimas ver-
montar las particiones, antes de siones.
realizar las copias de seguridad, como
las particiones Linux. Windows NT/ Probando y
2000/XP: Mondo almacena las parti- Restaurando
ciones NTFS en grandes ficheros. Hay con Mindi
que especificar la unidad con la parti-
La utilidad de copias
ción Windows en la línea de coman-
de seguridad Mondo
dos, utilizando el parámetro -x, como
se basa en Mindi para Figura 2: Se pueden incluir (o excluir) rutas específicas del con-
-x /dev/hda1, -x /dev/sda1, etc.
crear discos de arran- junto de directorios a copiar.

WWW.LINUX-MAGAZINE.ES Número 28 65
ADMINISTRACIÓN • Mondo y Mindi

Figura 3: Tras crear una imagen ISO, Mondo pregunta si se desea Figura 4: Con Mondo se pueden guardar los directorios individuales,
crear un disco de arranque. Sólo hace falta el disco en el caso de que como el directorio home. La opción -D restringe la imagen ISO a los
los datos estén en una unidad de cinta o en un servidor NFS. datos modificados.

minal utilizando el comando Téngase en cuenta que si se utiliza el


mondoarchive. Si no se introduce ningún Véanse las tablas “Parámetros del Programa” gestor de arranque Grub, habrá que aña-
parámetro adicional, se debería ver la inter- y “Destinos de Salida” para más detalles. dir el siguiente parámetro adicional al
faz en modo texto que se muestra en la Mondo comienza analizando el PC y comando:
Figura 1. luego crea el fichero ISO con la copia de
La línea de comandos es más flexible. El seguridad completa. -l GRUB -f /dev/hda
siguiente ejemplo presenta cómo establecer Si el disco de la máquina contiene múlti-
la máxima tasa de compresión para el ples sistemas en múltiples particiones, Hay que reemplazar /dev/hda por el disco
fichero ISO (-9) y crear un fichero de 650 Mondo sólo copiará la que se esté ejecu- que contenga el sector de arranque.
MB o de menor tamaño en el directorio tando, junto con las particiones que se ten- A continuación Mondo preguntará si se
/tmp/iso. El comando no realiza una copia gan montadas. desea crear un disco de arranque (Figura
de los directorios /tmp, /proc ni /home. Durante una restauración interactiva se 3). Sólo hace falta el disco si los datos se
Como root, hay que teclear el siguiente pueden utilizar las herramientas integradas han almacenado en una cinta o en un ser-
comando: para modificar la tabla de particiones. De vidor NFS.
mondoarchive -Oi -d U este modo se asegura que la utilidad sólo res- Luego se graba el fichero ISO en un
/tmp/iso -s 650m -9 U taurará las particiones que hayan sido copia- CD/DVD; posteriormente se podrá arran-
-H -E /proc -E /tmp -E /home das. car desde el primer disco.

Tabla 1: Parámetros del Programa Cómo impedir la Corrupción


Aunque la utilidad de copias de seguridad
Parámetro Significado
Mondo no ha creado un archivo corrupto
O Destino de Salida (véase la Tabla “Destinos de Salida”)
desde Mayo de 2000, es buena idea verifi-
d Dispositivo o directorio de salida
car el archivo en vez de confiar en la
s Capacidad del medio o del fichero a crear
suerte.
9 Tasa de compresión desde 0 (ninguna) a 9 (máxima compresión)
E Directorios a omitir
Para verificar el archivo, se arranca el
V Verifica la copia de seguridad sistema desde el primer CD/DVD que se
p Nombre de fichero (1) haya creado en la copia o desde el disco
g GUI en modo texto (2) de arranque. En el prompt de arranque,
D Sólo escribe los ficheros modificados hay que teclear compare, a continuación
I Directorio de inicio sólo hay que seguir las instrucciones que
H Para restaurar, particionar el disco duro e instalar el gestor de arranque aparezcan en pantalla y esperar los resul-
l Gestor de arranque a usar, como Grub tados de la comparación.
f Disco duro con el gestor de arranque, como /dev/hda Mondo registra los cambios en el
fichero /tmp/changed.txt; se pueden espe-
(1) El nombre por defecto para el fichero ISO es mondorescue-numero_de_serie.iso. Si se nece- rar diferencias en los ficheros dinámicos
sitan varias copias de seguridad de diferentes máquinas, el parámetro -p nombre asignará el como los ficheros de registro o las entra-
nombre nombre-numero_de_serie.iso al fichero.
das bajo /var.
(2) La ejecución de Mondo con este parámetro hace que muestre mensajes de estado y dialogue
con el usuario en una interfaz en modo texto. Este modo no es adecuado para usarse desde un Si no se observa ninguna discrepancia
script, como por ejemplo desde una tarea de cron. inusual, se puede suponer que la copia
realizada es correcta.

66 Número 28 WWW.LINUX-MAGAZINE.ES
ADMINISTRACIÓN • Mondo y Mindi

root hay que teclear lizando una copia de seguridad en un direc-


el siguiente torio del disco o en una unidad NFS.
comando: Para poder utilizarlo como una tarea de
cron de forma interactiva, tendremos que
mondoarchiveU recurrir a algunos trucos. Harán falta
-Oi -d tmp/isoU tanto At como un multiplexador de termi-
-s 4200m -9 -IU nal de pantalla.
/home/usuario Para ver cómo llevarlo a cabo, véase la
página 22 del manual de Mondo [6].
Hay que reemplazar Si el MBR del disco falla, hay que arran-
la palabra usuario car desde el primer disco de la copia.
con el nombre del Teclear expert en el prompt de arranque y
usuario correspon- esperar a que se ejecute el programa. El
diente (Figura 4). comando para reparar el MBR es mondo-
Figura 5: Mondo permite especificar el nivel de compresión para el Es una buena idea restore -mbr.
archivo. grabar el fichero ISO
con los datos del Futuro
usuario en un DVD. Mondo solicita al usua- Mondo nos quita los dolores de cabeza
Restauración rio el tamaño de la imagen ISO. que suelen producir las copias de seguri-
Tras instalar un disco nuevo, habrá que res- Tras realizar la primera copia de seguri- dad. El exhaustivo manual contiene ejem-
taurar el sistema completo. A la utilidad de dad, se puede establecer la opción -D para plos de aplicaciones adicionales ([5], [6]).
copias de seguridad Mondo no le importa si las copias sucesivas: El FAQ y las listas de correo también son
la capacidad del disco nuevo es mayor o útiles a la hora de resolver problemas
menor que la del disco original, lo único mondoarchive -Oi -d /tmp/iso U específicos.
que tiene en cuenta es que haya espacio -s 4200m -9 -D -I /home/usuario Si necesita migrar de un disco IDE a
suficiente para la restauración. SATA o de un SCSI a SATA durante una
Tras arrancar desde el primer disco (el restauración, también le proporcionará la
CD/DVD o disquete), hay que introducir el Construcción de un Hogar ayuda necesaria. Una guía de Francois-
comando restore en el prompt de arranque Para restaurar el directorio home, hay que Xavier Horel [7] explica cómo realizarlo.
para restaurar el sistema. arrancar desde el primer disco y, en el Además, Mondo también dispone de
Si se especificó el parámetro -H cuando se prompt de arranque teclear interactive. A soporte profesional.
hizo la copia de seguridad, Mondo automá- continuación el sistema nos preguntará un Si Mondo no es de su agrado o si se está
ticamente particionará y formateará el par de cosas. interesado en proyectos de código abierto
disco, e instalará el gestor de arranque en el Hay que decir no, [N], a las tres primeras similares, probablemente desee echarle
MBR (Master Boot Record). preguntas: no se desea particionar, ni for- un vistazo a Mkcdrec (“Make CD-ROM
Para personalizar la restauración, hay que matear ni restaurar completamente el Recovery”) y Rear (“Relax & Recover”). ■
omitir esta opción, formatear el disco inter- disco.
activamente y luego restaurar los directorios Cuando aparezca la pregunta ¿Qué ruta
individuales y los ficheros necesarios. desea restaurar?, deberemos teclear la ruta RECURSOS
Cuando el sistema lo solicite habrá que al directorio home, /home/usuario. [1] Proyecto Mondo: http://www.
insertar el siguiente disco; al final, se saca el Tendremos que decir que no a ¿Desea ... mondorescue.org
último disco y se reinicia el sistema. configurar sus sectores de arranque?. Ahora
[2] Partition Image: http://www.
sólo hay que esperar que la restauración partimage.org
Guardando el Directorio Home finalice, y luego se saca el disco y se reinicia
[3] Servidor FTP de descarga: ftp://ftp.
Para crear una copia de seguridad inicial el sistema.
mondorescue.org
del directorio home, /home/usuario, como
Copias de Seguridad [4] Mirror de descarga: http://
mondorescue.muskokamug.org
Tabla 2: Destinos de Programadas
[5] Documentación de Mondo:http://
Salida Normalmente Mondo realiza las copias de
www.mondorescue.org/docs.shtml
seguridad en modo interactivo. Si se omite
Los destinos de salida se especifican con la el parámetro -g cuando se ejecute el pro- [6] Manual de Mondo (PDF): http://
opción O, seguida por uno de los siguien- www.mondorescue.org/docs/
grama, la aplicación se ejecutará sin inter-
tes caracteres. mondorescue-howto.pdf
Parámetro Significado
accionar con el usuario.
Mondo soporta tareas cron en modo [7] Francois-Xavier Horel, “Linux image
i Fichero ISO deployment from SCSI server to
c CD-R interactivo, aunque la ejecución de la utili-
SATA server”, www.mondorescue.
w CD-RW dad Mondo con cron sólo tiene sentido bajo
org/docs/
r DVD-R ciertas circunstancias, por ejemplo: HOWTO-_Deploy_Linux_from_SCSI
n Servidor NFS Si sólo hace falta un disco para realizar la _to_SATA.pdf
copia (no hay que cambiarlo) Si se está rea-

68 Número 28 WWW.LINUX-MAGAZINE.ES
LINUX USER • Ktools: Emulador de Terminales

QuadKonsole y YaKuake, lo último en terminales KDE

CENTRO DE
CONTROL
La consola de Linux puede llegar a ser divertida con YaKuake y QuadKon-

sole, dos programas para KDE que permiten a los usuarios trabajar eficien-

temente en la línea de comandos. Veremos cómo instalar, configurar e

implementar ambas herramientas terminal. POR FRANK WIEDUWILT

cedimiento ten cambiar entre ventanas de terminal.


Linux están- Haciendo un clic sobre el signo más a la
dar para com- izquierda de la barra de pestañas abre un
pilar e instalar: nuevo terminal, tal y como lo hace el
./configure, siguiente atajo de teclado: [Ctrl] + [Shift]
make y make ins- + [N].
tall. Pulsando [Ctrl] + [Shift] + [Flecha
Tanto YaKuake Dcha] y [Ctrl] + [Shift] + [Flecha Izqda]
como QuadKonsole pueden hojearse las pestañas activas. Los
requieren KDE 3.2 y Qt 3.2 o atajos de teclado son los mismos que los del
superiores. Los usuarios de programa Konsole, una buena idea que
Ubuntu pueden ir al repositorio [3] para reduce la curva de aprendizaje. El atajo
conseguir el paquete binario QuadKonsole [Alt] + [Ctrl] + [S] permite a los usuarios
listo para ejecutar. asignar un nombre intuitivo a la pestaña
actual.

Y
aKuake [1] y QuadKonsole [2] YaKuake
están diseñados para usuarios En el arranque, YaKuake despliega un diá- QuadKonsole
ocasionales de la línea de logo informando de que se ha arrancado Por defecto, QuadKonsole asignará cuatro
comandos que típicamente confían en correctamente y se encuentra esperando casos de emulación
una GUI. YaKuake está ideado para aque- más instrucciones. Puede pulsarse [F12] de ter-
llos usuarios que necesitan introducir un para que aparezca la ventana terminal, que
comando de terminal pero que prefieren se despliega desde la parte superior de la
no tener la ventana de terminal a la vista pantalla (ver Figura 1), ocultando otras
todo el tiempo. Un atajo de teclado abre ventanas en el proceso.
el programa, que se cierra automática- Cuando se cambia el enfoque de
mente después de procesar el comando. YaKuake, desaparece la ventana,
QuadKonsole integra cuatro ventanas ahorrando un espacio de ven-
de terminal en una sola ventana de pro- tana importante. Puede arran-
grama, bien alineando las ventanas lado carse YaKuake en cualquier
con lado, o bien permitiéndoles sola- escritorio.
parse. Esto lo hace muy adecuado para Al igual que el terminal
usuarios que necesitan mantener vigi- Gnome o Konsole, YaKuake
lada la salida de algunos programas. soporta múltiples terminales
dentro de la ventana del
Instalación programa. Las pestañas
El código fuente para ambos programas se de la parte inferior
encuentra disponible desde las páginas de de la ventana
inicio de los desarrolladores. Se sigue el pro- permi-

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


Ktools: Emulador de Terminales • LINUX USER

minal KDE a la ventana del programa (ver


Figura 2). Si se ejecuta QuadKonsole sin
ningún parámetro de la línea de comandos,
se comporta como los primeros programas
X Window, permitiendo que el enfoque siga
al ratón. Pulsando [Ctrl] + [Shift] y las
teclas de flecha cambia de sitio el enfoque
entre los terminales.
Si se necesitan compilar programas fre-
cuentemente desde el código fuente, Quad-
Konsole podrá hacerte la vida más fácil.
Será preciso abrir la guía de instalación en
una ventana terminal, ejecutar ./configure
en otra ventana terminal, y luego compilar e
instalar todas las librerías o programas
necesarios para resolver las dependencias
en una tercera ventana.

Configuración
YaKuake dispone de un menú que aparece
cuando se hace clic sobre la flecha
pequeña en la barra de estado del pro-
grama. Ajustes como el fondo de pantalla, Figura 1: YaKuake aparece en la parte superior de la pantalla cuando se pulsa un botón.
la fuente y la página de código se toman
prestados de Konsole. Para personalizar la no tendrá mucho sentido cuando la ven- Default. Las configuraciones se aplican a
configuración, se hace clic derecho sobre tana del programa YaKuake siempre oculta todas las ventanas de consola. No pueden
la ventana terminal y se selecciona del otras ventanas. El menú de configuración salvarse configuraciones para ventanas
menú desplegable. también lleva a diálogos que permiten individuales.
El menú de contexto soporta también configurar el atajo de teclado para arran- Para modificar el comportamiento del
ajustes de tamaño y posición para la ven- car YaKuake, o bien definir otros atajos de enfoque de QuadKonsole, se especifica el
tana del programa. YaKuake siempre apa- teclado. parámetro —clickfocus en la línea de
recerá por defecto en la parte superior de QuadKonsole sólo soporta parametriza- comandos. De este modo se establece el
la pantalla. Los ajustes de altura, anchura ción basada en la línea de comandos. Los enfoque en cualquier ventana terminal a
y posición están subordinados al límite de parámetros —columns y —rows especifi- la que accedas.
la pantalla. can el número de columnas y filas que el
Puede usarse Roll up on enfoque loss programa usará para presentar las venta- Conclusiones
para personalizar el comportamiento del nas de consola. Es preciso evitar configu- YaKuake es práctico para usuarios Linux
programa. Si se cambia el cuadro de con- rar más de 16 ventanas simultáneas; que necesitan introducir un comando en
firmación, YaKuake permanecerá activo aparte de una respuesta más lenta, esto la ventana de consola, y que prefieren no
sin el enfoque. Sin embargo, esta opción atestará la pantalla y hará que la salida sea tener que dejar la ventana de terminal
complicada de abierta permanentemente para ello. El
leer. programa ayuda a llevar la cuenta de
Haciendo un cualquier salida de programa que ocurra.
clic derecho sobre En contraste, QuadKonsole es lo último
una consola de para los aficionados al terminal, permi-
ventana se abre tiendo a sus usuarios seguirle la pista a
un menú de con- la salida de los distintos terminales, algo
texto en el que se muy útil cuando se desarrolla software.
puede establecer Sine embargo, el programa carece de un
el color, la página método conveniente de configuración de
de código, las ventanas de terminal individuales y de
asignaciones de almacenamiento de configuración. ■
teclado y las fuen-
tes. Para guardar RECURSOS
de manera perma-
[1] YaKuake: http://yakuake.uv.ro
nente las configu-
[2] QuadKonsole: http://nomis80.org
raciones preferi-
Figura 2: QuadKonsole alinea múltiples ventanas de terminal en una das, se selecciona [3] Paquetes de Ubuntu para QuadKon-
malla dentro de una ventana. Settings | Save as sole: http://pkg.marisil.org

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


LINUX USER • Streaming con Firefly

El servidor de música Firefly

MÚSICA A TOPE
El servidor de medios Firefly trae streamings de música y radio Internet a la red para clientes iTunes o Ban-

shee… y lo mejor de todo es que es rápido y fácil de montar. POR MRTIN LOSCHWITZ

I
maginemos que tenemos dos ordena-
dores personales estacionarios en
nuestra red personal y se está utili-
zando un portátil como estación de tra-
bajo móvil. Un viejo ordenador actúa
como portal, servidor de impresión y
ficheros. La colección de música se
encuentra dispersa por los discos duros
de las tres estaciones de trabajo, y si se
encuentra trabajando en el portátil.
Únicamente podrá accederse a las can-
ciones del disco local.
Para que podamos tener acceso a la colec-
ción completa, será necesario que los tres
ordenadores estuvieran activos y en funcio-
namiento. Además, el uso de comparticiones
Samba o NFS no es la idea que se tiene de un
método apropiado.
iTunes tiene una estupenda solución para
este problema: cualquier cliente compatible
iTunes en la red puede usar DAAP, un proto-
colo desarrollado por Apple para compartir
música que da acceso a pistas compartidas.
Si se tiene instalado iTunes en el ordenador,
cada usuario de iTunes en la red local verá su

Servidor Multimedia de
Bajo Presupuesto
Si estás interesado en la instalación de
un servidor de medios Firefly, pero no
dispones del hardware adecuado,
prueba el NSLU2 de Linksys. El dispo-
sitivo, que puede usarse para conectar
discos duros externos a tu red, se
encuentra disponible en tiendas de
hardware por unos 55 Euros; también
necesitarás un dispositivo de almace-
namiento de datos externo. Puedes
usar Unslung o OpenSlug para conver-
tir el SLU2 a Linux, e instalar Firefly
como se ha descrito previamente. Esto
te ofrece un ordenador en miniatura
que no hará ruido alguno, y por un pre-
cio de unos 147 Euros. Lo mejor de
todo es que el SLU2 puede hacer más,
aparte de ofrecer estos servicios multi-
media.

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


Streaming con Firefly • LINUX USER

música compartida, y podrá sintonizarla con Como resultado, las


un clic de ratón. Sin embargo, iTunes sólo se distribuciones más
ejecutará en sistemas operativos Mac o Win- actuales no poseen
dows, así que hemos de usar una máquina los paquetes precom-
con uno de estos sistemas operativos, almace- pilados para Firefly,
nar la colección de música en esa máquina y por lo que será pre-
dejarla encendida 24/7 para garantizar el ciso compilar el pro-
acceso de los otros clientes. Firefly [1], sin grama desde el
embargo, ofrece una alternativa perfecta. código fuente.
El Firefly Media Server proporciona una Se descarga el
implementación libre del protocolo DAAP y snapshot diario del
funciona como un cliente iTunes. Escanea el paquete actualizado
disco duro en busca de pistas de música e [2]. Se busca un
información publicada acerca de éstas en la enlace tal como mt-
red local. Los programas compatibles con daap-svn- Figura 1: El interfaz web Firefly soporta acceso adecuado a estadísti-
DAAP en la red evalúan la propuesta y la pre- Build.tar.gz, donde cas y a la configuración del servidor de música.
sentan a los usuarios para que éstos puedan Build representa el
verla. Para oír una pista, el usuario debe número de compilación de cuatro dígitos. Se dar el fichero de configuración, puede
hacer clic sobre ella en el reproductor, y desempaquetan las fuentes (tar zxvf arrancarse Firefly como sigue:
Firefly la servirá de inmediato. Podría descri- mt-daap-svn-Build.tar.gz), se cambia al direc-
birse este tipo de servicios como de “strea- torio creado por este paso y se siguen a conti- /usr/local/sbin/mt-daapd -cU
ming a demanda”. nuación los pasos normales: ./configure, /usr/local/etc/mt-daapd.cpnf
Si se estuviera moviendo la colección make y make install. Una vez completados
desde los otros ordenadores de la red al router estos pasos, el Firefly Media Server debería Puede transcurrir un tiempo hasta que los
personal, el cual típicamente estaría encen- estar instalado en /usr/local. clientes iTunes en la red consigan ver el
dido 24/7, e instalar luego el Firefly Media nuevo servidor multimedia. Antes de que
Server en el router, no sería necesario ejecutar Configuración Firefly haga públicos sus servicios, se escanea
ningún otro servidor para acceder a la librería El fichero con la configuración se localiza primero el mp3_dir para comprobar si existen
de audio central desde las otras máquinas de en /usr/local/etc y se llama mt-daap.conf pistas y para crear una base de datos.
la red. (ver el Listado 1). Pueden mantenerse los
valores predeterminados para la mayoría Interfaz Web
Instalación de Firefly de los parámetros, aunque será preciso Firefly incluye una interfaz web para apuntar
Fiefly ha pasado recientemente una fase de modificar las configuraciones para a la configuración del servidor de streaming.
modificación del nombre: El nombre del pro- admin_pw (password administrator o Para acceder a él, se abre en el navegador la
yecto original era mt-daapd. Actualmente contraseña del administrador) y server- URL http://dirección_IP_servidor:3689. Se
continúa sufriendo los resultados del cambio. name (nombre descriptivo del servidor). deja el campo name sin autenticación, y se
En mp3_dir se introduce la carpeta en la escribe la contraseña que se especificó como
Glosario que se almacena la colección musical y, admin_pw en el fichero de configuración
para db_type (formato de base de datos para Password. Esto debería llevarnos a la
DAAP: Digital Audio Access Protocol
musical), se introduce sqlite3. Tras guar- página de bienvenida de Firefly (ver Figura
(Protocolo de acceso audio digital). Pro-
tocolo desarrollado por Apple y basado
en HTTP y compartición de soportes de Listado 1: ,mt-daapd.conf
ficheros de audio con clientes en una 01 # mt-daapd.conf (example) 14 ssc_codectypes = ogg,flac,alac
red. Debido a que Apple no ha publi-
02 [general] 15 ssc_prog =
cado documentación oficial, la especifi-
cación está basada en ingeniería 03 web_root = /usr/local/share 16 /usr/local/bin/mt-daapd-ssc.
inversa. Los programas que soportan 04 /mt-daapd/admin-root 17 sh
DAAP incluyen Amarok, Banshee y
05 port = 3689 18 logfile = /var/log/mt-daapd.
Rhythmbox.
06 admin_pw = mt-daapd 19 log

Consejo 07 db_type = sqlite3 20 scan_type = 2


08 db_parms = /var/db/mt-daapd 21 [plugins]
Es conveniente usar el mecanismo de
búsqueda más rápido para actualizar la 09 mp3_dir = /home/mp3 22 plugin_dir =
base de datos de Firefly, si es posible. 10 servername = iTunes server 23 /usr/local/share/mt-daapd/
Esto nos permitirá ahorrar una cantidad
11 runas = daapd # distribution 24 plugins
importante de tiempo si lo comparamos
con la que supondría tener que volver a 12 independent 25 plugins = rsp.so,ssc-script.so
establecer una nueva base de datos. 13 extensions = .mp3,.m4a,.m4p

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


LINUX USER • Streaming con Firefly

Música y Con un clic podremos conectarnos al


Streams stream.
Una vez que
nuestro servidor Banshee para iTunes
Firefly esté ejecu- DAAP no será muy útil si sólo se tiene Linux
tándose, es más y no se dispone de otro ordenador en el que
fácil navegar. se tengan instalados Mac o Windows. aquí es
Simplemente hay cuando entra en juego Banshee. Este cliente
que arrancar iTu- DAAP originariamente fue desarrollado para
nes en un orde- Foresight Linux, aunque ahora también fun-
nador de la red y ciona en otras distribuciones. La página de
el servidor reve- inicio del proyecto [5] posee paquetes pre-
lará la lista de compilados para openSUSE, Ubuntu, Gentoo
comparticiones a y Fedora Core 4. Si se dispone de otras distri-
Figura 2: Banshee intenta convertirse en el “Amarok” para Gnome. Ya la izquierda. buciones distintas, la tarea de instalación
posee soporte para el protocolo DAAP. Haciendo clic en puede ir de engorroso a muy engorroso,
la entrada le dire- dependiendo de la distro [6].
mos a iTunes que La interfaz de usuario sigue el estilo, al
1), la cual muestra las funciones más impor- cargue el índice del servidor, presentando menos en parte, de iTunes. El reproductor
tantes. una lista de las canciones disponibles. A reconocerá automáticamente streams
La función que, con mayor probabilidad, continuación con un clic en una pista, ésta DAAP, al igual que el modelo que sigue, y
más necesitaremos de todas, es la que le diga se reproducirá. Las estaciones de radio web presentará iconos similares a la izquierda,
a Firefly que busque nuevas pistas. Start Scan que difunden datos MP3 (también conoci- en la barra de botones. De nuevo, con un
le dice al servidor que busque nuevo mate- das como streams) en la red han sufrido un clic sobre una pista, ésta se reproducirá
rial, mientras que Start Full Scan borra la base considerable incremento. iTunes posee una (Figura 2).
de datos existente y crea una nueva. La lista de Radio stations con varias propues-
página principal de la interfaz web también tas, mientras que el sitio web de SHOUTcast Conclusiones
dispone de una colección de estadísticas, tales [3] posee una lista de estaciones populares. Una combinación del servidor de medios
como el número de oyentes en línea en ese El servidor Firefly puede actuar como un Firefly con iTunes o Banshee es perfecta
momento, o el número de canciones que ha “Relay” (o relé) para dichas estaciones de para streamings de música en la red
reproducido el servidor Firefly para los clien- radio. Es necesario decirle a Firefly dónde interna. La conexión con un puerto SSH,
tes desde el último reinicio. encontrar el stream que desea oírse, y luego incluso se podría hacer que la señal de
El sistema de navegación se encuentra a la podremos acceder a mt-daapd desde cual- Firefly atravesara hacia una red VPN,
izquierda y conduce hasta las otras funciones quier máquina de la red para oír la música consiguiéndose el acceso a la colección
de la interfaz web. La función Smart Playlists seleccionada a través del portal local. Para musical privada desde cualquier parte y
es parecida a las “Intelligent Playlists” iTunes. establecer esta característica, se guarda un en cualquier momento.
Con la ayuda de un asistente y de los datos fichero llamado nombre.url en el directorio Como nota aparte, los comerciantes de
ID3 para la colección, pueden almacenarse del que cuelga nuestra colección de música, hardware poseen ahora dispositivos
listas de reproducción basadas en criterios donde nombre debería ser un nombre intui- compacos, tales como el Roku Sound-
arbitrarios. Por ejemplo, podemos decirle a tivo para la estación en cuestión. A conti- Bridge (Figura 3), el cual puede ser
Firefly que compile una lista de reproducción nuación, se añade una línea del formato bit usado como front-end para el Firefly
de canciones desde el año 1960 a 1969. rate, name, address al fichero. Por ejemplo, Media Server, es decir, reemplaza al anti-
Configuration nos lleva hasta el servidor para oír a Wolf.FM [4], debería crearse un guo estéreo. Por unos 96 Euros puedes
multimedia. Obsérvese que la cuenta en la fichero llamado wolffm.url, y añadir luego hacerte con el tuyo. ■
que se ejecuta mt-daapd necesitará permisos las líneas siguientes, basadas en los detalles
de escritura para /usr/local/etc para que del sitio web de la estación: RECURSOS
pueda modificarse cualquier configuración.
[1] Firefly: http://fireflymediaserver.org
64.Wolf.FM - - The hottest mix.U
http://sc1.abacast.com:8035/ [2] snapshot diario: http://nightlies.
mt-daapd.org
También es preciso modificar la línea exten- [3] Vista de SHOUTcast radio stations:
sions en el fichero de configuración del ser- http://www.shoutcast.com/
vidor Firefly añadiendo una entrada para [4] Información sobre Wolf.FM: http://
.url. Seguidamente se reinicia el servidor www.wolffm.com/pls/wolffm.pls
Firefly, y se usa un interfaz web para ejecu- [5] Paquetes de Banshee: http://
tar un fichero scan. banshee-project.org/Getting_Started
Una vez completado el escaneo, la lista [6] Compilación de Banshee: http://
Figura 3: Roku SoundBridge y Firefly pueden de reproducción de Firefly tendrá una banshee-project.org/Banshee_Source
reemplazar al antiguo equipo estéreo. entrada que diga Wolf.FM – The hottest mix.

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


Workspace: Marcas • LINUX USER

T-Bookmarks: Transformación de Thunderbird en un administrador de marcas

MARCADORES
Thunderbird de Mozilla ofrece herramientas que proporcionan una manera alternativa de administrar y per-

sonalizar nuestros marcadores. Mostraremos cómo sirven propósitos nuevos y poco convencionales.

POR DMITRI POPOV

A
la hora de administrar marcas, el mundo. Por ejemplo, con un servicio puede personalizarse y ajustarse a las
tenemos literalmente decenas de basado en web no existe garantía alguna necesidades propias. Y lo que es más
opciones a nuestra disposición. de que si el servicio falla, no se lleve con importante, muestra cómo utilizar una
Además de las características de mar- él todo por delante. Una herramienta de tecnología bien probada en contextos
cado razonablemente flexibles de Fire- sincronización es magnífica para mante- nuevos y poco convencionales.
fox, existen multitud de utilidades de ner las marcas sincronizadas en un orde-
sincronización y servicios basados en nador privado, aunque no es muy útil en Marcado de Páginas con
web que pueden cuidar de nuestars mar- una máquina pública. Incluso si se han Toread
cas: del.icio.us (http://del.icio.us/), conseguido superar estos inconvenien- T-Bookmarks depende de dos componentes
Ma.gnolia (http://ma.gnolia.com/), Mar- tes, existen aún otras molestias que pue- principales: Mozilla Thunderbird, que cuida
kaboo (http://www.markaboo.com/), den habernos llevado a considerar otras del almacenaje y administración de marcas, y
Google Browser Sync (http://www. alternativas, como puede ser la creación Toread [1], un servicio de marcado por correo
google.com/tools/firefox/browsersync/), de una solución de marcado propia electrónico, utilizado para añadir marcas a
Foxmarks (http://www.foxmarks.com/), basada en Mozilla Thunderbird y un par Thunderbird. Aunque de apariencia sim-
y muchos otros, cuyo denominador de ingeniosas herramientas (que llama- plista, es de hecho una herramienta muy
común es ofrecer útiles características remos T-Bookmarks). Aunque no ofrece ingeniosa. Toread le permite a un usuario
para ayudar a seguirle la pista en las todos los pitos y flautas de un servicio de enviarse por correo cualquier página web a sí
marcas. marcado social (aunque sí puede usarse mismo. En cierto modo, funciona como la
Todos son buenos en lo que hacen, para compartir las marcas con otros opción remitir esta página, disponible en
aunque ello no signifique que vengan usuarios), proporciona una manera alter- algunos sitios web, aunque con Toread es
bien para todas las necesidades de todo nativa de administración de marcas, que posible enviar cualquier página que se desee

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


LINUX USER • Workspace: Marcas

configuración de una cone- Esto mueve todos los mensajes Toread exis-
xión GPRS Bluetooth en tentes a la carpeta To Read y, a partir de de
Knoppix, entonces debe- ese momento, cualquier correo entrante que
rían usarse etiquetas como coincida con los criterios especificados en el
“gprs”, “bluetooth”, filtro será automáticamente movido a la car-
“knoppix”, “linux”, etc. peta To Read.
El paso siguiente consiste en agrupar las
Thunderbird páginas marcadas por temas, o por cualquier
como otro criterio que se desee. Mientras puede
Administrador crearse una subcarpeta para cada tema y
de Marcas crear un filtro para ello. Este método tiene
Ahora le toca el turno a unos cuantos inconvenientes. Uno de los
Thunderbird. Posible- más serios es que no puede almacenarse una
mente sea algo que se des- página marcada en dos o más carpetas al
Figura 1: Toread es un ingenioso servicio que permite marcar conozca, pero Thunder- mismo tiempo. Por ejemplo, si se poseen
páginas web. bird contiene todas las temas de carpetas como “Thunderbird” y
herramientas necesarias “Encryption”, se debería disponer de una
con un solo clic. para la administración de páginas marcadas , página sobre cómo encriptar correos en
Para habilitar el servicio Toread hay que ir después de todo, estamos trabajando simple- Thunderbird para que aparezca en ambos.
hasta http://toread.cc e introducir la dirección mente con correos normales con páginas Afortunadamente, Thunderbird contiene la
de correo. Se recibirá entonces un mensaje de web incrustadas. En primer lugar es necesa- característica inteligente Folders (también lla-
correo con un enlace a la página web conte- rio crear una carpeta superior para todos los mada “Carpetas Virtuales” y “Búsquedas
niendo dos bookmarklets [toread] y [toread correos entrantes del servicio Toread y un fil- Guardadas”), que permite superar las limita-
+ ]. El último permite añadir comentarios a tro que los envíe a ésta. ciones del método basado en la carpeta.
la página de marcado, y es el que debería Para crear otra carpeta nueva se hace un Usando inteligente Folders, es posible
añadirse al navegador arrastrando el enlace a clic sobre la cuenta en Folders y se elige el especificar un juego de criterios de bús-
la barra de herramientas de Bookmaks. El elemento de menú Nueva carpeta. Se da un queda, luego se salva la búsqueda y se ve
bookmarklet puede añadirse a tantos navega- nombre a la carpeta (por ejemplo, “To Read” como una carpeta convencional. La diferen-
dores como se desee, algo que puede resultar o, lo que es lo mismo , “Para Leer”) y se cia fundamental aquí es que esta carpeta
útil cuando se poseen distintos ordenadores. pulsa OK. A continuación, debemos crear un “inteligente” no es una carpeta real y los
Para la marcación de páginas vistas actual- filtro que guíe las páginas marcadas entran- mensajes no se han movido realmente a ella.
mente, se hace clic sobre el bookmarklet tes a la carpeta To Read. Para ello hay que En otras palabras, una carpeta inteligente es
[toread + ], se escribe el texto deseado en el especificar una regla simple basada en las una carpeta virtual, y cada vez que se selec-
campo Comments, y se pulsa OK. La página direcciones de los remitentes (suponiendo ciona, ejecuta la búsqueda especificada y
será enviada automáticamente a la dirección que se está usando el servicio Toread). Se presenta los resultados. Es además una
de correo. Es preciso recordar que para admi- elige “Herramientas” -> “Filtros de Mensa- potente herramienta que permite compilar
nistrar de forma efectiva las páginas marca- jes”, se pulsa el botón “Nuevo” y se escribe un sofisticado sistema de agrupación de mar-
das en Thunderbird, debería prestarse espe- el nombre del filtro en el campo “Nombre cas.
cial atención a lo que se escribe en el campo Filtro”. De la primera lista desplegable se Existen distintas maneras de crear una car-
Comments. En lugar de comentarios descrip- selecciona “From” y de la segunda lista des- peta inteligente. La más rápida de ellas es
tivos, deberían introducirse palabras clave plegable se escoge “contiene”, y se escribe la escribir los criterios de búsqueda en el
importantes (o etiquetas, en lenguaje Web dirección de correo apropiada (en este caso, campo Quick Search, y seleccionar luego
2.0), que son usada s como criterios de fil- info@toread.cc) en el último campo. En la Save Search como carpeta de la primera lista
trado y agrupación en Thunderbird. Por sección “Ejecutar estas acciones”, se selec- desplegable. Alternativamente, puede ele-
ejemplo, si se marca una página sobre la ciona “Mover Mensaje” de la primera lista girse Fichero -> Nuevo -> Guardar Bús-
desplegable y la carpeta queda y definir una nueva búsqueda. Esta
“Toread” de la segunda. opción permite crear una búsqueda guar-
El filtro finalizado debería ser dada que incluya subcarpetas y ejecutables a
parecido al que se muestra en la través de múltiples cuentas. No importa la
Figura 2. Se pulsa OK y nos
aseguramos de que está
habilitado (el cuadro
“Activo” debería estar mar-
cado). Si ya disponemos de
correos en nuestra bandeja
de entrada de correo prove-
niente del servicio Toread,
se ejecuta el filtro pulsando
Figura 2: Creación de un filtro en Thunderbird. el botón “Ejecutar Ahora”. Figura 3: Creación de una carpeta inteligente.

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


Workspace: Marcas • LINUX USER

Figura 5: Creación de un nuevo bookmarklet.

=cm&fs=1&tf=1&to=&su=’U
+encodeURIComponentU
(‘[‘+promptU
(‘Tags:’)+’] - ‘+’ ‘+U
document.title)+’&bodyU
=’+encodeURIU
Component(document.location)U
+’ ‘+escape(document.U
getSelection());w=U
window.open(m,U
‘addwindow’,U
Figura 4: La solución T-Bookmarks en acción. ‘status=no,toolbar=no,U
width=575,height=U
manera elegida para crear una carpeta inteli- cen seguidamente un par de ejemplos 545,resizableU
gente, siempre es posible modificar los crite- listos para usar. El applet siguiente es =yes’);setTimeout(function()U
rios de búsqueda haciendo clic en ella y simple. Abre el correo por defecto y crea {w.focus();},%20250U
seleccionando la opción “Propiedades de un nuevo correo con el título de una );})();
Carpeta”. página web y enlace.
Para crear una carpeta inteligente que con- Para crear un nuevo bookmarklet, se
tenga todas las páginas marcadas importan- javascript: hace clic en la barra de herramientas
tes, deberán definirse criterios basados en las void(document.location= U Bookmark en Firefox y se selecciona
etiquetas que se introdujeron en los campos ‘mailto:mi@direccion.com? U “Nueva Marca”. Se introducen un nom-
“Comentarios” y que el servicio Toread subject=’ +document.title U bre en el campo “Nombre” y el código
inserta en la línea del asunto. Para crear, por ‘ &body=’ + U JavaScript en el campo “Localización”.
ejemplo, una carpeta inteligente con todas document.location)
las marcas relacionadas con Ubuntu, se elige Conclusión
Fichero -> Nuevo -> Guardar Búsqueda y El segundo applet permite especificar eti- Evidentemente, T-Bookmark no es el
se especifica el criterio, tal y como se muestra quetas e incluir una selección de texto en administrador de marcas más sofisticado
en la Figura 3. Con una cuenta IMAP, hay el cuerpo del correo: que existe, pero cuenta con una infinita
que asegurarse de que el cuadro “Búqueda flexibilidad. Permite trastearlo para
en línea” está seleccionado. El uso de T- javascript:void(document.U adaptarlo a las necesidades propias. Lo
Bookmarks con cuentas IMAP tiene otra ven- location=’mailto:miU que es mejor, la versión 2.0 de Thunder-
taja: pueden sincronizarse las páginas marca- @direccion.com?U bird, que se encuentra a la vuelta de la
das en distintas máquinas con Thunderbird. subject=’+’[‘+promptU esquina, ofrece sus propias característi-
(‘Tags:’)+’] - ‘+’ ‘+documentU cas de etiquetado para administrar las
Plan B .title+’&body=’+U marcas incluso de manera mucho más
Un punto débil de una solución de mar- document.location+’ ‘+escapeU eficiente. Claro que, no se está limitado a
cado es que depende del servicio Toread. (document.getSelection())) usar Thunderbird. Gmail también pro-
Si el servicio se cae, T-Bookmarks será porciona herramientas que pueden ser
inútil (hasta que se tenga un Plan B). Es Finalmente, si se prefiere usar Gmail usadas para filtrar y agrupar las páginas
posible crear un boormarklet propio para como “agente de marcado”, entonces se marcadas, además, evita estar vinculado
enlaces de correo propios. Como se haría con el applet siguiente: a una aplicación de escritorio. ■
sabrá, un bookmarklet es una marca,
donde la URL actual contiene un applet javascript:(function() {m=’U RECURSOS
JavaScript. En el caso de que no desee http://mail.google.com/U
[1] Toread: http://toread.cc/
escribirse un applet desde cero, se ofre- mail/?viewU

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


LINUX USER • Squeak: Scratch

Una herramienta lúdica de iniciación a la programación

SCRATCH
El famoso Laboratorio Multimedia del Instituto de Tecnología de Massachussets y la Universidad de Califor-

nia, los Ángeles, han venido desarrollando, durante los tres últimos años, un interesante proyecto educativo

destinado a elaborar una divertida y atractiva herramienta de introducción a la programación. A primeros de

enero de este año tuvo lugar el lanzamiento oficial de Scratch [1] para Windows y Mac, y se prevé que a

finales de este mismo año esté disponible la versión para Linux. POR MÁXIMO PRUDENCIO

N
o obstante, por tratarse de una ¿Qué es Scratch? Utilizar herramientas de programa-
evolución de Squeak, podremos Scratch es, para sus creadores, un ción como medio para alcanzar una
ejecutar la imagen de Scratch en medio de expresión mediante el cual mejor comprensión de las nuevas tec-
una plataforma Linux siempre que ten- los jóvenes y menos jóvenes pueden nologías no es nada nuevo, como tam-
gamos instalada la máquina virtual de expresar sus ideas y responde a la poco lo es la valoración educativa de
Squeak. Scratch es un entorno Squeak pretensión de proporcionar una los algoritmos de programación. Lo
que funciona, con algunas limitaciones, herramienta que facilite el uso de los novedoso es la sencillez del entorno
sobre cualquier máquina virtual Small- ordenadores de forma creativa, lúdico desarrollado por este equipo de
talk/Squeak. Por tanto, lo único que superando el modelo de formación investigación del MIT liderado por el
necesitamos es hacernos con la imagen tradicional, que viene utilizando las profesor Mitchel Resnick.
de Scratch y enchufarla a nuestra nuevas tecnologías para reproducir En cuanto herramienta de trabajo,
máquina virtual [2]. prácticas educativas obsoletas. Scratch es un proyecto de desarrollo

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


Squeak: Scratch • LINUX USER

Figura 1: Rutinas informáticas en Scratch.

cerrado y código abierto. Es decir, al tarse con extensiones y modificaciones modo de trabajo consiste en arrastrar y
contrario de los proyectos convencio- del programa. No obstante, la versión soltar bloques en lugar de escribirlos.
nales de código abierto, el equipo de final para Linux diferirá visualmente y Y, por último, como LogoBlocks, Cri-
desarrollo no persigue la contribución será incompatible con la versión están- cketBlocks o PicoBlocks, utiliza blo-
de la comunidad de usuarios, sino que dard para evitar la confusión entre ques autoencajables que sólo ajustan si
se reserva la elaboración de la versión ambas versiones. son sintácticamente correctos, permi-
estándard. Por otra parte, es un pro- tiendo al usuario centrar su atención en
yecto de código abierto porque el Los Orígenes los algoritmos lógicos de programación,
equipo de desarrollo espera liberar el Scratch reconoce la aportación del en lugar de perder tiempo intentando
código fuente para mediados de este micromundo de Logo, los e-toys de desentrañar el esotérico código lingüís-
año, de modo que pueda experimen- Squeak y LogoBlocks como sus prece- tico de los tradicionales lenguajes de
dentes o fuentes en las que se ha inspi- programación.
rado. El lenguaje de programación de
Scratch, por un lado, se basa en Logo, Introducción a la
en especial en sus primitivas, y pre- Programación
senta un entorno en el que múltiples A pesar de haber sido ideado como una
objetos pueden evolucionar e interac- sencilla herramienta para jóvenes,
Figura 2: Metáfora de los bloques de cons- tuar. Por otro lado, como en Squeak Scratch ya ha demostrado ser un instru-
trucción. -lenguaje en el que está desarrollado- el mento valioso de introducción a la pro-

Figura 3: El interfaz de Scratch.

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


LINUX USER • Squeak: Scratch

tante, en opinión de John Maloney, uno bloques de instrucciones de Scratch se


de sus desarrolladores, pudiera ser pueden cambiar a diferentes idiomas sin
ampliado para soportar proyectos ningún problema, incluso en plena eje-
mucho más grandes [4]. cución, facilitando su uso en diferentes
entornos lingüísticos.
Características del Diseño
Figura 4: La grabadora de sonidos. de Scratch El Entorno de Desarrollo
Los aspectos esenciales del diseño de El escritorio de Scratch se estructura en
gramación en cursos desarrollados en Scratch se resumen en las siguientes tres secciones principales, a izquierda,
Harvard por David Malan y Henri Leit- características: Metáfora de los bloques centro y derecha de la pantalla respectiva-
ner [3], en los que se ha comprobado la de construcción: La programación con mente: Paleta de bloques, Área de guiones
utilidad de usar Scratch como calenta- Scratch se basa en la metáfora de blo- (scripts) y Escenario. La programación se
miento previo para introducir Java en ques de construcción, en la que los chi- desarrolla en tiempo real y todas las modi-
clases de programación, facilitando la cos construyen procedimientos enca- ficaciones que realicemos en los guiones
transferencia de conceptos desde jando bloques gráficos como ladrillos de los objetos se incorporan de forma
Scratch a otros lenguajes. de Lego o piezas de un puzzle. automática en su ejecución. Como en
Al trabajar con proyectos de Scratch, Manipulación de sonido, vídeo e imá- Squeak, los modos de diseño y ejecución
los jóvenes tienen oportunidades para genes: La manipulación de archivos son simultáneos. No obstante, cuenta con
aprender conceptos informáticos multimedia es una de las características un modo presentación que duplica las
importantes tales como iteración, con- más llamativas de Scratch, a las que se dimensiones del escenario. Esta función
trol de flujo, condicionales, variables, le han añadido rutinas de manipulación de visualización no está operativa, por el
tipos de datos, eventos y procesos. de imágenes en forma de filtros y con- momento, en entorno Linux.
Scratch se ha usado para introducir trol de los mismos. La paleta de bloques, situada en la
estos conceptos a estudiantes de dife- Profunda portabilidad: Además de zona izquierda de la pantalla alberga,
rentes edades, desde la escuela prima- permitir compartir los proyectos a tra- categorizados por colores y funcionali-
ria hasta el instituto, comprobándose vés de su plataforma en la web con un dad, los bloques de programación
cómo éstos migran con facilidad a los golpe de ratón, Scratch facilita el inter- arrastrables al área de scripts.
lenguajes tradicionales basados en cambio de gráficos (sprites) entre dife- El menú principal ocupa la parte
texto después de haberse introducido rentes proyectos, autores e, incluso, superior de la pantalla y permite reali-
en la programación mediante Scratch. entre diferentes tipos de dispositivos. zar las operaciones comunes de crear,
Scratch se ha optimizado para que Estrecha vinculación con el mundo abrir y guardar proyectos, deshacer la
sea fácil de escribir y, en menor físico: El propósito de Scratch es progra- última acción y proporcionar ayuda.
medida, fácil de entender para progra- mar objetos físicos del mismo modo que Además, el botón Extras incluye la
mas relativamente pequeños en un se programan objetos virtuales en panta- opción de establecer el lenguaje de los
dominio especializado, exactamente lo lla usando entradas de sensores físicos bloques de programación en diferentes
mismo que se podría decir acerca de para controlar los comportamientos de idiomas.
lenguajes como Perl, Tk, Awk o APL. los objetos físicos y creaciones virtuales Un botón interesante es el botón
Ninguno de ellos es particularmente mediante el tablero (Scratch board) que Share que nos permite, con un golpe de
eficiente o se encuentra disponible para están desarrollando en el MIT. ratón, subir nuestros proyectos al espa-
construir grandes aplicaciones. No obs- Soporte para múltiples lenguajes: Los cio que previamente hayamos creado
en la página web del proyecto. Una vez
Ejecutar Scratch en Linux alojados en la web, los proyectos
A pesar de lo publicado, Scratch sí se Para poder acceder al entorno, simple- podrán ser ejecutados, mediante un
puede ejecutar en Linux y para ello nos mente tendremos que arrancar Squeak player de java, sobre la misma página o
bajaremos el paquete MS Windows pasándole como parámetro la imagen descargados al ordenador local para
desde [1] el paquete Scratch.exe. El que encontraremos en el directorio
problema con el que vamos a encon- Scratch:
trarnos es que, al tratarse de un $ squeak Scratch.image
paquete exe, ni zip, ni tar, ni gunzip
El resultado, si bien no es del todo
podrán abrirlo. La solución está en usar
satisfactorio, a falta de un versión ofi-
Wine. Si tenemos el emulador de Win-
cial para Linux, nos permite hacernos Figura 5: Tipos de bloques.
dows instalado, simplemente debere-
una idea acerca de las prestaciones del
mos teclear en cualquier consola:
programa. Una parte de sus funciones
$ wine WinScratch aún no están operativas bajo Linux,
en el directorio donde hayamos des- pero el uso general del programa obe-
cargado el programa. Esto ejecutará el dece al usuario y nos permitirá familia-
proceso de instalación, creándose una rizarnos con el entorno a la espera de
carpeta Scratch que contiene todos los que sus desarrolladores realicen su
elementos del entorno. lanzamiento definitivo para Linux.
Figura 6: Bloques apilables.

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


Squeak: Scratch • LINUX USER

Sonidos en Scratch
Figura 7: Bloque cabecera. Los sprites pueden ejecutar sonidos
seleccionados de la librería de sonidos
abrirlos en la plataforma Scratch. De pregrabados de Scratch, importarlos o
este modo se favorece el intercambio y realizar grabaciones mediante la grabadora
el aprendizaje compartido de rutinas de de sonidos de Scratch. Una vez realizadas
programación, estudiando, modifi- las grabaciones, los nuevos sonidos se
cando y mejorando otros programas. incorporarán a la lista de los disponibles
para el proyecto en el que estemos
Sprites y Guiones trabajando. Para ver los sonidos asociados
Los proyectos de Scratch están hechos a un determinado sprite haremos clic sobre
de objetos llamados sprites que la pestaña Sounds.
resultan fáciles de manipular. Los Scratch reconoce archivos MP3, archivos
sprites son los gráficos con los que WAV, AIF y AU descomprimidos (codifica-
trabaja Scratch reconociendo los tipos dos con 8-bits o 16-bits, pero no con 24-
de formatos más habituales (jpg, gif, bits).
bmp y png). Podemos cambiar el
aspecto de un sprite dándole una forma Programar con Scratch lla, bien arrojándolos sobre el escenario,
o disfraz diferente, hacer que se Lo que hace verdaderamente atractivo a bien creándolos mediante la aplicación
parezca a una persona, un tren, una Scratch es la gran simplicidad con la que, Paint Editor, y dándoles vida arrastrando
mariposa o cualquier cosa. Se puede en muy poco tiempo, un usuario sin cono- al área de Scripts bloques de programa-
usar cualquier imagen como disfraz, cimientos de programación puede comen- ción.
dibujar una imagen con el Pintor, zar a elaborar y ejecutar sus propios pro- La programación de los sprites se
importar una imagen de nuestro disco yectos. resume en proporcionarles instrucciones
duro o, simplemente, arrastrarla desde El procedimiento consiste básicamente diciéndoles que se muevan, interpreten
una página web hasta el Escenario. en incorporar sprites y fondos a la panta- música o reaccionen a otros objetos. Para
LINUX USER • Squeak: Scratch

ción de opciones pulsando sobre la punta que comiencen con el encabezado al presio-
de flecha que oculta el menú. nar la bandera. Alternativamente, mediante
En la paleta de bloques encontramos, la tecla intro se obtiene el mismo resultado.
clasificados en ocho categorías en función
Figura 8: Informes. de su utilidad (movimiento, control, apa- Compartir con Scratch
riencia, sensores, sonidos, números, lápiz y Uno de los aspectos más interesantes de
variables), tres clases bloques: Scratch es la posibilidad de compartir ideas y
Bloques apilables: Estos bloques tienen proyectos con la comunidad de usuarios del
salientes en la parte inferior y huecos en la programa, permitiéndonos estudiar los
superior que permiten ajustar unos sobre guiones de otros proyectos y modificarlos
otros formando pilas. Algunos de ellos tienen libremente. El botón Share presente en el
Figura 9: Tipos de monitores de variables. una zona de entrada en su interior, donde se menú principal del programa nos permitirá,
puede escribir un número o elegir una opción mediante un golpe de tecla, subir nuestros
indicarle a un sprite lo que tiene que de una ventana emergente Un tipo especial proyectos a nuestro espacio personal en la
hacer, debemos unir bloques gráficos for- de bloques tiene forma de C abierta en cuyo página web del proyecto. Desde aquí podrán
mando pilas, denominadas guiones . Los interior se pueden insertar otras pilas de blo- ser ejecutados on-line mediante un player de
guiones se construyen seleccionando, en ques. java o descargados para poder ser estudiados
primer lugar, un objeto o fondo de escena- Cabeceras: Las cabeceras se distinguen por y modificados.
rio en la lista de sprites y deslizando blo- tener la parte superior redondeada, están des-
ques desde la paleta de bloques y arroján- tinadas a lanzar la ejecución de los guiones y Proyectos en Desarrollo
dolos sobre el área de scripts. Crear guio- se colocan en la parte superior de las pilas. En la actualidad, el equipo Lifelong Kinder-
nes (programas) consiste, pues, en ir Estos bloques esperan a que suceda un garten del MIT, desarrollador del proyecto,
uniendo bloques gráficos formando una evento, como que se presione una tecla, se continúa mejorando el programa y está re-
pila de instrucciones que se ejecutarán pulse la tecla intro o se haga clic sobre un elaborando la página web de Scratch, que
secuencialmente. Cuando se arrastra un sprite, para comenzar la ejecución de la pila pretende ser una plataforma multilingüe
bloque al Área de guiones, una marca de bloques que está debajo de ellos. que incluirá una biblioteca de sprites para
blanca indica dónde se puede soltar el blo- Informes: Estos bloques se han diseñado que puedan ser utilizados libremente por
que y formar una conexión válida con otro para que encajen en las zonas de entrada de sus usuarios.
bloque. otros bloques. Los informes se presentan con Además de la plataforma Scratch que per-
Para ejecutar un bloque y comprobar su dos siluetas y encajan sólo en los huecos con mita la compartición de proyectos, se está
funcionalidad bastará con hacer doble clic la misma forma. Los informes con bordes trabajando en un player para teléfonos
sobre cualquier parte de la pila, y se ejecu- redondeados representan números y encajan móviles en J2ME que permita ejecutar los
tará todo desde el comienzo al final del en bloques con huecos redondeados. Los proyectos de Scratch en este soporte y en
guión. Además, existe la posibilidad de informes con extremos terminados en punta una versión completamente en línea del
que Scratch nos muestre -en cada informan valores booleanos (verdadero y programa.
momento- el bloque que se está ejecu- falso) y encajan dentro de bloques con hue- Por otra parte, se estudia la posibilidad de
tando, destacando cada bloque a medida cos con extremos en punta. incluir en Scratch shariables, es decir, varia-
que se ejecuta. Esta característica puede Los informes con monitorización en el bles compartidas vía web.
resultar muy útil para encontrar errores en escenario presentan un marcador junto a Paralelamente, están trabajando en un
los programas y para ayudar a los nuevos ellos. Al señalizar el marcador se mostrará el tablero que incluye sensores de luz, sonido,
programadores a comprender el flujo de contenido de la variable en el escenario. La deslizador y botones, además de cuatro
ejecución de un programa. Para habilitar forma de presentación de los informes moni- resistencias de entradas para interruptores,
la ejecución controlada de los guiones torizados cambia al hacer doble clic sobre el sensores ligeros, de temperatura, etc. que
paso a paso seleccionaremos la opción propio marcador mostrando el nombre de la permitirán actuar con el mundo exterior a
start single stepping en el menú Extras del variable, con un marcador grande sin nombre través de Scratch. ■
menú principal de Scratch. o con un deslizador que permite manipular el
valor de la variable. Este último formato (des- RECURSOS
Tipos de Bloques lizador) únicamente está disponible para
[1] Página web de Scratch: http://scratch.
Algunos bloques tienen campos de texto variables creadas por el usuario. Para ajustar
mit.edu
editables, de forma redondeada, que per- los valores máximos y mínimos deberemos
miten modificar sus valores escribiendo hacer clic derecho sobre el marcador de la [2] Zona de descarga de Scratch: http://
llk.media.mit.edu/projects/scratch/
en su interior o arrojar sobre ellos bloques variable con deslizador, seleccionar la opción
download/
con esta misma forma. Otros tienen set sliden min and max y establecer los valo-
menús desplegables que facilitan la selec- res sus valores extremos. [3] Scratch para informáticos en ciernes:
http://www.eecs.harvard.edu/~malan/
Ejecución de Programas publications/fp079-malan.pdf

La banderola verde situada sobre la esquina [4] Entrevista a John Maloney: http://
weeklysqueak.wordpress.com/2007/
superior derecha del escenario permite
01/23/scratching-the-surface/
Figura 10: Ejecución de programas y guiones. comenzar la ejecución de todos los guiones

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


Línea de comandos: FTP y NcFTP • LINUX USER

FTP y NcFTP

REMOVIENDO DATOS
CON LA SHELL
FTP y NcFTP son ambos clientes FTP para la línea de comandos.
Alternativamente, puede arrancarse pri-
Mientras FTP sólo dispone de funcionalidad para la transferencia de mero el cliente introduciendo ftp, y luego,
para conectarse, se introduce el siguiente
ficheros básica, NcFTP posee un completo grupo de características comando en la línea de comandos ftp:

adicionales. POR HEIKE JURZIK ftp> open ftp.servidor.com

Tras establecer conexión, deberíamos

F
TP (File Transfer Protocol) es una serie cir el nombre de usuario y la contraseña para apuntarnos para registrarnos. Como se ha
de protocolos de Internet que ayuda a el propósito de identificación. mencionado anteriormente, puede escri-
los usuarios a transferir datos entre Es preciso notar que, en contraste con los birse anonymous, ftp o un nombre de usua-
dos ordenadores. Una de ellas sirve de cliente protocolos de seguros (tales como Secure rio suministrado por el proveedor del espa-
FTP, mientras que la otra máquina es el servi- Shell SSH), un protocolo del tipo FTP trans- cio web, junto con la contraseña a juego
dor. mite nombres de usuario, contraseñas y otros (Listado 1). La introducción de la contra-
La mayoría de los servidores FTP ofrecen datos a través de la red en texto claro, por lo seña puede ser bastante dificultosa, ya que
servicios anónimos, en los que pueden intro- que FTP no resulta adecuado para el inter- a diferencia de NcFTP, FTP no presenta un
ducirse anonymous o ftp como nombre de cambio de información confidencial. asterisco para cada carácter que se intro-
registro y no suministrar una contraseña, Si se prefiere la simplicidad de la línea de duce.
aunque se considera un gesto amigable intro- comandos y se prefiere no usar el propio
ducir la propia dirección de correo. Otros ser- navegador web o el cliente FTP interno del
vidores, ejecutados mediante suministradores administrador de ficheros, entonces es buena
Listado 1: Conectando con
de espacios web, por ejemplo, exigen introdu- idea echarle un vistazo a las dos alternativas a FTP
ftp> open ftp.debian.org
la línea de comandos, FTP y NcFTP.
Connected to ftp.debian.org.
CONSEJO FTP: Toma de Contacto 220 saens.debian.org FTP server
Para cambiar de directorio en tu FTP es un simple cliente de la línea de (vsftpd)
máquina local, usa el comando lcd. Para comandos que cualquier distribución Linux Name (ftp.debian.org:huhn): ftp
otros comandos locales, comienza el debería incluir predeterminadamente. Para
331 Please specify the password.
comando con un signo de exclamación. abrir una conexión se hace lo siguiente:
Por ejemplo, !ls presenta el listado del Password:
directorio local. ftp ftp.servidor.com

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


LINUX USER • Línea de comandos: FTP y NcFTP

Figura 1: Listado de comandos: acceso a la ayuda online de FTP con Figura 2: NcFTP muestra la ETA (“Estimated Time of Arrival” o
los comandos ? o help. Tiempo estimado de llegada) para un fichero concreto.

encaje con el modelo. Se introduce y o n para funcionan igual que en FTP y, evidentemente,
Prompt FTP empezar la transferencia o bien para saltar un para listar directorios se usará ls. Sin
Una vez registrados, FTP presenta el prompt fichero, respectivamente. embargo, NcFTP presenta aquí una caracte-
ftp, pudiéndose comenzar a introducir El comando prompt ayudará a evitar cues- rística adicional; suponiendo que el servidor
comandos. La salida de los comandos help o ? tiones de este tipo: soporta esto, ls -l ofrecerá un listado exten-
muestra los comandos disponibles (Figura 1). dido, similar a ls -la, que presentará ficheros
Muchos de los comandos presentan una ftp> prompt ocultos y directorios.
sintaxis similar a los comandos Bash (por Interactive mode off. NcFTP tiene más que ofrecer, ya que el
ejemplo, cd, ls, exit, etc). Algunos de éstos cliente soporta completado con tabulador,
son auto-explicativos, mientras que otros son Esto también es aplicable al comando mput, con el que se estará familiarizado desde Bash.
bastante enigmáticos. Puede pedirse al pro- el cual sirve para subir datos al servidor, y Pueden introducirse un par de letras de un
grama que muestre más información sobre mdelete, que elimina datos del lado del servi- comando o el nombre de un fichero/directo-
cada comando mediante lo siguiente: dor; ambos suponen que se dispone de rio, y pulsar [Tab]. NcFTP completará el nom-
acceso privilegiado de escritura (write) al ser- bre si es único. Escribiendo las dos primeras
ftp> help <comando> vidor FTP. letras de un comando y pulsando la tecla
El comando close cierra la conexión y quit tabulador se le dice que presente todos los
donde <comando> es el nombre de la ins- cierra la sesión y abandona el programa. comandos que comienzan con esa letra.
trucción sobre la que se recaba información.
Para descubrir en el lado del servidor el NcFTP: ¿Hay Alguien Ahí? NcFTP: Nuevos Amigos
directorio actual se introduce pwd (print wor- Aunque la mayoría de las distribuciones no Como probablemente era de suponer, el
king directory), como en Bash, y con el fami- incluyen el cliente de la línea de comandos comando para la descarga de ficheros a la
liar comando ls se presentará un listado de NcFTP por defecto, este cliente se encuentra máquina local es get. NcFTP añade una
directorios y ficheros. Con cd directory podrá habitualmente en los medios de instalación, o característica muy conveniente que muestra
cambiarse a otro directorio, cd .. sube un nivel bien puede encontrarse descargando la herra- el progreso de descarga y el rango de transfe-
en el árbol de directorios y cd lleva hasta el mienta desde la página de inicio de NcFTP rencia en la parte inferior de la pantalla
directorio raíz en el servidor FTP. [1], el cual dispone de distintas versiones para (Figura 2).
get y mget ayudan a descargar datos del varias plataformas. Otra práctica característica es la habilidad
servidor FTP al directorio actual en la Las operaciones básicas no difieren mucho
máquina local. Mientras que get espera que de FTP. Para abrir una conexión puede espe-
se introduzca el nombre de fichero completo, cificarse un destino sobre el que se arranca el Listado 2: Abriendo una
mget también soporta comodines. Para programa, o bien introducir el comando open conexión
mover todos los ficheros a un directorio espe- en el prompt (Listado 2). huhn@asteroid:~$ ncftp
cífico en la máquina local, se escribe mget * NcFTP maneja automáticamente el registro Ncftp 3.1.8 (Jul 27. 2004) by
en el prompt. en servidores anónimos. Si se necesitan intro- Mike Gleason
Evidentemente, se puede ser más preciso si ducir nombres de usuario o contraseñas, se (http://www.Ncftp.com/contact/).
así se desea: proporcionan los detalles cuando se ejecuta el
ncftp> open ftp.debian.org
comando:
Connecting to 128.101.240.212...
ftp> mget *.tar.gz
ncftp> open -u nombreusuarioU saens.debian.org FTP server
se descargarán ficheros con la extensión -p contraseña ftp.servidor.com (vsftpd)
.tar.gz. Por defecto, FTP avisará para confir- Logging in...
mar la descarga de cada fichero único que Los comandos help, pwd, cd, lcd, close y quit

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


Línea de comandos: FTP y NcFTP • LINUX USER

de reanudar descargas canceladas. Cuando se de transferencia binario (lo que sig-


ejecuta get contra un fichero que ya existe en nifica que cambiará el contenido del
la máquina local, NcFTP nos dice que The fichero cuando se transfiera). Si el
local file filename already exists, es decir, que fichero es un fichero ASCII con dife-
el nombre del fichero local ya existe. rentes finales de caracteres de línea
El cliente FTP presenta entonces el tamaño para editores en diferentes platafor-
del fichero y la marca horaria, detalles para el mas, el comando siguiente: Figura 3: Si intentas descargar un fichero que ya
fichero local y el remoto (suponiendo que existe localmente, NcFTP te preguntará por el paso
ambos son diferentes). ncftp> get -aU siguiente.
Seguidamente, el programa pregunta sobre file.txt
qué hacer a continuación. Como puede apre- el fichero de registro, porque actualizará la
ciarse en la Figura 3, los usuarios disponen en le dirá a NcFTP que descargue el fichero en presentación siempre que el fichero cambie.
este punto de determinadas opciones: modo ASCII. Para cambiar a modo ASCII per- Esto permite monitorizar el progreso de
• o – Sobreescribir el fichero local. manentemente, se ejecuta el comando type: NcFTP sin necesidad de ejecutar los paginado-
• r – Reanudar una descarga cancelada. res less o more múltiples veces.
• a – Añadir el fichero desde el servidor ncftp> type ascii
FTP al fichero local. ncftp> type NcFTP: Marcas
• s – Cancelar la conexión. Type is A (ASCII). Para evitar escribir, o para refrescar la memo-
• n – Guardar el fichero bajo un nuevo ncftp> type binary ria, pueden usarse marcas en NcFTP. Para ello,
nombre. ncftp> type se escribe bookmark durante una sesión y se
• o! – Sobreescribir todos los homólogos Type is I (binary/image). pulsa [Enter] para confirmar el nombre suge-
locales en descarga. rido por NcFTP, o se introduce el nombre ele-
• r! – Continuar la transferencia de ficheros Como puede apreciarse, type no sólo cambia gido para la marca:
para todos los ficheros. de modo, sino que muestra el modo actual.
• s! o c – Cancelar la acción para todos los Por último, el comando get tiene un pará- ncftp> bookmark
procesos. metro -f que le dice al cliente que sobreescriba Enter a name fo this U
los ficheros existentes, sin solicitar el añadido, bookmark, or hit enterU
NcFTP: Flexible reanude la descarga, o todo como esto. for “debian”: debiantest
Al igual que ls, get posee determinadas opcio- Bookmark “debiantest” saved.
nes con características adicionales. Para trans- NcFTP: Background
ferir un fichero completo recursivamente (es Algunos comandos NcFTP ejecutan automá- El clientre NcFTP también permite guardar
decir, incluyendo todos sus ficheros y subdi- ticamente acciones cliente como procesos de una marca cuando se introducen close o quit.
rectorios), tendremos que hacer lo siguiente: fondo. El uso de los comandos bgget, bgput o De hecho, NcFTP incluso soportará cuentas de
bgstart ofrecen la ventaja de dejar liberar protección de contraseñas, almacenando
ncftp> get -R directorio inmediatamente el prompt del cliente FTP (encriptadas) los credenciales bajo el directorio
para más comandos. de inicio del usuario en .ncftp/bookmarks.
Además, get posee un parámetro que permite Primero debe decírsele al programa la La próxima vez que se abra la misma cone-
a los usuarios almacenar un fichero con un dirección de transferencia y los datos fuente xión se introduce open y se le pasa el nombre
nombre diferente. El comando siguiente: mediante la ejecución de los comandos bgget de la marca. Alternativamente, se introduce
y bgput (Listado 3). De nuevo, ejecutando el open y se pulsa [Enter] para presentar una lista
ncftp> get -z README README.TXT comando (bg)put se suponen privilegios de de marcas. A propósito, el comando book-
escritura (write) en el servidor. marks también presentará una salida similar.
almacenará el fichero README como El comando jobs presenta los trabajos de En este modo, el cliente FTP incluso ofrece
README.TXT localmente. transferencia que se encuentran en espera en una editor simple que puede ser usado para
Adicionalmente, get dispone de otra prác- cola. La transferencia puede comenzarse editar las marcas propias:
tica característica, especialmente para fiche- introduciendo el comando bgstart. NcFTP • [Enter] – Abre una conexión a la dirección
ros de texto: por defecto NcFTP usará modo empezará entonces a procesar los trabajos en especificada.
el background (incluso des- • /ed – Edita la entrada especificada.
pués de que se abandone el • /del – Elimina la marca.
Listado 3: bgget programa), y almacenará los • /dup – Copia la marca.
01 ncftp ...e/pool/main/m/man2html > bgget *.deb resultados en un fichero de • /new – Añade una marca.
registro: Una vez que se han editado las marcas, puede
02 + Spooled: get man2html_1.5.-23.1_alpha.deb
pulsarse [X] para abandonar el editor de mar-
03 + Spooled: get man2html_1.5.-23.1_arm.deb
Watch the “/home/U cas. ■
04 + Spooled: get man2html_1.5.-23.1_i386.deb huhn/ .ncftp/spool/U
log” file to seeU
05 + Spooled: get man2html_1.5.-23.1_m68k.deb
RECURSOS
06 + Spooled: get man2html_1.5.-23.1_powerpc.deb
how it is progressing
[1] Sitio web de NcFTP: http://www.ncftp.
07 + Spooled: get man2html_1.5.-23.1_sparc.deb com
tail -f es útil para monitorizar

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


LINUX USER 

Adelanto: Ballistics

VELOCIDAD PURA
Hay juegos de coches, de conducción, de carreras y también podemos encontrar un pequeño reducto de

juegos de velocidad. El título que nos ocupa este mes podría ser el buque insignia de los de este tipo,

donde lo único importante es la velocidad y que nuestros reflejos estén a la altura de las circunstancias.

POR VICENTE CARRO

S
eguramente si comentásemos que (en forma de parche, ya que el original máxima velocidad en lugar de tener una
el creador de este juego es el sigue en inglés) e incluso se está traba- buena técnica derrapando, tomando cur-
estudio Grin[1], muy pocos jando para que en la fecha de lanza- vas, aprovechando rebufo y ese tipo de
sabrían de quienes estamos hablando. miento esté disponible un segundo par- cosas a las que nos tienen acostumbra-
En cambio, la mayoría de los lectores los che que nos permita oír las voces del dos los juegos de carreras/conducción
reconocerán tan pronto como sepan que juego en nuestro idioma. Si bien se ha habituales. En Ballistics una carrera nor-
son los programadores de juegos tan insistido en que el juego físico no mal consiste en pisar el acelerador,
emblemáticos (lamentablemente no dis- incluirá la localización al español, y que esquivar los obstáculos letales y coger
ponibles en GNU/Linux) como Tom ésta tendrá que instalarse después con tantos aceleradores como sea posible, así
Clancy’s Ghost Recon: Advanced War- los parches antes comentados que se de simple.
fighter y Tom Clancy’s Ghost Recon: podrán descargar desde la página de
Advanced Warfighter 2 para Windows. Guadagames[3]. Velocidad Terminal
Sobra comentar que desde sus primeros Cuando comencemos a jugar a Ballistics
tiempos sus maneras eran igual de bue- Otro juego de Carreras… nos encontraremos con unos circuitos no
nas que las actuales e incluso puede que Ballistics podría resumirse como un muy complicados, donde más o menos
más refrescantes. juego en el que varios corredores de podemos reaccionar a tiempo al ver los
motos flotantes corren por llegar los pri- obstáculos. Pero a medida que avance-
Prueba de Éxito meros en unos circuitos muy particulares mos en el juego se hará técnicamente
Y es que, hasta el lanzamiento de Ballis- aunque simples. Con este panorama, el imposible reaccionar a dichos obstácu-
tics en 2001, pocos habían sido los jue- lector podría pensar que ya ha jugado a los, dado que la velocidad de nuestro
gos que apostaban única y exclusiva- multitud de juegos similares y que no se vehículo aumentará drásticamente. Si
mente por una jugabilidad basada en la le plantea nada nuevo. Es más, podría además aumentamos el nivel de dificul-
velocidad pura, y menos aún los que con ver las capturas de pantalla que acompa- tad del juego, la velocidad de la nave
tan arriesgada apuesta han pasado a la ñan a este artículo y pensar acertada- seguirá aumentando. Con este pano-
historia. Ballistics[2] lo hizo, triunfó y mente que Ballistics no está al nivel grá- rama, la única manera viable de jugar es
ahora llega a nuestros ordenadores en fico de las producciones de hoy en día. Y memorizando los circuitos para poder
versión GNU/Linux, y además localizado finalmente podría concluir que es sólo colocarnos con suficiente antelación en
al español. otro juego más de carreras… pero se posiciones seguras antes de que sea
equivocaría. Ballistics no es un juego de demasiado tarde. Y es que la velocidad
Localización carreras al uso, es un juego de velocidad, que alcanzaremos en los niveles superio-
En el momento de escribir estas líneas de velocidad terminal. res no es cualquier cosa, superando con
Ballistics todavía no está a la venta y ni creces los 1000 Km/h y llegando en oca-
siquiera se puede encontrar la demo para ¿De Velocidad? siones a ir tan rápido que el sonido
GNU/Linux. Sin embargo, hemos tenido La principal diferencia de un juego de dejará de escucharse y nuestra visión
acceso a la última beta disponible gra- velocidad y uno de carreras es que, si nos mostrará una luz blanquecina en el
cias a la distribuidora Guadagames. Ade- bien en ambos se plantea una carrera o centro de la imagen, una luz que podría-
más, hemos podido comprobar la prome- competición como telón de fondo, en el mos entender como la entrada al cielo de
tida traducción de los textos al castellano de velocidad lo que prima es mantener la los locos por la velocidad. En ese

86    "!#%$&('*)+,)%-.!,/01/32



LINUX USER

momento habremos superado la barrera


del sonido montados sobre nuestra veloz
moto flotante.

Circuitos muy Peculiares


En Ballistics nos olvidaremos de los
habituales circuitos que conocemos. Los
circuitos están compuestos de tuberías y
las motos flotantes irán pegadas a la
parte interior de ellas. Para tener una
idea más visual, podemos imaginar que
nuestra moto irá corriendo por el interior
de las tuberías de nuestra casa. Incluso
en lo rebuscado del trazado se parece
Ballistics a una instalación habitual de
fontanería, ya que habrá trayectos de la
pista en cualquier dirección y sentido
imaginables, dándonos un circuito real-
mente tridimensional donde podremos
perder la orientación en cualquier
momento.
Afortunadamente no se han añadido Figura 1: Los escenarios están cuidados y son muy sorprendentes.
bifurcaciones o atajos al circuito, y se
agradece, porque de lo contrario habría A tu Manera Conclusión
sido casi imposible mantener altas velo- Otro aliciente de Ballistics es su nivel de Siendo el apartado gráfico lo peor de este
cidades durante largo rato. personalización. Podremos comprar pie- juego, y no por malo sino por anticuado,
zas para mejorar y personalizar nuestra el resto es muestra de muy buena fac-
Gráficos Modestos moto flotante. Estas compras se realiza- tura, siendo la adictividad su punto
Aunque la versión que nos ocupa está a rán con el dinero que obtengamos fuerte. Imprescindible para todos los
punto de aparecer, hay que recordar que ganando carreras, consiguiendo así un amantes de la velocidad pura, que no de
la versión PC tiene 6 años de antigüedad. aumento de la rejugabilidad de este la conducción. En cualquier caso, en
Por tanto, la calidad gráfica del título título. Las mejores piezas, que nos darán cuanto esté disponible la demo, probarlo
deja un poco que desear. Sin embargo, los mejores resultados, tendrán precios será un imperativo. ■
en cuanto empecemos a correr apenas muy elevados que sólo podremos pagar
podremos ver nada con nitidez (debido a ganando un importante número de Puntuación
la velocidad) y esta falta de calidad carreras.  

pasará a un segundo plano. Además, que


los gráficos sean modestos no implica
Una vez tengamos suficiente dinero
para hacer algunas compras, tendremos
• Velocidad
• Adictivo
8
que no podamos ver sugerentes escena- que fijarnos bien en los cambios de los
rios por las zonas acristaladas del cir- parámetros de nuestra moto, ya que si • Estará localizado al
cuito, algunos bajo tierra, otros al aire bien algunas configuraciones son estu- español
  
 


libre e incluso otros en las profundidades pendas, otras desestabilizarán la moto


del mar. de tal manera que será prácticamente • Gráficos algo anticuados
inútil. • Difícil cuando avanzamos
Control
Los controles por defecto son algo Con Amigos M<ejor
inusuales, aunque podremos personali- Además tendremos opción de jugar RECURSOS
zarlos como deseemos. Además podre- online contra nuestros amigos en trepi- [1] Estudio Grin: http://www.grin.se
mos hacer uso de un joystick o del ratón, dantes carreras. Para ello LinuxGamePu-
[2] Página oficial de Ballistics: http://
a pesar de que nuestra recomendación es blishing[4] ha hecho uso de su flamante
www.linuxgamepublishing.com/info.
que se utilice el teclado. Además de la librería GPL de juego online Grapple[5], php?id=13&
aceleración y el desplazamiento a sustituyendo así el motor online del
[3] Guadagames: http://www.
izquierda y derecha, tendremos un botón juego que, parece ser, no estaba muy
guadagames.com
para usar el turbo y otro para usar el depurado. Nosotros hemos podido echar
[4] LinuxGamePublishing: http://www.
refrigerador. Este último será útil para no un par de carreras online contra los chi-
linuxgamepublishing.com
sobrecalentar el motor después de dema- cos de LinuxGamePublishing y el resul-
[5] Librería online GPL Grapple: http://
siadas colisiones, con la contrapartida de tado ha sido muy satisfactorio sin que
opensource.linuxgamepublishing.
que nuestro vehículo se frena?a notable- apenas hayamos notado lag (retraso en
com/grapple.php
mente en el proceso. las comunicaciones).

*+*+*-,/.10/2!346587:9!;'9<0=2>?,@>BA !#"%$'&)(
87
COMUNIDAD · Konsultorio

EL
KONSULTORIO
DE KLAUS
Si usamos una distro reciente, ¿Cómo puedo fijar el tamaño de página
/proc/sys/kernel/hotplug está vacío de mi navegador Web? Cuando cambio a
debido a que ya no se usa. La mayoría de las otro escritorio y pulso sobre “konque-
distros usan ahora udev(d) para autodetectar ror”, la página Web me vuelve a apare-
cambios en la configuración del hardware, cer en el tamaño original.
cargar los módulos e iniciar servicios tan
pronto como se conecta algo en caliente. En el Existe una configuración en el
Número 24 de la revista Linux Magazine edi- perfil del navegador al arrancar.
ción en castellano se habla de este tema. Tras redimensionar Konqueror a la geo-
Klaus Knopper es el creador de
udev, junto con HAL (hardware abstraction metría deseada, nos dirigimos al menú
Knoppix y co-fundador de la layer), notifica al escritorio cualquier conexión Settings y elegimos Configure View Profi-
de dispositivo a través del bus del sistema les.... En el cuadro (véase la Figura 1),
LinuxTag Expo. En la actuali- dbus, y el escritorio (si está configurado para marcamos Save window size in profile y
ello) nos presentará varias opciones sobre qué guardamos este perfil como webbrow-
dad trabaja como profesor, hacer con el dispositivo: montarlo como disco sing, que es el perfil por defecto si Kon-
duro o acceder a él con algún programa ade- queror arranca en modo navegador Web.
programador y consultor. Si cuado (para discos de vídeo o cámaras digita- Nótese que también existe un bug en
les). Konqueror (al menos yo pienso que es
tiene algún problema de En cualquier caso, si tenemos /proc/sys/ker- un bug). Al arrancar con un tamaño defi-
nel/hotplug, el kernel ya está compilado con el nido, por ejemplo con:
configuración, o simplemente
soporte para conexión en caliente, soporte que
quiere conocer mejor cómo udev también necesita, no sólo a través del konqueror —geometry U
sencillo script ubicado en /proc/sys/kernel/hot- 850x600+85+70 U
funciona Linux, no dude en plug. http://www.debian.org/
Las configuraciones específicas de la cone-
escribir sus preguntas a: xión en caliente y los script se guardan en como se realiza con algunos scripts, Kon-
/etc/udev/*. El archivo de configuración res- queror parece “recordar” esta geometría
klaus@linux-magazine.com ponsable de mostrar o retirar los iconos del inicial e intenta fijarla automáticamente
disco en el escritorio, o de iniciar los progra- en cada página que se carga, lo cual
mas asociados es /etc/udev/hal.rules, que rea- puede resultar bastante molesto.
Conexión en Caliente en liza las llamadas para las acciones específicas
Dapper Drake a través de un socket al que escucha nuestro Pendrive USB de Arranque
Acabo de leer el artículo acerca de la escritorio. Knoppix también hace uso de esta Soy nuevo en Linux y quiero crear una
conexión en caliente del número 24 funcionalidad para añadir entradas en unidad de arranque USB. ¿Alguna
de Linux Magazine y me gustaría realizar /etc/fstab, y para crear sus propios iconos para página que me pueda guiar paso a paso en
algunos experimentos. El archivo el escritorio KDE, pero este tipo de adaptación este propósito?
/proc/sys/kernel/hotplug lo tengo vacío es específica de cada distribución. Crear una unidad de arranque USB es (téc-
tanto en mi sistema Drake como en FC5. nicamente) sencillo. Yo empezaría con una
¿Tengo que compilar el kernel para conse- Fijar el Tamaño de Página breve introducción al tema de arrancar desde
guir ambas funcionalidades? En ese caso, Correcto USB.
¿cómo consigue Ubuntu montar automáti- Soy novato en Linux y estoy No todas las placas base son capaces
camente las memorias USB? usando PClinusOS en mi equipo. de arrancar desde USB. Más aún, algu-

88 Número 28 WWW.LINUX-MAGAZINE.ES
Konsultorio • COMUNIDAD

ciones que contie- sfdisk -A1 /dev/ sda


nen la información
principal de Knop- Para reparticionar la unidad USB podemos
pix (por ejemplo, usar las mismas herramientas que usamos
los sistemas de para un disco duro normal (es decir, qtpar-
archivos comprimi- ted o, mi favorito: fdisk o sfdisk).
dos cloop). El tipo de partición para un sistema de
Existen aún archivo DOS/FAT (el menos problemático
muchas cosas que para el arranque desde una unidad USB)
pueden ir mal en sería “6” para FAT16 y “b” para FAT32. Usa-
un arranque desde mos FAT16 para particiones menores de 2GB
USB, incluso si y FAT32 si son mayores. Véase arriba el
seguimos los pasos comando de sfdisk para fijar el flag de la par-
correctamente. Es tición como “arrancable” (o “activo”), lo
probable que no cual es independiente del sistema de archivo
sea culpa nuestra si de las particiones o del contenido.
Figura 1: Guardamos el tamaño de ventana en el perfil de Konqueror. la cosa no funciona. El comando de mkdosfs para dar formato
Para los siguien- a una partición FAT16 como /dev/sda1 es:
nas combinaciones de pendrives USB y placas tes ejemplos vamos a usar /dev/sda como
no arrancan juntas, aunque lo hagan por nombre del dispositivo del pendrive USB. mkdosfs -F16 /dev/sda1
separado. Además de esto, algunas combina- Esto puede ser incorrecto en muchos casos,
ciones de teclado sólo arrancan de ciertas especialmente si nuestro equipo alberga dis- Mientras que para FAT32, sería:
maneras, en función de cómo se preparó la cos SATA. Es aconsejable volver a verificar
llave USB y cómo se configuró la BIOS. el nombre de dispositivo asignado al dispo- mkdosfs -F32 /dev/sda1
Para terminar de empeorar las cosas, algu- sitivo USB cada vez que lo conectemos.
nas llaves intentan empezar a cargar el sis- Para la mayoría de los comandos no vamos No hace falta decir que, llegados a este
tema operativo pero yerran en los procedi- a necesitar permisos de root si los archivos del punto, perderemos toda la información
mientos del checksum de la BIOS interna dispositivo que están en /dev se pueden escri- que resida en la partición. Por lo que si
tras transferir unos pocos kilobytes de infor- bir por un usuario de cuenta normal y son reparticionamos y reformateamos un
mación. He visto incluso casos en los que el montables mediante las correspondientes pendrive USB, deberíamos hacer copia
éxito depende de qué puerto USB usemos y entradas de /etc/fstab. En caso contrario, usa- de seguridad de toda la información de
si usamos o no un cable entre el pendrive y remos sudo o un shell de root, con lo que la partición (y posiblemente de toda la
el ordenador. debemos ser especialmente cuidadosos. información de toda partición del disco
Esto puede que no suene muy promete- Paso 1: Creamos el sistema de archi- que podamos confundir con la unidad
dor. Sin embargo, la mayoría de las combi- vos Algunos pendrives USB sólo arrancan USB en un momento dado).
naciones de placa (capaz de arrancar desde si se particionan de cierta manera, y algu- Muchos pendrives USB no muestran la
USB) y llave, funciona. Un arranque desde nas BIOS aparentemente buscan un cierto nueva tabla de particiones inmediata-
un pendrive USB es una buena manera de tipo de cabecera de partición y sistema de mente, por lo que es buena idea sacar y
ejecutar Knoppix, ya que podemos guardar archivo, o renunciarán a arrancar. Hemos reconectar el pendrive USB o disco duro
nuestra imagen persistente (o disco virtual tenido casos en los que una placa sólo cada vez que sigamos los pasos anterior-
escribible) directamente en el mismo pen- quería arrancar desde un pendrive USB mente mencionados. Volvemos a verifi-
drive. sin particionar, y otros en los que se car la nueva partición con:
Tenga en cuenta que hay algunos obstá- requerían tanto el flag de un sector de
culos que tenemos que superar en el pro- arranque DOS como el de la partición de cat /proc/partitions
ceso de arranque. En el momento en el que arranque.
el bootloader debería leer el kernel de Linux En primer lugar podemos probar con tras haberlo conectado de nuevo y des-
y el initrd desde el pendrive, no hay sistema una tabla de particiones por defecto y un pués de algunos (bastantes) segundos.
operativo que se esté ejecutando, y la BIOS sistema de archivos más o menos sin (Algunas unidades son bastante lentas
del ordenador debe hacer todo el trabajo de modificar. La mayoría de los pendrives en la detección de la tabla de particio-
detectar las particiones y cargar la informa- USB recientes tienen una (especie de) nes). Si la unidad ya aparece como un
ción de la unidad sin tener ningún otro “dri- tabla de particiones válida en la que la pri- nombre de nuevo dispositivo (es decir,
ver” disponible más que los del firmware de mera partición primaria está formateada sdb en lugar de sda), probablemente
la BIOS en la placa. Por otro lado, tan en FAT16 o FAT32. En este caso debemos hemos olvidado desmontar el sistema de
pronto como se carga el kernel de Linux, la asegurarnos de que la partición es arran- archivos antes de desconectarla. Pode-
llave USB “desaparece”. En otras palabras, cable. mos hacerlo ahora. No obstante, segura-
ya no es visible y tiene que re-detectarse por Para una partición de un pendrive USB mente no exista ya, tras la repartición de
el kernel usando los módulos del disco que aparezca como dev/sda1, el comando la unidad.
RAM inicial que contiene los drivers USB y para configurar el flag como “arrancable” Para los pendrives USB sin partición
el sistema de archivos usado por las parti- sería: (si el método de arranque particionado

WWW.LINUX-MAGAZINE.ES Número 28 89
COMUNIDAD · Konsultorio

falla), nos saltamos el paso de particio- cp /cdrom/boot/isolinux/* U la correcta, pero en realidad depende de
nado y tecleamos el comando mkdosfs /media/usbkey lo que hayamos hecho en el paso 1.
sobre el pendrive USB entero.
Esa ha sido la parte más difícil, dado Mientras que isolinux busca todos los Solución de Problemas
que aún no se ha comenzado la instala- archivos de arranque en /boot/isolinux, Si nuestro pendrive USB no funciona a la pri-
ción. El resto es realmente fácil. syslinux los busca en el directorio / del sis- mera, el problema podría ser:
Paso 2: Instalar syslinux como cargador tema de archivos FAT. • Que el pendrive USB no se reconozca como
del kernel Pero…un momento… ¡syslinux da un arrancable en la secuencia de arranque.
Lo que isolinux hace para un CD o DVD, nombre diferente a su archivo de Debemos comprobar que la configuración
syslinux lo hace para particiones o discos for- configuración! de la BIOS se ajusta a la manera en la que
mateados en DOS. hemos preparado la unidad, podemos inten-
Para unidades particionadas: mv /media/usbkey/isolinux.cfg U tar conectarla a otro puerto USB y, como
/media/usbkey/syslinux.cfg último recurso, probar a preparar el pendrive
syslinux /dev/sda1 con otro método de los descritos anterior-
Podemos borrar con seguridad los archi- mente.
Para unidades no particionadas: vos específicos de iso/eltorito, ya que no • Que el pendrive USB arranque, pero que la
los vamos a necesitar. carga del kernel falle tras cierto tiempo, o
syslinux /dev/sda tras un “error de checksum”. En este caso,
probablemente el pendrive USB no funcione
(Debemos asegurarnos de que estamos rm -f U con esa placa base. Tenemos un buen índice
usando un nombre correcto de dispositivo /media/usbkey/isolinux.bin U de éxito usando pendrives “Trekstor”. Si el
para nuestro sistema). /media/usbkey/boot.cat presupuesto nos lo permite, podemos pro-
Si usamos un pendrive USB particionado, bar varias marcas en busca de alguno com-
podemos también configurar (o resetear) el En este punto, el pendrive ya es arranca- patible. Existe la posibilidad de que el pen-
sector de arranque adecuadamente. No obs- ble, y contiene tanto el kernel como el drive funcione en el otro modo (particio-
tante, no siempre es necesario hacer esto. initrd, y podemos comenzar a copiar los nado o sin particionar).
Puede que primero queramos ver si el arran- archivos de cloop, que residen en el direc- • Que el kernel y el initrd arranquen, pero que
que funciona sin cambiar el MBR. torio de Knoppix del CD. Knoppix se queje de que “no encuentra el
Instalamos un sector de arranque syslinux sistema de archivos de KNOPPIX” y nos
para unidades particionadas: rsync -Hav —progress U derive a un shell de rescate. El pendrive no
/cdrom/KNOPPIX U se detectó en el arranque. Esto puede ser
ms-sys -s devicename /media/usbkey/KNOPPIX debido a una respuesta lenta (las particiones
del pendrive no disponibles en el momento
Usamos /dev/sda si /dev/sda1 es la partición Una vez hecho esto, tenemos que des- en el que linuxrc trata de montarlas) o el
FAT16/FAT32 del pendrive USB. Debemos montar el dispositivo para poder sincroni- controlador no está soportado. Aparente-
vigilar que el nombre del dispositivo sea zar el búfer de datos pendientes a disco y mente la BIOS tuvo conocimiento del pen-
correcto. cerrar la sesión. No se sorprenda si este drive USB en un primer momento, aunque
Paso 3: Copiamos los archivos de arran- comando se toma un buen tiempo en eje- Linux no lo encuentra más tarde. Ha de
que y la información cutarse. Puede haber muchos datos sin recordarse que la BIOS usa un conjunto de
En este paso, tenemos que montar el pen- escribir en memoria debido la fabulosa drivers completamente diferentes para el
drive USB (o partición, si usamos el modo par- caché del búfer dinámico de bloques de pendrive de los que incluye Linux. Este
ticionado) en modo sensible a mayúsculas: Linux, que hace parecer que las escrituras inconveniente puede ser un problema de
en disco son más rápidas de lo que real- interrupciones con el controlador. En este
mkdir -p /media/usbkey mente son. caso, los cheatcodes candidatos de Knoppix
mount -t vfat -o rw,umask=U pueden ser de utilidad:
000,shortname=winnt U umount /media/usbkey
/dev/sda1 /media/usbkey knoppix acpi=off U
Paso 4: Configurar la BIOS del ordena- noapic pnpbios=off U
A continuación, deberíamos cambiar dor pci=bios irqpoll...
/dev/sda1 a la partición en cuestión, y Una placa capaz de arrancar desde USB
entonces saltarnos el número de la parti- normalmente tiene al menos dos modos de Knoppix 5.1.0 incluye un script llamado
ción en caso de usar todo el pendrive. arranque por USB: mkbootdev, escrito por Martin Öhler y yo
Copiamos ahora los archivos de arran- • Arranque desde disco duro USB mismo, que realiza todos los pasos comenta-
que desde el CD o DVD de Knoppix. Vamos • Arranque desde unidad ZIP USB dos con unos pocos golpes de ratón. Si ejecu-
a suponer que el CD se monta en /cdrom en lo que debería en realidad llamarse “arranque tamos mkbootdev desde un terminal en un
una sesión live de Knoppix, aunque en rea- desde una unidad USB particionada” y “arran- sistema Knoppix CD o DVD mientras está
lidad podemos realizar estos pasos perfec- que desde una unidad USB sin particionar”. conectado nuestro pendrive USB sin particio-
tamente con cualquier distribución de Para nuestro nuevo pendrive USB “por nes montadas, nos guiará a través de los pasos
Linux. defecto”, la opción disco duro USB sería 1 al 3. ■

90 Número 28 WWW.LINUX-MAGAZINE.ES
EDITORIAL

AGNESIA

Viene de la página 3 biendo programas de código abierto. incapaz de casar esta aparente con-
Precisamente uno de los beneficios tradicción interna, obligándose a
Se buscaba disipar así las dudas y del software libre es que es un igua- situarse en un extremo (el mercan-
temores que expresaban las corpora- lador en ambos sentidos, evitando tilista) u otro (el fundamentalista)
ciones a la hora de su adopción y los obscenamente excesivos benefi- del espectro del movimiento. Esta
desmentir a aquellos que la acusa- cios del software propietario, la falta de comunicación entre los dos
ban de comunista. Pero esa insisten- venta del cual es, en palabras de Jeff lóbulos del software libre es extre-
cia, como señaló el señor del párrafo Atwood [2], “lo más parecido a madamente grave y está en la raíz
anterior, se ha cobrado un precio. imprimir tu propio dinero”. (Por de la creciente apatía y riñas inter-
Los entusiasmados estudiantes de supuesto que el efecto igualador no nas que se producen últimamente
antaño han crecido y, por haber sólo afecta a los que desarrollan en la comunidad, hasta el punto de
donado su tiempo y esfuerzo antes, software libre, sino también a los que podría llevar a una escisión en
creen tener derecho a un trozo de fabricantes del software propietario, el movimiento, dejando a ambas
pastel ahora. obligando a una racionalización del partes resultantes cojas, cojo de
Desgraciadamente, las cosas no mercado. Por eso es tan odiado). ideología y altruismo un lado, y
son tan sencillas. Por un lado, si hay Por otro lado, el fundamenta- cojo de pragmatismo y financiación
algo intrínseco a la filosofía del soft- lismo, entendido como el funda- el otro.
ware libre es que es un gran iguala- mento ideológico del movimiento, Puede que la crisis pase, pero se
dor. Es decir, si tienes la pericia y el es necesario, ya que es el baremo necesitará que la comunidad eche
conocimiento técnico para utilizar- contra el cual todo lo demás se ha mano de sus recursos y fuerza para
las, te da las herramientas a las cua- de medir. Representa la vara que evitarlo. Aún estamos a tiempo
les, en otras circunstancias, nunca nos ayuda a decidir lo que entra y lo para aplicar parches.
podrías aspirar por su coste. Con que no en el software libre y en qué Sólo espero que no tenga que ser
estas herramientas podrás crear medida. Es un ideal hacia el cual yo el que de el aviso de la próxima
todos los aplicativos que te vengan hay que trabajar, aún teniendo la muerte anunciada. ■
en gana, sin límites, sin cuotas, sin certeza que no se va a alcanzar
tener que gastarte una fortuna en jamás. PERO no se puede exigir que
licencias. Sin embargo, no se debe todos los miembros de la comunidad
esperar alcanzar los ingresos de actúen de manera perfectamente
Gates o Ellison solamente escri- ortodoxa y siguiendo al dedillo las
vidas ejemplares de San
Stallman y similares. Hay
que admitir dentro del seno
del movimiento al aprove-
chado, al mercachifle y al
oportunista potencial o
confirmado y no entrete-
nerse demasiado en juzgar
su catadura moral, sino que Paul C. Brown
hay que aplicar las licen- Director
cias y los otros mecanismos
de protección del software
libre, transformando lo que
en otro medio sería un
parasitismo, en una simbio- RECURSOS
sis. [1] Artículo de Paul Graham donde
El miembro de la comu- anuncia la muerte de Microsoft:
http://www.paulgraham.com/
nidad se percata, en cada
microsoft.html
evento, en cada artículo,
www.sxc.hu

en cada entrada de cada [2] Coding Horror, Where Are All the
blog, al menos inconscien- Open Source Billionaires?: http://
temente, de esta dicoto- www.codinghorror.com/blog/
archives/000842.html
mía. En muchos casos es

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


PRÓXIMO NÚMERO

PRÓXIMO NÚMERO
Intrusos
Jugar al ratón y al gato con tus preciados datos no
es lo más agradable del mundo, pero pensar que
tus cosas no le pueden interesar a nadie y que, por
tanto, no tienes que ser especialmente cuidadoso
con la seguridad, es todavía peor.
¿Están tus puertas cerradas y atrancadas? ¿Están
tus datos a salvo? En los inicios de la red los prime-
ros intrusos eran inocentes estudiantes con ganas
de experimentar, pero de un tiempo a esta parte las
cosas se han vuelto mucho más feas. El robo de
identidad y el tráfico de información confidencial
es un enorme negocio ilegítimo que mueve millo-
nes de dólares al año, sin que el usuario medio sea
consciente de lo expuesto que está.
En el próximo número de Linux Magazine estu-
diamos dos de las técnicas más utilizadas por los
ladrones de datos, descubriendo cómo se abren
puertas traseras en nuestros sistemas y cómo se
intercepta el tráfico entre varias máquinas, para, a
continuación, mostrar otras sencillas técnicas para
monitorizar y asegurar nuestro entorno.
Si pretendes mantener la confidencialidad y
seguridad de tus datos a buen recaudo, no te pue-
des perder el número 29 de Linux Magazine.

OpenLaszlo OpenOffice y MySQL


Con la recién conocida noticia de que Gnash, la implementación libre de Base está muy bien, pero ¿qué pasa si necesitas una base de
Flash,ya es capaz de reproducir vídeos de YouTube,la idea de que podamos datos con un poco más de músculo o quieres aprovechar la
volver a disfrutar de una web completamente libre ha dejado de ser una infraestructura MySQL que ya funciona en tu empresa?
quimera. La integración de OpenOffice con MySQL no es tan senci-
Para que no pille a los desarrolladores desprevenidos, traemos Open- lla, pero Dmitri Popov, el hombre responsable de hacer nues-
Laszlo: una plataforma para el desarrollo rápido de aplicaciones para web. tro sitio de trabajo más productivo, nos explica en un porme-
Utilizando XML, OpenLaszlo permite crear interfaces y sofisticadas aplica- norizado artículo cómo conseguirlo. Veremos con él ejem-
ciones,con animaciones,sonido y 3D de una manera sencilla y eficiente. plos que nos servirán en nuestro día a día ante el ordenador.

A LA VENTA: JULIO 2007


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

Potrebbero piacerti anche