Linux Magazine - Edición en Castellano, Nº 09

100
Seguridad Hotspotter SSPE ARP Spoofing Konqueroer Música en red Universo Virtual Inkscape Notebook Ubuntu Konqueror El navegador de KDE que conquistará el escritorio p72 Música en red Crea tu propio sistema de hilo musical p43 NÚMERO 9 P.V.P 5,95 Inkscape Diseño vectorial profesional bajo Linux Incluye corrección de errores 3.1 r0a 6500 paquetes La última versión de la distro más estable DEBIAN SARGE 3.1 Thunderbird Configuración avanzada para privacidad de correo WWW.LINUX - MAGAZINE.ES LINUX MAGAZINE NÚMERO 09 Edición en Castellano SEGURIDAD Los secretos de los intrusos de la red Hotspotter: descubre vulnerabilidades en tu red p14 Protege tu LAN de ARP spoofing p18 Administración de cortafuegos con SSPE p24 Podcatching Recibe y reproduce música sobre RSS ¡sin un iPod! p36

description

Puesto a la venta septiembre 2005. tema de Portada: Seguridad contra Intrusiones. DVD: Debian Sarge 3.1

Transcript of Linux Magazine - Edición en Castellano, Nº 09

Page 1: Linux Magazine - Edición en Castellano, Nº 09

Se

gu

rida

dH

otsp

otte

r SS

PE

AR

P S

po

ofin

g K

on

qu

ero

er M

úsic

a e

n re

d U

nive

rso V

irtua

l Ink

sca

pe

No

teb

oo

k U

bu

ntu

KonquerorEl navegador de KDE que

conquistará el escritorio p72

Música en redCrea tu propio sistema

de hilo musical p43

NÚMERO 9 • P.V.P 5,95 €

InkscapeDiseño vectorialprofesional bajo Linux

Incluye corrección

de errores 3.1 r0a

6500 paquetes

La última versión de ladistro más estable

DEBIAN SARGE 3.1 ThunderbirdConfiguración avanzadapara privacidad de correo

W W W . L I N U X - M A G A Z I N E . E S

LIN

UX

MA

GA

ZIN

E

ME

RO

09

Edición enCastellano

SEGURIDADLos secretos de los intrusos de la red

Hotspotter: descubre vulnerabilidades en tu red p14

Protege tu LAN de ARP spoofing p18

Administración de cortafuegos con SSPE p24

PodcatchingRecibe y reproduce

música sobre RSS

¡sin un iPod! p36

Page 2: Linux Magazine - Edición en Castellano, Nº 09
Page 3: Linux Magazine - Edición en Castellano, Nº 09

Leo enbarrapun-to que

Trolltech, laempresa creadorade las libreríasQt, base del escri-torio KDE, finan-

ciará el trabajo de Aaron J. Seigo. Seigoes un desarrollador de KDE que está cre-ando un nuevo paradigma de escritorio y,al tiempo, mejorando la estética de ico-nos y superficie de trabajo con su proyec-to Plasma (ver http://plasma.bddf.ca/).Después pienso en Linus Torvalds, finan-ciado por la OSDL (IBM, HP, Intel y otros)o en Daniel Robbins, creador de Gentoo,financiado por Microsoft, y me pregunto¿no se estarán convirtiendo los programa-dores en los modernos bohemios, que aligual que los artistas visionarios de anta-ño, si no encontraban un mecenas queles protegiera/explotara estaban conde-nados a una vida de miseria y penalida-des?

Desde el renacimiento hasta muyrecientemente, los artistas tenían quebuscarse un papa, rey o corte quien lesacogiera y que, en el mejor de los casos,les tolerasen las excentricidades a cambiode sus obras maestras (Da Vinci, Mozart)o que, en el peor, los tratasen comomeros funcionarios del pincel o de la par-titura (Velázquez, Bach).

Pero incluso aún peor que esta últimaopción, era no encontrar ningún padrinoque financiase sus trabajos y consumirsede tisis en algún oscuro, húmedo y fríoagujero ubicado en un barrio marginal deParís.

Alguno puede argumentar que estoúltimo al menos conserva un mínimo deromanticismo. Pero tal y como está elpanorama del desarrollo en España,donde lo único que le interesa a las soft-

ware factories son chavales recién salidosde la universidad a quienes explotardurante un periodo de prueba, para des-pués echarlos a la calle, no te queda nieso, ni mucho menos dignidad. En seme-jantes firmas, no hay sitio para la brillan-

tez o la innovación, y aún añadi-ría, ni para el orgullo de lo artesa-nal bien hecho. Por tanto un vir-tuoso de la programación no va aencontrar en ellas el patrocinioque necesita, máxime cuando enmuchas se considera invertir enI+D el hecho de comprarmuchas cajas de cereales Kellogscon la esperanza de que toque unratón inalámbrico.

¿Que nos queda pues? ¿La uni-versidad? ¡Ah, la universidad!Permítame el lector que le cuenteun interesante relato sobre la uni-versidad. Jose Antonio (y sunovia Ana) son dos brillantes matemáti-cos, becados por la universidad deMálaga que han conseguido sendos doc-torados merecedores de cum laude en elárea de programación distribuida sobreclusters creados a partir de equipos deconsumo.

No sólo han desarrollado un sistemapara optimizar la compilación del código,multiplicando la velocidad de procesopor 16, sino que han creado una aplica-ción práctica donde aplicar los conoci-mientos adquiridos: damflow (ver dam-

flow.org), un simulador de movimientode grandes masas de fluidos que sirvepara predecir el comportamiento y losefectos de inundaciones, vertidos acci-dentales y la intervención (y obstaculiza-ción) humana (construcción en cauces deríos, tierra ganada a la mar, etc.) en elnatural discurrir de aguas y lodos.

Este software puede ser vital para evi-tar pérdidas de vidas humanas y bienesmateriales al permitir una previsión deposibles desastres relacionados con gran-des movimientos de líquidos. El proble-ma es que Jose Antonio (y Ana) ya sondoctores y se les acaba el chollo (si chollose considera percibir 300 euros al mes) yla universidad de Málaga ya no sabe quéhacer con ellos.

Sus opciones se reducen a sacarse unasoposiciones para convertirse en profeso-res de instituto para intentar inducirle elamor a las matemáticas a adolescentes

que, en muchos casos, ni les entenderán,ni les interesará lo que están contando.

Recientemente tuve la oportunidad decompartir mesa con un programadorespecializado en clusters que estaba alcargo de un monstruo de 2500 nodos ubi-cado en una universidad catalana. Leconté lo que pasaba por Málaga y el des-arrollador, perteneciente al clan de DeepComputing de IBM, pareció molesto porel hecho de que en un humilde departa-mento de análisis matemático de unauniversidad de provincias, un equipo detres o cuatro personas se hubiera atrevidoa pasar de todo y hubieran montado supropio cluster, sin contar con el GranAzul. Alegó reinvención de la rueda,duplicación de esfuerzos, etc. Mi reaccióna eso es: Pues, señores, vayan ustedes allíy ofrezcan sus servicios y productos paraque esta gente no tenga que pasar por elproceso de reinvención y puedan progre-sar en lo que realmente les interesa: elestudio del desplazamiento de grandesmasas de fluidos y salvar vidas humanas.

Pero eso sí, no esperen cobrar el traba-jo, porque si la universidad de Málaga notiene dinero para contratar a JoseAntonio (ni a Ana), dudo que lo tenganpara sus facturas.

3

EDITORIAL

3Número 09W W W . L I N U X - M A G A Z I N E . E S

Estimado Lector de Linux MagazineNos sentimos orgullosos de nuestrosorígenes como publicación, que seremonta a los primero días de la revo-lución Linux.Nuestra revista hermana,la publicación alemana Linux Maga-zin, fundada en 1994, fue la primerarevista dedicada a Linux en Europa.Desde aquellas tempranas fechashasta hoy, nuestra red y experienciahan crecido y se han expandido a lapar que la comunidad Linux a lo anchoy largo del mundo. Como lector deLinux Magazine, te unes a una red deinformación dedicada a la distribucióndel conocimiento y experiencia téc-nica. No nos limitamos a informarsobre el movimiento Linux y de Soft-ware Libre, sino que somos parteintegral de él.

ARTE MODERNO

Paul C. Brown

Director

Page 4: Linux Magazine - Edición en Castellano, Nº 09

4 Número 09

CONTENIDOS • Linux Magazine nº 9

W W W . L I N U X - M A G A Z I N E . E S

28 El portátil Linux

El HP NC4200 es un potátil diferente:

la distribución Ubuntu Linux con la

que viene soporta prácticamente

todas sus funcionalidades hardware.

31 Coldfusion

El nuevo servidor ColdFusion MX7 de

Macromedia permite crear aplicacio-

nes web de alto rendimiento.

36 Podcatching

Mostramos cómo recibir y reproducir

podcasts bajo Linux.

40 Thunderbird

Thunderbird ofrece varias opciones

para un correo seguro y la encripta-

ción de Enigmail basada en GnuPG

nos proporciona una capa de protec-

ción adicional.

43 Music box

Si tenemos una LAN en casa o en la

oficina ¿Poe qué no se utiliza para

algo realmente importante? ¡Escu-

char música!

PORTADA PRÁCTICO

48 Perl: Yahoo

Tres guiones en Perl los que seran

analizados que nos ayudarán a corre-

gir la ortigrafía, localizar a los compis

del colegio y ver la fotoos de vacacio-

nes de otras personas.

53 Universo virtual

Este mes vamos a crear un sistema

Solar “virtual” tridimensional emple-

ando VTK desde Python.

57 Reutilización de código

Python, Perl, Php, Ruby...todos ado-

lecen del mismo problema, tarde o

temprano tendremos que volver al

mundo real y trabajar con una libre-

ría C.

61 La Columna de Charly

62 Calcetines para el proxy

Este artículo describe la última ver-

sión del protocolo para proxy Socks y

muestra cómo se implementa.

DESARROLLO

ADMINISTRACIÓN

LINUX MAGAZINE

3 Editorial

6 Productos

7 Inseguridades

8 DVD Linux Magazine

10 Productos

12 Correo del lector

93 Suscripciones

97 Eventos

97 Información de Contacto

98 Próximo Número

14 Hotspotter

Los puntos de acceso público hacen

que sea bastante fácil para los ata-

cantes secuestrar conexiones, tal y

como lo demuestra la Herramienta

Hotspotter.

18 Trucos de Tráfico

Las Técnicas denominadas ARP spo-

ofing y poisoning permiten a un ata-

cante manipular y curiosear tráfico

facilmente.

24

Control Central

El Simple Security Policy

editor(SSPE) nos ayuda a organizar

nuestra red y mantener las politicas

deseguridad a través de múltiples

cortafuegos.

pic

z, ww

w.s

xc.h

u

Page 5: Linux Magazine - Edición en Castellano, Nº 09

5Número 09W W W . L I N U X - M A G A Z I N E . E S

81 Educación

Terminamos esta breve presentación

de ATNAG mostrando varios juegos,

y cómo se crean y organiza su explo-

tación en el cuaderno de clase.

86 Rock y consola

Echamos un vistazo a las aplicacio-

nes que rocanrolean desde la líneade

comandos.

90 Eventos

En verano el ambiente es propicio

para montar algún evento de propor-

ciones montruosas con el fin de

difundir el uso del software libre.

95 Trucos

Este mes los redactores de Linux

Magazine lidian con un Grub de un

lector que se niega a hacer su labor.

ADMINISTRACIÓN LINUX USER

LINUX USER

COMUNIDAD

67 Cuentas

En el artículo de este mes veremos las

técnicas para configurar las cuentas

de los usuarios y cómo configurarlas

según sus necesidades.

72 La conquista del escritorio

Konqueror de KDE 3.4 es una herra-

mienta perfectamente versátil que se

siente en la web cómo en casa.

76 Desktopía

xdesktopwaves nos permite con-

vertir el escritorio en un paisaje acuá-

tico.

Podemos añadir lluvia y tormentas o

simplemente arrastrar el ratón para

animar las cosas.

78 Inkscape

Inkscape trae a los usuarios de Linux

la potencia de los gráficos vectoriales.

Nuestro taller enseña cómo utilizar

este programa.

� DVD de arranque de fácilinstalación

� Un amplio abanico de aplica-ciones, para oficina, servido-res, Internet, etc...

� Incluye KDE 3.4, GNOME 2.10,OpenOffice.org 2.0, Xen 2.0

� Kernel 2.6.11

� SELinux

Más información en la página 9.

3.1 sarge

mza

ch

a, w

ww

.sxc.h

u

sain

e, w

ww

.sxc.h

ulu

si, w

ww

.sxc.h

u

Page 6: Linux Magazine - Edición en Castellano, Nº 09

Distribuidor Fuente Seguridad ComentarioDebian Info:http://www.debian.org/security/ Los avisos de seguridad actuales se in-

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

enlaces a los parches. Los avisos también

incluyen una referencia a la lista de

correo.

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

Lista:http://www.gentoo.org/main/en/lists.xml seguridad de Gentoo enlazan desde la

Referencia:GLSA:… 1) página principal. Los avisos se presentan

en HTML con códigos para fusionar las

versiones corregidas.

Mandrake Info:http://www.mandrakesecure.net Mandrakesoft posee su propios 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

avisos seguridad y referencias a las

listas de correo.Los avisos son páginas

HTML,pero no contienen enlaces a los

parches.

Red Hat Info:http://www.redhat.com/errata/ Red Hat archiva los fallos de seguridad

Lista:http://www.redhat.com/mailman/listinfo/ bajo lo que denominan erratas.A

Referencia:RHSA-… 1) continuación los problemas para cada

versión de Red Hat se agrupan.Los avisos

de seguridad se proveen como una

página HTML con enlaces a los parches.

Slackware Info:http://www.slackware.com/security La página de inicio contiene enlaces al

Lista:http://www.slackware.com/lists/(slackware-security) archivo de seguridad de la lista de correo.

Referencia: [slackware-security]… 1) No existe información adicional sobre

seguridad en Slackware.

Suse Info:http://www.suse.de/en/private/support/ Ya no existe un enlace a la página de

security/index.html seguridad tras un remodelado en el sitio

Parches:http://www.suse.de/en/private/ web de SuSE.Existe información en la

download/updates Lista:suse-security-announce lista de correos y los avisos. Los parches de

Referencia:SUSE-SA… 1) seguridad para versiones individuales de

SuSE Linux se muestran de color rojo en el

sitio de actualizaciones generales.

Contiene una corta descripción de la

vulnerabilidad que soluciona el parche.1) Todos los distribuidores muestran correos de seguridad en el campo Subject.

POLITICAS DE SEGURIDAD DE LAS DISTRIBUCIONES MAYORITARIAS

6

INSEGURIDADES

Schlagwort sollte hier stehenLINUX USERNOTICIAS

6 Número 08 W W W . L I N U X - M A G A Z I N E . E S

�OPENSSLOpenSSL es una herramienta que

implementa los protocolos SecureSockets Layer (SSL v2/v3) y TransportLayer Security (TLS v1) tan bien como loharía una librería criptográfica de propó-sito general.

Colin Percival informó de un ataquetemporizador de caché que permitiríaa un usuario local malicioso obtenerporciones de las claves criptográficas.El proyecto de Vulnerabilidades yExposiciones Comunes (CommonVulnerabilities and Exposures o CVE –http:// cve.mitre.org) ha asignado elnombre CAN-2005-0109 a este proble-ma. La librería OpenSSL ha sido par-cheada añadiéndole una nueva imple-

mentación mod_exp fijada a ventanapor defecto, para RSA, DSA y opera-ciones de clave privadas DH. Este par-che está diseñado para mitigar el ata-que temporizador de caché y todos losque estén potencialmente relaciona-dos.

Se encontró un defecto en la maneraen la que el script der_chop crea losficheros temporales. Es posible que unusuario local malicioso pudiera hacerque der_chop sobreescribiera ficheros(CAN-2004-0975). El script der_chop hasido desfasado y borrado de los paquetesactualizados. �

-Referencia Mandriva: MDKSA-2005:

096

-Referencia Red Hat: RHSA-2005:476-08

�GFTPgFTP es un cliente FTP multi-hilo para

el Sistema de ventanas X.Se encontró un error en el directorio

trasversal de gFTP. Si un usuario puedeser engañado durante la descarga de unfichero desde un servidor FTP malicioso,es posible sobreescribir ficheros arbitra-rios propiedad de la víctima. El proyectode Vulnerabilidades y ExposicionesComunes (Common Vulnerabilities andExposures o CVE – http://cve.mitre.org)ha asignado el nombre CAN-2005-0375 aeste problema.

De momento no se está trabajando ennada relacionado con esto. Los usuariosde gFTP deberán actualizar sus paquetes.Los nuevos paquetes contienen un parcheretroportado para este problema. �

-Referencia Red Hat: RHSA-2005:410-07

� MAILUTILSGNU MailUtils es una colección de uti-

lidades de correo, que incluye un servi-dor IMAP4 (imap4d) y un Agente deUsuario de Correo (mail). infamous41ddescubrió algunas vulnerabilidades enGNU Mailutils. imap4d no implementacorrectamente la impresión formateadade etiquetas de comandos (CAN-2005-1523), falla al validar la secuencia derango del comando “FETCH” (CAN-2005-1522) y contiene un desbordamien-to integrado en la rutina “fetch_io”(CAN-2005-1521). mail contiene un des-bordamiento de búfer en“header_get_field_name()” (CAN-2005-1520).

Un atacante remoto puede explotar lacadena de formato e integrar el desbor-damiento en imap4d para ejecutar códi-go arbitrario como un usuario imap4d, elcual habitualmente es root. Mediante elenvío de un mensaje de correo especial-mente manipulado, un atacante remotopodría explotar el desbordamiento debúfer en la utilidad “mail” para ejecutarcódigo arbitrario con los derechos de unusuario corriendo mail. También sepuede provocar un ataque de denegaciónde servicio (DoS) enviando un comandoFETCH malicioso a un imap4d afectado.

Todos los usuarios de GNU Mailutilsdeberán actualizarse a la última versióndisponible. �

006-007_Inseguridad_Linux9 14.09.2005 13:51 Uhr Página 6

Page 7: Linux Magazine - Edición en Castellano, Nº 09

INSEGURIDADES

7Número 08W W W . L I N U X - M A G A Z I N E . E S

pos de noticias, cliente chat IRC y editorHTML de código abierto.

Se encontraron algunos errores en lamanera en la que Mozilla ejecuta códigojavascript. El Javascript ejecutado desdeuna página web debería correr con unnivel de acceso restringido, previniendoacciones peligrosas. Es posible que unaweb maliciosa ejecutara código javascriptcon privilegios elevados, permitiendo elacceso a funciones y datos protegidos. Elproyecto Común de Vulnerabilidaes yExposiciones (Common Vulnerabilitiesand Exposures o CVE http://cve.mitre.org)ha asignado los nombres CAN-2005-1476,CAN-2005-1477, CAN-2005-1531 y CAN-2005-1432 a este problema.

Se aconseja a los usuarios de Mozilla quese actualicen a la última versión, la cual con-tiene la corrección a este problema. �

-Referencia Gentoo: GLSA200505-11/ mozilla

-Referencia Red Hat: RHSA.2005:

434-10;RHSA-2005:435-14

-Referencia Slackware: SSA: 2005-135-01

-Referencia Suse: SUSE-SA:2005:030

�GZIPgzip es una herramienta de compre-

sión de ficheros.

Zgrep en versiones de gzip anteriores ala 1.3.5 no saneaba los argumentos apro-piadamente, lo cual permitía a los usuarioslocales ejecutar arbitrariamente los coman-dos vía nombre de ficheros que se introdu-cen en un script sed (CAN-2005-0758).

Se produce una condición de carreraen gzip 1.2.4, 1.3.3 y versiones anterio-res cuando se descomprime un ficherogzip que permite a los usuarios localesmodificar los permisos de ficheros arbi-trarios a través de un ataque de unenlace duro a un fichero mientras estásiendo descomprimido (CAN-2005-0988).

La vulnerabilidad de un directoriotransversal “gunzip-N” en las versionesgzip 1.2.4 hasta 1.3.5, permite a los ata-cantes remotos escribir a directoriosarbitrarios a través de .. (punto punto)en el fichero original dentro de un fiche-ro comprimido (CAN-2005-1228)

Los paquetes actualizados están par-cheados para resolver estos problemas.�

-Referencia Gentoo:GLSA 200505-05 /

gzip

-Referencia Mandriva:

MDKSA-2005:092

-Referencia Red HAt:RHSA-2005:357-19

-Referencia Debian: DSA-732-1

-Referencia Gentoo: GLSA200505-20/mailutils; GLSA200506-02/mailutils

� FREERADIUSFreeRADIUS es una implementación

del servidor de autenticación de códigoabierto RADIUS.

Primoz Bratanic descubrió que la fun-ción SQL escape_func de FreeRADIUSpodría ser vulnerable a un desbordamientode búfer. También descubrió queFreeRADIUS falla al sanear la entrada deusuario antes de usarlo en una consultaSQL, permitiendo posiblemente la intro-ducción de un comando SQL.Suministrando una entrada cuidadosamen-te manipulada, un usuario malicioso podríainyectar instrucciones SQL en el desborda-miento de búfer. Todos los usuarios deFreeRADIUS deberán actualizarse inmedia-tamente a la última versión disponible. �

-Referencia Gentoo: GLSA 200505_13 /

freeradius

-Referencia Suse: SUSE_SR:2005:014

�MOZILLAMozilla es un avanzado navegador

web, cliente de correo y agente de gru-

006-007_Inseguridad_Linux9 14.09.2005 13:51 Uhr Página 7

Page 8: Linux Magazine - Edición en Castellano, Nº 09

DVD LINUX MAGAZINE

8 Número 09 W W W . L I N U X - M A G A Z I N E . E S

tema de instalación sin asistentes ofrecíapocas concesiones a los principiantes.Ahora, con la llegada de Debian 3.1, alfin se dispondrá de un sistema que esaccesible para todo el mundo. Con sunuevo instalador, un amplio abanico deaplicaciones de escritorio útiles, y unode los mejores paquetes de administra-ción de sistemas disponible en cualquierparte, Debian GNU/Linux está completa-mente preparado para un nuevo público.Nos sentimos orgullosos de poder ofre-ceros Debian 3.1. “Sarge” en el DVD deeste mes de Linux Magazine.

Nuevo InstaladorEl cambio más importante que introduceDebian 3.1, y quizás la razón másimportante por la que esta versión deDebian está en condiciones de llegarhasta la nueva generación de usuarios,es la llegada del nuevo instalador deDebian. El instalador suministra unaorganización y una configuración fácilesdel sistema Debian. Las opciones de ins-talación se presentan en un formato demenú muy cómodo.

Detrás de los escenarios, el instaladorDebian proporciona un administracióndisco y una detección de hardware mejo-

Docenas de distros embellecen laspáginas de Internet y, sin embar-go, el mundo entero sabe que

sólo hay un Debian. El muy respetadoDebian GNU/Linux merece un papelespecial dentro del panteón Linux, tantopor su tamaño y alcance como por suconciencia social colectiva. La distribu-ción Debian sobrepasa el tamaño, laenergía y la estabilidad de los principalesdistros comerciales. A pesar de todo,Debian es libre, sin ánimo de lucro ybasado en voluntariado.

Los expertos en Linux han venidousando Debian durante años, pero el sis-

DVD DE LINUXMAGAZINE

Linux kernel 2.4.27/2.6.8

XFree86 4.3.0

KDE 3.3

Gnome 2.8

OpenOffice 1.1.3

Firefox 1.0.4

GIMP 2.2.6

Apache 1.3.33

Samba 3.0.14

GCC 3.3

A destacar en Debian 3.1

rada. Debian utiliza la potencia de susuper sistema de paquetes para una ins-talación rápida, fácil y fiable. Tambiénofrece opciones avanzadas, tales como elarranque desde un dispositivo flash USB.Incluso se puede configurar RAID o

1. Debian Permanecerá 100% SoftwareLibre – Prometemos mantener laDistribución GNU/Linux enteramentesoftware libre. Daremos soporte a nues-tros usuarios que desarrollen y ejecutensoftware que no sea libre en Debian,pero nunca haremos al sistema depen-diente de un elemento de tal software.

2. Recompensaremos a la Comunidaddel Software – Cuando escribamos nue-vos componentes del sistema deDebian, los licenciaremos como softwa-re libre. Haremos el mejor sistema quepodamos, de forma que el software libretenga amplia difusión y uso. Enviaremosarreglos de errores, mejoras, peticionesde los usuarios, etc. a los autores origi-nales del software incluido en nuestrosistema.

3. No esconderemos Problemas –Mantendremos nuestra base de datosde informes de errores abierta a accesopúblico en todo momento. Los informesque los usuarios envíen en línea seharán visibles inmediatamente al resto.

4. Nuestras Prioridades son NuestrosUsuarios y el Software Libre – Nosguiaremos por las necesidades de nues-tros usuarios y la comunidad del softwa-re libre. Pondremos sus intereses prime-ro en nuestras prioridades. Daremossoporte a las necesidades de nuestrosusuarios para que puedan trabajar enmuchos tipos distintos de entornos detrabajo. No pondremos objeciones alsoftware comercial que vaya a ejecutar-se sobre sistemas Debian, y permitire-mos a otros a crear distribuciones devalor añadido conteniendo tanto Debiancomo software comercial, sin ningúncobro por nuestra parte.

5. Programas que No Siguen NuestrosEstándares de Software Libre –Reconocemos que algunos de nuestrosusuarios necesitan usar programas queno sigan las Directrices del SoftwareLibre de Debian (DFSG). Hemos creadolas áreas “contrib” y “non-free” ennuestro archivo de FTP para este softwa-re. El software en estos directorios no esparte del sistema Debian, aunque hasido configurado para usarse conDebian.

Contrato Social Debian

Page 9: Linux Magazine - Edición en Castellano, Nº 09

administración lógica de volumen desdeel instalador Debian.

Paquetes PerfectosLa instalación y actualización de soft-ware en el sistema se lleva a cabo demanera rápida y cómoda gracias a susistema de administración de paquetes.Típicamente sólo se necesita escribir unúnico comando para instalar una nuevaaplicación. Si prefiere una GUI, puedeadministrar paquetes a través del intui-tivo Synaptic. Las herramientas delpaquete de Debian descargan automáti-camente los ficheros necesarios desdefuentes de Internet y administran cual-

DVD LINUX MAGAZINE

9Número 09W W W . L I N U X - M A G A Z I N E . E S

quier dependen-cia. Otras distros

utilizan sistemas de paquetes similares(algunos derivados del sistema Debiany otros modelados a partir de él) pero elsistema Debian sigue siendo el más sen-cillo y el más eficiente en la instalaciónde nuevo software Linux. Según el pro-yecto Debian, todo el sistema Debianpuede ser “actualizado, sin tocar fiche-ros de configuración a medida y (en lamayoría de los casos), sin tener que rea-rrancar el sistema”.

Tamaño y AlcanceEl DVD de este mes de Linux Magazinecontiene unos 6.500 paquetes querepresentan el contenido de los 7 CDs

de instalación de Debian. Una vez queel sistema esté en marcha y corriendo,tendrá acceso al resto de Debian a tra-vés del sistema de administración depaquetes Debian. En total, su vasta dis-tribución incluye unos 15.000 paque-tes.

Si elige Debian entrará a formar partede una extensa comunidad de usuarios,bloggers, administradores y desarrolla-dores. El usuario de Debian siempretiene a mano su ayuda. La comunidadDebian está constituida por una red deunos 1.600 voluntarios, los cuales estánmotivados e invierten personalmente enel éxito de Debian.

Pero Debian no sólo es profundo,también es extenso. El lanzamiento ofi-cial de Debian 3.1 soporta 11 arquitec-turas de hardware diferentes (este DVDsólo es para la arquitectura Intel i386).El amplio abanico de hardware sopor-tado por Debian hace que sea unaopción popular para usuarios que tra-bajan con un gran variedad de platafor-mas.

Pruébelo ahoraNunca ha habido una mejor ocasiónpara probar Debian GNU/Linux. Elnuevo Debian 3.1. puede calificarsecomo el de más fácil uso y el más amiga-ble de los Debian hasta la fecha, y elpráctico formato único de DVD le haceincluso más apropiado.

Ahora puede probar el tan esperadoDebian Sarge sin suplementos de distri-bución o descargas de larga duración.Enchúfese al DVD de Linux Magazine deeste mes y llévese toda la energía delDebian GNU/Linux 3.1. �

Figura 2:Sarge incluye la versión 1.1.3 de la suite de OpenOffice.

Figura 3:El paquete de herramientas de administración es útil para el entorno gráfico en los

paquetes de administración software de Debian.

Figura 1:El escritorio por defecto de GNOME 2.8 de Debian viene con

una colección completa de herramientas de GNOME, tales como el

navegador Epiphany y el administrador de ficheros Nautilus.

Page 10: Linux Magazine - Edición en Castellano, Nº 09

10

NOTICIAS LINUX

Schlagwort sollte hier stehenLINUX USERNOTICIAS

10 Número 08 W W W . L I N U X - M A G A Z I N E . E S

Gracias a Dios que no sólo lo malo sepega: Suse estrena OpenSuse.

Con OpenSuse, la empresa Linux filialde Novell democratiza el desarrollo denuevas versiones al permi-tir la participación de des-arrolladores y usuariosindependientes en la crea-ción e inclusión de paque-tes dentro de Suse.

En el sitio web deOpenSuse (ver más abajo),se alojarán las versionesestables y de desarrollo dela distro, que ya no conta-rá con una versión“Profesional” y de pagocomo hasta ahora. A partirde la creación del proyec-to, todas las versionesserán libres y gratuitaspara su descarga.

APRENDER DE LO BUENOSi bien algunos malpensados podrán

alegar que lo que se pretende es recortargastos (es decir, puestos de trabajo) dele-gando tareas que antes recaían en perso-

nal de Suse en miembros de la comuni-dad (y algo de esto sin duda hay), tam-bién es cierto que con este paso se demo-cratiza la elección de paquetes, abriendo

a los usuarios la puertapara que elijan qué paque-tes se incluyen en la distro.

Con este paso, Suse sesuma a las distros que yahan implementado progra-mas similares comoMandriva y Red Hat, a tra-vés de su versión libre,Fedora, que, sin llegar a latotal democratización deDebian, permiten que losusuarios tengan poder dedecisión en el curso aseguir por la distribución…y de eso se trata ¿o no? �

http://www.opensuse.

org/

Y para todos aquellos quie-nes tienen más de unamáquina 64 bits y variosmetros de cable de red tira-dos por ahí, llega GFS paraFedora 4.

GFS es el sistema dearchivos para cluster másescalable disponible paraLinux, y admite hasta256 nodos y es el únicosistema de archivosnativo de 64 bits paracluster disponiblepara Linux y compati-ble con las arquitectu-ras x86, AMD64/EM64Te Itanium. Red Hat obtu-vo GFS con la adquisiciónde Sistina Systems en 2003.Tras la adquisición, Red Hattrabajó para que la tecnolo-gía patentada de GFS estu-viese disponible bajo GPL.

FEDORA PARA CLUSTERS

“Poner GFS a disposiciónde la comunidad de desarro-lladores de código fuenteabierto a través de FedoraCore es una continuación

delmodelo de Red Hat, consis-tente en establecer ampliascomunidades de uso para

impulsar la innovación”,declaró Paul Cormier, vice-presidente ejecutivo deingeniería de Red Hat. “GFSes una tecnología muyvaliosa que ahora tiene laoportunidad de mejorarincluso con mayor rapidez

en la comunidad de des-

arrolladores de códigofuente abierto.”

Durante la conferenciaRed Hat Summit celebradaen junio, Red Hat tambiénanunció la disponibilidad deFedora Directory Server, una

solución para la gestiónsegura de identidades.

La instalación del FedoraDirectory Server, según seadvierte en el sitio de Fedora,“no es para los de corazóndébil” (auguramos horas dediversión para los lectoresque lo intenten), sin embar-

go, vieneampliamentedocumentadoy soportadopor una nutri-da comuni-dad de usua-rios.

Tanto Fedora Core 4 conGFS, como FDS ya estándisponibles para su descar-ga desde el sitio web de Fe-dora. �

http://www.fedora.redhat.

com

Page 11: Linux Magazine - Edición en Castellano, Nº 09

NOTICIAS

11Número 09W W W . L I N U X - M A G A Z I N E . E S

PRODUCTOS

¿Un tecladoconvencional?¡Qué aburri-do!Presentamosel Optimus, unteclado quelleva el concep-to de “teclasconfigurables”a una dimen-sión totalmente nueva.

El Optimus permite no sóloconfigurar las teclas para querealicen las funciones quedeseemos, sino que se puedecambiar el aspecto del carác-

TECLAS CONFIGURABLES

ter represen-tado en cadatecla. Y, no,no hay queandar deaquí para

NI TANTO NI TAN POCOPero, ahora en serio ¿Eres unusuario de élite? ¿De verdad?¿De verdad de la buena? Esolo veremos para el final de lareseña.

A un auténtico usuario deélite se le conoce por lo queno necesita. Un usuario deelite no necesita asistentespara configurar su equipo.Tampoco necesita iconospara arrancar sus aplicacio-nes. Ni siquiera necesita unentorno gráfico para manejarsu sistema operativo, ni unratón… lo único que le hacefalta a un verdadero gurú esun monitor monocromo, undisquete y un teclado.

Y hablando de teclados ¿Aque no sabes de qué más

puede prescindir un power

user que escupe sobre losprogramadores que desarro-llan en lenguajes interpreta-dos? Sigue leyendo…

Si de verdad crees que eresel no va más en el uso yabuso de la línea de coman-dos, tienes que hacerte con el

“Das Keyboard” de Metadotcorporation.

El DK cuenta con un con-trapeso para cada tecla quecompensa la presión con laque se le suele pulsar,haciendo que el “DasKeyboard” sea más conforta-ble y agradable de utilizar,

pero lo mejor de todo es queni una de las teclas tiene unsólo carácter impreso enellas. Eso es: es un tecladociego.

Según la empresa quecomercializa el DK, el notener caracteres obliga a nomirar el teclado, lo que, a lalarga, acelera la mecanografíay mejora la precisión. Sinembargo, todos sabemos elporqué se haría uno con estetrasto: por que son increíble-mente cool, tanto por suaspecto, como por el concep-to subyacente.

(¿Es tonto preguntar sitiene la tecla “ñ”?). �

http://www.daskeyboard.

com/

allá con pegatinas decolores. El Optimusincorpora en cada teclauna diminuta pantallitaOLED de 40 x 40 pixelsque permite al usuario

cambiar los símboloscon una serie de plantillas yaincorporadas o descargar ico-nos al teclado para un aspec-to verdaderamente personali-zado.

A pesar de estar en unafase temprana de producción,la empresa rusa Art. Lebedev

Studio, creadores del invento,esperan empezar a comercia-lizarlo a principios del 2005.

El teclado podrá utilizarsecon cualquier sistema ope-rativo, dispondrá de un SDKde software libre para eldesarrollo de nuevas aplica-ciones y permitirá por fin alos usuarios de Emacs

encontrar todos esos atajos demanera sencilla y visual (noes que creamos que ningúnusuario de Emacs se rebajaráa semejante cotas de lame-

ness, pero, en fin…). �

http://www.artlebedev.com/

portfolio/optimus/

Page 12: Linux Magazine - Edición en Castellano, Nº 09

12

Professional del número 7.4) De hecho, estamos creando una

nueva sección llamada “Linux Local”, undirectorio donde empresas que trabajencon Linux puedan anunciarse y dondeusuarios y otras empresas puedanencontrar los servicios Linux que necesi-ten. Si tienes una empresa y crees quetienes algo que ofrecer a la comunidad,contacta con nosotros [email protected] para quete incluyamos.

En cuanto a tu pregunta sobre progra-mas de administración, estamos deacuerdo con que GNUcash no es aptopara su uso como herramienta de admi-nistración monetaria de una empresa. Dehecho, esta herramienta está más orien-tada a la administración de la contabili-dad doméstica.

En la redacción hemos probado tantoBULMAGes[1] y FacturaLux [2] y ambasalternativas funcionan estupendamentepara lo que es la administración contabley de facturación de una empresa a nivelprofesional. Se ajustan escrupulosamen-te al Plan Contable Nacional y ofrecenflexibilidad tanto de configuración comode arquitectura. Lo que sí es cierto esque para su correcto manejo, estos pro-gramas precisan conocimientos de con-tabilidad para poder explotarlos como esdebido. �

Vayamos por partes:1) Sí, estamos de acuerdo contigo y

estamos intentando introducir másinformación de otros escritorios. Da lacasualidad que algunos de nuestrosautores son desarrolladores KDE yescriben de lo que saben, pero habrásnotado un incremento de informaciónsobre Gnome en la revista reciente-mente: Ahí tenemos el artículo sobreadministración de fuentes (tanto enKDE como para Gnome) del número 8.En el mismo número le dimos un repa-so a la última versión estable deGnome, la 2.10. En el número 7 publi-cábamos un artículo de nuestro nuevocolaborador Alberto Mora que versabasobre Soundjuicer, el ripeador de CDsde Gnome. Hemos publicado en la sec-ción de desktopia varios artículossobre escritorios alternativos: WMI enel número 7 e incluso Twin, un gestorde ventanas basado en texto en elnúmero 2.

Pensamos seguir en esta vena, apor-tando toda la información sobre gestoresde ventanas que quepan en nuestraspáginas.

2) Lo que pasa es que Linux, al ser unsistema con tantas aplicaciones posibles,es difícil dedicarle muchas páginas a unasola área. Hablamos de programación,administración de sistemas y de usuariosfinales en la revista. De vez en cuandotocamos sobre Linux embebido en dispo-sitivos móviles y otras sobre temas dehardware, pero a pesar de los pesares,incluso 100 páginas se hacen cortas a lahora de abarcar todos los campos dondese puede aplicar Linux.

3) Hombre, nosotros no incluimosCDs, sino DVDs y siempre tratamos deque se traten de distribuciones reciénsalidas y, cuando podemos, con algúnotro aliciente, como el caso del SuSE 9.2

LM

Correo del Lector

ACCESO DE ESCRITURA

Schlagwort sollte hier stehenLINUX USERCORREO

12 Número 09 W W W . L I N U X - M A G A Z I N E . E S

Lista de Mejoras

En primer lugar felicitaros por la revista,aunque esto no quita que pida algunasmejoras:

1) Por un lado pienso que la revista seencuentra demasiado orientada a entor-nos KDE, cosa que no me parece mal. Yomismo utilizo algunos programas deKDE en el escritorio XFCE. Tendriáis quedar más información sobre programas enotras plataformas (Gnome, GTK…).

2) Más artículos sobre otros usos deLinux. Creo que a Linux habría quesacarlo de ese entorno de servidores ylaboratorios, como ya hacéis en la sec-ción LinuxUser, pero dándole mas espa-cio.

3) Siempre me he preguntado si sonnecesarios los CDs que reparten lasrevistas, suelen acabar de posavasos.

4) Ya para acabar: ¿Sería posible unasección con empresas dedicadas, enEspaña, a desarrollar en Linux?

Seguid con el fenomenal trabajo queestáis haciendo.

P.D.: Estoy tratando de montar unnegocio de informática donde todo el sis-tema de facturación se haga en Linux, hemirado programas (GNUcash…) peroninguno parece ajustarse a lo que busco.¿Alguna sugerencia?

Jolupa

Puedes enviaar tus comentariosy sugerencias a:

[email protected]

www.alm

ogon.de

[1] Sitio web de BULMAGes: http://

bulmages.sourceforge.net/

[2] Sitio web de FacturaLUX: http://

facturalux.org/

RECURSOS

Page 13: Linux Magazine - Edición en Castellano, Nº 09

algunas herramientas de exploit ARP uti-lizadas por intrusos reales en redes rea-les. Finalizaremos con algunos trucospara que puedan proteger sus redes delos peligros de la falsificación ARP.

Para terminar de redondear nuestrasección de portada de este mes, echare-mos un vistazo al Editor Simple dePolíticas de Seguridad (Simple Security

Policy Editor o SSPE), una manejableherramienta que nos ayudará a organizary mantener Políticas de seguridad a tra-vés de varios cortafuegos. El SSPE libreofrece un sencillo front end que les per-mitirá configurar y administrar un com-plejo entorno de cortafuegos distribuido.

Esperamos que nuestra historia deportada de este mes sobre seguridad lesbrinde nuevas perspectivas e ideas sobrecómo conseguir redes más seguras. �

Análisis de los métodos del enemigo

TÉCNICAS DEINTRUSIÓN

13

Seguridad• PORTADA

13Número 09W W W . L I N U X - M A G A Z I N E . E S

La mayoría de los usuarios estántan acostumbrados a trabajar enred, que no caen en la cuenta de

que podría haber alguien escuchando.Todos sabemos que conviene tener cui-dado en Internet, hasta los usuariosdomésticos utilizan cortafuegos paramantener a los intrusos fuera de su red ylos administradores corporativos añadenuna línea Maginot de servidores proxy,honeypots y herramientas de DMZ(DeMilitarized Zone, ZonaDesMilitarizada).

¿Pero qué ocurre dentro del cortafue-gos? ¿Cómo se puede saber si alguienestá escuchando o suplantando la perso-nalidad de otro usuario? Las estadísticasdicen que muchos ataques comienzandesde dentro, desde empleados aburri-dos, o descontentos, buscando emocio-nes fuertes o incluso alguien más enoja-do que busca alguna forma de venganza.En muchas configuraciones corporativas,un perfecto desconocido puede aparecercon su ordenador portátil y enchufarlo ala red sin provocar ninguna respuesta delos sistemas de seguridad. El problemaes aún peor en las redes inalámbricas.Un gamberro ocasional apostado al otrolado de la calle, o en el apartamento deal lado, puede conectarse a sus redes.

¿Pero cómo consiguen los intrusos elacceso para entrar? ¿De qué manera tru-

Hotspotter . . . . . . . . . . . . . . . . . . . . . . . .14

Falsificación . . . . . . . . . . . . . . . . . . . . .18

Políticas de Seguridad SSPE . .24

EN PORTADA

can estos tipos sus propios sistemas paraque, usando la red como medio para susataques, conseguir entrar en los sistemasajenos? En portada de este mes daremosalgunas respuestas a esas cuestiones.

Nuestro artículo principal analiza lastécnicas de intrusión usadas para conec-tarse a clientes inalámbricos.Mostraremos oomo un atacante puedesecuestrar una conexión inalámbrica.También podrán aprender cómo unintruso empresarial puede fingir ser unared segura y conseguir que se conecte unusuario ingenuo. Y mostraremos laextraordinaria herramienta Hotspotter,que evidenciará cuan vulnerable son susredes inalámbricas.

Nuestro segundo artículo examina eloscuro arte de la falsificación ARP (ARP

spoofing). La falsificación ARP permite alintruso utilizar una dirección MAC de ori-gen falsa para suplantar a otro ordenadoren la red. También aprenderán acerca delos ataque por inundación MAC (MACflooding), que ataca el mapeado de segu-ridad de un switch de la red. Tambienveremos el envenenamiento ARP, unaforma especial de falsificación queataca la tabla ARP de otro ordena-dor. Les enseñaremos porquéincluso SSL y SSH no soninmunes a los ataquesARP y describiremos

Page 14: Linux Magazine - Edición en Castellano, Nº 09

14

Los expertos en seguridad siempre están preocupados por los puntos

de acceso WLAN, pero a veces olvidan que los clientes también están

expuestos a los atacantes. Los puntos de acceso públicos hacen que

sea bastante fácil para los atacantes secuestrar conexiones, tal y como

lo demuestra la herramienta Hotspotter. POR MAX MOSER

Ataques a Clientes Inalámbricos

EN EL PUNTO DE MIRA

Ataques a Clientes Inalámbricos

EN EL PUNTO DE MIRA

PORTADA • Hotspotter

14 Número 09 W W W . L I N U X - M A G A Z I N E . E S

Gracias a los complejos mecanis-mos actuales de seguridad, lasredes inalámbricas parecen que

se vuelven más seguras día a día. Losmecanismos de autenticación basadosen el marco de trabajo EAP (Protocolo deAutenticación Extensible) prometen quemantendrá a los indeseables en la calle.El Protocolo de Integridad deClaves Temporales (TKIP) [1],con su rápido intercambio declaves WEP, impide la repeti-ción de ataques y hace que seamás compleja la vulneración dela tecnología de encriptación,permitiendo que las claves seanmás duraderas.

WPA/WPA2 [2] y la transi-ción a la encriptación AES [3]parece que va a proporcionaruna solución de seguridad casiperfecta para las redes empresa-

riales. Y para asegurarse, los puntos deacceso están equipados también consoporte VLAN, detección de intrusos ysistemas de cortafuegos… todo esto conun coste considerablemente alto.

Pero los daños surgen más allá de losconfines de la red de la empresa. En nues-tra actual y creciente era móvil, mucha

gente desea trabajar sin las ataduras delos cables. Actualmente, esto es una reali-dad. Gracias al incremento de la permisi-bilidad de las redes inalámbricas y a losbuenos administradores, la gente puedetrabajar en muchos lugares públicos:aeropuertos, hoteles o salas de congresos.Si realmente se desea trabajar, apenashabrá obstáculos que nos detengan.

Los ejecutivos que tienen que viajaralrededor del mundo pueden apreciar lanueva flexibilidad que se encuentran y, amenudo, deciden reproducir sus propiosmedios empresariales. Los departamen-tos de las tecnologías de la informaciónse ven forzados con frecuencia a introdu-cir complejas infraestructuras de seguri-

dad que se encarguen del tráfi-co sensible que viaja a travésdel éter. Además, los serviciosinalámbricos de las empresascasi siempre deben estar res-tringidos a los usuarios autori-zados.

Administradores enMovimientoUn ejecutivo típico que viaja a loancho del país con su portátilequipado con capacidad WLANbajo su brazo normalmente tiene

Figura 1:Conexión a un punto de acceso. Las vulnerabilidades

afectan al cliente cuando aún está buscando las redes disponi-

bles en los pasos 1 y 2.

Page 15: Linux Magazine - Edición en Castellano, Nº 09

al menos dos configuraciones inalámbri-cas o perfiles -una para trabajar en puntosde acceso públicos, ya sea en aeropuertosu hoteles y otro para accesos seguros a lared protegida de la empresa. Internet pro-porciona varias bases de datos que infor-man sobre dónde se encuentra localizadoel siguiente punto de acceso público [4].

Una red inalámbrica se compone de múl-tiples elementos y para manejar la cone-xión se transmiten una variedad de paque-

tes, por ejemplo, de datos,de control y paquetes degestión. Los paquetes degestión son particularmenteinteresantes en este caso,ya que manejan alertas deservicios, conexiones y des-conexiones (véase el cua-dro titulado “Paquetes deAdministración Críticos”).

En ClaroLos paquetes de adminis-tración dentro de las redesinalámbricas son transmi-tidos en claro (sin encrip-tar). Y por si esto no fuerapoco, no hay nada queverifique la integridad ni la

validación del emisor/receptor. Un segun-do punto de acceso podría transmitirpaquetes Respuesta de Sondeo en respues-ta a un paquete Petición de Sondeo de uncliente y luego invitarlo a que se asocie.Un paquete Respuesta a Sondeo, como elque se muestra en la Figura 2, se componede múltiples segmentos.

Los más importantes son:• Control de Cuadro (FC) especi-

fica el tipo del paquete (“0”para paquetes de gestión) ysubtipo (“5” para Probe Res-

ponse), además de flags quehabitualmente están a 0 paraProbe Response.

• Dirección de destino es la direc-ción de destino.

• Dirección fuente es la direcciónMAC del cliente.

• BSS Id es la dirección MAC delpunto de acceso.

• Parámetros fijos se componende una marca de tiempo y deinformación sobre las capacida-des de la red.

• Parámetros Etiquetadps inclu-yen el SSID, su longitud y el

15

Hotspotter • PORTADA

15Número 09W W W . L I N U X - M A G A Z I N E . E S

canal, además de las velocida-des de transmisión soportadas.

La cuestión es, cómo se supone que losusuarios van a reconocer que realmenteestán conectados a la red real con la quese quieren conectar y no a una red con-trolada por un atacante. De hecho, losusuarios no tienen forma de saberlo y esaquí precisamente donde surge el aguje-ro de seguridad.

En una inspección más detallada, seobserva que una red publica la siguienteinformación:

• El nombre lógico de la red(SSID)

• La dirección MAC del punto deacceso

• La configuración del punto deacceso

Cualquier punto de acceso puede usarcualquier SSID, ya que esto es el nombrelógico de la red actual, y es un valorlibremente configurable que no se validay no tiene porqué ser único.

La dirección MAC del punto de accesopodría ser fácilmente duplicada si unatacante usa un punto de acceso basadoen software. Y una dirección MAC dupli-cada no tiene habitualmente impactodentro de una red, al contrario de lo quesucede en las redes cableadas tradiciona-les. Un punto de acceso normalmente noverifica los paquetes entrantes para ave-riguar si fueron realmente enviados porél mismo.

Algunos dispositivos incluyen ahoramódulos de Sistemas de Detección deIntrusos propietarios para comprobar si seestá produciendo un ataque basado eninfiltración de paquetes. Pero la únicaforma real de eliminar el peligro sería intro-ducir un sistema de validación emisor/receptor como el que se implementa en elproyecto de código abierto llamado Wlsec[6]. Desafortunadamente este proyecto hatenido muy poca aceptación por los fabri-cantes de dispositivos inalámbricos.

Sin AutenticaciónUn punto de acceso no podrá saltarseuna configuración de autenticación yencriptación, ya que esta información nose da a conocer. Sin embargo, los pará-metros de configuración de los puntos deaccesos públicos son diseñados para seranticipados, algo que no ocurre en losusados por las empresas privadas.Ambos esquemas de protección son des-habilitados, ya que los puntos de acceso

Figura 2: Herramientas como Ethereal permiten analizar la

estructura de los paquetes IEEE 802. El ejemplo muestra un

paquete Probe Response como los usados por los atacantes

descritos en el artículo.

Beacons: Se envían por el punto deacceso para sincronización y para infor-mar de los parámetros de la red.

Probe Request: Se envían por el clientepara buscar redes disponibles y contie-nen parámetros tales como el SSID y lafrecuencia.

Probe Response: El punto de accesoresponde a los paquetes Probe Request,confirmando o rechazando las transac-ciones.

Association Request: El cliente anunciasu intención de unirse a una red específi-ca.

Association Response: La contestacióndel punto de acceso, diciendo si permiti-rá al cliente unirse a la red.

Disassociation: El punto de acceso leindica a los clientes que dejen su cone-xión actual.

Authentication: La autenticación delcliente para la conexión en la red.

Desauthentication: Se envía por elpunto de acceso para eliminar unaautenticación existente.

Cuadro 1: Paquetes deAdministración Críticos

El modo monitor, también denominadomodo RFMON, es un modo especial enel que el firmware de la tarjeta inalám-brica pasa cualquier paquete que recibaal controlador software, en vez de lospaquetes que realmente están destina-dos a ella -puede ser algo parecido aescuchar múltiples estaciones de radioal mismo tiempo.

Cuadro 2: Modo Monitor

Page 16: Linux Magazine - Edición en Castellano, Nº 09

Prism2 y Atheros nos propor-cionaron buenos resultadosen nuestro laboratorio.

Hotspotter primero conmu-ta la tarjeta a RFMON o modomonitor (véase el cuadro titu-lado “Modo Monitor”). Eneste modo, el programa acep-ta cualquier paquete del áreade recepción y evalúa cual-quier petición probe. Lospaquetes Probe Request inclu-yen los detalles de la red que el clienteestá actualmente buscando (véase elcuadro “Paquetes de Gestión Críticos”).

Para buscar una red, el cliente envíapaquetes Probe Request con el parámetroSSID de la red que se busca. De modomás sencillo, el cliente de nuestro ejem-plo grita: Hola, ¿es ésta la red“del_punto_de_acceso_público” o“la_de_mi_empresa”? Y si sucede esto,el punto de acceso envía una respuesta yla conexión puede ser establecida usan-do la configuración definida por el perfildel cliente.

Si el cliente pierde la conexión, seintenta de nuevo. Dependiendo de laconfiguración, el cliente puede intentarlocalizar las redes definidas en sus perfi-les a intervalos regulares o esperar a queel usuario le indique cuando hacerlo.

Si el cliente no encuentra la red queestá buscando, normalmente sigue conla siguiente red que tenga definida en sulista de perfiles. Esto permite a un ata-cante descubrir los perfiles que un clien-te tiene definido.

Hotspotter toma el SSID de la red soli-citada y la compara con una lista de pun-tos de accesos que no proporcionanencriptación. Si Hotspotter encuentraalguna coincidencia, inmediatamentedesactiva el modo monitor y automática-mente configura la tarjeta como unpunto de acceso software (véase laFigura 3). De modo más simple: ¡Sí!Aquí esta la red “del_punto_de_acce-so_público”; ya puedes conectarte a mí.El cliente tan sólo tiene que acceder. Estohace que la conexión a la red esté firme-mente controlada por el atacante.

Exploit AutomáticoSi se especifica la opción -r o -e y se lepasa a Hotspotter un script bash todoesto ocurre automáticamente. -r significaque se ejecute antes de conmutar almodo punto de acceso y -e significa que

espere a que la tarjeta inalámbrica delatacante sea configurada como punto deacceso.

Por supuesto que no hay límites a loque un atacante pueda decirle aHotspotter que haga dentro de los confi-nes de un script bash. Esto puede incluirasignaciones de direcciones IP basadasen DHCP y resoluciones de nombresbasadas en DNS para el cliente, escaneoautomático de puertos, fisgoneo automá-tico de los datos de la comunicación oincluso hacerse con el sistema instalan-do otro exploit o algún troyano. El ata-cante podría presentarse al cliente conuna página de conexión falsa.

ConclusiónSi se piensa en la cantidad de portátilesque tienen integrados tarjetas inalámbri-cas en la actualidad, no es de extrañarque las comunicaciones inalámbricas entrenes, aeropuertos o ferias sean un pro-blema de seguridad bastante serio. Esimportante tomar medidas de seguridadaunque sean caras y no facilitar a los ata-cantes nuevos vectores para atacar las“tan seguras” redes empresariales. �

públicos no autentican a los usuarios niencriptan los datos.

Esto permite a un atacante suplantar unared; los clientes supondrán que se hanconectado a la red real, aunque en realidad,se hayan conectado a la red del atacante.Los atacantes pueden incluso usar múlti-ples adaptadores para configurar un esce-nario del “hombre en medio”, donde elpunto de acceso examina los datos delcliente antes de enviarlos a su destino.

Esta vulnerabilidad se demostró porprimera vez con Airjack [7]. El grupoSsmo, que se hizo famoso con Airsnort,reconoció rápidamente el problema ydesarrolló la herramienta Airsnarf [8],que genera un punto de acceso basadoen software con una página Web deconexión falsa.

Si un cliente rechaza desconectarse deuna sesión existente, la herramientaVoid11 puede generar paquetes de “desau-tenticación” y forzar al cliente a retrocedery empezar la búsqueda de redes de nuevo.

HotspotterAirsnarf no proporciona a los usuariosuna herramienta totalmente automatiza-da, ya que supone que algunos paráme-tros de la red, como el SSID, son conoci-dos. La herramienta Hottspotter [9], delautor, utiliza una solución similar aAirsnarf pero reacciona autónomamentefrente a las búsquedas realizadas por losclientes de redes desprotegidas. El pro-grama puede usar cualquier adaptadorque pueda ser configurado usandoiwconfig mode monitor y iwconfig mode

master. Las tarjetas con los chipsets

PORTADA • Hotspotter

16 Número 09 W W W . L I N U X - M A G A Z I N E . E S

[1] TKIP: http://www.cisco.com

[2] WPA: http://wwww.wi-fi.org

[3] AES: http://www.faqs.org/rfcs/rfc3565.

html

[4] Directorio International de puntos deaccesos: http://mobile.yahoo.com/wifi

[5] Cliente Odyssey para Windows: http://

www.funk.com/radius/wlan/

lan_c_radius. asp

[6] Proyecto WLSec: http://wlsec.net

[7] Airjack: http://sourceforge.net/

projects/airjack

[8] Airsnarf: http://airsnarf.shmoo.com

[9] Hotspotter: http://wwww.

remote-exploit.org

RECURSOS

Figura 3: Hotspotter en acción, cada punto indica un

paquete recibido de la red.

Para mantener la administración de losclientes lo más sencilla posible y permi-tir a la gente usar más o menos cual-quier punto de acceso público sin tenerque reconfigurar sus portátiles, los usua-rios normalmente crean un perfil “Mired segura” y otro “Otras”. Esta últimaes un caso especial e incluye cualquierred, independientemente del nombre dela red. Si un atacante intenta colarse enuna red segura, el cliente no podrá aso-ciarse con la red, ya que la configuraciónde autenticación y encriptación se loimpedirá. Sin embargo, este no es siem-pre el caso de los usuarios Windows conla configuración que se ha descrito yaque el perfil “Otras” está implícito.

Cuadro 3: Peligro Grave conWindows

Page 17: Linux Magazine - Edición en Castellano, Nº 09
Page 18: Linux Magazine - Edición en Castellano, Nº 09

18

Cualquier usuario de una LAN puede curiosear y manipular el tráfico local. Las técnicas denominadas ARP

spoofing y poisoning proporcionan a los atacantes una manera fácil de llevarlo a cabo.

POR THOMAS DEMUTH, ACHIM LEITNER

ARP Spoofing y Poisoning

TRUCOS DE TRÁFICO

PORTADA • ARP Spoofing

18 Número 09 W W W . L I N U X - M A G A Z I N E . E S

Curiosidad, venganza o espionajeindustrial pueden ser las razonespor las que desde dentro de su

propia red un atacante pueda realizarsus fechorías. Las estadísticas confirmanque entre el 70 y 80 por ciento de los ata-ques efectuados a una red procedendesde dentro de la misma [1]. Los admi-nistradores pasan bastante tiempo impi-diendo estos ataques internos ya queproteger la red desde dentro es muchomás difícil que protegerla frente a ata-ques externos.

Una de las técnicas más formidables deataques internos es la que se conoce comoARP spoofing. ARP spoofing coloca a unatacante en una posición en la que puedeespiar y manipular el tráfico local. El ata-que conocido como el hombre de en medio

es fácil de realizar gracias a un softwaresofisticado, incluso los atacantes con muypocos conocimientos sobre redes dispo-nen de buenas utilidades para llevar acabo su cometido con éxito.

¿Cómo funciona ARP?El protocolo ARP se publicó enNoviembre de 1982 como RFC 826 [2]

por David C. Plumier. Como la seguridaden las tecnologías de la información noera un factor importante en aquellaépoca, el objetivo era simplemente pro-porcionar funcionalidad. ARP transfor-ma direcciones IP a direcciones MAC. Siel cliente C necesita enviar un paquete alservidor S, tiene que saber cual es ladirección MAC de S si ambas máquinasestán dentro de la misma subred. Inclusosi S reside en una red diferente, C aúnnecesita la MAC -en este caso, la direc-ción del router que reenviará el paquete.El router se hará cargo de todo lo demás.

Para averiguar la dirección MAC, Cretransmite una solicitud ARP a todas lasmáquinas de la red local, preguntando“¿Quién tiene la dirección IP a.b.c.d?”. Lamáquina que tiene dicha dirección IPresponde indicándole al cliente su direc-ción MAC (Figura 1).

Como se muestra en la Figura 2, unpaquete ARP se transporta como informa-ción dentro de una trama Ethernet. Parapermitir que esto pueda hacerse, el valorde 0x8006 se coloca en la cabecera de latrama en el campo tipo – esto le indica aldestino que se trata de un paquete ARP.

Como sería muy costoso el tener queretransmitir solicitudes ARP y esperar lasrespuestas antes de enviar datos, cadapila IP contienen una tabla ARP, tambiénconocida como ARP caché (Figura 3). Lacaché contiene una tabla con las direc-ciones IP y las direcciones MAC corres-pondientes. La tabla puede albergarentradas estáticas (por ejemplo, aquellasgeneradas por un usuario) y entradasdinámicas (aquellas que ha ido apren-diendo a través del protocolo ARP). Lasentradas dinámicas a menudo son váli-das para períodos cortos de tiempo, nor-malmente unos cuantos minutos.

Efectuando ataques en laLANComo ARP no realiza ningún intento porprotegerse frente paquetes manipulados,es vulnerable a una serie de ataques. Losmás comunes son MAC spoofing, MACflooding y ARP spoofing.

MAC spoofing implica que el atacantedebe usar una dirección fuente MACmanipulada. Esta técnica tiene sentido silos privilegios van ligados a una direcciónMAC. Muchos administradores de WLAN

Page 19: Linux Magazine - Edición en Castellano, Nº 09

(Wireless LAN) ponen la dirección MACde los usuarios autorizados en una lista decontrol de acceso. Esto es una medida deseguridad débil ya que es fácil de vulnerar.El atacante tan sólo tiene que conocer unadirección privilegiada y usarla cuando lamáquina con dicha dirección esté apaga-da. MAC spoofing es útil cuando los ata-cantes quieren proteger su identidad.

Hay una forma bastante sencilla deimpedir esta clase de ataques en una redcableada: muchos switches permitenseguridad a nivel de puertos. El switch tansólo aprende la dirección MAC una sola

vez y la almacena permanentemente. Apartir de este momento, el switch no acep-tará ninguna otra dirección MAC fuenteconectada a ese puerto. Este mecanismoes efectivo frente a los ataques MAC spoo-fing. Como punto negativo se tiene que eladministrador debe reconfigurar el switchcada vez que se cambie la red.

La seguridad a nivel de puertos puedetambién proteger la red frente a otraclase de ataques. El ataque conocidocomo MAC flooding está diseñado paraechar abajo la seguridad a nivel de puer-tos de un switch.

19

ARP Spoofing • PORTADA

19Número 09W W W . L I N U X - M A G A Z I N E . E S

Al contrario que los hubs, los switchesusan tablas CAM (Memoria de contenidodireccionable), que especifican el puertocorrespondiente a cada dirección MACdel switch. El switch tan solo enviarápaquetes a través del puerto que conduz-ca a la máquina destino.

Los atacantes pueden deshabilitar estafuncionalidad sobrecargando el switchcon direcciones -la tabla CAM solo puedecontener un número determinado dedirecciones. Si el ataque tiene éxito, seconsigue que el switch funcione como unhub y esto permite que las comunicacio-nes sean visibles por cualquier puerto.

ARP PoisoningEl tercer ataque no es tan fácil de detec-tar y no hay contramedidas simples. Elataque se basa en un ARP spoofing,donde el atacante deliberadamentetransmite un paquete ARP falso. ARPpoisoning es un tipo específico de ARPspoofing cuyo objetivo es manipular(envenenar en inglés, de ahí el nombre)las tablas ARP de otras máquinas.

Como los sistemas operativos no sue-len comprobar si una respuesta ARP esrealmente la contestación a una solicitudARP enviada previamente, la informa-ción de la dirección de la respuesta esalmacenada en la caché. En los sistemasWindows los atacantes pueden incluso

Si dos ordenadores en una red quierencharlar, necesitan una forma de identifi-cación entre ellos unívoca. Ethernet utili-za un número de 48-bit (6 byte), que esasignado por el fabricante. La denomina-da dirección MAC (Control de Acceso alMedio) es única en el mundo. Esto per-mite a los usuarios añadir (más omenos) tantos adaptadores Ethernetcomo quieran a la LAN. Sin switches obridges Ethernet usa broadcasting; estoes, cada paquete en el cable se envía acada nodo de cada segmento de la red.Pero solo el destino pretendido aceptaráel paquete, mientras todos los otrosnodos lo ignorarán.

Esta solución es sorprendentementefácil, pero no se adapta bien en diversosentornos. Todo el que esté conectado almedio común comparte el ancho debanda. Los bridges y los switches redu-cen la situación dividiendo la red en múl-tiples segmentos y aprendiendo quédirecciones MAC están disponibles a tra-vés de los puertos (tabla CAM, Content

Addressable Memory). Esto permite aestos dispositivos transmitir paquetessólo a los segmentos donde se encuen-tra la máquina destino. Sin cada seg-mento, los nodos de la red puedenenviarse paquetes unos a otros sin inter-ferencias con comunicaciones en otrossegmentos.

Este principio no es aplicable a todas lasredes. Cada switch necesita conocer elentorno que le rodea. Para manejar esto,los creadores de Internet presentaron unesquema de direcciones basados en lasdirecciones IP. Las direcciones IP tienenuna longitud de 32 bits (4 bytes) y com-prende una red y una sección de host. Lamáscara de red le dice qué parte de lasdirecciones se refiere a la red y qué parteidentifica al host.

Las redes individuales que formanInternet están conectadas por routers.Los routers sólo necesitan conocer direc-ciones de red para enviar paquetes deforma correcta. Mientras se asignan

direcciones IP, la LAN continua utilizandosólo direcciones MAC. Pero sería uninconveniente para cada programa quenecesite conocer ambas direcciones IP ylas direcciones MAC. Aquí es donde ARP(Address Resolution Protocol) puedeayudar proporcionando la direcciónMAC que coincida con una dirección IP.El administrador no necesita configuraresto – es decir, no hay necesidad de con-figurar las coincidencias entre direccio-nes IP/MAC. Como parte negativa, laautomatización lleva a un gran problemade seguridad, que discutiremos con másdetalle en este artículo.

Junto con ARP, también está RARP(Reverse ARP, [3]). De forma similar aDHCP, un servidor RARP asigna unadirección IP a una máquina basada en elconocimiento de la dirección MAC delequipo. Como RARP no pasa ningúnotro parámetro (nombre del servidor,dirección del gateway, máscara de red),hoy en día es muy extraño usarlo.

Direcciones de la LAN: Conceptos Básicos

Figura 1: El cliente utiliza ARP para averiguar la dirección MAC del servidor en la LAN antes

de enviar paquetes a este servidor. La petición a “Who has “ se transmite a todas las máqui-

nas en la LAN. El nodo con la dirección pedida responderá directamente a la máquina que pre-

gunta.

Page 20: Linux Magazine - Edición en Castellano, Nº 09

cuentes; de hecho, se suele hacer clic ysimplemente ignorar el mensaje. Unerror en algunas versiones del navegadorInternet Explorer hace que sea posibleatacar las conexiones SSL sin que elnavegador ni siquiera muestre la alerta.

El ataque a SSH sigue un patrón simi-lar (Figura 4). Si el cliente ya conoce laclave del lado del servidor, mostrará unmensaje claro (Figura 5). Pero muchos

usuarios y administradores ignoran elaviso, suponiendo que alguien ha cam-biado la clave del servidor. Pocos proto-colos o implementaciones son inmunes.(IPsec es una excepción. IPsec rehúsatrabajar si algo va mal con el proceso deautenticación).

A causa de este problema, casi cual-quier clase de comunicación interna esvulnerable. Hay incluso herramientas

modificar entradas declaradas por losusuarios como estáticas.

Realizando esto se permite que un ata-cante monitorice el diálogo entre uncliente y un servidor y utilizando la téc-nica del “hombre de en medio”, manipu-le el diálogo. El hombre en medio mani-pula las entradas del servidor en cachéARP del cliente, haciendo creer al clienteque la dirección MAC del atacante es enrealidad la dirección del servidor. Elmismo truco se usa para el servidor.

Si el cliente quiere hablar con el servi-dor, comprobará su tabla ARP manipula-da y enviará el paquete a la direcciónMAC del atacante. Esto permite al ata-cante leer y modificar el paquete antesde reenviarlo al servidor. Entonces el ser-vidor supone que el paquete fue enviadodirectamente por el cliente. La respuestadel servidor de nuevo va al atacante, quela reenvía al cliente. Si el servidor resideen otra subred, el atacante tan solo tieneque lanzar su ataque contra el router.

Desde luego, un atacante puede provo-car una denegación de servicio simple-mente descartando cualquier paqueterecibido. Para manipular los datos, elatacante simplemente tiene que reenviardatos diferentes a los que reciba. Los ata-cantes pueden fácilmente recolectar con-traseñas, ya que el número del puerto lespermite averiguar el protocolo usado eidentificar las credenciales del usuariobasándose en este conocimiento.

Precaución incluso con SSLy SSHLas conexiones encriptadas no son auto-máticamente inmunes, como demues-tran diversas herramientas ARP. Estosprogramas están ahora disponibles paravarios sistemas operativos (véase el cua-dro titulado “Exploits para ARP”).

Además de la funcionalidad de ARPpoisoning, incluye implementacionespara clientes y servidores de SSL (SecureSocket Layer), TLS (Transport LayerSecurity), SSH (Secure Shell) o PPTP(Point to Point Tunneling Protocol).

Accediendo a un servidor web SSL, elnavegador alerta al usuario que algo vamal con el certificado para la conexión.Pero hay muchos usuarios que no com-prenden la importancia de la alerta ysimplemente la ignoran. El hecho de quemuchos servidores usen un certificadogenerado por ellos mismos hace quedichas alertas sean relativamente fre-

PORTADA • ARP Spoofing

20 Número 09 W W W . L I N U X - M A G A Z I N E . E S

A continuación nombraremos algunosprogramas que permiten a los atacantesexplotar las vulnerabilidades de ARP. Losadministradores pueden utilizar estasherramientas para testear sus propiasredes. Son bastante útiles para demos-trar la severidad de los ataques ARP. Elproblema de seguridad real, por supues-to, no es el hecho de que estas herra-mientas existan, ya que ARP es relativa-mente inseguro.

ARP-SK: Los programadores describensus herramientas como una NavajaSuiza para ARP; está disponible paraversiones Unix y Windows. El progra-ma puede manipular las tablas ARP envarios dispositivos. http://www.arp-sk.

org

Arpoc y WCI: Este programa para Unix yWindows realiza un ataque tipo hombrede en medio en la LAN. Contesta a cadapetición ARP que alcanza la máquinacon una respuesta ARP manipulada yreenvía cualquier paquete de entrega nolocal al router apropiado. http://www.

phenoelit.de/arpoc/

Arpoison: Una herramienta de línea decomandos que crea un paquete ARPmanipulado. El usuario puede especifi-car la fuente y la dirección IP/MAC de latarjeta. http://arpoison.sourceforge.net

Brian: Esta herramienta extremadamen-te simple (comprendido en un sólo fiche-ro C) utiliza ARP poisoning para deshabi-litar las interconexiones en la LAN. Estopermite a un atacante fisgonear todo eltráfico en la red. http://www.

bournemouthbynight.co.uk/tools/

Cain & Abel: Este sofisticado softwarede Windows comenzó como una herra-mienta de recuperación de claves.Fisgonea la red y utiliza una variedad detécnicas para descifrar claves encripta-das. La versión 2.5 de la herramienta fuela primera en introducir ARP poisoning,que permite a los atacantes fisgonear eltráfico IP en la LAN. El programa atacaconexiones SSH y HTTPS. http://www.

oxid.it/cain.html/

Dsniff: Los programas individuales enesta suite de herramientas llevan acabo distintas tareas. Dsniff, Filesnarf,Mailsnarf, Msgsnarf, Urlsnarf yWebspy fisgonean la red y cogendatos interesantes (como claves,correos y ficheros). Arpspoof,Dnsspoof y Macof permiten a losadministradores y atacantes accedera datos que un switch normalmenteprotege. Sshmitm y Webmitm sopor-tan el ataque hombre de en medio enSSH y HTTPS (aunque el autor serefiere a ellos como ataques Monkeyin the Middle). http://naughty.monkey.

org/~dugsong/dsniff/

Ettercap: Un potente programa conuna interfaz basada en texto (ver Figura4); la última versión también tiene uninterfaz Gtk. Las acciones se realizanautomáticamente, con la herramientase muestran tarjetas potenciales enuna ventana. Junto a Sniffing, los ata-ques ARP y la obtención de clavesautomáticas, Ettercap también puedemanipular datos sin una conexión. Elprograma también ataca conexionesSSHv1 y SSL (utilizando las técnicasdel ataque del hombre de en medio).http://ettercap.sourceforge.net

Hunt: Las conexiones fallidas, fisgoneode datos y secuestro de sesiones. Laherramienta utiliza manipulación ARP yotras técnicas. http://

packetstormsecurity.nl/sniffers/hunt/

Juggernaut: En 1997, Phrack Magazinepublicó Juggernaut, el predecesor de lamayoría de los sniffers actuales concapacidad para manipular la cachéARP. http://www.phrack.org/show.

php?p=50&a=6

Parasite: El servicio Parasite fisgonea laLAN y responde a peticiones ARP conrespuestas ARP manipuladas. La herra-mienta permite gradualmente a lamáquina establecerse por sí mismacomo un hombre de en medio paracualquier comunicación en la red.http://www.thc.org/releases.php

Herramientas de Explotación ARP

Page 21: Linux Magazine - Edición en Castellano, Nº 09

para novatos que pueden obtener contra-señas de unos 50 protocolos. Como esteataque sucede a nivel ARP y normalmen-te tan solo los accesos IP son registradoslos atacantes de hoy en día se sientenbastante seguros ya que nadie se perca-tará de que ellos están al acecho.

Impidiendo los ataques ARPUna posible solución para impedir losataques ARP sería imposibilitar la des-carga y ejecución de software externo,aunque esta regla es extremadamente

máquinas desde un CD o que conectensus portátiles a la red.

Las entradas ARP estáticas puedenayudar a impedir los ataques ARP, perola mayoría de los administradores que-rrán evitar el esfuerzo titánico que supo-ne el asignar las direcciones manual-mente para todas las máquinas. Como elsistema operativo de Microsoft permite alos atacantes manipular incluso lasentradas ARP estáticas asignadasmanualmente, conseguir un entornoseguro es realmente difícil.

Esta solución tan sólo tiene sentido enpequeñas redes, ya que el número deentradas ARP crece proporcionalmenteal cuadrado del número de adaptadoresde red. Dicho de otro modo, harían falta9900 entradas para un sistema con cienmáquinas (99 para cada uno de ellos).Esto implica un enorme esfuerzo deadministración, especialmente si se tie-nen que resolver problemas de red.

Echándole un ojoArpwatch [4] es una herramienta decódigo abierto para plataformas UNIX

ARP Spoofing • PORTADA

difícil de llevar acabo. Los admi-nistradores tendrí-an que restringirel uso de la cone-xión a Internet.HTTP, HTTPS,FTP y el correoelectrónico hacenque le sea fácil aun atacante infil-trarse dentro de lared software dañi-no. Los adminis-

tradores tendrían también que prohibirel uso de disquetes, CDs, además de dis-positivos móviles como portátiles yPDAs. Debido a las restricciones de uso,esta solución es inviable.

Si se usa Linux en la red interna y nose le da a los usuarios los permisos deroot, se pueden evitar la mayoría de losataques: los usuarios necesitan los privi-legios de root para enviar paquetes ARPdañinos. Sin embargo, como administra-dor, no se tiene una forma efectiva deimpedir que los usuarios arranquen sus

Figura 5: Durante el ataque Ettercap (Figura 4), el cliente (odo en

este ejemplo) recibe una clave modificada del servidor. La clave pro-

viene del atacante y no del servidor solicitado (bashir). Si el usuario

escoge ignorar la advertencia, la conexión será fisgoneada.

Page 22: Linux Magazine - Edición en Castellano, Nº 09

ataque. Esta arqui-tectura hace queARP-Guard seadapte bien tantoen redes pequeñascomo en grandesredes y el interfaz

basado en web que dispone hace que seaapreciado por los administradores.

ARP-Guard tiene sensores LAN ySNMP. Los sensores LAN funcionancomo Arpwatch o cualquier sistema IDS,analizando cualquier paquete ARP queel sensor lea. Por el contrario, el sensorSNMP usa el protocolo SNMP paraconectarse a los dispositivos existentes ypreguntarle por sus tablas ARP.

Los sistemas de detección de intrusos,IDS, (véase el cuadro titulado “Snort yARP”) también son capaces de detectarataques ARP, pero normalmente se insta-lan en las fronteras de la red. Pero amuchos negocios, simplemente no lesvale la pena instalar un IDS en la redinterna. Además, los empleados podríansentir que están dentro del “GranHermano” bajo la mirada del administra-dor de la red. El administrador puede vertodo el tráfico de la red y además moni-torizar el acceso de la plantilla. La utili-dad de esta solución es cuestionable,como la mayoría de los sistemas IDSsimplemente ignoran el tráfico ARP. Ypor último, el sistema al completo podríacolapsar al enfrentarse a ataques de tipo

ARP poisoning en combinación con laasignación dinámica de direcciones IP.

La criptografía al rescateLos protocolos criptográficos (IPsecsobre todo) se aseguran de la confiden-cialidad, autenticidad e integridad de losdatos, los ataques ARP se reducen sim-plemente a una denegación de servicios.Cualquier intento de fisgonear o manipu-lar los datos fracasarán. Sin embargo,pasará algún tiempo hasta que IPsec yotros protocolos criptográficos se insta-len y configuren correctamente dentro delas redes internas.

Hay un grupo de investigadores quesolicitan que ARP sea reemplazado conuna versión más segura [7]. S-ARP sebasa en criptografía, un CA (Autoridadde Certificación) y mensajes ARP firma-dos digitalmente. Sin embargo, se cues-tiona si vale realmente la pena: IPsecproporciona mucha más protección conel mismo esfuerzo, donde S-ARP tan soloprotege ARP. Lo único que ARP tiene asu favor es que implica menor sobrecar-ga de CPU en los sistemas.

Otras técnicas dePrevenciónAgunos fabricantes de cortafuegos y rou-ters sostienen que sus productos soncapaces de detectar ataques ARP spoo-fing, pero estrictamente esto no es ver-dad ya que estos sistemas tan solo pue-

que monitoriza las actividades ARPinusuales. La máquina que ejecutaArpwatch lee la información de direccio-namiento almacenada en cada paqueteARP que pasa por ella y almacena estainformación en una base de datos. Si eldato no coincide con las entradas yaalmacenadas, Arpwatch envía un correoal administrador avisándole. El autordice que la herramienta soporta SNMP,aunque nos ha resultado imposible con-firmarlo en nuestro laboratorio.

Actualmente, la mayoría de las redesusan direcciones IP dinámicas asignadaspor DHCP (Dynamic Host ConfigurationProtocol). En esta clase de entornos,Arpwatch devolverá gran cantidad deavisos de falsos positivos ya que avisaráde cualquier cambio producido por lasdirecciones IP/MAC.

ARP-Guard [5], un producto recientede ISL, funciona dentro del marco deuna arquitectura gestionada por senso-res. Múltiples sensores monitorizan lainformación ARP y envían dicha infor-mación al sistema de gestión, que anali-za los mensajes y alerta a los administra-dores en el caso de que se produzca un

22 Número 09 W W W . L I N U X - M A G A Z I N E . E S

PORTADA • ARP Spoofing

Snort [6] es un ejemplo sobresaliente delo que es un IDS para redes. Este sistemade detección de intrusiones ayuda a losadministradores a detectar ataques enuna red en una fase temprana, permi-tiendo implementar contramedidas.Snort dispone de un preprocesadorArpspoof con cuatro mecanismos dedetección.

• Para cada petición ARP que detecta, elpreprocesador Arpspoof valida ladirección fuente en el cuadro Ethernetcontra la dirección fuente el paqueteARP. Si ambas direcciones no coinci-den, emite una advertencia. El enve-nenamiento ARP no implica la utiliza-ción de direcciones diferentes en estoscampos, por lo que no se detectaría unataque en todos los casos.

• Para respuestas ARP, se lleva a cabouna comparación de direcciones fuen-

te y destino. Si una de estas compara-ciones no coinciden, Snort emite unaadvertencia. Como en el caso anterior,esto no detectaría envenenamientoARP per se, aunque sí Proxy ARP. Porotro lado, esta técnica a menudo eslegítima e involucra una máquina quecontesta peticiones ARP en delega-ción de otra máquina.

• El sistema alerta en el caso de peticio-nes ARP que se envían a direccionesunicast en vez de a broadcast. Aunqueeste comportamiento no se conformaal estándar (que tiene más de 20años), existen buenas razones paraello. Sin embargo, un auténtico ARPno necesita “unicastear” peticiones,por tanto, al igual que más arriba, estemecanismo podría fallar a la hora dedetectar una ataque de envenena-miento.

• Snort comprueba todos los paquetesARP basándose en una lista de direc-ciones IP y MAC proporcionadas porel administrador. Si la dirección IP estáen la lista, el IDS leerá su correspon-diente dirección MAC de la lista y lacomparará con la dirección MAC delpaquete y del cuadro Ethernet. En elcaso de discrepancia, Snort emite unaadvertencia. Este mecanismo sólo esútil para redes pequeñas, al ser elesfuerzo de configuración demasiadogrande en otros casos. No hay ningu-na manera de utilizar esta funcionali-dad de manera consistente con asig-nación dinámica de direcciones(DHCP).

En otras palabras, la capacidad de Snortpara la detección de envenenamientoARP es limitada, al igual que en el casode otros Sistemas de Detección deIntrusiones.

Snort y ARP

Figura 3: La tabla ARP en un sistema Linux con una entrada incom-

pleta, una entrada estática y dos entradas dinámicas (C: completa, M:

estática).

Page 23: Linux Magazine - Edición en Castellano, Nº 09

den detectar y registrar modificacionesde sus propias tablas ARP y no tienenforma de saber si el cambio se ha produ-cido por una causa legítima.

Dividir la red en un gran número desubredes y asignar un pequeño número deusuarios a cada subred puede ayudar alimitar la exposición a ataques ARP. Losswitches, que permiten a los administra-dores manejar el tráfico de red, proporcio-nan protección contra ataques ARP y sir-ven también para gestionar el tráfico.Como contrapunto, esta clase de switch escaro, aumenta el volumen de trabajo delos administradores y pueden tener elefecto de bloquear algunas aplicaciones.

Algunos desarrolladores intentan aña-dir protección a la pila IP en los dispositi-

vos terminales. El par-che Antidote [8] le indi-ca a una máquina Linuxque envíe una solicituda la dirección MAC pre-via antes de cambiaruna entrada ARP. Lamáquina sólo cambiarála entrada si la solicituda la dirección previa noes respondida. Denuevo, esta solución noproporciona ningunaprotección real frente alsabotaje. El atacantepuede simplemente ase-gurarse de que el ataquesuceda cuando lamáquina con la direc-ción MAC previa estéapagada o sea inalcan-zable. En el caso de quehaya bastante sobrecar-ga o que se tenga unasolución de balanceo de

carga, el parche puede causar que lacomunicación a estos sistemas falle.

Otra alternativa para protegerse contraataques ARP poisoning es impedir el rea-signamiento de direcciones MAC-IP exis-tentes. El parche Anticap [9] implementaeste comportamiento para Linux,FreeBSD y NetBSD. Solaris tiene unaopción similar, que requiere que un tem-porizador expire antes de aplicar el cam-bio. Este comportamiento se puede con-figurar libremente, sin embargo, unasolución como el parche Anticap sola-mente protege sistemas que están encen-didos permanentemente y los atacantesno tendrán ningún problema de manipu-lar las entradas nuevas una vez que lasentradas en la caché hayan expirado.

El kernel 2.4 de Linux o posteriores yano reaccionan frente a respuestas ARPno solicitadas. Desafortunadamente, estemecanismo se puede saltar fácilmente,como explica el fichero readme deEttercap. El kernel siempre tiene queprocesar las solicitudes ARP. Como alkernel se le pasa una combinación dedirección IP y dirección MAC (de la fuen-te), añade estos datos a su caché ARP.Así que el atacante tan solo tiene queenviar una solicitud ARP manipulada.Ettercap envía una combinación de soli-citud y respuesta, y cualquier sistemaresponderá a una de estas técnicas.

La protección incorporada dentro de lapila IP es menos potente para impedir elARP spoofing. Si un atacante responde auna solicitud ARP más rápido que lamáquina a la que realmente se le estáenviando la solicitud, el atacante gana lacarrera y su dirección es la que se añadea la tabla ARP.

Sin protecciónLas técnicas actuales no pueden propor-cionar una protección completa frente aataques ARP, pero puede armarse consistemas IDS y sensores especializadosen la manipulación ARP para detectar lamayoría de los intentos. Para estar com-pletamente seguro, hay que instalarIPsec en la red. Ignorar el problema noes una buena solución a menos que setenga una confianza plena en todos losusuarios que accedan a la red. �

ARP Spoofing • PORTADA

23Número 09W W W . L I N U X - M A G A Z I N E . E S

[1] Encuesta KPMG: http://www.kpmg.

com/about/press.asp?cid=469

[2] Address Resolution Protocol, RFC 826:http://www.ietf.org/rfc/rfc826.txt

[3] Reverse ARP, RFC 903:http:// www.

ietf. org/ rfc/ rfc903. txt

[4] Arpwatch: http://www-nrg.ee.lbl.gov yhttp://www. securityfocus. com/tools/

142

[5] ARP-Guard:https:// www. arp-guard.

com

[6] Snort: http:// www.snort.org

[7] Secure ARP: http:// security.dico.

unimi.it/research.en.html#sarpd yhttp://www.acsac.org/ 2003/ papers/

111. pdf

[8] Parche Antidote: http:// www.

securityfocus. com/ archive/ 1/ 299929

[9] Parche Anticap: http:// cvs. antifork.

org/cvsweb. cgi/ anticap/

RECURSOS

Figura 4: Ettercap esperando para una conexión entre 192.168.1.120 y 192.168.1.124 (fuente y

destino, arriba a la izquierda). La herramienta puede fisgonear telnet y FTP. Utiliza un ataque

tipo hombre de en medio en SSHv1 para desencriptar la conexión.

Figura 2: Un paquete ARP se transmite como contenido de la

trama Ethernet. Los campos con el tipo y la longitud de las

direcciones en cada paquete son seguidos por el código y los

datos de destino.

Page 24: Linux Magazine - Edición en Castellano, Nº 09

24

El Simple Security Policy Editor (SSPE) nos ayuda a organizar nuestra red y mantener las políticas de seguri-

dad en múltiples cortafuegos. Podemos referenciar una política central para generar conjuntos de reglas para

el filtrado de paquetes y pasarelas VPN. POR CHRISTIAN NEY

SSPE:Administración de políticas de seguridad para múltiples cortafuegos

CONTROL CENTRAL

PORTADA • Políticas de Seguridad SSPE

24 Número 09 W W W . L I N U X - M A G A Z I N E . E S

Tener muchas redes requieremuchos cortafuegos. El cortafue-gos protege la pasarela a Internet,

separa departamentos dentro de unaempresa y ayuda a conectar sitios remo-tos gracias a la tecnología VPN. Con esteescenario, es muy útil disponer de unaherramienta central para administrar laspolíticas de seguridad de los cortafuegos.El pionero en este campo fue la interfazgráfica Checkpoint Firewall-1 [3]. Peroeste software comercial solía ser dema-siado complicado, con demasiadascaracterísticas, no todas útiles. Esto aña-día a la herramienta bastante compleji-dad.

El Simple Security Policy Editor (SSPE)[1] es mucho más ligero. Se compone

básicamente de una colecciónde scrips de shell y

Perl que

ayudan a administrar un entorno de cor-tafuegos distribuido.

Al ejecutarlo por primera vez, SSPEmuestra un cuadro de diálogo basado entexto plano ([6] y Figura 1). Sin emabr-go, este front-end tan espartano escondeuna poderosa herremienta por debajo.Esta interfaz en modo texto ofrece sopor-te para administración remota: podemosusar un modem o un teléfono móvil parallamar, aunque la herramienta tiene susmás y sus menos con las limitadas tras-misiones X11. Que sea una interfaz enmodo texto no significa que no podamosusar el ratón. Dependiendo del terminalde emulación, seremos capaces de pulsarsobre la ventana de texto.

En lugar de mostrar un menú deopciones para todo, SSPE presupone queel administrador establecerá una serie dearchivos de configuración. Muchos usua-rios preferieren este método, que es

mucho más consistente con la natu-raleza de los cortafuegos. (Otras

interfaces más sofisticadascomo Firewall Builder [2],

simplemente proporcio-nan un front-end para

las herramientasen línea de

comandosdel siste-

ma

operativo, ocultando su complejidad alusuario).

Enfoque integralDebido a que cada característica adicio-nal es una amenaza potencial para laseguridad, trabajar sin una interfazdemasiado compleja mejora la seguridadde la estación de trabajo. Incluso si unproblema de seguridad potencial no afec-ta al cortafuegos directamente, el peligroestá igualmente presente, desde elmomento en el que un atacante podríamanipular las reglas que el administra-dor subirá posteriormente a los cortafue-gos.

El creador de SSPE establece una míni-ma instalación Debian que incluya lospaquetes que necesita SSPE: Bash,Dialog y Perl. Pero con requisitos míni-mos cualquier distribución Linux debe-ría funcionar. En nuestras pruebas nohubo ningún problema con DebianWoody y Sarge, el derivado Ubuntu,Gentoo y Red Hat Linux.

Instalación de SSPEEs muy recomendable fortalecer nuestraestación de trabajo de administrador.Claro, que con este consejo podríamosllenar toda una estantería. La documen-tación de SSPE proporciona un buennúmero de consejos útiles. Sugiere a losusuarios que corran sus equipos en unared confiable y que instalen el sistemadesde una fuente igualmente confiable.

En la documentación también secomenta qué servicios deberían des-

habilitar los administradores.Antes de instalar SSPE,necesiaremos tener instala-do IPsec. Aunque SSPE estábasado en el proyectoFreeswan [4], que fueabandonado hace dosaños, Openswan [5]

Page 25: Linux Magazine - Edición en Castellano, Nº 09

proporciona un perfecto y compatiblesustituto. Un fork incompatible podríacausar algun problema inicial, pero cual-quier persona podrá resolverlo gracias ala disponibilidad de las fuentes OpenSource.

Instalar el software SSPE es un proce-so algo contraintuitivo debido a laambigüedad de la información propor-cionada. El documento INSTALL inclui-do en el paquete no pretende dar másque algunos consejos para la instala-ción y presupone que el administradorsabe lo que está haciendo. Cuando nosquedemos sin más consejos, nosencontraremos sentados delante de unapantalla vacía y sin obtener los mensa-jes de error descriptivos que necesitarí-amos para encontar el problema. Lacausa puede ser un simple directorioque falta o la ruta en la que estamostrabajando. Pero los scripts no dancuenta de estos errores.

Cuenta de AdministradorEs preferible no ejecutar ningún softwarecrítico para la seguridad como usuarioroot: SSPE sólo necesita una cuenta nor-mal de usuario. Tendremos que añadirun directorio para SSPE en el directoriode usuario. La documentación se refierea este directorio como adm. Como variosscripts esperan encontrar el directorio en$HOME/adm, deberíamos seguir estarecomendación. La sigiente tarea serácrear un árbol de directorios bajo eldirectorio de administración. Podemos

hacer esto de una manera sencillacopiando los subdirectorios desde el tar-ball de SSPE. SSPE espera encontrar losscripts de shell y Perl en adm/bin. Losscripts modifican los archivos de confi-guración genérica en adm/etc.

El directorio adm/desc tiene otro sub-directorio para cada máquina que confi-gure SSPE. Aquí es dónde se guardan lasreglas, tablas de enrutado y otros deta-lles del equipo. adm/software tiene pro-gramas que distribuye SSPE a sus pasa-relas. Los archivos temporales se sitúanen adm/tmp y también necesitaremos unarchivo adm/.config que define las varia-bles que necesita SSPE en tiempo deejecución. Una variable particular-mente interesante es BASEDIR:muchos scripts apuntarán a un agu-jero negro si la variable BASEDIR

se define incorrectamente.Por lo tanto debemosasegurarnos deque apunte aldirectorio adm.

Además delas variablesdefindas en.config, algunosscripts auxiliaresrequerirán unavariable de shelldenominada ADM-

ROOT, que apunta aldirectorio creado en elprimer paso. La mejoridea es crear un archivo

25

Políticas de Seguridad SSPE • PORTADA

25Número 09

profile para configurar todo esto.Podemos manejar todo este procesocomo se muestra en el Listado 1.

Como SSPE direcciona los equipos porel nombre del host, tiene sentido añadirdichos equipos al archivo /etc/hosts.Aunque podemos saltarnos este paso sitenemos operativo un entorno DNS, espreferible usar /etc/hosts por motivos deseguridad, ya que así reducimos el riesgode ataques por envenenamiento de lasDNS.

Las comunicaciones con los cortafue-gos se basan enteramente en SSH con

autenticación con clavepública, por lo que

el nuevo usuariotambién necesitaun par clavesSSH. Para eludirla necesidad deteclear la frase

de paso, losadmi-

Figura 1: El menú principal de SSPE es muy claro. La interfaz basada en texto plano permite la

administración remota de la herreminta.

01 find sspe-0.2.5 -type d -exec

cp {}

02 adm \;

03 # adduser sspe

04 # su - sspe

05 $ mkdir adm

06 $ for DIR in bin etc desc

software ;

07 do cp -r sspe-0.2.5/$DIR adm/

; done

08 $ mkdir adm/tmp

09 $ cp sspe-0.2.5/config

adm/.config

10 $ vi adm/.config # BASEDIR

anpassen

11 $ echo "export

ADMROOT=/home/sspe/adm"

12 >> ~/.profile

13 $ source ~/.profile

Listado 1: Archivo Profile

W W W . L I N U X - M A G A Z I N E . E S

Page 26: Linux Magazine - Edición en Castellano, Nº 09

reglas se aplica correctamente. El archivode configuración privates (véase Listado3) se usa para este propósito. El mapeoNAT para la red y las direcciones IP se

definen en nathosts (véase Listado 4).Si queremos que además SSPEmaneje la configuración de IPsec,

tendremos que modificar elarchivo ipsecs.

Otros tres archivos deconfiguración termi-

nan de definir elconjunto de reglasdel cortafuegos.Las reglas para elacceso de adminis-

tración en rules

admin e IPsecrules.ipsec son más

bien estáticas y novarían mucho entre las

máquinas implicadas. Elconjunto de reglas se

almacena en rules.user. La

sintaxis de todos estos archivos es bas-tante sencilla (Listado 5).

Las reglas aplicadas en nuestros archi-vos de ejemplo permiten a la máquinaadmin establecer una conexión SSH conla máquina obejtivo sspe (ambas máqui-nas están definidas en hostnet). La pala-bra clave Oneway asegura que la cone-xión es unidireccional. SSPE aplica estasreglas a cada pasarela, por lo que el con-junto de reglas que definamos deberíaser lo más universal posible.

Cortafuegos IndividualesYa podemos usar la interfaz de SSPEque se ejecuta tecleando adm/bin/adm.Por supuesto, nada nos impide modifi-car los archivos de configuración en losdirectorios bajo desc de maneramanual, pero parece evidente que laopción machine administration | add

(véase Figuras 1 y 2) nos ofrecen unmétodo más sencillo. Las máquinas tie-nen que usar los mismo nombres que

nistradores pueden asignar una frase depaso vacía a la clave o bien usar unagente de autenticación SSH. Porsupuesto, tendremos que transferir laclave pública a la máquina objetivodonde SSPE se loguee como root. Ladocumentación de SSPE menciona estopero realmente no da ningún consejo alrespecto.

Configuración BasicaLos detalles de la configuración se alma-cenan en varios archivos, cada uno deellos administra un asunto específico (sesuministran ejemplos). La documenta-ción es mucho más detallada en estepunto y se extiende para explicar lasrelaciones entre los componentes indivi-duales.

El archivo central se denominahostnet. Se localiza en adm/etc y agrupalas máquinas que se regirán por políticassimilares. El agruparlas hace más fácildesplegar un diseño de seguridad alta-mente granular. Lo normal es tener unapolítica común para la red interna,donde sólo se permite el acceso a clien-tes muy concretos. Las reglas de accesopara el propio cortafuegos son usual-mente idénticas para muchos equipos,sólo la maquina de administración nece-sita especial atención. En el Listado 2tenemos un ejemplo.

NAT e IPsecSi nuestra red usa NAT (NetworkAddress Translation) es importante defi-nir previamente las redesprivadas de usointerno (usual-mente basadasen la RFC 1918[7]), para asegu-rar que elconjuntode

PORTADA • Políticas de Seguridad SSPE

26 Número 09 W W W . L I N U X - M A G A Z I N E . E S

01 #Name Network address # Comment

02 #####################################################################

03 any 0.0.0.0/0 # anything not explicitly assigned

04

05 # Internal networks

06 lan-dtm 192.168.0.0/24 # Work LAN DTM

07 lan-muc 192.168.1.0/24 # Work LAN MUC

08 dmz 192.168.2.0/24 # DMZ

09

10 # The boss has more privileges than others

11 boss 192.168.0.15/32 # The boss' PC

12

13 # The administrative machines need SSH access

14 admin 192.168.0.10/32 # sysadmin PC

15

16 # The SSPE workstation needs special rules

17 sspe 192.168.0.2/32 # SSPE administrative machine

18

19 # Internal and external gateway definitions

20 def-gw 192.168.0.1/32 # Internal NIC of firewall

21 gw-all 192.168.0.1/32 # Firewall DTM location

22 gw-all 1.2.3.4/32 # Firewall external DTM location

23 gw-all 2.3.4.5/32 # Firewall external MUC location

Listado 2: Hosts y Redes

01 #Name Network address # Comment

02 ##############################################################

03 lan-dtm 192.168.0.0/24 # Work LAN DTM

04 lan-muc 192.168.1.0/24 # Work LAN MUC

05 dmz 192.168.2.0/24 # DMZ

Listado 3: Redes Privadas

Page 27: Linux Magazine - Edición en Castellano, Nº 09

se definieron en nuestro archivo hos-

tnet. Desafortunadamente, la herra-mienta no resuelve nombres con direc-ciones IP e insiste en preguntar aladministrador estos detalles.

SSPE genera el directorio requeridocon tres archivos: desc contiene la des-cripción, ip la

Si pulsamos en apply en el menú (véaseFigura 1) se despliega el diseño de la segu-ridad de todas las máquinas implicadas, oa una selección de ellas. Aquí comproba-remos si la configuración es correcta.

El apartado ipsecs administration sim-plemente revela el contenido de la confi-guración del archivo de configuraciónipsecs, pero sin los comentarios. Si laestación de trabajo no tiene un archivo/ect/ipsecs, SSPE muestra un mensaje deerror y se cierra. Si tiene éxito, el progra-ma espera a que el administrador pulse[Enter]. Entonces empieza a generar ydistribuir las configuraciones IPsec yotros secretos previamente compartidos.

El apartado machine configuration

(véase Figura 2). No sólo se usa paraañadir nuevas pasarelas y listar las yaexistentes: podemos incluso deshabilitarmáquinas individuales que esten tempo-ralmente no disponibles.

ConclusionesSSPE logra su objetivo de proporcionaruna administración más simple y efecti-va de sistemas con cortafuegos distribui-dos. Puede ser algo complicado habi-tuarse al diseño, pero está realmentebien pensado y es capaz de soportarescenarios realmente complejos.

El proyecto no ha tenido la relevanciaque merece hasta la fecha, pero su popu-laridad se está incrementando. Sólo cabeesperar que más desarrolladores se dencuenta de su potencial y contribuyan coninnovaciones. �

Políticas de Seguridad SSPE • PORTADA

dirección de lamáquina y hw

identifica siste-mas operativostipo Unix yCisco. Estoinfluye encómo descubreSSPE las rutasde una pasare-la, por ejem-plo.

Además deestos tresarchivos inde-pendientes,hay tres enla-ces simbólicos

a los archivos rules.* globales. Estosenlaces simbólicos aseguran que cadacortafuegos observa también el conjun-to de reglas global. En un escenariosimple con un solo cortafuegos, sólonecesitaríamos las reglas globales. Encasos más complejos se necesita usardistintos archivos rules.user para cadacortafuegos. Las reglas de este archivotienen prioridad respecto del archivoglobal.

Menú Cinco OpcionesEl programa principal de SSPE está prin-cipalmente diseñado para ayudar avisualizar las configuraciones. El aparta-do rules administration lista el conteni-

do de hostnet y permite a los adminis-tradores llamar a un editor de textos

para editar manualmente el con-junto de reglas global. Será nece-sario politicas individuales paralas reglas específicas de sitiosconcretos.

27Número 09

01 #Local network NAT Address # Comment

02 ###########################################################

03 192.168.0.0/24 1.2.3.4 # DTM

04 192.168.1.0/24 2.3.4.5 # MUC

Listado 4: Configuración NAT

01 #Source Target Direction Protocol Port Policy

Options

02 #############################################################

03 admin sspe Oneway TCP ssh accept LOG

Listado 5: Conjunto de reglas

Figura 2: Los cortafuegos que necesitan una configuración individual se

añaden al menu de equipos. SSPE añade las configuraciones individuales

a la configuración básica, que se aplica a toda la red.

[1] SSPE: http://sspe.sourceforge.net

[2] FW-Builder: http://www.fwbuilder.org

[3] Checkpoint Firewall-1: http://www.

checkpoint.com/products/firewall-1/

[4] Freeswan: http://www.freeswan.org

[5] Openswan: http://www. openswan.

org

[6] Dialog: http://hightek.org/dialog/

[7] RFC 1918, “Address Allocation forPrivate Internets” http://www.ietf.org/

rfc/rfc1918.txt

RECURSOS

Christian Ney es un administrador

de Unix y cortafuegos empleado

por una línea aérea regional. En su

tiempo libre, Christian administra

un wiki en RootieWiki.de y contri-

buye en un buen número de pro-

yectos de software libre.

EL

AU

TO

R

W W W . L I N U X - M A G A Z I N E . E S

Page 28: Linux Magazine - Edición en Castellano, Nº 09

Debido a los componentes altamente específicos de muchos portátiles, Linux requiere a menudo de distintos

parches o incluso drivers de Windows para funcionar correctamente. El HP NC4200 es diferente: la distribu-

ción Ubuntu Linux con la que viene soporta prácticamente todas sus funcionalidades de hardware.

POR MIRKO DÖLLE

Sub-notebook HP Compaq NC4200 con Ubuntu Linux

EL PORTÁTIL LINUX

28

PRÁCTICO • Ubuntu Notebook

28 Número 09 W W W . L I N U X - M A G A Z I N E . E S

El mercado de los portátiles sedivide fundamentalmente endos grupos: aquellos con dispo-

sitivos Centrino certificados y los quetienen otro hardware diferente. AunqueCentrino no es otra cosa que un granmontaje de marketing de Intel paradominar el sector WLAN, la certifica-ción Intel tiene un efecto en el mercadode los portátiles: todos los portátiles

Centrino tienen más o menos el mismohardware base. El mismo que el delHP’s NC4200 que se venderá con unaversión personalizada de UbuntuLinux en lugar de Windows XP.

El prototipo a pruebaEl Hardware Competence Center deLinux Magazine se las arregló para con-seguir una unidad de pre-producción del

portátil. Tiene casi el tamaño de unahoja A4. En la versión estadounidense lapantalla puede rotarse 180 grados ysituarse encima del teclado, convirtien-do el portátil en un tablet PC, inclusocon pantalla táctil y algunos botonesadicionales en el borde de la pantalla. Laversión europea lleva una pantallaestándar con 12.1 pulgadas y una reso-lución de 1024x768 pixels.

Figura 1: HP comerciali-

zará el NC4200 a partir

de julio con Ubuntu

Linux en lugar de

Windows XP. El soporte

hardware personalizado

con Ubuntu 5.0.4 es

excelente.

Page 29: Linux Magazine - Edición en Castellano, Nº 09

Ubuntu Notebook • PRÁCTICO

29Número 09W W W . L I N U X - M A G A Z I N E . E S 29

Por lo demás, la unidad de pruebas esidéntica a la final: el portátil Centrinoestará dotado de un Pentium Mobile 1,73GHz, 512 MByte de RAM y un disco durode 40 GBytes. Pero no se incluye ni unaunidad de disco óptico ni una simplebahía por los 1500 Euros de este caroportátil: HP lo ha diseñado tan pequeñoque sólo estarán disponibles como uni-dades externas.

La ausencia de unidad óptica es elprincipal problema para instalar el siste-ma operativo: Ubuntu Linux 5.0.4 seadjunta sólo en CD, el disco duro contie-ne únicamente un sistema Free-DOS. Sinuna unidad externa USB CD no hayforma de instalar Ubuntu en el portátil.Afortunadamente, no importa la marcade la unidad CD, una grabadora DVDestándar con un conector USB 2.0 fun-cionará sin problemas y nos ahorraráunos buenos euros en comparación conuna simple unidad CD-ROM del fabrican-te del portátil.

Primer contactoAunque no tenemos unidad óptica, elportátil viene equipado con un buen con-junto de conectores. Junto con tres puer-tos USB 2.0, un slot PCMCIA y una ranurapara tarjetas SD/MMC, el HP NC4200viene con un conector de modem, unpuerto ethernet y conectores VGA y PS/2en la parte trasera. En cuanto a conexio-nes inalámbricas, el portátil trae, siguien-do el estándar Centrino, un adaptadorWLAN de Intel de 54 MBit/s así comouna interfaz IrDA. El módulo Bluetoothque traía instalado la unidad de pruebasestá disponible como ampliación. Tanto eladaptador WLAN como el Bluetooth pue-

den deshabilitarse y volverse a habilitarcon un pequeño botón situado en el ladoizquierdo del portátil, (véase Figura 2),sin necesidad de reiniciar.

La batería de este sub-notebook puedeacumular unos 50 Wh de energía yaguantó más de tres horas durante laprueba. Debido a que la batería de estaunidad de pre-producción tenía casi unaño de uso, no le pasamos el test habi-tual. Un portátil nuevo debería aguantarentre tres y cuatro horas sin necesidadde alimentación.

El acabado del portátil es razonable-mente bueno, no tiene partes que vibrenni más grandes de la cuenta. El tecladotiene un umbral de actuación claramenteperceptible y para suplir el ratón HP haincluido un puntero tipo “track point”además de un touchpad con sus dosbotones correspondientes.

Ubuntu personalizadoLos desarrolladores de HP y Ubuntu hansimplificado el proceso de instalación de

la distro enormemente: en lugar delnombre de usuario y su password, ya nohay selecciones complicadas. Únicamen-te la denominación de los dispositivos dered es un poco extraña, eth0 es el nom-bre para el módulo WLAN mientras queeth1 está asociado con el puerto ethernetde la parte de atrás del portátil. En lamayoría de los portátiles es exactamentea la inversa.

Los desarrolladores de Ubuntu hanhecho un gran trabajo en cuanto alsoporte del hardware: salvo por la ranurade tarjetas SD/MMC, el modo suspendi-do y la pantalla táctil (que no está dispo-nible en Europa), todos los demás com-ponentes funcionan a la primera.

El módulo del kernel ipw2200 es el res-ponsable del módulo Intel WLAN Pro/Wireless 2200BG y hace accesible el dis-positivo WLAN a través de un dispositi-vo normal ethernet denominado eth0

con extensiones wireless en lugar dedenominarlo wlan0. Por lo tanto, al con-figurar el firewall o el enrutado, debemos

Figura 2: El botón con el símbolo de la antena a la izquierda del conector USB deshabilita y vuelve a habilitar el WLAN y el Bluetooth sin nece-

sidad de reiniciar el sistema. El botón de información situado entre el de encendido y el conector USB genera un código de exploración que

arranca por defecto el explorador de ayuda de Gnome.

Fabricante: Hewlett Packard http://www.hewlett-packard.com

CPU: Pentium-M, 1,73 GHzMemoria: 512 MB DDR (max. 2 GB)Discos: Disco duro 40 GB, 2,5 pulgadasPantalla: TFT, 12,1 pulgadas, 1024x768 PíxelesBatería: LiIo, 10,8 Voltios, 4500 mAh (48,6 Wh)Dispositivos de señalamiento: Track point, Touchpad con zona de scrolling y tercerbotón de ratónDispositivos de red: Intel Pro Wireless 2200BG WLAN Adapter (802.11b/g),Ethernet 10/100/1000 MBit/s (Broadcom), 56k Smartlink Modem, Bluetooth (opcional)Conectores: 3 x USB 2.0, Modem, Ethernet, Monitor externo, PS/2, Auriculares/Micrófono,PCMCIA, SD/MMCTamaño/peso: 28,5 cm x 23,5 cm x 3 cm / 1,8 kgPrecio: 1500 Euros aprox.

HP Compaq NC4200

Page 30: Linux Magazine - Edición en Castellano, Nº 09

tener esto en cuenta para evitar propor-cionar servicios no deseados o abrirpuertos en el dispositivo equivocado.

El demonio slmodem emula un pseu-do TTY con emulación de un modemserie estándar para el softlink modem.Además de esto, el enlace simbólico/dev/modem apunta a este pseudo TTYpara facilitar la configuración.

Teclas especialesPara conectar el teléfono móvil al portá-til, HP ha incorporado un adaptadorBluetooth junto con una interfaz IrDA.Ambos están listos para operar desde elprimer momento tras instalar Ubuntu.Incluso las teclas especiales de volumen,mute y el botón de información del late-ral izquierdo. El único problema quepuede acarrear el botón de info es lasaturación: si abrimos muchas ventanasde ayuda podemos ir quedándonos sinmemoria disponible.

También podemos mapear nosotrosmismos las teclas especiales a comandosque queramos, ya que cada tecla generaun código que pueden remapearse enSystem / Settings / Macros.

El tercer botón del ratónEl touchpad es un sustituto del ratónbastante bueno: además del área sensiti-va y los dos botones del ratón que haybajo esta, tiene una zona ranurada a laderecha (véase Figura 3) que simula una

rueda de desplazamiento. Además, estazona ranurada funciona también como elbotón central de un ratón de tres botonessi se le da un toquecito. Esto resuelve elviejo problema de apretar el botónizquierdo y el derecho simultáneamentepara emular el tercer botón en operacio-nes de copia y pega. El único “pero” selo lleva la situación de esta zona ranura-da: una persona diestra puede tocar estaárea sin querer, al operar con el touch-pad. Estaría mejor puesta en la parteizquierda.

Los modos de ahorro de energía de losIntel Pentium Mobile están disponiblesdesde la instalación estándar de Ubuntu,excepto el modo suspendido a RAM (S3)que no funcionaba en esta unidad depre-producción. Cada vez que poníamosel portátil en estado S3, que aparececomo disponible en /proc/acpi/sleep, elportátil se suspendía pero no se podíavolver a despertar. Según HP, esta carac-terística debería estar disponible en elpróximo lanzamiento de Ubuntu, quedebería aparecer con mejoras y mayorsoporte para los portátiles HP. ThomasSchneller ,de HP, es el responsable dedesarrollo. Para cualquier duda se puedecontactar con él en [1] .

ResumenEl hardware del HP Compaq NC4200está bien soportado por Ubuntu Linux,empezando por los componentes

Centrino ampliamente utilizados y termi-nando por algunos detalles adorablesgeniales como las teclas especiales pro-gramables. Con otras distribuciones deLinux podría aparecer algún problemamenor con el soporte del harware. Lasfuentes y los parches del kernel saldránen julio, cuando HP comience a comer-cializar el portátil con Ubuntu en lugarde Windows XP.

Debido al pequeño tamaño de estesub-notebook hay algunas limitacionesque deben de tenerse en cuenta: ausen-cia de disco óptico, una segunda bateríadebe conectarse externamente y que sóloestá disponible una pantalla de 12.1 pul-gadas con una resolución de 1024x768píxeles como máximo. Hay pocas panta-llas del mismo tamaño y con mayor reso-lución en el mercado, lo que haría al por-tátil mucho más caro, pero que una reso-lución XGA es el mínimo absoluto hoydía, no es ningún secreto.

Si HP consigue finalmente incorporarel modo suspendido o el lector de tarje-tas SD/MMC bajo Linux, el HP NC4200será sin duda el portátil Linux óptimo. �

PRÁCTICO • Ubuntu Notebook

30 Número 09 W W W . L I N U X - M A G A Z I N E . E S

[1] Sitio de Linux sobre portatiles HP:[email protected]

[2] Descargas de la iso de Ubuntu paraportátiles HP: http://www.ubuntu.com/

support/custom/hplaptops

RECURSOS

Figura 3: HP monta el NC4200 tanto con un track point como con un touchpad, ofreciendo al usuario los dos principales sustitutos del ratón.

La zona ranurada a la derecha del touchpad funciona como rueda de scroll y tercer botón.

Page 31: Linux Magazine - Edición en Castellano, Nº 09

El nuevo servidor ColdFusion MX7 de Macromedia permite crear apli-

caciones web de alto rendimiento. Vamos a mostrar en este artículo las

novedades y los cambios que se han producido en esta última versión.

POR LARKIN CUNNINGHAM

Una mirada al nuevo servidor ColdFusion MX7 de Macromedia para Linux

MUY COOL

ColdFusion MX 7 Server • PRÁCTICO

31Número 09W W W . L I N U X - M A G A Z I N E . E S 31

La versión de ColdFusion MX7 [1]marca el décimo aniversario de laplataforma de desarrollo web

ColdFusion. Originalmente era una apli-cación Windows en C++, actualmentees un entorno de desarrollo basado enJ2EE que se ejecuta en Linux, AIX, MacOS X y Solaris, además de funcionar tam-bién en Windows.

La plataforma ColdFusion fue creada ydesarrollada por Allarie Corporation.Macromedia adquirió ColdFusion en el2001 y lanzó la versión ColdFusion 6.0,llamando al producto ColdFusion MXpara integrarlo con otros productos de lalínea Macromedia MX, comoDreamweaver y Flash.

Macromedia ha seguido desarrollandoColdFusion y ha ido añadiéndole distin-tas mejoras con el paso del tiempo. Estaúltima versión ha ido más lejos aún y haproporcionado a ColdFusion una genera-ción de contenidos nuevos como la mejo-ra de capacidades gráficas, generación de

informes usando FlashPaper y PDF y for-mularios de entrada de datos Flash, per-mitiendo diseños complejos de formula-rios como las solapas.

El AdministradorColdFusion viene con una aplicación webde administración (Figura 1) para ayudara gestionar el entorno ColdFusion. Laaplicación de administración permiteconfigurar la variable caché del cliente, lamemoria de Java/JVM y otras variablesde tiempo de ejecución que se puedenmodificar para mejorar el rendimientoglobal. Esta característica proporcionauna interfaz fácil de usar para gestionarlos parámetros de configuración querequieren un fichero de texto (php.ini) enPHP.

El Administrator también permite con-figurar las fuentes de datos, los serviciosweb, el planificador de tareas, las etique-tas personalizadas (se verá más adelante)y la seguridad del entorno de ejecución

entre otras. Con ColdFusion el usuario notiene que preocuparse de ningún ficherode configuración; las opciones de confi-guración están disponibles en elAdministrator.

Contenido EnriquecidoMacromedia es sin duda el maestro delcontenido enriquecido en Internet. El for-mato Flash [3] para las animaciones basa-das en web, los juegos y los interfaces ami-gables al usuario es un estándar de hecho.Los Applets de Java y los controles ActiveXparecen primitivos si se les compara.

Por tanto, no es sorprendente queMacromedia se haya aprovechado de sufamosa tecnología Flash para mejorar laproducción de contenidos en ColdFusion.El Formato Flash es una opción a la horade mostrar gráficas y formularios deentrada de datos, y el nuevo formatoMacromedia FlashPaper [4] (Figura 2) esuna buena opción cuando se desea obte-ner documentos como informes. Tambiénestá soportado el formato Adobe PDF(Portable Document Format). La elecciónde PDF y FlashPaper significa que elusuario puede obtener contenidos que segarantizan que van a ser impresos exac-tamente como aparecen en el navegadorweb.

El soporte de Flash y PDF en Linux hamejorado considerablemente en estosúltimos meses. Esto supone que se puedeinstalar una aplicación ColdFusion en laintranet bajo un entorno Linux ofrecien-do las mismas características que se dis-ponían para otras plataformas.

La etiqueta CFCHARTLa etiqueta CFCHART de ColdFusion per-mite obtener gráficas con una alta cali-

01 <CFQUERY NAME= qryGetREmps

DATASOURCE= #MyDSN# >

02 SELECT * FROM employees

03 </CFQUERY>

04

05 <CFOUTPUT QUERY= qryGetEmps >

06 Name: #qryGetEmps. FirstName#

#qryGetEmps. LastName#<br>

07 A d d r e s s : # q r y G e t E m p s .

A d d r e s s 1 # , # q r y G e t E m p s .

Address2#

08 </CFOUTPUT>

Listado 1: empquery.cfm

Page 32: Linux Magazine - Edición en Castellano, Nº 09

dad en formatos PNG, JPEG o Flash. Elformato Flash para las gráficas propor-ciona opciones adicionales a las mismas,como líneas o barras elevándose desde eleje-X al punto exacto del valor del dato ográficas de tartas con sombras y degrada-dos. Cada formato de gráfica permite eluso de regiones sensibles al clic delratón, proporcionando al usuario lapotencia de asignar valores URL a lossegmentos de las gráficas. Esta caracte-rística proporciona la posibilidad decrear niveles de gráficas para losSistemas de Información Empresarial(MIS) y los Sistemas de Soporte a laDecisión (DSS). ColdFusion ofrecemuchas otras opciones para las gráficas.Por ejemplo, se puede elegir entre gráfi-cas de líneas, barras, tartas, etc.

PHP ofrece algunas opciones de terce-ros para crear gráficas. Probablemente laopción más popular para crear gráficasen PHP sea JpGraph, que proporciona

una colección detipos de gráficasmejores que lasde ColdFusion.JpGraph está dis-ponible gratuita-mente para usono comercial. Hayque decir que lasgráficas enColdFusion estánmejor consegui-das, aparecenmejor definidas,con bordes suavi-zados y el motorinterno de genera-ción de gráficas esmás sencillo deconfigurar.

En la Figura 3 se puede ver una gráficade ejemplo mostrando los niveles despam y virus de los últimos 30 días. En elListado 3, se encuentra el código que,haciendo uso de la etiqueta CFCHART, seha usado para crear la gráfica de la Figura3.

La etiqueta CFCHARTSERIES se usapara especificar cada línea o barra en unagráfica de líneas o barras, o para especifi-car los segmentos en una gráfica de tarta.En el ejemplo descrito previamente, seitera sobre algunas consultas, creandomuchos puntos de datos con la etiqueta

CFCHARTDATA. Como se puede observaren el Listado 3, se pueden usar bastantesparámetros para configurar las gráficasen ColdFusion.

Formularios Flash,ActionScript y RemotingLos formularios de entrada de datosbasados en Flash permiten el procesa-miento de los mismos en el lado cliente,tanto la visualización como la validaciónde los mismos. Los formularios de entra-da de datos basados en Flash amplían lascaracterísticas de HTML y JavaScript, y

PRÁCTICO • ColdFusion MX 7 Server

32 Número 09 W W W . L I N U X - M A G A Z I N E . E S

CFML es un lenguaje basado en etique-tas con CFML y HTML almacenado enficheros de páginas web .cfm. En vez deusar la solución tradicional de los len-guajes de script como PHP y ASP, CFMLusa etiquetas similares a HTML, con eti-quetas de apertura y cierre. No todo loque tiene CFML está basado en etique-tas, sin embargo, la mayoría de las eti-quetas tienen su equivalente en script. ElListado 1 muestra una consulta SQL sim-ple seguida de la salida de los resultadosde la consulta.

Nótese como las etiquetas CFML tomanparámetros como las etiquetas HTMLestándar. En el ejemplo anterior, la eti-queta CFQUERY se usa para obtener unconjunto de resultados de la conexión ala base de datos que se ha creado usan-do la cadena de conexión MyDSN defini-da en el Administrator de ColdFusion (severá más adelante). La salida de losdatos resultados se lleva a cabo fácil-mente usando la etiqueta CFOUTPUT.

Las variables y las llamadas a funcionesse incluyen entre caracteres almohadi-llas (#) y se incluyen entre etiquetasCFML o como parámetros de etiquetasCFML para ser interpretados porColdFusion. Incluir la consulta comoparámetro de la etiqueta CFOUTPUThace que la etiqueta itere por todas lasfilas del resultado de la consulta.

Compárese esto con el equivalente enPHP 5 / mysqli [2] en el Listado 2. La cap-tura de excepciones ha sido omitida porsimplicidad.

Como se puede ver en los listados,CFML tiene la ventaja de ser más fácil deescribir y leer que el código equivalenteen PHP. Para un diseñador web sin cono-cimientos o con pocos conocimientos deprogramación, CFML es más fácil y rápi-do de aprender que PHP. CFML propor-ciona a los principiantes la capacidad decrear potentes aplicaciones con tan sólounas cuantas etiquetas.

La solución basada en etiquetas

01 <CFQUERY NAME= qryGetREmps

DATASOURCE= #MyDSN# >

02 SELECT * FROM employees

03 </CFQUERY>

04

05 <CFOUTPUT QUERY= qryGetEmps >

06 Name: #qryGetEmps. FirstName#

#qryGetEmps. LastName#<br>

07 Address: #qryGetEmps.

Address1#, #qryGetEmps.

Address2#

08 </CFOUTPUT>

Listado 1: empquery.cfm

01 $dbconn = new mysqli($dbhost,

$dbuser, $dbpass, $dbname);

02

03 $result =

$dbconn->query('SELECT * FROM

employees');

04

05 while ($row =

$result->fetch_assoc())

06 {

07 printf( Name: %s %s<br> ,

$row['FirstName'],

$row['LastName']);

08 printf( Address: %s, %s ,

$row['Address1'],

$row['Address2']);

09 }

Listado 2: empquery.php

Figura 1: El Administrator de ColdFusion evita que el usuario se tenga

que enfrentar con la línea de comandos y los ficheros de configura-

ción.

Page 33: Linux Magazine - Edición en Castellano, Nº 09

ColdFusion MX 7 Server • PRÁCTICO

a la aplicación ColdFusion inter-actuar con aplicaciones Flash MXavanzadas y animaciones. Undesarrollador Flash MX que noconozca CFML puede aún reali-zar un ActionScript del lado delservidor que interactúe con losrecursos ColdFusion. Esto permi-te una separación entre la lógicade negocio y la presentación enFlash.

ProgramaciónOrientada a ObjetosAunque CFML y PHP histórica-mente han sido lenguajes de pro-gramación estructurados, ambosimplementan características de

orientación a objetos. Sin embargo, nin-guno de los dos puede considerarse real-mente uno lenguaje orientado a objetos,ya que no implementan todas las carac-terísticas de los lenguajes orientados aobjetos como C++ o Java. CFML pro-porciona lo que se conoce comoColdFusion Components o CFCs. CFCssoportan encapsulamiento, herencia eintrospección. Se almacenan en ficheros.cfc en vez de en ficheros .cfm.

El Listado 4 muestra un ejemplo defichero CFC que define un componentellamado CovertTemp, que convierte valo-res de temperatura de la escala Celsius aFahrenheit y viceversa. El Listado 5muestra algunos ejemplos de código

CFML que invocan a los métodos de loscomponentes.

Las características de orientación aobjetos de ColdFusion no son tan elegan-tes como las proporcionadas por PHP 5,pero ColdFusion ofrece lo que realmentese necesita para crear una aplicaciónbasada en componentes fácil de mante-ner.

Extendiendo ColdFusionSe puede extender la funcionalidad deColdFusion a través del uso de las etique-tas personalizadas escritas en CFML,Java o C++. En el caso de usar CFML,simplemente hay que crear un ficheroque contenga el código de la etiqueta per-sonalizada y colocarlo en un directorioque se encuentre definido en la ruta deColdFusion (similar al classpath). Las eti-quetas escritas en Java o C++ (llamadasetiquetas CFX) tienen que ser declaradasexplícitamente usando el Administrator.Las etiquetas personalizadas pueden serentonces usadas como cualquier otra eti-queta CFML, tal como si fuera parte delnúcleo del lenguaje. Esto también esposible en PHP, pero normalmente impli-ca otra fuente de PHP en la página o bienrecompilar PHP con un módulo nuevo.

Como ColdFusion se ejecuta en un ser-vidor de aplicaciones J2EE, también setiene acceso a las clases de Java en elclasspath de la JVM y en los directoriosde clases WEB-INF/lib y WEB-INF/classes

(tal y como funciona en Tomcat, porejemplo). Usando la etiqueta CFOBJECT,

son mucho más fáciles de implementar ydesplegar que los formularios de entradade datos basados en Applets de Java.Flash no sólo permite mayor controlsobre cómo se introducen los datos for-zándolos a las reglas de negocio, sinoque también hace que la experiencia delusuario sea mucho más rica. La Figura 4muestra un ejemplo de formulario Flashque usa solapas, un control calendario,títulos y características especiales de dis-posición.

ActionScript es un lenguaje de scriptque se usa para interactuar con FlashMX. Se puede usar ActionScript en elcódigo ColdFusion para interactuar conun servidor Flash Remoting permitiendo

33Número 09W W W . L I N U X - M A G A Z I N E . E S

01 <cfcomponent>

02 <!--- Método de conversión de

Celsius a Farenheit. --->

03 <cffunction name="ctof"

output="false">

04 <cfargument name="temp"

required="yes" type="numeric">

05 <cfreturn ((temp*9)/5)+32>

06 </cffunction>

07

08 <!--- Método de conversión de

Farenheit a Celsius. --->

09 <cffunction name="ftoc"

output="false">

10 <cfargument name="temp"

required="yes" type="numeric">

11 <cfreturn ((temp-32)*5/9)>

12 </cffunction>

13 </cfcomponent>

Listado 4: convertTemp.cfc01 <cfchart scalefrom="0" scale-

to="1" showlegend="yes" mar-

kersize="4" labelformat="per-

cent" title="Percentage Spam

and Viruses - Last 30 days"

backgr undcolor="##eeeeee"

showborder="yes"

format="FLASH"

xAxisTitle="Date"

yAxisTitle="Percentage of

Overall" chartHeight="400"

chartWidth="540" show3D="no"

showXGridlines="yes" seriesPla

cement="cluster">

02

03 <cfchartseries type="line"

seriescolor="blue" seriesla-

bel="Spam"

04 markerstyle="circle">

05 <cfloop query="qry30days">

06 <cfchartdata

item="#DateFormat(scan_

date,"dd-mmm-yy")#

value="#(pspam_sum +

bspam_sum) / total_sum#">

07 </cfloop>

08 </cfchartseries>

09 <cfchartseries type="line"

seriescolor="red" seriesla-

bel="Viruses"

10 markerstyle="circle">

11 <cfloop query="qry30days">

12 <cfchartdata

item="#DateFormat(scan_

date,"dd-mmm-yy")#"

value="#virus_sum / total_

sum#">

13 </cfloop>

14 </cfchartseries>

15

16 </cfchart>

Listado 3: chart.cfm

Figura 2: Un ejemplo de un documento FlashPaper

inmerso en una página web.

Page 34: Linux Magazine - Edición en Castellano, Nº 09

nalidad CFML a apli-caciones JSP existen-tes, por ejemplo, parausar las gráficas deColdFusion o lascaracterísticas paragenerar informes denegocios. Si se tienealguna operación quese ejecute con mayorrendimiento comopágina JSP o Servlet,se puede incorporardicha funcionalidaden la aplicaciónCFML.

Motor de BúsquedaColdFusion viene con un potente motorde búsqueda llamado Verity. El motorVerity se puede ejecutar independiente-mente del servidor ColdFusion y puedeaccederse a través de múltiples instanciasde ColdFusion (instalando ColdFusion enmodo multiservidor… lo veremos másadelante). Usando su Administrator, sepuede crear una Collection. UnaCollection es un almacén en disco quepuede ser usado por Verity para buscarcontenido.

Existen varias etiquetas CFML paraindexar y buscar contenido (por ejemplotexto plano, documentos PDF y docu-mentos HTML). También se puede inde-xar el contenido devuelto por una consul-ta. Esta característica de ColdFusion per-mite buscar rápidamente entre una grancantidad de texto mucho más rápido quea través de una consulta SQL SELECT,donde los campos largos de texto no pue-den ser indexados (por ejemplo, el tipode datos TEXT de MySQL). Uno de loscampos donde se puede aplicar esta tec-nología es en las bases de conocimiento.

Verity Spider es nuevo en ColdFusionMX 7. Permite indexar directorios com-pletos o sitios web dinámicamente. Alcontrario que la etiqueta CFINDEX CFML

que permite crear índices específicos porlos que realizar búsquedas, Verity Spiderlos crea dinámicamente. Verity Spidersoporta un amplio rango de tipos dedocumentos, entre los que se incluyenHTML, PDF, Microsoft Office,WordPerfect, XML y otros. Se comportacomo cualquier otro buscador web, obe-deciendo las instrucciones que se propor-cionan en robots.txt y siguiendo los enla-ces especificados en las etiquetas HTML

HREF, FRAME y META Refresh / Redirect.Las capacidades proporcionadas porVerity Spider permiten crear una utilidadde búsqueda dentro de un sitio web.

EdicionesColdFusion se proporciona en tres edicio-nes diferentes. La edición Developerpuede ser accedida desde la máquinalocal ejecutando ColdFusion y dos clien-tes remotos. Esto hace posible que unequipo pequeño de desarrolladores traba-je sobre una misma aplicación usandouna sola instancia de ColdFusion. Estaedición contiene toda la funcionalidad deColdFusion y se puede descargar gratui-tamente.

La Edición Standard contiene casi todala funcionalidad de ColdFusion, exceptoalgunas características concernientesbásicamente al rendimiento y disponibi-lidad. En vez de explicar todas las carac-terísticas que contiene esta edición pro-fesional, es mejor que indiquemos lascaracterísticas que sólo están disponiblesen la tercera y última edición deColdFusion, la edición Enterprise. El pre-cio para la edición Standard es de 1299dólares. Con un desembolso mayor dedinero (la edición Enterprise cuesta 5999dolares), se obtienen las característicasadicionales del nivel Enterprise. Lasiguiente sección describe la ediciónEnterprise.

Edición EnterpriseEl Enterprise Manager permite gestionarmúltiples instancias de ColdFusion en un

se pueden crear objetos, permitiendo elacceso a las funciones y métodos.También es posible acceder a losJavaBeans.

La interoperabilidad entre páginasCFML, JSP y Servlet también es posible.Esto permite mantener páginas JSP yaplicaciones Servlet mientras se convier-ten a CFML. Se puede incorporar funcio-

PRÁCTICO • ColdFusion MX 7 Server

34 Número 09 W W W . L I N U X - M A G A Z I N E . E S

CFML incluye, por defecto, una capa deabstracción sobre bases de datos quepermite escribir aplicaciones indepen-dientes de las bases de datos. La etique-ta CFQUERY, como ejemplo, sólo requie-re que el parámetro DATASOURCE estédisponible para conectarse a una basede datos y realizar una consulta SQL.Como ODBC, ColdFusion ofrece unacapa de abstracción sobre las bases dedatos. Esta capa de abstracción puedesoportar conexiones ODBC y conexio-nes nativas usando JDBC. Incluye con-troladores para MySQL (antes de la 4.1),DB2, Informix, SQL Server, Sybase,Oracle y los Datasources J2EE (usandoJNDI). Los controladores para Oracle ySybase tan solo se incluyen en la ediciónEnterprise de ColdFusion, sin embargo,se pueden crear fuentes de datos usan-do los controladores JDBC (normalmen-te copiando un fichero JAR a un directo-rio de librería adecuado) y especificar laURL JDBC y el nombre de la clase delcontrolador. Se puede conseguir algosimilar con los recursos JNDI.

Hay posibilidades de incorporar abstrac-ción de bases de datos en PHP usandoADODB y PearDB, sin embargo, estastécnicas precisan que se incluyan fiche-ros adicionales en los scripts PHP.

Abstracción de Bases deDatos

Figura 3: La etiqueta CFCHART permite crear fácilmente gráficas

espectaculares.

01 <cfinvoke

component="convertTemp"

method="ctof"

02 returnvariable="newtemp"

temp=30>

03 <cfoutput>30 degrees Celsius

is #newtemp# degrees

Farenheit.</cfoutput>

04 <cfinvoke

component="convertTemp"

method="ftoc"

05 returnvariable="newtemp"

temp=64>

06 <cfoutput>64 degrees

Fahrenheit is #newtemp# degre-

es Celsius.</cfoutput>

Listado 5:convTempForm.cfm

Page 35: Linux Magazine - Edición en Castellano, Nº 09

único servidor. La configuración es simi-lar a otros servidores de aplicacionesJ2EE como Tomcat, donde un servidorde aplicaciones binario es compartidoentre múltiples JVMs privadas (JavaVirtual Machines). Esto significa quemúltiples aplicaciones pueden estar ais-ladas unas de otras, proporcionandomayor seguridad y estabilidad sin losrequerimientos de varios servidoresdedicados separados. Incluso se puedenejecutar las aplicaciones en un clusterpara mejorar el rendimiento y la disponi-bilidad.

JRun [5] se incluye con la ediciónEnterprise, proporcionando una alterna-tiva comercial a Tomcat. Se puede com-binar el código de la aplicaciónColdFusion con el código JSP o Servleten JRun.

Se pueden desplegar las aplicacionesColdFusion con el servidor de aplicacio-nes J2EE que se prefiera. JRun, Weblogicy Websphere son soportados porMacromedia.

La seguridad se ha mejorado para losentornos basados en servidores virtualesusando seguridad en “cajas de arena”. Laseguridad en “cajas de arena” permiteestablecer políticas de seguridad, comoetiquetas, funciones, fuentes de datos yrestricciones en direcciones IP y directo-rios. Las aplicaciones que se ejecutendentro de un directorio no tienen accesoa las configuraciones y ficheros de otrasaplicaciones.

Se pueden crear eventos personaliza-dos para interactuar con dispositivosmóviles y servidores de mensajes ins-tantáneos, por ejemplo, o cualquierotra aplicación de servidor a través decualquier protocolo de red (usandosockets de Java). Incluso se puedenusar pasarelas disponibles para SMS,XMPP (Extensible Messaging Service),Sun JMS (Java Messaging Service) yLotus Sametime. XMPP [6] es una solu-ción de mensajería instantánea decódigo abierto de la Jabber [7]Software Foundation. Lotus Sametime[8] es un producto ofrecido por IBMpara la mensajería instantánea y confe-rencias web.

La edición Enterprise también permitetomar ventaja del motor de informes denegocio de alto rendimiento basado en latecnología de ejecución multihilos. Estoes ideal para los Sistemas de InformaciónEmpresarial, que pueden hacer uso de

las características de gráficas para crearestadísticas anidadas.

Se pueden desplegar las aplicacionescomo Java bytecode, evitando el tenerque exponer el código fuente. Esto esimportante si se quiere proteger la pro-piedad intelectual.

Plataformas soportadasColdfusion es soportado por un amplionúmero de plataformas, entre las que seincluyen Linux, Windows, Solaris, AIX yMac OS X (sólo para desarrollo). La ver-sión de Linux Red Hat Enterprise 2.1 y3.0, SUSE Linux Enterprise Server 8 yTurboLinux 8 (sólo en Japonés) sonsoportados por Macromedia, aunque nodebería haber problemas si se ejecuta enCentOS 3, White Box Linux 3 y otras dis-tribuciones Linux. En teoría, se deberíapoder ejecutar las aplicacionesColdFusion en cualquier plataformaJava. JRun, BEA Weblogic e IBMWebsphere son soportados también porMacromedia; hay disponible instruccio-nes para Tomcat y podrían presentarsealgunos problemas en JBoss o Resin.

ColdFusion se puede ejecutar como unservidor independiente o en conjuncióncon Apache (1.3.27 o superior, 2.0.43 osuperior), iPlanet 6.x o Sun ONE 6.x.

¿Me servirá ColdFusion?No hay una respuesta sencilla a la pre-gunta de cuando o por qué sacaré bene-ficio a ColdFusion. Para algunas aplica-ciones, PHP, Perl o JSP serán suficientes,y para otras ColdFusion es la mejoropción. Casi todo lo que se pueda hacercon otro lenguaje de scripting se puedehacer con ColdFusion. Si hay algo queno pudiera hacer, se conseguiría exten-diéndolo con Java, JSP o Servlets.

La elección de si usar o no ColdFusiondependerá de la naturaleza de la aplica-ción. Para desarrollar un sitio con conte-nidos ricos usando gráficas, formulariosFlash, FlashPaper o PDF, ColdFusion esla mejor elección. Para sistemas de ges-tión con contenidos de propósito gene-ral, ColdFusion es también una buenaopción. Para el desarrollo rápido, ofreceun lenguaje basado en etiquetas fácil deaprender que permite crear potentesaplicaciones con un mínimo de esfuerzo.Para muchos, esto es suficiente para jus-tificar incluso el precio de la ediciónEnterprise de ColdFusion, que permiteconstruir aplicaciones que demanden

entornos de alto rendimiento y gran dis-ponibilidad.

Muchos desarrolladores de la platafor-ma Linux tendrán que elegir entre PHP,JSP / Servlets o ColdFusion. ColdFusiones la única elección que requiere un des-embolso de dinero para desplegarla enun entorno de producción, aunque lostres se pueden descargar gratuitamentepara desarrollar en ellos. Y con la grancantidad de empresas de hosting queofrecen soporte para ColdFusion a pre-cios razonables, no habrá necesidad degastarse dinero en una licencia.

En resumen, si se está pensando explo-rar los beneficios de un producto comer-cial, antes de decidirse por uno, se deberíainvestigar al menos ColdFusion MX 7. �

ColdFusion MX 7 Server • PRÁCTICO

35Número 09W W W . L I N U X - M A G A Z I N E . E S

[1] Macromedia ColdFusion MX 7: http://

www.macromedia.com/software/

Coldfusion/

[2] PHP 5 y el módulo mysqli: http://www.

php.net/manual/en/ref.mysqli.php

[3] Macromedia Flash: http://www.

macromedia.com/software/flash/

[4] Macromedia FlashPaper: http://www.

macromedia.com/software/

flashpaper/

[5] Macromedia JRun: http://www.

macromedia.com/software/jrun/

[6] Protocolo XMPP: http://www.xmpp.

org

[7] Jabber Software Foundation: http://

www.jabber.org

[8] Lotus Sametime: http://www.lotus.

com/products/product3.nsf/wdocs/

homepage/

RECURSOS

Figura 4: Los formularios Flash proporcionan

un gran control sobre los datos introducidos

por los usuarios.

Page 36: Linux Magazine - Edición en Castellano, Nº 09

El podcasting es la última modaen el mundo de los weblogs.También conocido como audio

en diferido, el podcasting es un méto-do para suministrar streams de audioen formato mp3 a traves de proveedo-res de feeds rss, por lo que pueden des-cargarse automáticamente y ser escu-chados durante nuestro tiempo libre. Alsuscribirnos a un feed RSS con mp3adjuntos, podemos recibir los nuevosmp3 automáticamente. Es algo parecidoa los reproductores TiVO de televisión,pero en formato de audio. El nombreproviene del iPod de Apple, pero es unnombre inexacto, ya que no necesitamosun iPod para escuchar los archivos. Elpodcast es el programa emitido, mien-tras que al acto de recibirlo se llamapodcatching.

Aunque muchos podcasts, comomuchos blogs, son intrascendentes, exis-te también material de alta calidad. LasIT Conversations de Doug Kate [1] porejemplo, tienen más de 300 grabacionesde entrevistas, discursos y conferenciasdel sector TIC, viejas y recientes, asícomo resÚmenes de conferencias y otroseventos. Grandes corporaciones como laBBC en el Reino Unido están tambiénmostrando interés en este fenómeno yestán emitiendo algunos de sus progra-mas en formato podcast.

Esta moda de los podcasts puede atri-buirse en gran medida al antiguo DJ dela MTV Adam Curry [2]. Después de undebate con Adam Curry en 2001, Dave

Winerdecidiócambiar elmodelo de distribu-ción multimedia en Internetañadiendo el sub-elemento “adjunto”(enclosure) a los feeds rss [3]. En la pro-pia página de Curry ipodder.com [4] sealmacenan cientos de podcasts.

Un cliente de podcatching funcionacomo un agregador que lee los feed RSS2.0 con sus adjuntos. El cliente verificaautomáticamente los feeds a los queestamos suscritos y descarga los archi-vos de audio, colocándolos en nuestrodirectorio de audio o en nuestro repro-ductor mp3. Los usuarios de Ipod eiTunes en Mac’s son los que lo tienenmás fácil. Los usuarios de Linux conotros reproductores de mp3 tendrán unpoco más de trabajo para conseguir quetodo funcione de manera “automágica”.En este artículo describiremos cómoconfigurar nuestro equipo Linux parahacer podcatching.

BajarPodcasts

al OrdenadorCiertos reproductores (como el iPod)necesitan drivers especiales para sincro-nizarse ([5], [6]) pero en este artículosupondremos que estamos usando eltípico reproductor de mp3 basado en dis-positivos de almacenamiento flash quepueden ser montados como un discoexterno. Empezaremos por describiralgunas aplicaciones para el podcatchingbajo Linux y luego veremos algunas téc-nicas de sincronización. Si nuestro dis-positivo necesita algún software especialbajo Linux para sincronizarse, puedeseguir la primera parte del tutorial parasuscribirse a los podcasts y adaptar lasegunda mitad adecuadamente.

iPodder [7] es una interfaz gráfica deusuario escrita en Python para suscribir-se y recibir podcasts. En el momento deescribir estas líneas, la última versión

No necesitamos un iPod para disfrutar del reciente fenó-

meno conocido como Podcatching. En el artículo

de este mes mostraremos como recibir y

reproducir podcasts bajo Linux.

POR TIM HARDY

Podcatching sin Ipod

REPARTIDOR SONORO

36

PRÁCTICO • Podcatching

36 Número 09 W W W . L I N U X - M A G A Z I N E . E S

Page 37: Linux Magazine - Edición en Castellano, Nº 09

Podcatching • PRÁCTICO

37Número 09W W W . L I N U X - M A G A Z I N E . E S 37

para Linux era la iPodder-Linux-2.0-RC2.tar.bz2. Hay un par de pequeñosbugs que van a ser solventados antes deque aparezca la versión final. iPodderrequiere Python2.3 o superior (perono soporta Python2.5). Tambiénrequiere: python-gtk, wxPythonGTK,libwxPythonGTK2.5_2, pythonlib, libpy-thon2.3, libxml2-python y xmmspython(para soportar el reproductor xmms).

Para instalarlo, desempaquetamos elarchivo, nos vamos al directorio que aca-bamos de crear y ejecutamos el instala-dor.

tar -xvjf iPodder- U

linux-2.0-RC2.tar.bz2

cd iPodder-linux/

sudo run ./install.sh

El paquete se instala en /opt/iPodder/ ycrea un enlace simbólico desde/opt/iPodder/ipodder.sh en/usr/bin/iPodder. Si queremos añadir unicono en el escritorio, hay una imageniPodder.png instalada en /opt/iPodder. Laenlazamos con /usr/bin/iPodder y pulsa-mos para lanzar el programa, o bienpodemos teclear iPodder& en un termi-nal.

iPodder se inicia por defecto en la pes-taña Subscriptions (véase Figura 1), quemuestra los feeds a los que estamosactualmente suscritos. Pulsando en cual-quiera de las entradas listadas descarga-remos una lista de los podcasts disponi-bles desde ese canal en la ventanaEpisode en la parte de abajo. Por defec-to, sólo se verifica el último podcast deese canal para su descarga, pero sepuede seleccionar cualquiera de los otrossi queremos escuchar alguno que se noshaya pasado.

Pulsando en la pestaña Podcast direc-tory (véase Figura 2) podremos elegir lospodcasts a los que suscribirnos, así comointroducir manualmente direcciones defeeds. Abrimos un directorio de la listapulsando sobre él. Hacemos doble clic encualquiera de los feeds para añadirlo anuestras suscripciones. Cuando hayamosacabado, volvemos a la pestañaSubscriptions y pulsamos el botón verdecon dos flechas para poner en marcha ladescarga. Las descargas pueden monitori-zarse desde la pestaña Download (véaseFigura 3).

Las descargas pueden programarsefácilmente con la opción de horario quese encuentra en Tools/Scheduler.Tenemos la opción de verificar los nue-vos feeds en intervalos regulares detiempo o a ciertas horas prefijadas. Alcerrar iPodder se minimiza la aplicacióny se queda ejecutándose en segundoplano, por lo que podremos dedicarnosa otra cosa.

iPodder crea un directorio~/iPodder-Data/downloads donde guar-da los mp3. Debido a un pequeño errorno pudimos ajustarlo a través de la inter-faz gráfica, por un problema con la posi-ción de los bordes. Pero pudimos cam-biarlo manualmente editando el archivode configuración ~/iPodderData/ipod-

der.cfg. Para los propósitos de este artícu-lo, vamos a crear un directorio llamado~/podin y configurarlo como el directo-rio de descarga.

iPodder es una aplicación muy elegan-te y muy bien diseñada con una interfazintuitiva. De momento sólo tiene soportepara iTunes y Windows Media Playercomo reproductores, pero hemos encon-trado una opción realmente útil en File |

Preferences | Advanced para ejecutar unscript tras completar una descarga.Usaremos ese script un poco más adelan-te. Echamos en falta algún que otro deta-lle: no existe una rutina que verifique elespacio libre en el disco, aunque este yotros pequeños fallos están en la lista demejoras de los desarrolladores y se espe-ra que lo solucionen pronto.

Una interfaz de usuario alternativa esjPodder [8]. jPodder es un cliente multi-plataforma escrito en Java. La beta deLinux en el momento de escribir esteartículo es la 0.9, y aún falta pulirlo bas-tante. Sin embargo es destacable queviene distribuido junto a Azureus [9] yofrece un buen soporte para los podcasts

distribuidos via bittorrent, por lo quepuede que merezca la pena seguir inves-tigando su evolución.

Alternativas en Línea deComandosBashPodder [10] de Linc Fessenden ocupasólo 44 líneas de cóigo bash y requiereúnicamente bash, wget y sed, los cualesestán instalados por defecto en la mayoríade las distribuciones Linux.

Linc señala que “BashPodder fue escri-to para ser pequeño y rápido, y lo que esmás importante, para seguir la regla KISS(Keep It Simple Stupid, mantenlo simpleestúpido). De esta manera, cualquierapuede añadir o suprimir parte del scriptpara adaptarlo a sus necesidades (yserán bienvenidos si lo hacen)”.

Para usar BashPodder, descargamosel programa principal bashpodder.shelf

y el ejemplo de configuración bp.conf

y los situamos en el directorio en elque queramos guardar los podcasts.No hay que descomprimir ni instalarnada. Simplemente tecleamos chmod

+x bashpodder.shell para hacerlo eje-cutable.

01 #!/bin/bash

02 # syncplayer

03 # The location of the

folders.Adjust for your

personal set-up.

04 mp3player=/path/to/mp3player #

the mount point for your

player

05 podin=/path/to/podin

06 podmirror=/path/to/podmirror

07 # Test player is mounted and

folder podcasts exists

08 [ ! -d $mp3player/ ] && echo

"mp3 player not mounted" &&

exit 1

09 [ ! -d $mp3player/podcasts ]

&& echo "Device folderpodcasts

not present" && exit 1

10 # Perform the synchronisation

process

11 rsync -r --progress

--delete--existing --size-only

$mp3player/podcasts/$podmirror

/

12 mv $podin/* $podmirror/

13 rsync -r --progress

--delete--size-only

$podmirror/$mp3player/podcasts

Listado 1: syncplayer

Figura 1:La pestaña Subscriptions de iPodder

muestra los feeds a los que estamos actual-

mente suscritos.

Page 38: Linux Magazine - Edición en Castellano, Nº 09

/path/to/mp3. Acuérdese de adaptar elpunto de montaje en su sistema).

Para mayor facilidad de uso, vamos acrear un enlace simbólico para que seamás fácil de recordar:

ln -s /media/usb- U

035211010152:0:0:0p1 U

/path/to/mp3player

Ya habíamos creado nuestro directoriopara los nuevos podcasts que habíamosllamado ~/podin. Necesitamos ahoracrear otro llamado ~/podmirror, en elque habrá una copia de los archivos delreproductor mp3.

Dejaremos de momento este directoriovacío por razones que explicaremosluego. Para evitar que se mezclen lospodcasts con otras canciones del repro-ductor, podemos también crear un direc-torio en el dispositivo, que llamaremos/path/to/mp3player/podcasts/.

Sensaciones síncronasSincronizar un dispositivo con una car-peta no es algo tan trivial como puedaparecer, especialmente si los archivospueden borrarse directamente tanto en elreproductor como en el ordenador.Vamos a hacer dos suposiciones clave:que no hay nada en el directorio delreproductor cuando empecemos, y queno hay otras maneras de añadir archivosmp3 al reproductor, aparte de sincroni-zar con el ordenador.

El proceso necesita tres pasos.El primer paso es sincronizar el directo-

rio de podcast del reproductor/path/to/mp3player/podcasts/ con eldirectorio ~/podmirror del ordenador. Seborrará cualquier archivo de ~/podmi-

rror que no esté en el reproductor, pues seha supuesto que se ha borrado del repro-ductor porque ya no se quería oir más.Seguidamente, si existe algún archivo enel reproductor que no esté en ~/podmi-

rror, el proceso ignora el archivo y no creauna copia en ~/podmirror, pues se supo-ne que se borró deliberadamente deldirectorio del ordenador.

El segundo paso es una simple transfe-rencia de archivos mp3 desde ~/podin a~/podmirror. Esta transferencia no puedehacerse hasta que la primera sincroniza-ción haya terminado, pues de otra maneralos nuevos archivos se borrarían ya que noestán en el reproductor mp3.

El tercer paso sincroniza ~/podmirror

con /path/to/mp3player/podcasts/. Borracualquier archivo de este último que noesté en ~/podmirror pues se supone quela hemos borrado deliberadamente delordenador. Entonces crea una copia en elreproductor de cualquier archivo de~/podmirror que no esté en el dispositi-vo: estos son los nuevos archivos quehemos transferido desde ~/podin.

Debemos tener cuidado de entender elproceso, y hacer una copia de seguridaddel reproductor antes de la primera sin-cronización. Un error puede ser desas-troso para los archivos del reproductor,así como también sincronizar después dehaber eliminado los archivos equivoca-dos del reproductor puede acabar con loscontenidos de ~/podmirror.

Para sincronizar el dispositivo, vamosa usar la aplicación en línea de coman-dos rsync. Buena parte de las distribucio-nes puede que vengan con su propia ver-sión. Como alternativa siempre podemos

bp.conf es un archivo de texto simpleque lista las urls o los feeds, uno por línea.Podemos editar bp.conf a mano, pero si lohacemos, hemos de acordarnos de apretarEnter al final de la última entrada, ya queel script no la procesará si no termina conun carácter de nueva línea.

Por defecto, BashPodder sitúa los pod-casts en una carpeta datestamped en esedirectorio desde donde podemos ejecu-tarlos. Para los propósitos de este artícu-lo, vamos a cambiarlo por ~/podin. Paracambiarlo, abrimos el script con nuestroeditor de textos favorito, buscamos ladefinición de datadir cerca del principioy la cambiamos de datadir=$(date +

%Y-%m-%d) a datadir= /path/to/podin

Para ejecutar el script automáticamen-te, usaremos crontab. Crontab usa vi pordefecto, para editarlo con nuestro editorfavorito, debemos exportarlo previamen-te como la variable VISUAL. Por ejem-plo, si preferimos usar joe:

export VISUAL=joe

crontab -e

Para configurar bashpodder.shell paraque se ejecute a las 9am cada día porejemplo añadimos la siguiente línea:

0 9 * * * U

/path/to/bashpodder.shell

En la página podemos encontrar numero-sas revisiones del script sugeridas porusuarios, así como añadidos, como elBPConf de Leon Pennington, una sencillainterfaz de configuración para KDE.

Preparados para sincronizarLo que pasa cuando conectamos nuestrodispositivo depende de qué distribuciónusemos. Suse 9.2, por ejemplo, usasubfs/submount y lo montará automática-mente con un nombre derivado del númerode serie de nuestro dispositivo. Otra parti-cularidad de las distribuciones Suse es queusa /media/ mientras que otras usan/mnt/. Al conectar mi PowerMusic mp3 enun equipo bajo Suse, por ejemplo, creaautomáticamente un punto de montaje/media/usb-035211010152:0:0:0p1

(Otras distribuciones gestionarán laconexión en caliente de manera diferen-te, y puede que deba adaptar lo comen-tado a su sistema para que funcione. Deahora en adelante vamos a referirnos alpunto de montaje del reproductor como

PRÁCTICO • Podcatching

38 Número 09 W W W . L I N U X - M A G A Z I N E . E S

Figura 2: La pestaña Podcast directory

ofrece un buen número de opciones de

suscripción y también nos deja introducir

manualmente una dirección.

El siguiente ejemplo de una sección deun feed RSS muestra una etiqueta<enclosure> con sus tres atributos: la urldel archivo a descargar, su tamaño enbytes y de qué tipo es.

<enclosure U

url="http://downloads.bbc.co.uk U

/rmhttp/radio4/history/ U

inourtime/U

inourtime19_pod.mp3" U

length="12582787" U

type="audio/mpeg"/>

La especificación original de Dave Winerdefinía un máximo de un adjunto, perocomo otros aspectos de RSS, esto esaún objeto de discusión.

Adjuntos RSS

Page 39: Linux Magazine - Edición en Castellano, Nº 09

Podcatching • PRÁCTICO

39Número 09W W W . L I N U X - M A G A Z I N E . E S

bajarnos las fuentes desde [12] y compi-larlas .

Como se detalló antes, el primer paso eseliminar cualquier archivo de podmirror/

que hayamos borrado del reproductor:

rsync -r --progress --delete U

--existing --size-only U

/path/to/mp3player/podcasts/ U

/path/to/podmirror/

Muchos dispositivos flash usan el siste-ma de archivos FAT32 que no guarda lainformación de fecha/hora al estilo unix.

La opción -size-only nos permite evitaractualizar archivos iguales pero que pue-den parecer que son distintos debido a lainformación de fecha/hora.

La opción -existing evita que rsync reinsta-le archivos que hayamos borrado de ~/pod-

mirror. Con la opción -progress veremos porpantalla información de qué operaciones seestán haciendo, lo que puede ser útil si loestamos haciendo a mano.

El paso dos, copiar los podcasts desde~/podin a ~/podmirror es simplementehacer lo siguiente:

mv /path/to/podin/* U

/path/to/podmirror/

El paso tres usa rsync de nuevo, pero ensentido contrario, y sin la opción -exis-

ting esta vez, ya que queremos copiar losnuevos archivos al dispositivo:

rsync -r --progress U

--delete --size-only U

/path/to/podmirror/ U

/path/to/mp3player/podcasts

Cuando hayamos terminado, no debe-mos olvidar desmontar el reproductorantes de desconectarlo para evitar posi-bles daños a la unidad. Lo desmontamoscon eject /path/to/mp3player y ya esta-mos listos para escuchar los podcasts.

Todo JuntoPodemos ejecutar el script syncplayer(véase Listado 1). El script no funcionarási el reproductor de mp3 no está monta-do o si el directorio de destino no existe.Debemos ajustar /path/to/ de las líneas 3a 5 para nuestro caso.

Para ejecutar automáticamente elscript cuando aparezcan nuevos pod-casts, podemos configurar iPodder paraque haga la llamada especificando

syncplayer en la opción de ejecutarscripts al descargar (File/Preferences/Advanced).

Si estamos usando bashpodder, sólotenemos que añadir una línea al final debashpodder.shell, editándolo o bien tecle-ando simplemente echo "path/to/syncpla-

yer >> bashpodder.shell. (Cuidado conno teclear > en lugar de >> pues si nosobrescribiremos el archivo).

Si queremos ejecutar automáticamenteel script cada vez que insertemos elreproductor, podemos aprovechar ladetección en caliente para activarlo.

Buscamos la id del fabricante y delproducto conectándolo y verificando lasalida de cat /proc/bus/usb/devices paraver los detalles del reproductor de mp3.

En el caso particular de nuestroPowerMusic:

P: Vendor=0d7d ProdID=0153 U

Rev= 1.00

S: Product=PowerMusic

Ahora creamos /etc/hotplug/usb/power-

music.usermap para activar un script alque llamaremos on_plug_powermusic aejecutarse cuando se enchufe el disposi-tivo:

on_plug_powermusic to runU

when thecdevice is plugged in:

# /etc/hotplug/usb U

/powermusic.usermap

# powermusic mp3 player

on_plug_powermusic U

0x0003 0x0d7d 0x0153 0x0 0x0 U

0x0 0x0 0x0 0x0 0x0 0x0 0x0

El primer campo indica qué flags debencoincidir. Este campo debe dejarse a

0x0003. La segunda y tercera son las iddel fabricante y producto, respectiva-mente, que obtuvimos de /proc/usb/devi-

ces. Los otros campos no se usan y pue-den dejarse a 0x0.

Lo siguiente será crear on_plug_power-

music en /etc/hotplug/usb/

# /etc/hotplug/usb/ U

on_plug_powermusic

# on_plug_powermusic

until U

[ -e /path/to/mp3player ]; U

do sleep 1; done

su user -c /path/to/syncplayer U

>& /var/log/messages

exit 0

Cambiamos el usuario de la línea 3 anuestro nombre de usuario y rellenamos/path/to en sendos casos. Hacemos elarchivo ejecutable, y reiniciamos el hot-plug:

chmod +x U

on_plug_powermusic U

&& /etc/init.d/boot.hotplug U

restart

Ahora, cada vez que conectemos el dis-positivo, se activará el script syncplayer,transfiriéndose los nuevos podcasts anuestro reproductor. No olvidemos, porúltimo, desmontarlo al acabar. �

Figura 3: Administramos y vigilamos las

descargas desde la pestaña Download.

[1] IT Conversations: http://www.

itconversations.com/

[2] Página de Adam Curry: http://live.

curry.com/

[3] RSS Payloads: http://www.

thetwowayweb.com/payloadsforrss

[4] iPodder: http://ipodder.org/

[5] GNUpod: http://www.gnu.org/

software/gnupod/gnupod.html

[6] gtkpod: http://gtkpod.sourceforge.net/

[7] iPodder: http://ipodder.sourceforge.

net/index.php

[8] jPodder: http://jpodder.com/

[9] Azureus: http://azureus.sourceforge.

net/

[10] BashPodder: http:// linc.homeunix.

org:8080/scripts/bashpodder/

[11] BFConf: http://www.leonscape.co.uk/

linux/bpconf/

[12] rsync : http://freshmeat.net/projects/

rsync/

RECURSOS

Page 40: Linux Magazine - Edición en Castellano, Nº 09

Thunderbird ofrece varias opciones para un correo seguro

y la encriptación de Enigmail basada en GnuPG nos propor-

ciona una capa de protección adicional.

POR PATRICK BRUNSCHWIG Y OLAV SEYFARTH

Correo Seguro con Thunderbird y Enigmail

UN PÁJARO SEGURO

40

PRÁCTICO • Seguridad Thunderbird

40 Número 09 W W W . L I N U X - M A G A Z I N E . E S

El cliente de correo Thunderbirdestá teniendo un gran auge en lacomunidad de Internet. La mayo-

ría de las distribuciones Linux incluyenThunderbird [1] por defecto. Los des-arrolladores de Mozilla tienen versionespreparadas para ejecutarse en la mayoríade los sistemas de sus sitios web. Debianno tiene un paquete oficial para las ver-siones actuales, pero versiones de prue-ba están disponibles en el repositorio demantenimiento [2].

Con la reciente versión 0.9 deThunderbird, el pájaro está listo paravolar con una colección impresionantede características de seguridad. En esteartículo, aprenderá algunos de los pun-tos de seguridad de Thunderbird.

AutenticaciónThunderbird soporta POP, IMAP y SMTPpara el correo electrónico, así comoNNTP Y SMTP para las News y LDAPpara la libreta de direcciones. Todosestos servicios requieren autenticación.En el caso más simple, el cliente querrátransmitir su información de login y seenviará en claro, abriendo un agujero deseguridad en el esquema. Para combatiresto, Thunderbird proporciona a losusuarios un número de soluciones parauna autenticación segura.

Challenge-Response soluciona transfe-rencias en secreto (tal como una clave porejemplo) como un código hash temporal.Esta solución confia en el servidor capaci-tándolo para soportarlo. Thunderbirdintentará detectar las capacidades del ser-vidor, pero no se garantiza el éxito.Aunque DIGEST-MD5 y CRAM-MD5 son

autonegociados para nodos SMTP, necesi-tará habilitar CRAM-MD5 para cuentasPOP e IMAP utilizando Enable secure

authentication en las opciones del servi-dor para una cuenta de correo.

TráficoDesafortunadamente, las técnicas deChallenge-Response no proporcionanninguna protección contra los ataquesdel hombre de en medio. Para mayorseguridad y privacidad, puede encriptar-se el tráfico entre cliente y servidor utili-zando el protocolo Transport LayerSecurity (TLS). TLS (un sucesor del pro-tocolo SSL) encripta cualquier comuni-cación entre el cliente y el servidor.Thunderbird sólo proporciona TLS paraSMTP.

Cuando configure una cuenta nuevautilizando el Account Manager, al prin-cipio la conexión será insegura. Antesde conectar con el servidor de correo,abra el cuadro de diálogo Tools |

Account Settings,donde puede configu-rar protocolos indivi-dualmente. En Account

name | Server settings,seleccione Use secure

connection (SSL)

(Figura 1).Thunderbird configura-rá el puerto automáti-camente. Para Use

secure authentication,se recomienda selec-cionar CRAM-MD5.

Para Outgoing server

(SMTP) necesitará

decirle a Thunderbird que utilice sunombre de usuario y su clave, a lo largode una conexión segura. En este caso,TLS; el puerto para SSL se configuraráautomáticamente. En Tools | Settings |

Compose también puede configurar losservidores LDAP para conexiones SSL enAddress autocompletation.

Encriptación de PasswordsLos usuarios con múltiples proveedoresde correo querrán seleccionar una clavedistinta para cada proveedor. Comopuede llegar a ser difícil recordar todasestas claves y como es molesto el tenerque teclearlas cada vez, Thunderbird per-mite a los usuarios almacenar las claves.

En la configuración por defecto,Thunderbird codificará en Base64 laspasswords; esto es, no las encriptará ylas almacenará en el perfil del usuario

Figura 1: El cuadro de diálogo Server Settings de Thunderbird

tiene una opción para configurar una conexión segura.

Page 41: Linux Magazine - Edición en Castellano, Nº 09

Seguridad Thunderbird • PRÁCTICO

41Número 09W W W . L I N U X - M A G A Z I N E . E S 41

en un fichero con un nombre aleatorio ycon la extensión .s. Esta solución deseguridad es un compromiso que deberáaceptar si es el único usuario que accedeal sistema. El módulo de software decriptografía basado en Mozilla NetworkSecurity Services (NSS) proporciona alos usuarios una mayor seguridadencriptando las claves almacenadas.

Hay diferentes opiniones sobre elalmacenamiento de las passwords, perola característica de la encriptación de cla-ves de Thunderbird parece ser un com-promiso funcional. Si necesitaThunderbird para almacenar direccionesde correo en un directorio LDAP protegi-do por password, no tendrá alternativapara almacenar sus claves, como cadacorreo nuevo abre una nueva conexiónen el directorio LDAP, esto significaríavolver a teclear su clave.

Para encriptar passwords existentes yfuturas, necesitará habilitar Use a master

password to encrypt stored passwords

bajo Tools | Preferentes | Advanced |

Saved Passwords | Master Passwords yluego establezca sus claves maestrasseleccionando Change password. Comoestas claves necesitarán proteger todassus otras claves y su propio certificadoX.509, asegúrese de que sea realmenterobusta. Para crear una clave segura, cer-ciórese de que sea lo suficientementelarga, contenga letras mayúsculas yminúsculas, números y caracteres espe-ciales.

Firmado y SelladoTras autenticarse de forma segura en elservidor de correo del proveedor, proba-blemente querrá encriptar cualquiermensaje almacenado en el servidor.Actualmente existen gusanos que atacancon nombres de usuarios y envían corre-

os utilizando estos nom-bres. Hay dos estándaresincompatibles entre sí, S/MIME y OpenPGP, que leproporcionan este tipo deseguridad. Thunderbirdsoporta ambas, suponiendoque está instalado Enigmail[4]; hay que tener en cuen-ta que ni S/MIME niOpenPGP proporcionanuna solución de seguridadcompleta. Como describire-mos más adelante en eseartículo, también necesita-

rá proteger los datos de los usuarios y elproceso de autenticación.

Máquina EnigmáticaEnigmail OpenPGP se desarrolló comouna aplicación para la comunicaciónentre procesos. En 2001, el desarrolladorde Mozilla Ramalingam Saravana des-arrolló una librería para abrir y gestionarpipes. Como Mozilla no tenía encripta-ción OpenPGP, codificó un pequeño plu-gin con propósitos de prueba. El pluginacepta y encripta correos webs paraGNUPG y muestra el texto desencriptadoen el navegador (Figura 2). Este fue elcomienzo del mayor plugin para los

clientes de correo de Mozilla y más tardepara Thunderbird.

Enigmail no importa automáticamenteclaves públicas (aunque puede estable-cer GnuPG para que lo haga especifican-do key-server-options auto-key-retrieve),sin embargo, puede buscar servidores declaves públicas para comprobar clavescuando se envía un mensaje. Muchasdistribuciones Linux integran el soporteEnigmail con Thunderbird, o lo propor-cionan en un paquete separado, porejemplo mozilla-thunderbird-enigmail

para Debian.Si está utilizando la versión proporcio-

nada por el sitio web de Thunderbird,necesitará instalar Enigmail mediante laextensión manager. Asegúrese que laversión de Enigmail coincide con su ver-sión de Thunderbird, si no Thunderbirdpodrá caer. Además, Enigmail yThunderbird necesitan estar en el mismoidioma.

Tras la instalación, primero hay quecomprobar si Enigmail está trabajandocorrectamente y encuentra GnuPG. Parahacerlo, abra el menú Enigmail | About

Enigmail. La primera vez que haga esto,le preguntará si quiere configurarEnigmail. Puede contestar no y volver aconfigurar Enigmail más tarde.

En la mayoría de los casos, preferirá usaruna conexión SSL protegida en el nave-gador web para recoger su certificadodesde el CA. Paquetes integrados comoel Mozilla permiten al navegador y alprograma de correo utilizar el mismocertificado almacenado. Thunderbirdtiene su propio almacén y sólo si utilizael navegador Firefox junto conThunderbird, necesitará descargar elcertificado con su navegador, almace-narlo en un fichero PKCS-#12 e importar-lo al fichero en Thunderbird.

La gestión de certificados está situada enTools | Preferences | Advanced |

Certificates | Manage Certificates. Haypestañas para su certificado protegidocon claves, los certificados de otrosusuarios, los sitios web (certificadosSSL/TLS de servidores de correo y denews) y certificados CA (que ha añadidoo que las ha aceptado por defecto).

En algunos casos tiene sentido tener doscertificados por usuario. Uno genéricopara usarse en el gateway. Esto permiti-rá al programa ejecutarse en su gateway

para desencriptar mensajes de correo ychequearlos en busca de malware. Elotro certificado pertenecería al usuario yse utilizará con propósitos de firmado.Tras importar su propio certificado,seleccione un certificado para firmar losmensajes salientes y otro certificadopara la encriptación y desencriptaciónbajo Security en la configuración de sucuenta.

Para encriptar un mensaje, necesitaráel certificado del receptor. Si no puedeobtenerse desde su PKI, necesitará pre-guntar al receptor que se lo envíe. Estoes perfectamente aceptable para que elreceptor le envie un mensaje de correoelectrónico firmado contestando almensaje, como cualquier certificado, elmensaje que contiene será importadoautomáticamente. Como alternativa,puede ejecutar una búsqueda contraun meta keyserver o la autoridad certi-ficadora para localizar el certificado;Thunderbird por sí mismo no tiene estacaracterística integrada que hace estopor usted.

Gestión de Certificados

Figura 2: Enigmail encripta y desencripta mensajes de

correo en Thunderbird.

Page 42: Linux Magazine - Edición en Castellano, Nº 09

Enla ven-

tana que senos muestra, en la

tercera línea debería aparecer un mensa-je indicando: Using pgp executable path

to encrypt and decrypt. Si ve un mensajede error en este punto, significa queEnigmail no ha encontrado GnuPG, oque la versión de Enigmail que ha insta-lado no es compatible con Thunderbird.

Si no tiene una clave OpenPGP, puedegenerarla utilizando el gestor de clavesKey | Generate key. Para enviar mensajesOpenPGP-firmados o encriptados, nece-sita configurar Enigmail en cada cuenta.Esto indica a Enigmail que añada unapestaña extra OpenPGP Security paracada cuenta. Aquí es donde seleccionalas claves a usar y especifica los valorespor defecto para la encriptación y firma-do de mensajes.

Aunque es más apropiado permitir alprograma seleccionar la clave automática-mente basada en la dirección de correo,no se recomienda si existen múltiples cla-ves asociadas a la misma dirección.

OpenPGP soporta dos codificacionesestándar: Inline-PGP y PGP/MIME. Inline-

PGP sólo encripta el cuer-po del mensaje, perorequiere que el usuarioencripte los ficherosadjuntos por separado yuna vez encriptados losadjunte al mensaje.Además, Inline-PGP nosoporta mensajes HTMLcon textos formateados yconjuntos de caracteresextendidos como el Chinopueden causar problemas.PGP/MIME encripta elmensaje incluyendo cual-quier fichero adjunto yformato; desafortunada-mente, no todos los clien-tes de correo PGP sopor-tan PGP/MIME.

Enigmail tiene un número de opcionespara controlar GnuPG y Thunderbirdbajo Enigmail | Preferences. Por defectoestá marcado para la mayoría de losusuarios, pero para optimizar el uso deEnigmail, es preferible cambiar unascuantas opciones de Thunderbird. Parahacer esto más fácil, las extensiones deEnigmail muestran unas cuantas opcio-nes de Thunderbird que normalmentevienen ocultas. Ver el cuadro titulado“Opciones de Enigmail” para algunasopciones interesantes.

Siguiendo las ReglasEnigmail tiene un editor de reglas quele permiten definir la configuración

para la firma, encriptación y aplicaciónde PGP/MIME e IDs de claves por reci-piente o grupo de recipientes (Figura3). El editor le permite establecer laspreferencias para las direcciones decorreo seleccionadas. Enigmail no sólosoporta reglas para usuarios individua-les, también para grupos de usuarios,como todas las direcciones de suempresa.

La función de ayuda integrada tieneinformación detallada para las reglas.Thunderbird aplica automáticamenteestas reglas cuando envía mensajes asíque tiene sentido dejar activado elprompt. Esto le proporciona un recorda-torio, para el caso en el que intenteenviar un mensaje desencriptado.

Thunderbird tiene todo lo que el usua-rio preocupado por la seguridad puededesear, aunque una simple aplicación delas tecnologías de encriptación moder-nas está bastante lejana, como algunosde los fallos descritos demuestran. �

PRÁCTICO • Seguridad Thunderbird

42 Número 09 W W W . L I N U X - M A G A Z I N E . E S

[1] Página del producto Thunderbird:http://www.mozilla.org/products/

thunderbird

[2] Paquetes Debian Thunderbird yEnigmail http://people.debian.org/

~asac/testing/

[3] CVS snapshot: http://ftp.mozilla.org/

pub/mozilla.org/thunderbird/releases/

0.9/thunderbird-0.9-source.tar.bz2

[4] Enigmail: http://enigmail.mozdev.org

RECURSOS

Habilitando Enigmail | Preferences |

Sending | Allow flowed text se le indica aThunderbird que rompa las líneas en unmensaje en múltiples líneas si las líneasson más largas de lo permitido. El mailerañade el carácter “>” en las líneas conti-nuas. Desafortunadamente, esto rompela firma que Enigmail crea para el men-saje original. Cuando contesta a un men-saje, Enigmail reemplaza “>” al comien-zo de cada línea con”|”, para prevenirque Thunderbird realice cambios en lalínea. Pero es mejor desactivar estacaracterística.

Para desencriptar mensajes PGP/MIMEencriptados almacenados en servidoresIMAP, no será capaz de descargar partesMIME individuales. Por otro ladoEnigmail no coge el mensaje completode Thunderbird y no puede desencrip-

tarlo. La opción Enigmail | Preferences |

Advanced | Load MIME parts on demand

le permite cambiar este comportamien-to.

Para desencriptar mensajes Inline-PGP,necesitará deshabilitar la presentaciónen HTML del mensaje con la opciónView | Messsage Body | Plain text.

Enigmail soporta ambos, Inline-PGP yPGP/MIME. Si envía un mensaje conficheros adjuntos, le preguntará si quiereencriptar los ficheros individualmente outilizar PGP/MIME para enviarlos. Puedeutilizar el menú de contexto para desen-criptar y abrir ficheros adjuntos encripta-dos en los mensajes entrantes. Enigmailpuede almacenar diferentes opcionespor defecto para firmar y encriptar men-sajes basados en la información de lacuenta del emisor.

Opciones de Enigmail

Figura 3: El diálogo Recipient Settings permite configurar

reglas OpenPGP para destinos específicos.

Page 43: Linux Magazine - Edición en Castellano, Nº 09

Si tenemos una LAN en casa o en la oficina ¿Por qué no se utiliza para algo realmente importante? ¡Escuchar

música! POR KEVIN DONNELLY

Música en red con SlimServer

CAJA DE MÚSICA

SlimServer • PRÁCTICO

43Número 09W W W . L I N U X - M A G A Z I N E . E S 43

Si compartes una casa con otraspersonas, especialmente adoles-centes, habrás tenido la experien-

cia de buscar uno de tus CDs, y despuésde una larga búsqueda encontrarlo deba-jo de un enorme pila de ropa y de pape-les, abrir la caja y descubrir que el CD noestá dentro. Después de pasar personal-mente por muchas de estas búsquedas, ypara evitar esta clase de frustraciones,decidí configurar un acceso inmediato ami colección completa de música paratodos los habitantes de la casa, a la quese accedería con un solo clic de ratón:Jean-Philippe Rameau, Roxy Music, y elprometedor cantante galés MeinirGwilym estarían disponibles con sólo ungesto.

¿Qué hay disponible?Desde hace más o menos dos años dis-ponemos de software multimedia paraLinux realmente bueno. En KDE, porejemplo, Juk [1]y Amarok [2] estánampliamente reconocidos como un granpaso adelante en la gestión de música.Este tipo de programas permiten confi-gurar una lista de reproducción en un PCy escucharla en ese equipo o enviarlo aotra ubicación, aunque en las versionesanteriores a la 1.2 la funcionalidad de

streaming de Amarok algunas veces nofuncionaba correctamente [3]. Una alter-nativa a los programas de escritorio sonlos gestores de música basados en web,tales como Ampache [4], Zina [5] o elmás reciente Jinzora [6]. Normalmenteestas herramientas son multiusuario,pero tienen su parte negativa, ya que confrecuencia es muy complicado ponerlasen marcha.

Mis requisitos para este proyecto eranmuy específicos: una caja (preferible-mente de fácil instalación y configura-ción) para toda la música de la casa, quediera servicio a tantos PC’s como necesi-tara, con cada oyente capaz de controlarsu listado independientemente, y consoporte completo para ficheros ogg.También quería algún modo de usar lasalida de un dispositivo que no fuera unPC en el caso de que decidiera reprodu-cir la música en el salón y no quisieracolocar un ordenador allí.

Después de documentarme un poco yde probar algo del software disponible,me encontré con la web de Slim Devices[7] y vi la luz. Fundada en el año 2000,Slim Devices fue una de las primerascompañías en usar el software de códigoabierto sobre hardware de diseño espe-cializado. En el 2001 se editó el SLIMP3,

una pequeña caja que utilizaba un stre-am mp3 sobre la red, suprimiendo lanecesidad de tener que usar un repro-ductor basado en un PC.

En el 2003 apareció la siguiente gene-ración de productos llamadoSqueezebox. El nuevo Squeezebox2 selanzó hace un par de meses. Se escribióun servidor GPL basado en Perl al que sele llamó SlimServer, el cual proporcionauna salida de música para Squeezebox.La inversión de la compañía y de lacomunidad ascendió a 9 personas duran-te un año dedicadas al desarrollo. Loimportante de SlimServer es que puedeusarse para que fluya la música a los PCsindependientemente de los dispositivosde Squeezebox2, o a otros reproductoresque no sean PCs. Decidí instalarSlimServer con un servidor de músicapara la red de mi casa.

Instalación y ConfiguraciónEl PC que utilicé como servidor de músi-ca era una vieja caja que había estadorecogiendo polvos desde hace 7 años.Tenía un procesador AMD K6/450 y128Mb de memoria. Le actualicé el firm-ware el año pasado para permitir que elmobo MSI accediera a discos de más de20 Mb y le instalé 2 discos duros de 80

Page 44: Linux Magazine - Edición en Castellano, Nº 09

MBs. La principal ventaja que ofrecenviejas máquinas como ésta es que tien-den a no calentarse tanto y son, portanto, más silenciosas que las cajasmodernas. De hecho esta máquina sepodría utilizar en el salón de ser másbonita y pequeña. La gran desventaja esque pueden llegar a ser muy lentascuando tienen que realizar determina-das tareas, como por ejemplo, renderi-zar la colección de música. Por estemotivo, el ripeado de los CDs se realizósobre máquinas rápidas y se transfirie-ron los ficheros finalizados. Puedesseguir algunos consejos sobre cómoripear y etiquetar tu música en el cuadrotitulado Etiqueta esa Pista.

El primer paso fue instalar SuSE 9.2en la caja del servidor de música, a laque llamé Tigris. Establecí una cuentade usuario y un login. Descargué el rpmSlimServer Linux y lo instalé. Utilicé laversión 5.4, aunque actualmente existeuna versión beta disponible en la web deDispositivos de Slim. El rpm está cons-truido para Red Hat y, aunque corre bienbajo SuSE, los scripts de arranque nofuncionan correctamente. Sin embargo,puedes correr /usr/local/slimserver/slim-

server.pl para arrancar el servidor. Siobtienes un mensaje sobre /etc/slimser-

ver.conf no editable, cambia el propieta-rio a tu usuario con chown.

Quizás quieras vincular SlimServercon el sistema de arranque de SuSE (si,por ejemplo, quieres que arranque auto-máticamente después de un reboot).Pascal Scheffers ha escrito un script de

inicio para SuSE 9.1 [8] que tambiénparece funcionar en SUSE 9.2. Para usar-lo, descarga el script y sálvalo como /etc/init.d/init.d/slimserver. Luego haz unenlace simbólico a rcslimserver teclean-do, (como root), ln -s /etc/init.d/init.d/

slimserver /usr/sbin rcslimserver. Yo pre-fiero correr SlimServer desde la cuentade usuario Tigris que establecí previa-mente, mejor que desde la cuenta deusuario SlimServer establecida ppr elrpm. Para ello cambié 3 de las líneas en/etc/sysconfig/slimserver:

SLIMSERVER_USER="tigris"

SLIMSERVER_CFG=U

"/home/tigris/.slimserver.conf"

SLIMSERVER_LOG=U

"/home/tigris/.slimserver.log"

Estos cambios guardan todos los ficherosrelevantes en un lugar (incluyendo losdos ficheros de bases de datosSlimServer).

Lo siguiente es crear el fichero .slim-

server.conf :

<C>touch .slimserver.conf<C>

y finalmente, como root, edité /usr/local/

slim-server/slimserver.pl comentando lalínea 762:

# $0 = "slimserver";

para permitir al script de inicio cerrarsecorrectamente. Ahora se puede controlarSlimServer ejecutando (como root) slim-

server start|stop|status.SlimServer contiene su propio servidor

web que corre en el puerto 9000. Lasiguiente cosa que hay que hacer esacceder al servidor de música, biendesde el mismo servidor de música,(escribiendo en el navegador http://

localhost:9000), o desde otro PC en tuLAN (introduciendo la dirección IP o elnombre del host en el navegador: http://

192.168.0.6:9000, o http://tigris:9000, enmi caso). En la siguiente descripciónsupondremos que estás trabajando ahoradesde otro PC usándolo como cliente delservidor de música.

Una vez que te has conectado al servi-dor selecciona Server Settings en la parteizquierda del cuadro. Crea una carpetapara tu música y pulsa Change (Figura1). Si no especificas una carpeta para tulista de reproducción, no puedes salvar o

cargar las listas de reproducción ya exis-tentes. Por último, pulsa Rescan para lis-tar la música. Este comando puede lle-varte algún tiempo si tienes muchas pis-tas. Finalmente, haz clic sobre Home |

Browse Artists para ver tu música clasifi-cada por artistas (Figura 2). Pulsando enel nombre de un artista, se te mostrarálos álbumes asociados a dicho cantantey, pulsando sobre los álbumes, se temostrará las pistas. También puedes irdirectamente a los álbumes o génerosdesde la página home.

Podrías pensar que puedes comenzarcreando una lista de reproducción, peroSlimServer necesita que un reproductorhaga una conexión primero.

¡Música Maestro!La manera más sencilla de comenzar conSlimServer es acceder a él usando unreproductor de música, tal como XMMSdesde un PC cliente. Desde el cliente,arranca XMMS y haz click en Add | URL.Escribe http://<dirección ip del servidor

de música>:9000/stream.mp3 y pulsaOK. No oirás nada porque no hay nadasonando, pero si haces clic sobre Homeen la página web de SlimServer, deberíasver ahora una nueva entrada bajoSettings, la cual te dirá algo parecido aPlayer Settings para 192.168.0.50 (ocualquiera que sea la dirección IP delcliente). Haciendo clic en esta entrada sete permite establecer un nombre para elcliente y también ajustar elementos de laconfiguración, tales como el formato deldisplay para la información de lapista(Figura 6).

PRÁCTICO • SlimServer

44 Número 09 W W W . L I N U X - M A G A Z I N E . E S

Figura 1: Configuración de la carpeta de

música y la carpeta de listas de reproducción

en Server Settings.

Figura 2: La página Browse Artists muestra

la lista de interpretes, ordenada por nom-

bres.

Page 45: Linux Magazine - Edición en Castellano, Nº 09

SlimServer • PRÁCTICO

45Número 09W W W . L I N U X - M A G A Z I N E . E S

Si se está configurando un servidor demúsica, vale la pena perder un poco detiempo pensando cuál será la normaestándar para los nombres de los archi-vos y las etiquetas de metadatos. Linuxtiene una buena cantidad de “ripeado-res”. De entre los principales, yo prefieroKaudioCreator, porque lo encuentro mássencillo que Grip. Personalmente utilizo

el “nombre del intérprete” y el “álbum”como directorios y después uso elesquema “número de la pista – título dela pista – nombre del intérprete” comonombre del archivo. Esto se puede cam-biar fácilmente dirigiéndonos a Settings

| Configure KAudioCreator | Encoder |

Wizard y utilizando los botones paracrear los árboles de directorios y nom-bres de archivos (Véase la Figura 3).

Se pueden buscar CDsen las bases de datosCDDB para ahorrartiempo al ripear, perohay que tener en cuen-ta que la informaciónCDDB de la mayoría delas álbumes compila-dos rompen el esque-ma anterior. El intér-prete del álbum nor-malmente aparece enel listado como“Various”, lo cualpuede estar bien, perola mayoría de las pis-tas parece que tam-bién tienen a“Various” como intér-prete y el intérpretecorrecto sólo se menciona en el título dela pista. En estos casos se puede corregirel nombre, después de haberlo “ripea-do”, haciendo doble click en la primerapista y cambiando los campos de intér-prete y nombre de la pista como sedesee. Después con Next Track semueve la ventana a la pista siguiente.

Hay que observar que si se cambia elnombre del interprete del álbum y des-pués se hace clic, KaudioCreator pregun-tará si también se desea reemplazar elnombre del intérprete en las pistas, asíque habrá que contestar que no si se haneditado los intérpretes de las pistas amano. Si se están transfiriendo pistas deun equipo a otro a través del protocoloSSH incluido en Konqueror, mucho cui-dado, ya que la aplicación puede cascardebido a tildes en los nombres de losarchivos.

Durante el ripeado, pueden aparecerventanas emergentes dondeKaudioCreator indica que ha detectadodaños en el CD. Normalmente es inofen-sivo ignorar esos errores y el ripeadocontinuará en segundo plano.

Una alternativa a la edición de los archi-vos antes de ripearlos es editarlos poste-riormente usando EasyTAG [12] deJerome Couderc, que está incluido enlos discos de SuSe 9.2. Para utilizarEasyTAG, se selecciona Scanner |

Rename File in EasyTAG y selecciona-mos el esquema en el campo Scan File

Name (véase la Figura 4), puede ser deayuda conmutar entre las máscara y lainformación de la inscripción haciendoclic en esos dos iconos en la barra deventana de herramientas de la ventanaScanner. Después se selecciona con el

ratón el archivo que sequiere cambiar, siendoposible realizar selec-ciones múltiples, utili-zando la combinaciónde ratón y tecla shift.Se pulsa sobre elicono verde paraexplorar los archivosseleccionados. Losarchivos resaltadoscambiarán al color rojopara indicar que hansido editados. Por últi-mo, sepulsa en elbotón deguardar dela ventanaprincipal

para guardar los cambios.

Sin embargo, renombrarficheros no es el fin principalde EasyTag. Este programa seutiliza para escribir metada-tos en mp3, ogg, flag y otrostipos de archivos y probable-mente sea el primero de su

clase entre las aplicaciones de Linuxpara el rebanar y cortar en taquitos lasetiquetas de los metadatos. Se puedeconfigurar que un directorio en concretosea revisado cada vez que arranca el pro-grama mediante Settings | Preferences |

Browser tab. Tras añadir nuevos archi-vos al directorio, se pueden añadir tam-bién al display haciendo clic con el botónderecho en el árbol de archivos y eligien-do Refresh Tree.

Los archivos que de algún modo seanerróneos (por ejemplo, archivos a losque les falte una etiqueta importante,como pueda ser el Título) se muestranen rojo (Véase la Figura 5), así como losarchivos que se han editado pero no sehan guardado, o aquellos nombres dearchivos que contengan caracteres queno le gusten a EasyTag (y sorprendente-mente parece que el símbolo de interro-gación es uno de ellos). Se puede aplicaruna etiqueta a más de un archivo en unsolo paso, para marcar todos los archi-vos de un mismo álbum: Resaltamos losarchivos, introducimos el nombre en elcampo álbum, después se pulsa el botóna la derecha del campo y por último pul-samos sobre el icono de guardar. Elescáner también ofrece una manera deescribir las etiquetas basándose en elnombre del archivo de la pista, perohasta donde he podido comprobar, estacaracterística no funciona de manera fia-ble.

Si EasyTag no puede ver los archivos deldirectorio, primero se debe comprobar sise tienen los metadatos correctos utili-zando vorbiscomment -l nombrearchi-

vo.ogg. Una versión de KaudioCreatornecesita que se cambien los permisos de644 a 655 y después a 644 otra vez, paraque se vea el archivo. Hay algunas ano-malías más: una versión de Grip colocaun número en vez de un nombre en elcampo género y a consecuencia de estoSlimServer se suele colgar.

Etiqueta esa pista

Figura 3: En KAudioCreator se puede

especificar el esquema de nombres.

Figura 4: Utilización de EasyTAG

para editar un nombre de archivo

después de haberlo ripeado.

Figura 5: EasyTAG marca en rojo los archivos erróneos o

que no se han salvado.

Page 46: Linux Magazine - Edición en Castellano, Nº 09

Play en la lista de reproducción(Figura 7).

Después de una corta demoracausada por el búfer de XMMS,deberías oír tu música en el PCcliente. Hasta aquí, todo bien, peroel búfer es la principal desventajadel uso de un cliente de streamingcomo XMMS. Si cambias de pistashaciendo doble clic sobre otrapista, puede tardar hasta 10 segun-dos hasta que el sonido salga deXMMS. Esto molestaba tanto aRichard Titmuss que escribió unaemulación Java del dispositivo deSqueezebox llamado SoftSqueeze [9].SoftSqueeze mejora sensiblemente lasincronización con SlimServer. Ademásusa el protocolo slim basado en TCP, loque ayuda a SoftSqueeze a atravesar elcortafuego en el caso de que quieras oírla música de tu casa en la oficina. Elinconveniente es que, como es un pro-grama en Java, puede acaparar muchosciclos del procesador.

Para instalar SoftSqueeze, descargaprimero el plugin mp3 de Java desde elsitio de Sun [10], abre el fichero y mueveel mp3plugin.jar al directorio /lib/ext

bajo el Java Runtime Environment (enSUSE 9.2 éste se encuentra en /usr/lib/

jvm/jre/lib/ext). Luego descarga el fiche-ro comprimido de SoftSqueeze desde susitio web (nótese que las versiones supe-riores a 1.17 incluyendo, parecen no fun-cionar con SlimServer 6beta, necesitare-mos utilizar SlimServer 5.4). Abre y

corre java-jar SoftSqueeze.jar. Una vezque has comenzado SoftSqueeze se abri-rá el diálogo Preferences (Figura 8).

Sobre la etiqueta Basic, copia la direc-ción IP de tu servidor de música en elcampo SlimServer Hostname, y (debido aque el skin por defecto de slim es dema-siado grande) elige slim skin paraSoftsqueeze Skin (Figura 9). El skin pordefecto imita a Squeezebox, pero losotros skins también son bonitos. PulsaOK. Si la aplicación empieza a saltar deun lado a otro de la pantalla, que nocunda el pánico: este comportamientotan aberrante se debe a un bug de Java,corregido en Java 1.5. Muévelo hacia unlado de la pantalla y todo volverá a estarbien.

El controlador de Squeezebox tambiénse emula (Figura 10). Pulsa en la flechadel botón de la izquierda de abajo paraconseguir un controlador vertical y en laflecha de la derecha para conseguir otro

En la página web de SlimServer buscaalgunas pistas (ya sea mediante la bús-queda de artista, álbum, o género) yañádelas a la lista de reproducción en latabla de la derecha pulsando el + juntoal nombre en la tabla de la manoizquierda. Pulsando + junto a un nom-bre de un álbum te añadirá todas laspistas de ese álbum (aunque puedescambiar este comportamiento enSettings). Nótese que deberás refrescarel navegador para ver las entradas de lanueva lista de reproducción. Esto nor-malmente ocurre de forma automática,pero en la práctica, parece variar depen-diendo del navegador, su versión y deltipo de conexión. Finalmente, pulsa

PRÁCTICO • SlimServer

46 Número 09 W W W . L I N U X - M A G A Z I N E . E S

En la actualidad está apareciendo unaingente cantidad de nuevos dispositivospara aprovecharse de la tendencia cre-ciente de centralizar la música en unlugar, pero un breve repaso sugiere queno hay muchos que funcionen conLinux.

El producto más similar a Squeezebox2es el Roku Soundbridge [14]. Este pro-ducto puede utilizar SlimServer 5.4 y losusuarios pueden incluso conseguir algode soporte a través del email. Sin embar-go, Roku indica que el SoundBridge“está optimizado para el WindowsMedia Connect e iTunes”, y que han pro-bado el SoundBridge con SlimServer“en las plataformas Windows yMacintosh, pero no en Linux”. ElNetgear MP101 [15] también es similar aSqueezebox2, pero parece que sólo fun-

ciona con archivos mp3 y WMA y necesi-ta Microsoft Windows como plataformadel servidor.

Algunos “concentradores multimedia”pueden manejar fotos y vídeos tan biencomo la música; por ejemplo D-LinkMediaLounge DSM-320 [16], elViewSonic WMA100 [17], el PrismiqMediaPlayer [18] y el Philips StreamiumSL300i [19]. Parece que ninguno de ellospuede reproducir archivos ogg y lamayoría dependen por completo de unatelevisión para la interacción con elusuario (aunque el Streamium tiene inte-grada una pequeña pantalla). Parece quetambién necesitan Microsoft Windowscomo plataforma del servidor, funcio-nando con Microsoft Media Server o consu propio software.

En un rango de precios mayor están las

cajas como Hifidelio [20] y el SonosZonePlayer ZP100 [21]. El formato es elde caja todo-en-uno que ripea y almace-na las pistas de música, así como pro-porciona el acceso a las mismas.Reproducen archivos ogg, pero pareceque los PCs necesitan utilizar iTunes paraconectarse a ellas (y aún no hay una ver-sión nativa de iTunes para Linux). ElZonePlayer es con diferencia el repro-ductor de medios con mejor aspecto,con un control remoto al estilo de unPDA, pero también es el más caro.Aunque aún no reconoce los archivosogg (aunque parece que lo hará pronto),es el único cacharro que específicamen-te funciona con Linux como servidor,conectándose a través de Samba (aun-que Red Hat 9.0 es la única distribuciónque está oficialmente soportada).

Reproductores en todas partes

Figura 7: Administración una lista de repro-

ducción en el cuadro Playlist del Slim-Server.

Figura 8: La primera vez que se arranca

SoftSqueeze, aparece el diálogo SoftSqueeze

Preferences.

Page 47: Linux Magazine - Edición en Castellano, Nº 09

horizontal. Si el panel de boto-nes tapa al reproductor oprimeAlt y arrástralo a un lado con elratón. En el controlador, las fle-chas de la derecha e izquierdaentran y salen de los menús ylas flechas de arriba y abajo semueven arriba y abajo a travésde las opciones. la manera mássencilla de controlar SlimServeres, de hecho, a través de lainterfaz web, pero a veces, sihas presionado Pause en el con-trolador, deberás volverlo a pre-sionar otra vez antes de oír lamúsica, incluso si has seleccionado Play

en la página web.

En MarchaLos usuarios puede que sean adultosjóvenes, o personas un poco torpes, asíque es una buena idea simplificar elacceso a SlimServer. Puedes hacerlofácilmente añadiendo 2 iconos al escrito-rio. El primero de ellos arrancaráSoftSqueeze y el segundo abrirá la pági-na web del cliente en SlimServer. Para elreproductor, pulsa con el botón derechoen el escritorio y elige Create New | File |

Link to Application. En el cuadroApplication, escribe java -jar ‘/ruta/a/

SoftSqueeze. Como comando se pone jar.Para la página server, pulsa en el escrito-rio y elige Create New | File | Link to

Location (URL). En la caja, copia y pegala URL desde la página web. Esto inclui-rá algo como ?player=19:b8:89:b8:37:68

al final, la cual es una falsa direcciónMAC que SoftSqueeze pasa a SlimServerpara identificar al cliente. A continua-ción puedes decirle a tus usuarios quepulsen primero sobre el icono reproduc-tor y que empiecen a elegir su música.

El número de clientes que puedessoportar depende del ancho de banda detu red, pero en la LAN de casa, Tigrispuede soportar 4 usuarios sin proble-mas… aunque la CPU funciona a tope.También funciona bien con un clienteportátil inalámbrico. Ya no tengo excusapara no trabajar en el jardín.

La única desventaja que SlimServerpuede tener es que cada lista de repro-

ducción de cada cliente pareceser accesible desde cualquierotro cliente simplemente selec-cionando el nombre relevantedel cliente en la caja que cuelgaen la parte superior derecha dela página web. Por consiguiente,esperemos que los usuarios nohagan trastadas con las listas dereproducción de otros usuarios.La configuración también estádisponible desde cada cliente,aunque hay un plugin deMichael HergerNoSetup::Plu-gin.pm) que lo cie-rra todo a cal y a canto.

SlimServer tiene muchas y úti-les características y una activacomunidad de usuarios, con unalista de correos muy útil y how-tos sobre temas tan variados

como ficheros AAC y WMA, el uso decarátulas de los álbumes y la recepciónde radio a través de Internet. También sepuede instalar SlimServer en unaLinkStation Buffalo, lo que proporcionaun servidor de música atractivo pero debajo precio [11]. Una de sus principalesatractivos es que puede usarse comofuente única para rellenos periódicos dereproductores de Linux.

Squeezebox2, especialmente la versióninalámbrica, forma ahora parte de milista de mis nuevos y más apreciados ser-vicios de entretenimiento de salón. Lanueva caja ofrece una mayor cobertura yla capacidad de emitir radio de Internetdirectamente sin pasar a través de unPC. Una característica puente permite

que dispositivos inalámbricos (como unaPlayStation) se conecten a una LANinalámbrica e Internet a través deSqueezebox2.

Si estás considerando comprar algunode los dispositivos musicales actualesque existen en el mercado (ver el cuadrotitulado “Reproductores por todas par-tes”), vale la pena preguntarle a las com-pañías que están detrás de esos produc-tos si están realmente preparadas parasoportar totalmente a Linux, ya nohablamos de apoyar el desarrollo de unaaplicación GPL como SlimServer.Comprar productos de esas compañíasque apoyan Linux, en oposición a aqué-llas otras que no lo hacen, es una buenamanera de estimular a los fabricantes aque apoyen Linux. �

SlimServer • PRÁCTICO

47Número 09W W W . L I N U X - M A G A Z I N E . E S

[1] http://developer.kde.org/~wheeler/juk.

html

[2] http://amarok.kde.org/

[3] http://marc.theaimsgroup.com/

?l=suse-linux-e&m=110822924029212

&w=2

[4] http://www.ampache.org/

[5] http://pancake.org/zina

[6] http://www.jinzora.org/

[7] http://www.slimdevices.com/

[8] http://lists.slimdevices.com/archives/

developers/2004-July/009722.html

[9] http://softsqueeze.sourceforge.net/

[10] http://java.sun.com/products/

javamedia/jmf/mp3/download.html

[11] http://fieldnetworks.com/slim/

linkstation.html

[12] http://easytag.sourceforge.net/

[13] http://eng.iaudio.com/

[14] http://www.rokulabs.com/products/

soundbridge/index.php

[15] http://www.netgear.com/products/

details/MP101.php

[16] http://www.d-link.com/products/

?pid=318

[17] http://www.viewsonic.com/products/

tventertainment/ medianetworks

[18] http://www.prismiq.com/products/

product_mediaplayer.asp

[19] http://en.streamium.com/

whatisstreamium

[20] http://www.hermstedt.com/english/

hifidelio

[21] http://www.sonos.com/

RECURSOS

Figura 9: El reproductor de música

SoftSqueeze.

Figura 10:

SoftSqueeze

emula un

mando a dis-

tancia.

Figura 6: Configuración de las opciones del

display y del nombre del cliente en la página

Player Settings.

Page 48: Linux Magazine - Edición en Castellano, Nº 09

DESARROLLO • Perl: Yahoo API Scripting

48 Número 09 W W W . L I N U X - M A G A Z I N E . E S

Es muy común que los servicios deInternet ofrezcan un API Web.Los desarrolladores usan la API

Web para integrar los servicios deInternet con sus propias aplicaciones.Yahoo acaba de publicar una interfazREST(Representational State Transfer,transferencia de estado representacional)para su infraestructura de búsqueda.Básicamente, REST permite enviar unaURL a una aplicación y a cambio obtieneun fichero XML. Por supuesto que tam-bién hay un nuevo módulo Perl,Yahoo::Search, a juego; el módulo estádisponible en CPAN y ha sido desarrolla-do por el gurú de las expresiones regula-res Jeffrey Friedl.

Yahoo::Search facilita la búsqueda dedocumentos, imágenes, vídeos y otrasmuchas cosas. El acceso HTTP y la extrac-

ción XML se ocultan debajo de sencillasllamadas a métodos. Si intentamos escri-bir una aplicación, necesitaremos regis-trarnos para obtener nuestra propia ID deaplicación. Se permitirá realizar 5000 lla-madas por día a los servicios menciona-dos en este artículo. Para registrarnos en[2], necesitaremos nuestro propio IDYahoo, que podremos conseguir a cambiode una dirección de correo electrónicoválido. También será necesario que acep-temos las directivas de privacidad deYahoo (Yahoo’s Privacy Statement); nodebemos olvidar leerlas con atención.

¿Quizás quiso decir…?Si no estamos seguros de cuál es la orto-grafía correcta de una palabra, siemprepodemos trincar nuestro diccionariofavorito, aunque es muy posible que

echemos en falta algunas de las ultimaspalabras de moda, términos de la culturapop o los nombres propios. En este caso,Internet es de gran ayuda. La mayoría delos motores de búsqueda ofrecen unafunción “¿Quizás quiso decir?” que es loque ellos sugieren como la alternativacorrecta si tecleamos algo que estosmotores no puedan entender.

Por ejemplo el guión de errores orto-gráficos (Véase el Listado 1) utiliza elmétodo Term() del API Web para invocaral corrector ortográfico de Yahoo con unapalabra o frase para que la revise:

$ typo foo foughters

Corrected: foo fighters

El corrector ortográfico no sólo encuen-tra palabras en el diccionario. Podemos

Uso de la API Yahoo Search con Perl

CONTACTOCONTACTO

Siguiendo los pasos de Google, Amazon y eBay, Yahoo acaba de lanzar un servicio API Web para su motor de

búsqueda. En el reportaje de este mes no daremos un repaso a un guión, ni a dos… sino que son tres los

guiones en Perl los que serán analizados y que nos ayudarán a corregir la ortografía, localizar a los compis

del colegio a los que perdimos la pista hace tiempo y ver las fotos de vacaciones de otras personas, y todo

gracias a la nueva API Web de Yahoo. POR MICHAEL SCHILLI

Page 49: Linux Magazine - Edición en Castellano, Nº 09

Perl: Yahoo API Scripting • DESARROLLO

49Número 09W W W . L I N U X - M A G A Z I N E . E S

El listado 1 muestra cómo se ha imple-mentado. La orden use de la línea 11carga el módulo Yahoo::Search, que pre-viamente habremos instalado usando lashell de CPAN, y le pasaremos la ID quehemos obtenido desde [2]. En este puntonecesitamos modificar los detalles delguión para reflejar nuestras credenciales.

El parámetro Spell del método Terms()

espera una palabra o frase, que enviará alservicio Yahoo, analizará el XML devueltopor la contestación y extraerá la respuestasi es que existe una. La línea 14 almacenala contestación en la variable $suggestion.A continuación una estructura if-else nosdará la respuesta o bien indicará No

corrections si el motor no encuentra nada.Aunque el servicio está haciendo progre-sos con la internacionalización, no pode-mos esperar buenos resultados en otraslenguas distintas del inglés, sobre todocuando se trata de palabras con tilde.

Buscando en el baúl de losrecuerdosLos robots de los motores de búsquedavagabundean sin descanso a través delconocimiento depositado en Internetbuscando nuevas fuentes de informa-ción. Esto significa que los resultados delas búsquedas pueden cambiar y cam-biarán. Si buscamos todos los días elnombre de un compañero de colegio,

notaremos inmediatamente los cambiossi él o ella comienzan una nueva páginaweb o se hacen famosos de un día paraotro. Por supuesto que nadie tiene tiem-po de realizar manualmente este tipo debúsquedas, además de que puede sermuy complicado seguirle la pista a losresultados.

Servicio de búsquedaPara que conseguir que las cosas seanmás fáciles para nosotros, el guiónbuddy (coleguita, véase el Listado 2)arranca una vez al día mediante cronjob.El guión recupera los primeros 25 resul-tados de una lista de nombres almacena-dos en el archivo de configuración~/.buddy. Este guión enviara las URL’sde las que no tenga conocimiento previo,junto con un extracto del contenido delsitio Web, a una dirección de correo elec-trónico preconfigurada. Esto le permitirásaber si alguno de sus coleguitas de lalista ha sido nominado, por ejemplo,para los premios Nobel.

Durante todo un mes nuestro hábilguión buddy mantendrá cualquier URLque encuentre en una caché. Cada vezque encuentre un nombre que ya ha sidocacheado, se extiende el periodo decaché. Los nombres que han estadoausentes durante un mes, serán redescu-biertos como si fueran nuevos, simulan-do de este modo una mala memoria yanimándonos ocasionalmente.

La línea 12 del guión espera una direc-ción de correo electrónico a la cual debe-rá enviar las actualizaciones. Si lanza-mos buddy en la línea de ordenes, espe-cificando la opción -v (para el modo pro-lijo, viste), la línea 24 inicializa la estruc-tura Log4perl con un nivel de registro de$DEBUG, haciendo que los registros seanmás exhaustivos. Por omisión, sólo vere-mos los mensajes de registro con la prio-ridad igual o superior a WARN.

La línea 26 declara la función mailadd

(que será definida después) para decirle aPerl que ésta es una función nueva, permi-tiendo hacer así cualquier llamada quepreceda a la definición sin necesitar parén-tesis. La función mailadd, que comienzaen la línea 93, mantiene el texto del correoacumulado en una variable our llamada$maildata. La función mailsend de lalínea 100 comparte la misma variable. Lasllamadas a mailadd simplemente añadentexto a $maildata. Después la llamada aclose() en la línea 118 enviará el mensaje

verificar casi cualquier término sobre elcual se haya escrito en la Web. Inclusohasta los de los políticos bien conocidos:

$ typo tonie blayre

Corrected:tony blair

Figura 1: Los viejos compañeros del colegio han aparecido en la Web. El guión nos manda un

correo con un resumen de la lista de aciertos.

01 #!/usr/bin/perl -w

02 #############################

03 use strict;

04

05 my $term = "@ARGV";

06

07 die

08 "uso: $0 palabra/frase ..."

09 unless length $term;

10

11 use Yahoo::Search AppId =>

"YOUR_APP_ID";

12

13 my ($suggestion) =

14 Yahoo::Search->Terms(

15 Spell => $term );

16

17 if (defined $suggestion) {

18 print "Corregido: ",

19 "$suggestion\n";

20 } else {

21 print "Sin sugerencias\n";

22 }

Listado 1: typo

Page 50: Linux Magazine - Edición en Castellano, Nº 09

DESARROLLO • Perl: Yahoo API Scripting

W W W . L I N U X - M A G A Z I N E . E S

completo a la dirección que hayamos indi-cado (Véase la Figura 1) usando el módu-lo de CPAN Mail::Send.

La función plough, que ha sido expor-tada por el modulo Sysadm::Install,espera una función de callback y unnombre de fichero en la línea 30. La fun-ción analiza el archivo de configuración~/.buddy, llamando a la función call-

back después de cada línea que hayaleido, pasando el contenido de cadalínea a la variable $_. La línea 31 descar-ta las líneas comentadas con # y la ordenchomp arrancará de un mordisco elcarácter newline. La línea 33 empujará a

cualquier compañero que el procesoencuentre al final de array @buddies yasí se va ampliando continuamente.

Después la línea 53 utiliza el métodoResults() para contactar con el serviciode Yahoo, envolviendo los nombres denuestros compañeros guardados en elarchivo de configuración con doblescomillas y pasando después esta cadenaentrecomillada qq{"$buddy"} con elparámetro Doc, ya que ésta es una bús-queda para un documento Web.

La lista de objetos resultantes devuel-tos en la respuesta utilizan los métodosUrl() ySummary() dando como resulta-

do las URL y un extracto para cada acier-to. El archivo de cache (línea 37) estápreparado tras las bambalinas, gracias aCaché::FileCache y está localizado en/tmp/FileCache. El caché mantiene cual-quier entrada durante 30 días, tal comose especifica mediante el parámetrodefault_expires_in.

Como el servicio Web exige estricta-mente UTF-8, los nombres en ~/.buddy

deben estar codificados en UTF-8. Esto esirrelevante para nombres en ingléscorriente, pero los caracteres acentuadosson una historia diferente. Si tenemos unamoderna distribución de Linux, nuestro

Número 0950

001 001 #!/usr/bin/perl -w

002 #############################

003 # buddy - Seguimiento de

004 # resultados de búsqueda

005 # 2005, [email protected]

006 #############################

007 use strict;

008

009 my $BUDDY_FILE =

"$ENV{HOME}/.buddy";

010 my $EMAIL_TO = 'email@algun-

lado.com';

011

012 use Sysadm::Install qw(:all);

013 use Yahoo::Search;

014 use Text::Wrap;

015 use Cache::FileCache;

016 use Log::Log4perl qw(:easy);

017 use Getopt::Std;

018 use Mail::Send;

019

020 getopts( "v", \my %o );

021

022 Log::Log4perl->easy_init(

023 $o{v} ? $DEBUG : $WARN );

024 sub mailadd;

025

026 my @buddies = ();

027

028 plough sub {

029 return if /^\s*#/;

030 chomp;

031 push @buddies, $_;

032 }, $BUDDY_FILE;

033

034 my $cache =

035 Cache::FileCache->new({

036 namespace => "Buddy",

037 default_expires_in =>

038 3600 * 24 * 30,

039 });

040

041 my $search =

042 Yahoo::Search->new(

043 AppId => "YOUR_APP_ID",

044 Count => 25,

045

046

047 for my $buddy (@buddies) {

048 DEBUG "Petición de búsqueda

",

049 "para '$buddy'";

050 my @results =

051 $search->Results(

052 Doc => qq{"$buddy"} );

053

054 my $buddy_listed = 0;

055

056 DEBUG scalar @results,

057 " resultados";

058

059 for my $result (@results) {

060 if($cache->get(

061 $result->Url()

062

063 DEBUG "Encontrado en cache:

",

064 $result->Url();

065

066 # Refrescar si se encuentra

067 $cache->set(

068 $result->Url(), 1);

069 next;

070 }

071

072 mailadd

073 "\n\n### $buddy ###"

074 unless $buddy_listed++;

075

076 mailadd $result->Url();

077

078 $cache->set(

079 $result->Url(), 1);

080

081 mailadd fill( " ",

082 " ",

083 $result->Summary() ),

084

085 }

086 }

087

088 mailsend();

089

090 #############################

091 sub mailadd {

092 #############################

093 our $maildata;

094 $maildata .= "$_\n" for @_;

095 }

096

097 #############################

098 sub mailsend {

099 #############################

100 our $maildata;

101

102 return

103 unless defined $maildata;

104

105 DEBUG "Enviando email: ",

106 "$maildata";

107

108 my $msg =

109 Mail::Send->new();

110

111 $msg->to($EMAIL_TO);

112 $msg->subject(

113 "Noticias Buddy Watch");

114 my $fh = $msg->open;

115 print $fh $maildata;

116 close $fh;

117 }

Listado 2: buddy

Page 51: Linux Magazine - Edición en Castellano, Nº 09

editor almacenará los caracteres acentua-dos en UTF-8 predeterminadamente. Siaún usamos Latin 1, deberemos utilizaralguna herramienta, tal como toutf8, en lalínea de ordenes como por ejemplo toutf8

buddy.latin1 >~/.buddy, para convertirel archivo rápidamente:

# toutf8

use Text::Iconv;

my $conv = U

Text::Iconv->new("Latin1", U

"UTF-8");

print $conv->convert U

(join '', <>);

Solamente necesitamos modificar ladirección de correo electrónico en lalínea 12 del guión para que concuerdecon nuestras necesidades. Una entradaen cron como por ejemplo 0 5 * * *

$HOME/bin/buddy llamará al guión cadamañana, consultando al motor de bús-queda, actualizando la caché y envián-donos un mensaje por correo electrónicocon todas las novedades producidasdesde la ultima búsqueda. Funcionamejor con nombres poco corrientes;seguir la pista de nombres como JuanRuiz generarán demasiado ruido.

Imagina estoEl nuevo servicio también permite labúsqueda de imágenes. El motor de bús-queda recuperará una serie de URLs quecoincidirán con nuestra clave de búsque-da, pasándosela al guión slideshow

(Véase el Listado 3), el cual las mostraráen la ventana de nuestro navegador conun intervalo de 5 segundos.

El guión mostrará en primer lugar unsencillo formulario de búsqueda (Véasela Figura 3). Cuando un usuario introdu-

ce una clave de búsquedaen el diccionario (porejemplo San Francisco ypulsa sobre el boton deSearch, se establece elparámetro CGI q y lalínea 68 llama al métodoResults() del paqueteYahoo::Search. El pará-metro Image pasa la clavede búsqueda, Count limi-ta el resultado a 50 acier-tos, y el ajuste deAllowAdult con un valorde 0 al menos, intentaprevenir que contenidoadulto se despliegue ensu pantalla.

Como el texto de lostítulos están otra vez enUTF-8, el método hea-

der() en la línea 26 leindica a nuestro navega-dor que las páginas diná-micamente generadasestán codificadas en UTF-8.

Memoria CachéEl guión CGI slideshow almacena el resul-tado de nuestras búsquedas. En otraspalabras, slideshow las URLs de las imá-genes y un resumen de texto almacenadocomo un array de arrays, en un archivo decaché persistente. Esta técnica evita queel proyector de la presentación de diaposi-tivas tenga que interrogar al motor debúsqueda cada vez que el proyector avan-ce hacia la siguiente imagen.

El módulo Caché::FileCache almacenapares de clave-valor donde los valoresson simples scalars, pero no se permitenestructuras anidadas. El módulo Storable

puede ayudarnos a seguir trabajando apesar de la caren-cia de estructurasanidadas. La fun-ción freeze() delmóduloStorablepuedeserializar unaestructura dedatos antes dealmacenarla en lacaché. Si hacefalta recuperardesde la caché losdatos serializados,se llama al des-erializador thaw()

para convertir los datos devueltos a laestructura anidada original de Perl.

DetallesPara evitar que accidentalmente el guiónCGI use datos de entrada inseguros y sincomprobar que puedan hacer llamadasal sistema (por ejemplo, para evitar laposibilidad de abrir un gran agujero deseguridad en la aplicación) la opción -T,(del modo taint, manchar) está correcta-mente habilitada al comienzo del guiónen la siguiente línea Shebang que llamaal intérprete de Perl.

El primer bloque if (línea 28) estáhabilitado si se llama al guión, tanto conla cadena de consulta como con elnúmero de serie de la imagen actual. Eneste caso, la caché mantendrá unasecuencia de URLs de imagen con subtí-tulos que coinciden, de una llamadaanterior. La línea 31 descongela el arrayde arrays, y el operador del módulo en lalínea 35 garantiza que el número de serieincrementado señale siempre a una posi-ción dentro del array y no a alguna partefuera de los límites.

La función refresh() llamada en lalínea 36 usando el parámetro 5 está defi-nida en la línea 107. Esta funciónrefresh() devuelve las secuencias HTML,que pasan meta etiquetas al navegadorpara decirle que cargue la siguiente ima-gen después de esperar el número de

Perl: Yahoo API Scripting • DESARROLLO

51Número 09W W W . L I N U X - M A G A Z I N E . E S

Figura 2: Una consulta para “San Francisco” en el formulario

de entrada devuelve una presentación de diapositivas con vis-

tas de la ciudad.

Figura 3: La búsqueda de imágenes del Listado 3 nos ofrece una

buena presentación, que sobre todo contiene instantáneas de vaca-

ciones.

Page 52: Linux Magazine - Edición en Castellano, Nº 09

za este segundo parámetro si no seencuentra ninguno de los resultados dela búsqueda.

InstalaciónPara instalar el guión, simplemente locopiamos al directorio cgi-bin de nuestroservidor Web, tecleamos una consulta,nos sentamos ¡y a relajarnos con lasfotos de vacaciones de otras personas! �

segundos especificados con el parámetrodel intervalo que ha pasado.

El segundo parámetro opcional parala función refresh() especifica si elsiguiente URL para ser cargado por elguión mostrará la siguiente imagen(next_ url incrementando simplementeel parámetro numérico s) o si el guióndebe ir de nuevo a la página de comien-zo con el URL original. La línea 88 utili-

DESARROLLO • Perl: Yahoo API Scripting

52 Número 09 W W W . L I N U X - M A G A Z I N E . E S

001 #!/usr/bin/perl -wT

002 #############################

003 # slideshow - Búsqueda de

imágenes

004 # en Yahoo como presentación

CGI

005 # 2005, [email protected]

006 #############################

007 use strict;

008

009 use CGI qw(:all);

010 use Yahoo::Search AppId =>

"YOUR_APP_ID";

011 use Cache::FileCache;

012 use Storable qw(freeze thaw);

013

014 my $cache =

015 Cache::FileCache->new({

016 namespace => 'slideshow',

017 default_expires_in =>

018 3600,

019 auto_purge_on_set => 1,

020 });

021

022 my $data;

023

024 print header(-charset =>

"utf-8");

025

026 if(param('q') and defined

param('s')) {

027

028 $data = thaw

$cache->get(param('q'));

029

030 my $seq = param('s');

031 $seq %= scalar @$data;

032 print refresh(5);

033 print center(

034 a(

035 { href => url() },

036 "Stop"

037 ),

038 a(

039 { href => next_url() },

040 "Next"

041 ),

042 p(),

043 b( param('q') ),

044 ":",

045 i( $data->[$seq]->[1] ),

046 p(),

047 img(

048 { src =>

049 $data->[$seq]->[0]

050 }

051 ),

052 p(),

053 a(

054 { href =>

055 $data->[$seq]->[0]

056 },

057 $data->[$seq]->[0]

058 ),

059 );

060

061 } elsif(param('q')) {

062

063 my @results =

064 Yahoo::Search->Results(

065 Image => param('q'),

066 Count => 50,

067 AllowAdult => 0,

068 );

069

070 if (@results) {

071 for (@results) {

072 push @$data,

073 [

074 $_->Url(),

075 $_->Summary()

076 ];

077 }

078 print refresh(0);

079 $cache->set(

080 param('q'),

081 freeze($data)

082 );

083 } else {

084 print refresh( 0, 1 );

085 }

086 } else {

087 print h2(

088 "Búsqueda de

Presentación"),

089 start_form(),

090 textfield(

091 -name => 'q' ),

092 submit(

093 -value => "Search" ),

094 end_form(),

095 font(

096 { size => 1 },

097 "Impulsado por " .

098 "Yahoo Search"

099 );

100 }

101

102 #############################

103 sub refresh {

104 #############################

105 my ($sleep, $reset) = @_;

106

107 return start_html(

108 -title => "Presentación",

109 -head => meta({

110 -http_equiv =>

111 "Refresh",

112 -content =>

113 "$sleep, URL=" . (

114 $reset ?

115 url() :

116 next_url())}));

117 }

118

119 #############################

120 sub next_url {

121 #############################

122 my $s = param('s');

123 $s ||= 0;

124

125 return

126 sprintf "%s?q=%s&s=%d",

127 url(), param('q'),

128 $s + 1;

129 }

Listado 3: slideshow

[1] Listados de este artículo: http://www.

linux-magazine.es/Magazine/

Downloads/09

[2] Página principal del API de Yahoopara los desarrolladores: http://

developer.yahoo.com

RECURSOS

Page 53: Linux Magazine - Edición en Castellano, Nº 09

Un simulador 3D del Sistema Solar

UNIVERSOVIRTUAL

En muchas ocasiones habréis visto representaciones tridimensionales del Universo en el que vivimos, por

ejemplo, cada vez que aparecen en los informativos vídeos con las simulaciones de las misiones de la NASA.

Este mes vamos a crear un sistema Solar “virtual” tridimensional empleando VTK desde Python.

POR ANA Mª FERREIRO Y JOSE A. GARCÍA .

Infografía - VTK • DESARROLLO

53Número 09W W W . L I N U X - M A G A Z I N E . E S 53

La escena del Sistema Solar lavamos a crear en VTK, basándo-nos en las técnicas explicadas en

el número 8 de Linux Magazine.Construiremos una interfaz de usuarioen Tkinter que contenga un área de ren-derizado y un frame con botones paracontrolar el inicio y el fin del movimien-to.

En este artículo construiremos unaversión simplificada del Sistema Solar,donde sólo incluiremos el Sol y los tresplanetas más próximos a él (según laFigura 1). Alrededor de la Tierra situare-mos también la Luna. Cada uno de estosobjetos celestes tendrán asociados suscorrespondientes movimientos de rota-ción y traslación. Aprenderemos cómo

poner las texturas de los planetas, asícomo el modo de controlar los movi-mientos. Con todas las técnicas que vere-mos ya podéis dejar libre vuestra creati-vidad…

Organización de ideasLa estructura del programa está organi-zada en dos clases: class MyGUI que con-trola los widgets de la interfaz de usua-rio; y class RenderWindow que controlael área de renderizado de VTK, dondeincluiremos los planetas.

Mercurio, Venus y la Tierra rotan sobresu eje y se trasladan en un movimientoelíptico en torno al Sol. En nuestro caso,por simplicidad, vamos a suponer que elmovimiento es circular y que cada plane-

ta tiene forma de esfera. Como lasdimensiones reales son tan grandes, ten-dremos que trabajar a escala, pues de locontrario sólo veríamos unos pequeñospuntos en la escena. Para ello vamos aconsiderar el radio de la órbita de laTierra como unidad de referencia. Losdatos que vamos a emplear los organiza-mos en diccionarios, como sigue:

#Radios de los planetas

radios={'Sol': (3*6.96*10**5)U

/(1.49*10**8),

'Tierra': (6.378*10**3)U

/(1.49*10**8)*100}

#Radios de las órbitas

r_órbita={'Sol': 0.0,

Page 54: Linux Magazine - Edición en Castellano, Nº 09

'Tierra':

(1.49*10**8)/U

(1.49*10**9)}

A cada uno de los planetas levamos a aplicar una textura,una imagen del planeta quepega adecuadamente en laesfera para dar sensación derealismo en la representación(en la zona de descargas deLinux Magazine en [1]podéis descargar las texturasde todos los planetas asícomo el código completo delprograma):

@LI textures={‘Sol’:

‘fotosol2.jpg’, ‘Tierra’:ßß

‘reletierra.jpg’}

Para poder apreciar el movimiento delos planetas, consideramos que 1 díaequivale a la variable self.var_seg=1 (ensegundos).

Pongámonos manos a la obra. Lo pri-mero es crear la GUI con el área de ren-derizado y los botones PLAY, STOP yQUIT, cuyo comportamiento detallare-mos posteriormente. En el fichero sistso-

lar_Paso1.py, que encontraréis en el áreade descarga, tenéis la base del códigodonde se construye la GUI con la escenade VTK (Figura 2).

Creación del Sistema SolarColoquemos los planetas en nuestraescena (los planetas serán los actores dela misma). Para hacer referencia a cadaplaneta, vamos a usar el diccionarioself.planetsActor={}, que guardará lasinstancia a cada vtkActor.

Vamos a crear el método create_pla-

net(self, center,radio,name_texture), en laclase RenderWindow; para construir unplaneta con forma de esfera de un deter-minado radio, con una textura name_tex-

tura, y ubicado en la escena en la posi-ción center. El código correspondiente aeste método se puede ver en el Listado 1.

El objeto vtkTexturedSphereSource()

crea una esfera centrada en el origen y deun radio especificado, sobre la que sepuede pegar una textura. El objetovtkJPEGReader() lee ficheros JPEG; cuyopath lo especificamos mediante el métodoSetFileName. El objeto atext =

vtk.vtkTexture() proporciona los métodos

para controlar el mapeado de la textura,que se asocia al actor planetActor median-te el método SetTexture. Finalmente,mediante return planetActor devolvemosuna instancia del vtkActor que se crea.

Ahora basta escribir en el constructorde la clase RenderWindow el siguientebucle:

for k in radios.keys():

self.planetsActor[k]=U

self.create_planet(centro[k],U

radios[k],textures[k])

self.add_actor(self.U

planetsActor[k])

Mediante radios.keys() obtenemos lalista de los planetas que queremos ubi-car en la escena. Según el centro, elradio y la textura de cada planeta crea-mos un actor,self.planetsActor[k], quecolocamos en la escena mediante elmétodo que add_actor, de la claseRenderWindow.

Probad el código ahora. Si habéisseguido todos los pasos, deberíais estarviendo el Sol, Mercurio, Venus, la Tierra

y la Luna; igual que en laFigura 3. Haced un zoomsobre cada planeta. Podeisver la Luna con sus cráteres,la superficie terrestre con losdistintos continentes y océa-nos, etc. (Figura 4 y Figura 5).

Movimiento derotación y trasla-ciónAhora vamos a mover losplanetas…En primer lugar,usaremos la variableself.move que nos va a servirpara controlar el movimien-to del sistema; self.move=1

si hay movimiento yself.move=0 en caso contrario. Creemosen la clase RenderWindow los siguientesmétodos:

def stop(self):

self.move=0

def ini_move(self):

self.move=1

Para trasladar cualquier planeta en tornoal Sol, describiendo una órbita circular(según se muestra en la Figura 6), bastacrear el siguiente método:

def translate_planets(self,U

dt,ind):

omega_T=(2*math.pi)/(self.U

dur_year[ind]*self.var_seg)

x=self.r_orbita[ind]*U

math.cos(omega_T*dt)

y=self.r_orbita[ind]*U

math.sin(omega_T*dt)

self.planetsActor[ind].U

SetPosition([x,y,0])

Las variables x e y, son las coordenadasen el instante dt. Medianteself.planetsActor[ind].SetPosition([x,y,0]

), situamos el actorself.planetsActor[ind] en el punto(x,y,0).

En el caso concreto de la traslación dela Luna, el método de traslación seríaanálogo, sólo que habría que tener encuenta la posición de la Tierra; tal comose recoge en las siguientes líneas,

aux=self.planetsActorU

['Tierra'].GetPosition()

xTierra=aux[0]

yTierra=aux[1]

DESARROLLO • Infografía - VTK

54 Número 09 W W W . L I N U X - M A G A Z I N E . E S

Figura 1: Sistema Solar hasta el planeta Tierra.

Figura 2: Interface básica con un área de

renderizado.

Page 55: Linux Magazine - Edición en Castellano, Nº 09

Infografía - VTK • DESARROLLO

55Número 09W W W . L I N U X - M A G A Z I N E . E S

Modified() actualizamos el tiempo deactualización del actor en la escena.

Para lograr un movimiento global crea-mos el método move_sistsolar(self), enel que llamamos a cada uno de los méto-dos que acabamos de ver:

01 while(self.move):

02 time.sleep(2.0*self.dt_mov)

03 self.dt+=self.dt_mov

04

05 for k_rot in ['Mercurio',

'Venus','Tierra']:

06 self.translate_planets

(self.dt,k_rot)

07

08 aux=self.planetsActor

['Tierra'].

GetPosition()

09 xTierra=aux[0]

10 yTierra=aux[1]

11

12

self.rotate_Tierra(self.

dt_mov)

13

Cada uno de los planetas rota sobre símismo en torno al eje Z (Figura 7). En elcaso concreto de la rotación de la Tierrabastaría escribir,

self.planetsActor['Tierra'].U

RotateZ(omega_gr*dt)

self.planetsActor['Tierra'].U

Modified()

El método RotateZ rota el actoromega_gr*dt grados (en radianes), entorno al centro de dicho actor. Mediante

Figura 3: Sistema Solar en el instante inicial.

Figura 4: Superficie de la Tierra y la Luna.

01 create_planet(self,

center,radio,name_texture)

02

03 esfera =

vtk.vtkTexturedSphereSource()

04 esferaMapper =

vtk.vtkPolyDataMapper()

05 esfera.SetPhiResolution(40)

06 esfera.SetThetaResolution(50)

07 esfera.SetRadius(radio)

08

esferaMapper.SetInput(esfera.G

etOutput())

09

10 planetActor = vtk.vtkActor()

11

planetActor.SetMapper(esferaMa

pper)

12

planetActor.GetProperty().SetO

pacity(1)

13

planetActor.GetProperty().SetL

ineWidth(1)

14 planetActor.SetPosition(cen-

ter)

15

16 jpgReader =

vtk.vtkJPEGReader()

17

jpgReader.SetFileName(name_tex

ture)

18 jpgReader.Update()

19 atext = vtk.vtkTexture()

20

atext.SetInput(jpgReader.GetOu

tput())

21 atext.InterpolateOn()

22 planetActor.setTexture(atext)

23

24 return planetActor

Listado 1: Métodocreate_planet

Page 56: Linux Magazine - Edición en Castellano, Nº 09

DESARROLLO • Infografía - VTK

W W W . L I N U X - M A G A Z I N E . E S

self.translate_Luna(self.

dt,xTierra,yTierra,'Luna')

14 self.render_window()

15

self.gui.update_parent()

Mediante time.sleep() se pausa la ejecu-ción en los segundos que se indiquen.La variable self.dt_mov guarda el tiem-po correspodiente a la traslación; yself.dt_move almacena el paso de tiem-po. El método self.gui.update_parent()

pertenece a la clase MyGUI, y sirve paraactualizar la GUI en cada paso delbucle:

def update_parent(self):

self.parent.update()

Ahora ya tenemos todo lo necesariopara el movimiento del sistema solar,sólo nos falta escribir el código corres-

pondiente a los botones PLAY y STOP.Al pulsar el botón STOP invocamos elmétodo self.renwin.stop(); mientrasque al pulsar PLAY se invoca el métodomover;

def mover(self,event=None):

self.renwin.ini_move()

self.renwin.move_sistsolar()

Probad el programa ahora y pulsadPLAY… Todos los planetas comienzan amoverse y al cabo de unos segundosdeberíais ver una situación similar a laFigura 8, donde los planetas ya no estánalineados.

Con todo lo que hemos visto, yapodeis crear el resto de los planetasañadiendo los correspondientes movi-mientos de rotación y traslación.También podéis dibujar las órbitas delos planetas y colocar luces rojas en elSol para dar sensación de fuego, segúnse ve en la Figura 9 (en el fichero sistso-

lar_Paso4.py tenéis detallado el códigocorrespondiente). Si queréis jugar conmuchos más tipos de texturas podéisencontrarlas y descargarlas de formagratuita, por ejemplo, en la página deCelestia [5]. �

Número 0956

[1] Fuentes y medios para el programade este artículo: http://www.

linux-magazine.es/Magazine/

Downloads/09

[2] Kitware. VTK: http://www.kitware.org

[3] Python: http://www.python.org

[4] Enthought Scientific python: http://

www.scipy.org

[5] Celestia (página con gran número detexturas de cuerpos celestes): http://

www.celestiamotherlode.net

RECURSOS

Figura 6: Movimiento de rotación. Figura 7: Movimiento de traslación.

Figura 5: Vista del Sol, Mercurio y Venus.

Figura 8: Movimiento del Sistema Solar.

Figura 9: Sistema Solar con sus órbitas y

luces.

Ana M. Ferreirro Ferreiro es mate-

mática, pero su verdadera pasión

es la informática. Así que parte de

su tiempo lo dedica al desarrollo

en Python de interfaces gráficas

multiplataforma, y al desarrollo de

software de visualización científi-

ca 3D.

José A. García Rodríguez también

es matemático y desde hace unos

años se dedica al desarrollo de

código paralelo y optimización de

códigos en C++.

LOS

AU

TO

RE

S

Page 57: Linux Magazine - Edición en Castellano, Nº 09

Enlazando Python con la realidad

REUTILIZACIÓN DE CODIGO

Python, Perl, Php, Ruby… todos adolecen del mismo problema, tarde o temprano tendremos que volver al

mundo real y trabajar con una librería C. POR JOSÉ MARÍA RUIZ

Ya en los años 70 la gente delmundo de la Ingeniería delSoftware comenzó a imaginar un

futuro donde sólo se avanzaría. Nohabría que volver a escribir programaspara problemas ya resueltos. El famoso:“No reinventes la rueda”. Comenzaron ahablar de objetos y componentes.

Desgraciadamente esta visión del futu-ro se parecía demasiado a esa otra en laque todos vamos en cohetes al trabajo ycomemos en una hamburguesería queorbita alrededor de la Tierra. La realidades más extraña ¿quién se imaginaba unordenador en cada casa y todos conecta-dos mundialmente?

A día de hoy el código más reutiliza-do es que viene en forma de librerías,ya sea de funciones o de objetos. Pero lamayor parte de estas librerías, y espe-cialmente en el mundo de Linux, hansido programadas en C o C++. Estoslenguajes, debido a múltiples factores,han sido los más populares para el des-arrollo de librerías y sistemas, y hoy porhoy siguen siendo insustituibles enmuchos ámbitos. De C se destacaba suportabilidad (es muy sencillo encontrar

o crear un compilador de C para unanueva arquitectura) mientras que deC++, su balance entre portabilidad ycapacidad para grandes diseños.

En este artículo vamos a ver cómopodemos hacer uso de una pequeñalibrería C desde Python a través de unejemplo gráfico.

Nuestra librería OpenGL en CLa librería que vamos a utilizar va a pro-veer una serie de funciones que nos per-miten manipular objetos 3D a través deOpenGL. ¿A que suena rimbombante? Enrealidad no es tan difícil. No entraremosen detalles respecto a OpenGL, peroaclararemos un poco qué es.

OpenGL es un estándar mundial crea-do por SGI (Silicon Graphics Interactive)para el desarrollo de aplicaciones 3Dinteractivas. Esto traducido a la informá-tica doméstica significa… ¡juegos!.Todos los juegos multiplataforma queutilicen 3D están programados utilizan-do OpenGL (DirectX, la otra alternativa,sólo funciona bajo plataformasMicrosoft, o sea en sistemas Intel conWindows).

OpenGL tiene un diseño simple, losobjetos se componen de vértices (untriángulo tiene 3 vértices) y estos vérti-ces definen áreas que pueden tener unaserie de propiedades como puede sercolor o brillo. Una vez definidos los obje-tos pasamos a crear una serie de funcio-nes que serán llamadas cuando se pro-duzcan eventos. OpenGL utiliza un bucleinfinito que, básicamente, se dedica arecoger un evento, por ejemplo, la pulsa-ción de una tecla por parte del usuario,para, a continuación, llamar a la funciónque se dedica a gestionarlo. Así de sim-ple.

Evidentemente hacer un videojuego3D es una tarea muy complicada, pero labase es esa, hacer que las imágenes enpantalla reaccionen a eventos que se dis-paran en cualquier momento y que lareacción sea en tiempo real, o sea, que elusuario no perciba demora en el tiempode reacción. Todos hemos actualizadonuestra tarjeta gráfica alguna vez paraque la sensación, a más “frames porsegundo” mejor, fuese más realista.

En el Listado 1 (descargable desde [5])podemos ver un programa OpenGL muy

Python • DESARROLLO

57Número 09W W W . L I N U X - M A G A Z I N E . E S 57

Page 58: Linux Magazine - Edición en Castellano, Nº 09

compli-cados que sólo

deben ser usados porexpertos, y la mayor parte

del personal de Los Álamos soncientíficos con poca preparación en pro-gramación. Así que tenemos potentísi-mas librerías C y Fortran desarrolladasen lenguajes que no son capaces de usarsus destinatarios.

¿Qué hicieron los ingenieros de LosÁlamos para simplificar el uso de estaspotentes herramientas de cálculo? Puesse dedicaban a crear librerías que permi-tiesen manejarlas desde lenguajes másexpresivos, como pueden ser Perl oPython. Este proceso, a la vez que labo-rioso, es altamente repetitivo, de maneraque decidieron no volver a tener quepasar por él. Desarrollaron SWIG que, deforma casi automática, genera todo elcódigo necesario para utilizar desde mul-titud de lenguajes de alto nivel (desdePython hasta OCaml pasando por Java oC#) librerías de C.

Lo de casi automático es esencial. Sólotenemos que generar un fichero de inter-faz (acabado en extensión .i) y SWIGgenerará un fichero <nombre>_wrap.c

que compilaremos junto al original paracrear la librería. De esta manera obten-dremos una librería dinámica (esosficheros .so que podemos ver a miles en/usr/lib), así como una librería en el len-guaje de destino. En nuestro caso eselenguaje será Python.

El programa OpenGL.En el Listado 1 vimos un programa deejemplo en OpenGL. Es básicamente uncubo, que gira y responde a eventos.Tiene una serie de propiedades que nopodemos alterar, como la velocidad degiro o el color. En el Listado 3 (descarga-ble desde [5])veremos la librería equiva-lente necesaria para nuestros propósitos.Examinémosla.

Para comenzar, al ser una librería nopuede tener función main, así que lahemos renombrado arranque(). Se hanincorporado nuevas funciones con elobjetivo de poder modificar algunascaracterísticas del objeto (color, veloci-dad, título de la ventana…).

OpenGL (ver [2] en recursos) se com-pone de las librerías GL, GLU y GLUT.Esta última es muy importante, pero des-graciadamente la librería GLUT estándartiene un defecto ( o problema, segúncomo se mire). La funciónglutMainLoop() es el bucle infinito degestión de eventos. Se entra en ella perojamás se sale. Cuando se dispara el even-to que provoca la salida del bucle, el pro-grama acaba. Cualquier cosa que ponga-mos detrás de la llamada aglutMainLoop() no se ejecutará jamás.

Eso no parece muy lógico ¿no? ¿y siquiero poder arrancar el gestor de even-tos, pararlo y volver a arrancar? Comono somos los únicos con este problema(casi todo el mundo piensa que es unproblema ;) unos valientes, en la mejortradición del software libre, han creadoFreeGLUT (ver [3] en Recursos para másinformación). Básicamente es igual aGLUT solo que, entre otras cosas, nospermite salir del bucle interno deglutMainLoop() pero sin que finalice elprograma.

¿Y por qué queremos que ocurra esto?Pues porque necesitamos una librería,queremos que la función arranque()

vuelva al programa principal (que seránuestro intérprete de Python) una vezque finalice su ejecución, en lugar definalizar todo el programa.

Este un un problema típico que nospodemos encontrar al crear librerías paraPython usando librerías C. A veces loque queremos usar son las funciones deun programa ya existente (por ejemplo,imagina poder acceder a las funcionesque tiene Mozilla o Firefox para RSS oanálisis de HTML), así que los pasosserán: elimina los puntos de salida delprograma (generalmente los exit()) y eli-mina el main.

Así ya tendremos nuestra librería, listapara ejecutar SWIG sobre ella.

El archivo de interfaz paraSWIGSWIG (ver [4] en Recuros) necesita unarchivo que le diga qué funciones y defi-niciones de datos exportar a Python. Este

simple, peroque será la base para

nuestra librería. Para compilarlo debere-mos ejecutar make listado1 en el mismodirectorio en que esté, copiando a esedirectorio el contenido del Listado 2(descargable desde [5])a un fichero lla-mado Makefile.

¿Y qué hace nuestro programa? Puesnuestro programa base genera un cubo3D con texturas y lo gira sin parar hastaque pulsamos la tecla ‘2’. Entonces lodetiene, comenzando a girar de nuevocuando pulsemos la tecla ‘1’. Con los tresbotones del ratón podemos cambiar elángulo en el que gira el cubo.

Si compilamos el programa tal cualobtendremos un ejecutable que podre-mos usar. La velocidad a la que gire elcubo depende de la potencia del equipode cada uno.

Ahora necesitamos algo para “pegar”código C con Python, y ese algo esSWIG.

SWIGSWIG es una aplicación desarrollada en1995 en el departamento de FísicaTeórica del Los Álamos NationalLaboratory (ver [1] en Recursos). Fue allídonde se desarrolló la primera bombaatómica y desde entonces ha sido uncentro puntero en investigación a nivelmundial. El objetivo era el de reducir lacomplejidad de muchas aplicacionescientíficas donde es obligado el uso delenguajes de bajo nivel, como C oFortran. Desgraciadamente con estos len-guajes es muy complicado, por ejemplo,desarrollar GUI que a día de hoy sonimprescindibles. También son lenguajes

DESARROLLO • Python

58 Número 09 W W W . L I N U X - M A G A Z I N E . E S

Page 59: Linux Magazine - Edición en Castellano, Nº 09

Python • DESARROLLO

59Número 09W W W . L I N U X - M A G A Z I N E . E S

para aislarcódigo especí-fico paraSWIG respec-to de las libre-rías origina-les.

Y bueno,casi hemosacabado, sólonos quedadeclarar lostipos de datos

y cabeceras necesarias. Podemos ver lasdefiniciones en el Listado 4 (descargableen [5]). Básicamente son las cabecerasde las funciones que queremos usardesde Python con la palabra extern

delante. Esta palabra le dice a SWIG queson funciones que existen en un ficheroexterno.

Las palabras mágicasYa tenemos casi lista la poción, ahorasólo tenemos que usar las palabras mági-cas del Listado 5 (descargable en [5]).Éste muestra un fichero Makefile que yausamos para compilar el Listado 1, ahoratenemos que ejecutar:

> make

Y se realizará la ejecución de las órde-nes:

swig -python listado3.i

gcc -c -fPIC listado3.c $(INCS)

gcc -c -fPIC listado3_wrap.cU

$(PYINCS) $(INCS)

gcc -shared listado3.cU

listado3_wrap.c -o _listado3.soU

$(INCS) $(PYINCS) $(LIBS)U

$(PYLIBS)

El primer comando genera el fichero lis-tado3_wrap.c, así como listado3.py. Hayuna opción, -python que podríamos cam-biar por -perl o -java. Esta opción contro-la el lenguaje que se utilizará para gene-rar la librería.

Pero claro, estos ficheros noson más que código,

hay que compilarlos. De eso se encarganlos tres siguientes comandos. El primerocompila nuestra librería, el segundo losficheros generados por SWIG y el tercerolo une todo para generar la librería diná-mica.

Esos $(INC) o PYLIBS son opciones decompilación guardadas en variables decontrol en el Makefile, varían de sistemaen sistema, pero las que aparecen en elListado 5 son las más genéricas.

Nueva libreríaPor increíble que parezca hemos acaba-do, ya tenemos nuestra librería. Si mira-mos en el directorio en el que hemosestado realizando todas las accionesveremos un fichero llamado _listado3.so.Es una librería dinámica que puede sercargada en cualquier momento. ¿A quéesperamos? Arranquemos nuestro intér-prete de Python:

> python

Python 2.4 (#2, Apr 3 2005,U

22:24:02)

[GCC 3.4.2 [FreeBSD] 20040728]U

on freebsd5

Type "help", "copyright",U

"credits" or "license" for moreU

information.

>>> import listado3

>>>

Con la orden import acabamos de cargarla librería y la tenemos disponible parasu uso. Comencemos con la acción mássimple, arranquemos el programa con lasopciones por defecto:

>>>listado3.arranque()

Cuando pulsemos INTRO aparecerá unaventana en la pantalla con un objeto quese mueve a gran velocidad. Es nuestrocubo, lo que ocurre es que se muevedemasiado rápido. Si pulsamos la tecla2, el cubo se detendrá, para ponerlo denuevo en movimiento debemos pulsar 1.

fichero se parece mucho a los ficheros decabeceras (o headers, mirar en/usr/include para ver unos cuantos) deC. El fichero comienza con la sentencia:

%module listado3

Que declara el nombre del módulo ydebe ser igual al nombre de nuestralibrería C. Este nombre será exportado acada lenguaje de manera que se corres-ponda con la estructura de organizaciónque en él exista. En el caso de Python elnombre del módulo se corresponderácon un paquete.

El resultado final de la ejecución deSWIG será un fichero llamado lista-

do3_wrap.c. Es un fichero en lenguaje C,que define una serie de funciones quenos permitirán acceder a la librería lista-

do3.c definidas en listado3.i.Algunas de las definiciones que pon-

dremos en listado3.i devuelven datos detipos definidos en OpenGL, por lo quetendremos que decirle a SWIG que en elfichero listado3_wrap.c debe incorporarla cabecera:

#include <GL/glut.h>

Esto se hace mediante la declaración:

%{

#include <GL/glut.h>

%}

Entre los símbolos %{ y %} podemosintroducir cualquier declaración extra oincluso código que no exista en el ficherolistado3.c. Digamos que es una manera

Figura 1: El cubo inicial tal y como

se ve en la ventana del programa.

Figura 2: Con las teclas podemos

modificar su posición y giro.

Page 60: Linux Magazine - Edición en Castellano, Nº 09

DESARROLLO • Python

W W W . L I N U X - M A G A Z I N E . E S

Si pulsamos, con el cubogirando, con los botonesdel ratón sobre la venta-na, veremos que cadabotón cambia la direc-ción de giro del cubo enun sentido distinto.Cuando nos aburramos delcubo, o estemos mareadossi nuestro ordenador es muyrápido, pulsaremos q y la ven-tana desaparecerá. Volveremos aver el prompt >>> de Python. Esto yaes todo un logro, ¡hemos ejecutado unafunción C que interactúa con OpenGLdesde Python!. Pero aún así apenashemos hecho nada, ¡también lo podría-mos haber hecho con un script BASH!

Vamos a interactuar más con la libre-ría. Si miramos el fichero de interfaz lis-tado3.i que está en el Listado 4 veremoslas funciones que están disponibles parasu uso desde Python. Cambiemos lavelocidad de giro de manera que poda-mos ver el cubo.

>>> listado3.setTiempoEsperaU

(10000000)

>>> listado3.arranque()

Para no complicar el código (deberíahaber usado nanosleep de la librería Cestándar) se ha introducido un bucle queitera un número determinado de vecesen la función display() de listado3.c.Esta función es invocada por OpenGLpara dibujar en pantalla los objetos, si seintroduce un retraso en ella tardará másen realizar su trabajo. Eso se traduce enque podremos ver mejor el cubo girandosi hacemos que el retraso sea el adecua-do.

En nuestro sistema, un valor de10.000.000 de iteraciones hace que elcubo se vea girar de manera suave.Evidentemente al ser un bucle, dependede la velocidad del sistema. No es lamanera más elegante de introducir unretraso, pero sí la más simple y corta(nuestras páginas son limitadas).

La variable espera en listado3.c es detipo INT. Eso significa que su valor máxi-mo será un poco más de 4.000.000.000¿qué ocurre si introduzco un retraso de5.000.000.000?

>>> listado3.setTiempoEsperaU

(5000000000)

Traceback (most recent callU

last):

File

"<stdin>", line

1, in ?

OverflowError: argument

numberU

1: long int too large toU

convert to int

>>>

¡Python se queja!, diciendo que la asig-nación no se puede realizar. Un fallo deeste tipo en un programa C nos hubierallevado a un fallo irreversible que aborta-ría el programa. Pero en Python no, sim-plemente llegamos de nuevo al intérpre-te. Esta es una de las razones por las quees interesante utilizar Python sobre libre-rías C, eliminamos muchos errores fata-les porque Python verifica por nosotroslos tipos de datos y es capaz de recupe-rarse de los errores.

Juguemos con los colores del cubo. Elcubo tiene 6 caras y lo normal sería darleun color a cada cara, pero en OpenGL sele dan colores a los vértices. Como elcubo tiene 8 vértices tenemos que asig-nar 8 colores. ¿Qué color tendrá el cuboen el centro de una de sus caras si cadavértice tiene un color? Pues siguiendo lajerga de OpenGL tendrá un color “inter-polado”, una mezcla de los 4 colores delos vértices.

Una de nuestras funciones nos permitedefinir el color de los vértices(setColor()), así que vamos a hacer quelas caras sean de color gris. A un vérticele damos color negro y al siguiente blan-co. En el Listado 5 podemos ver un pro-grama que asigna colores blanco y negroalternativamente a los vértices. El resul-tado no es del todo gris, ¿por qué?

Porque depende de la manera en quefueron definidos los vértices. Los vérti-

ces 0 y 1

no tienenporqué estar en

el sentido correc-to. Se puede jugar

con el código delListado 5 para intentar

conseguir otros colores.

Conclusión

No resulta tan complicado acceder amiles de librerías en C desde Python, enla propia documentación de SWIG apare-ce como ejemplo generar una libreríaPython de manera casi automática parala famosa librería GD de dibujo 2D.Seguro que la próxima vez que veamosuna nueva librería para Python nos pre-guntaremos si los autores han usadoSWIG, puede que incluso lo pudiéramoshaber hecho nosotros ;) �

José María Ruiz actualmente está

realizando el Proyecto Fin de

Carrera de Ingeniería Técnica en

Informática de Sistemas mientras

estudia Física. Lleva 8 años usan-

do y desarrollando software libre

y, desde hace dos, se está especia-

lizando en FreeBSD. Pedro

Orantes está cursando 3º de

Ingeniería Técnica en Informática

de Sistemas y en sus ratos libres

toca en un grupo de música.

EL

AU

TO

R

[1] Los Álamos National Laboratory:http://www.lanl.gov

[2] OpenGL: http://www.opengl.org

[3] Proyecto FreeGLUT: http://freeglut.

sourceforge.net

[4] Proyecto SWIG: http://www.swig.org

[5] Descarga de los listados de este artí-culo: http://www.linux-magazine.es/

Magazine/Downloads/09

RECURSOS

Número 0960

Page 61: Linux Magazine - Edición en Castellano, Nº 09

Hace poco vimos el ApacheTop enesta columna. ApacheTop es unaherramienta que le dice lo que

su servidor web está haciendo en estemomento, destacando los posibles cue-llos de botella. En la columna de estemes veremos otro miembro de la familiatop: Mtop, el monitor en tiempo realpara MySQL [1]. El tamaño del paquetecomprimido de Mtop es de al menosunos 48 Kbytes. Necesita unos cuantosmódulos de Perl: Curses, DBI,DBD::mysql y Net::Domain. Pero proba-blemente la mayoría estarán instalados ysi no, CPAN se encargará de ello. Trassatisfacer las dependencias, introduzcaperl Makefile.PL, make y make install en/usr/local/bin para completar la compila-ción de Mtop.

El siguiente paso es permitirle a Mtopacceder al proceso de información deMySQL. A diferencia de Apachetop,Mtop no sólo analiza los ficheros deregistros del servidor, sino que ademásnecesita acceso directo a ellos. Decidíconfigurar un usuario con privilegios

extremadamente restringidos en MySQLy no le asigné contraseña. Los siguientescomandos SQL resolverán el problemapara la versión 4.0.2 o superior deMySQL:

grant super, reload, U

process on *.*

to mysqltop;

grant super, reload, U

process on *.*

to mysqltop@localhost;

flush privileges;

El único punto crítico son los privilegiosde process. Puede dejar el privilegiosuper si no necesita terminar las consul-tas desde Mtop.

¡¡Cuidadín!!Desde las versiones 3.22.11 hasta la 4.0.1de MySQL se utiliza el privilegio process

para asignar los derechos de finalizaciónde consultas. Se necesitan las tres líneassiguientes para estas versiones:

grant reload, U

process on *.* U

to mysqltop;

grant reload, process on *.*

to mysqltop@localhost;

flush privileges;

Quienes prefieran restricciones másseveras pueden limitar los privilegios de

Mtop eliminando el privilegio reload. Sise elimina este privilegio, Mtop no serácapaz de manejar el comando flush.

En la Cima del MundoAhora es el momento de lanzar Mtop porprimera vez. Si la base de datos se estáejecutando en otra máquina, necesitaráespecificar la máquina destino estable-ciendo el parámetro -h host. Si la base dedatos no está procesando muchas con-sultas, el interfaz de usuario de Mtopdebería parecer bastante bonito y lim-pio.. Tres de las abreviaturas más impor-tantes utilizadas por Mtop son:• RRN: El número de peticiones

de consultas de acceso a lasiguiente línea de la tabla. Unvalor grande indica que la tablano está indexada o que las con-sultas no están utilizando susíndices.

• TLW: Indica cuantas veces laspeticiones para acceso exclu-sivo en la tabla han fallado. Elmotivo de esto podría ser unatabla enormemente grande ouna consulta mal formulada.

• QPS: El número de comandosSQL desde que el servidor selanzó o desde que tuvo lugar laúltima ejecución del comandoflush.

Al igual que los otros miembros de lafamilia Top, Mtop también soporta atajosde teclado. Consulte la página de ayudade Mtop para averiguar qué atajos deteclado están disponibles. �

61

La Columna de Charly • ADMINISTRACIÓN

61Número 09W W W . L I N U X - M A G A Z I N E . E S

[1] Mtop: http://mtop.sourceforge.net

RECURSOS

Socks v5….….……………………….. 62

El protocolo universal para proxy

El Taller del Administrador………… 67

Creación y manejo de cuentas de usua-rios

SYSADMIN

Estaría bien si cada base de datos MySQL estuviera en perfecto estado

de salud las 24 horas del día, los 7 días de la semana… pero desafortu-

nadamente de vez en cuando los problemas aparecen. Los ficheros de

registros no son de mucha ayuda cuando se está investigando por qué

una base de datos está siendo inundada por muchas peticiones. Mtop

al rescate. POR CHARLY KÜHNAST

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

CHEQUEO DE RUTINA

Page 62: Linux Magazine - Edición en Castellano, Nº 09

62

zando la tecnología LD_PRELOAD. Parahacer esto, el wrapper implementa unalibrería de socket personalizada.

El nombre Socks proviene de Socket,el título original del trabajo fue SOCK-et-S. Hay dos versiones principales: Socksv4 y v5. Ambos protocolos se insertan enel modelo OSI entre las capas deTransporte y Aplicación. Laversión 4 está limitada almanejo de solicitudesde conexión, reglasdel proxy yreenvío dedatos. Nopropor-cionaningúntipo de

Figura 1b) traza una ruta entre el filtrode paquetes de estado y el ALG. Socksestá implementado, por ejemplo, en elpaquete Dante [1]. La tecnología delproxy genérico Socks deja al cortafuegoel control de las aplicaciones, redes sepa-radas en la Capa de Transporte y deja alos clientes un puerto de peticiones fijo(típicamente 1080). Los clientes realizanpeticiones al Socks, especificando el tipode los servidores y servicios (comoHTTP, SMTP o FTP). El proxy Socks(también conocido como servidor Socks)autentifica los clientes y autoriza el acce-so a los clientes, configura la conexión alservidor y de forma transparente reenvíacualquier dato enviado o recibido.

IntermediariosNormalmente, las aplicaciones de losclientes necesitan tener integrados elsoporte Socks para permitir el uso delproxy, de forma que Socks utiliza laforma de interactuar del protocolo.

Sin embargo, un wrapperpuede añadir soporte

Socks a bina-rios utili-

Muchos administradores de corta-fuegos permiten acceso directo ala Web desde la red interna pero

son más restrictivos con otros servicioscomo el FTP o el SMTP. Comentan que lasreglas de los filtros que permiten un míni-mo de servicios y puertos son más fácilesde manejar y seguir. Los Gateways delnivel de Aplicación (ALGs) proporcionan

control y se implementan como pro-xies (Figura 1). Sin embargo,

la aplicación del corta-fuego necesita un

proxy por cadaservicio.

El protoco-lo Socks

[2] (RFC1928,

El protocolo genérico Socks para proxy versión 5 a examen

CALCETINES PARA EL PROXY

ADMINISTRACIÓN • Socks v5

62 Número 09 W W W . L I N U X - M A G A Z I N E . E S

Socks es un protocolo universal de proxy para TCP y UDP que permite a los hosts de una red interna pasar de

forma segura por el cortafuego y autentificar a los usuarios. Este artículo describe la última versión del proto-

colo para proxy Socks y muestra cómo se implementa. POR THOMAS KUHN Y ACHIM LEITNER

Page 63: Linux Magazine - Edición en Castellano, Nº 09

autentificación y está restringido paraTCP. Socks v5 añade mecanismos deautenticación robustos y soporte exten-dido a UDP.

Un RodeoEn un escenario típico de Socks, el clien-te querrá acceder al servicio HTTP pro-porcionado por un servidor en una redexterna. El procedimiento se muestra enla Figura 2, el formato de los datos en laFigura 3 y el contenido de los campos enla Tabla 1. El cliente comienza abriendola conexión TCP al proxy Socks (1); pordefecto la conexión utiliza el puerto1080. El cliente envía un paquete de

Negociación sugiriendo unos cuantosmétodos de autenticación (número enNMETHODS y métodos en METHODS).

Si el proxy acepta la petición (paso 2en la Figura 2), utiliza un paquete deNegociación de Servidor para decirle alcliente el método de autenticación(METHODS con exactamenteuna entrada). A continuación,el proxy autentifica al cliente(paso 3). El procedimientoexacto en este paso depen-de del método seleccio-nado.

En este punto, el clienteenvía una petición al proxy indi-

cando qué servicio necesita (la direcciónde destino DST.ADDR y el puertoDST.PORT). El proxy Socks evalúa lapetición, basada en la ID del cliente y ladirección de destino, tomando una listade control de acceso en consideración alestilo típico del cortafuegos. Si al clienteno se le permite el acceso por el tipo depetición, el proxy Socks rechaza la cone-xión del cliente. En cualquier otro caso,responde con uno o múltiples paquetesde respuestas del servidor.

DireccionesLas peticiones y respuestas de Sockspueden contener distintos tipos de direc-ciones. El protocolo soporta direccionesIPv4 e IPv6, junto con nombres de domi-nios. El último elimina la necesidad delcliente para realizar consultas al DNS yla red interna no necesita resolver nom-bres externos DNS.

Dependiendo del tipo de respuesta delcliente, es decir, dependiendo del valorde CMD (Figura 2 y Tabla 1), los detallesde la dirección en la respuesta del servi-dor Socks tienen una diferencia significa-tiva. Una respuesta a una petición CON-

NECT contiene el BND.PORT yBND.ADDR, esto es la dirección con laque el proxy se ha conectado al servi-dor de destino.

La dirección BND.ADDR

normalmente no

Socks v5 • ADMINISTRACIÓN

Figura 1b: A diferencia de un ALG, Socks asume el papel de un proxy genérico, aceptando cone-

xiones desde cualquier protocolo de aplicación en el puerto 1080, autenticando clientes y

autorizando transferencias.

6363Número 09W W W . L I N U X - M A G A Z I N E . E S

01 logoutput: syslog

02 #logoutput: stdout

03

04 internal: eth0 port = 1080

05 external: eth1

06 #internal: 10.0.0.11 port =

1080

07 #external: 192.168.23.1

08

09 method: username

10 #method: none

11 #method: rfc931

12 #method: pam

13

14 user.privileged: proxy

15 user.notprivileged: nobody

16

17 client pass {

18 from: 10.0.0.3/0 port 1-65535

to: 0.0.0.0/0

19 }

20

21 client block {

22 from: 0.0.0.0/0 to: 0.0.0.0/0

23 log: connect error

24 }

25

26 block {

27 f r o m : 0 . 0 . 0 . 0 / 0 t o :

10.0.0.11/0

28 log: connect error

29 }

30

31 pass {

32 f r o m : 1 0 . 0 . 0 . 3 / 0 t o :

10.0.0.10/0

33 protocol: tcp udp

34 }

35 block {

36 from: 0.0.0.0/0 to: 0.0.0.0/0

37 log: connect error

38 }

Listado 1: Servidor Socks

Figura 1a: Si el cortafuegos está implementado como un gateway a nivel de aplicación, separa

la red interna y externa en el nivel de aplicación. Sin embargo, necesita un proxy para cada

protocolo.

Page 64: Linux Magazine - Edición en Castellano, Nº 09

de la máquina utilizada para abrir laconexión. Finalmente, el proxy reenvíalos datos desde el servidor externo alcliente interno.

Si quiere que el Socksactúe como un proxyUDP, el cliente necesitautilizar primero TCPpara contactar con elproxy y autenticarse(Figura 4). El CMD lonegocia, en este caso esel tercer valor de laTabla 1: UDP Associate.Como el cliente actual-mente utilizará UDPpara transmitir losdatos, necesitará decirleal proxy que llegaránestos paquetes. Parahacerlo, el cliente añadea su propia dirección ypuerto a los camposDST.ADDR y DST.PORT.

El proxy abre unpuerto interno UDP,permitiendo al clienteenviar paquetes haciafuera. El cliente lee ladirección y el puerto delproxy desde la respues-ta del servidor a la res-puesta UDP asociada:BND.PORT yBND.ADDR. Y aquí esdonde el cliente tieneque enviar cualquierpaquete UDP destinadoa la red externa. Elcliente coge su propiopaquete UDP en unasolicitud UDP (Figura3). La UDP se quedaabierta tanto tiempo

como el cliente necesita para la autenti-cación de una conexión TCP.

AutenticandoEl método de autenticación tambiénpuede proporcionar confianza e integri-dad entre el cliente y el proxy. La auten-

es la misma que la dirección del servidorSocks, en la cual el cliente envía la res-puesta original. Este sistema es conocidocomo servidor sock multihome, es típicode un cortafuegos Socks que conecta dosredes. Tras un exitoso comando Connect,el cliente y el servidor pueden comuni-carse de forma transparente mediante elproxy; el Socks simplemente reenvíacualquier dato.

El cliente envía una petición REQUESTpara indicar que espera una conexiónentrante desde el servidor. Este escenariopodría parecer que es al revés, pero estoes normal en el caso del protocolo FTPen modo activo. Con FTP y siguiendo lostradicionales cliente-servidor, el clienteprimero establecerá una conexión al ser-vidor FTP; esto se conoce como controlde conexión. Si un fichero necesita sertransferido, el servidor establece unaconexión de datos tras el cliente. Antesde esto, el cliente necesita decirle al ser-vidor qué dirección y qué puerto del ser-vidor puede utilizar. Esta información seenvía a través del canal de control.

Un Mundo al RevésSelectivamente el Socks puede permitireste tipo de conexión en la red interna. Elcliente abre el canal de control al servidorenviando una respuesta normal Connect.El cliente luego utiliza una respuesta Bindsin una segunda conexión para preguntaral proxy Socks para abrir un puerto a laconexión de datos entrante.

El proxy envía dos contestaciones enrespuesta. El primero contiene el puertoy la dirección que el servidor Socks escu-chará por las conexiones entrantes. Elproxy no envía la segunda respuestahasta que el servidor abre la conexión.Cuando esto ocurre, la respuesta delproxy contiene la dirección y el puerto

ADMINISTRACIÓN • Socks v5

64 Número 09 W W W . L I N U X - M A G A Z I N E . E S

Etiqueta Contenido/ DescripciónATYP Tipo de Dirección:

0x01: Dirección IPv40x02: Nombre de dominio0x03: Dirección IPv6

BND.ADDR Socks Proxy source address para transmi-sión de datos al servidor

BND.PORT Socks Proxy source port para transmisión dedatos al servidor

CMD Tipos de transmisión:0x01 CONNECT0x02 BIND0x03 UDP Associativo

DST.ADDR Dirección destino solicitada (en el servidor)DST.PORT Puerto destino solicitado (en el servidor)FRAG Número de fragmento actual (para paquetes

UDP)METHODS Campo de selección para el método de

autenticación:0x00: Sin autentificación0x01: GSSAPI0x02: Nombre de usuario y contraseña0x03 a 0x7E: Definido por IANA0x80 a 0xFE: Reservado para métodos privados (sólo utilizado localmente)0xFF: El proxy ha rechazado el método ofrecido por el cliente

NMETHODS Número de entradas en el campo METHODSREP Campo de respuesta:

0x00: Perfecto0x01: Generic Socks proxy error0x02: Conexión deshabilitado por ruleset0x03: Red no accesible0x04: Host no accesible0x05: Petición de conexión rechazada0x07: No soporta comandos Socks0x08: No soporta el tipo de dirección0x09 a 0xFF: No definido

RSV ReservadoVER Versión del protocolo (0x05)

Tabla 1: Etiquetas de los Paquetes

Figura 2: Cuando establecemos una conexión Socks v5, el cliente comienza enviando un

paquete de negociación al proxy Socks (1). El cliente se autentifica (3); el proxy establece la

conexión con el servidor (6) y reenvía los datos (8).

Page 65: Linux Magazine - Edición en Castellano, Nº 09

ticación podría implicar el encapsuladode los datos, por ejemplo, utilizando unprotocolo seguro como SSL o TLS. Trascompletar el proceso de negociación delcliente/servidor, el cliente se autenticausando SSL/TSL. Cualquier otro datoenviado durante la conexión tambiénpuede ser protegido por SSL/TSL y estaforma de comunicación segura asegurala confiabilidad e integridad. Los usua-rios pueden utilizar dispositivos móviles,

wireless seguros mediante el proxySocks.

DanteLa implementación del cliente y el servi-dor de Socks con licencia BSD Dantepara Unix[1] soporta Socks v4 y v5 y losúltimos MSproxy. La versión 1.1.15 se halanzado a finales de Enero de 2005.

Dante lo desarrolló una consultoríanoruega llamada Inferno Nettverk A/S,

que también ha comercializado módulosde control de banda ancha y monitoreode puertos y reenvíos.

Se comenta que la versión gratuita essuficiente para la mayoría de las tareas.Además de proporcionar los serviciosSocks y MSproxy, también puede actuarcomo proxy HTTP, autenticar usuariosbasándose en sus nombres de usuarios ycontraseñas o a través de PAM(Pluggable Authentication Module). Elsoporte para nombre de interfaces en losficheros de configuración permite el usode DHCP.

Configuración del ProxyLa instalación normal, utilizando configu-

re && make && make install, coloca elfichero de configuración del servidor en/etc/sockd.conf (Listado 1). En la línea 1,una instrucción logoutput le indica aDante dónde colocar los ficheros de log(Syslog o Stdout). En las líneas 4 y 5 seespecifican el nombre de las interfaces dered. Esto es muy útil para equipos confi-gurados con DHCP. Las líneas 6 y 7 mues-tran que las direcciones IP son aceptadas.

Socks v5 • ADMINISTRACIÓN

Figura 3: La versión 5 de Socks utiliza cinco tipos de paquetes: Client Negotiation, Server

Negotiation, Client Request, Server Reply y UDP Request. El campo especifica el nombre y el

tamaño. La Tabla 1 describe el contenido.

Page 66: Linux Magazine - Edición en Castellano, Nº 09

otro acceso. Estas reglas son aplicadas anivel TCP/IP y no tienen nada que vercon el protocolo Socks.

La segunda clase de reglas de filtroscomprueba el contenido de las peticio-nes de los clientes. Estas reglas especifi-can las clases de peticiones que el proxyatenderá. La regla block en las líneas dela 26 a la 29 del Listado 1 rechaza cual-quier petición de los ordenadores quequieran conectarse a 10.0.0.11. El tráficoTCP y UDP de la máquina 10.0.0.3 conpetición para 10.0.0.10 es admitida (líne-as 1 a 34). El proxy ignorará cualquierotra solicitud.

Primeros TestsLlamando a /sbin/sockd-d se lanza alproxy en modo de depuración. Estemodo le dice al proxy que registre cual-quier cosa importante en logoutput.Ethereal es perfecto para chequear losdetalles de la comunicación. Utilizamosel navegador Mozilla como nuestrocliente de prueba. Establecemos el servi-dor Socks a 10.0.0.11 y el puerto 1080 enel Manual de configuración del proxy ennuestro caso.

Si el proxy Socks rechaza una cone-xión de una cuenta con privilegios deacceso inapropiados, el usuario podríadarse cuenta de los síntomas sin llegar asaber por qué ha fallado la conexión. Porejemplo, si el navegador Mozilla muestraun fallo de conexión, simplemente mos-trará que The document contains no data

en el caso de un error en laparte 2 de las reglas de fil-

trado, pero no hay quemencionar que la causasea el proxy. Para

investigar las posiblescausas de un problema de

conexión de este tipo, hay

que chequear los ficheros de registros delproxy, que estarán en /var/log/messages

si utiliza Syslog.

Socks por todas partesAl igual que el servidor Socks, el paqueteDante tiene un script wrapper denomina-do socksify. El script socksify proporcio-na al usuario la opción de añadir capaci-dades de Socks a la mayoría de los pro-gramas cliente de la red. Con socksify,puede añadir la capacidad Socks a proto-colos como SMTP, FTP, NTP, DNS o IRQ.Por ejemplo:

./socksify -c ftp 10.0.0.10

Junto con un fichero de configuraciónadecuado /etc/socks.conf, el comandoanterior le dice a socksify que llame alprograma ftp mediante el proxy Sockssin necesidad de recompilar el cliente.

route {

from: 0.0.0.0/0 to: U

0.0.0.0/0 U

via: 10.0.0.11 port = 1080

proxyprotocol: socks_v5

}

La configuración anterior le indica asocksify que utilice Socks v5 como unprotocolo proxy y que establezca unaconexión de red segura mediante el puer-to 1080 en el ordenador 10.0.0.11.

Uno para TodosLa tecnología Socks le proporciona a losadministradores de la red la capacidad dedesplegar un método simple y transparentepara la gestión de seguridad. Socks tam-bién añade autenticación y encriptación aaplicaciones de la red. A diferencia demuchos otros protocolos, el protocoloSocks no distingue entre conexión y auten-ticación de usuario y por tanto, Socks pro-porciona un cortafuegos con control com-pleto sobre todo el tráfico de datos. �

Hay que tener en cuenta que la interfazinterna necesita un número de puerto.

El método de autenticación soportadopor Dante incluye el nombre del usuario /contraseña (línea 9), el método Identespecificado en RFC 931 (línea 11) y PAM.El servidor Socks necesita distintos usua-rios privilegiados para reflejar el métodode autenticación. Si necesita acceder alfichero de contraseñas, optará por unacuenta de usuario con los privilegios nece-sarios (definido como proxy en la línea14), aunque en cualquier otra circunstan-cia es mejor ser nobody (línea 15).Sugerimos utilizar una cuenta de usuariodedicada para el servidor Socks v5. Losadministradores pueden ejecutar el servi-dor en un entorno aislado para alejarlo delos sistemas de ficheros y también dar alservidor su propio fichero de claves.

Buen FiltradoLas reglas de filtrado en los ficheros deconfiguración le permiten especificarqué clientes pueden acceder al proxySocks y a qué direcciones se puedeconectar el proxy. Dante analiza lasreglas de los filtros secuencialmente.Primero evalúa cualquier regla con elprefijo client para establecer qué ordena-dores tienen permisos para acceder alservidor Socks (desde las líneas 17 al24). Las reglas pass permiten el acceso, ylas reglas block lo deniegan. Desde laslíneas 17 a la 19 permiten al ordenadorcon la dirección 10.0.0.3 tener acceso sin

restricciones, y las líneas 21 a 24 denie-gan cualquier

ADMINISTRACIÓN • Socks v5

66 Número 09 W W W . L I N U X - M A G A Z I N E . E S

[1] Dante: http://www.inet.no/dante/

[2] RFC 1928, “SOCKS Protocol Version5”: http://www.ietf.org/rfc/rfc1928.txt

[3] RFC 1929, “Username/ PasswordAuthentication for SOCKS V5”: http://

www.ietf.org/rfc/rfc1929.txt

[4] RFC 1961, “GSS-API AuthenticationMethod for SOCKS Version 5”: http://

www.ietf.org/rfc/rfc1961.txt

RECURSOS

Figura 4: En un escenario UDP, el cliente primero utiliza TCP para conectarse con el proxy

Socks. El Client Request (4) contiene un comando UDP Associate, en el cual el cliente le dice

al proxy desde donde será enviado el paquete UDP.

Page 67: Linux Magazine - Edición en Castellano, Nº 09

Con cualquiera de las modernasdistribuciones de Linux, sólonecesitamos unos pocos clics

para crear una nueva cuenta de usuario.La Figura 1 muestra un ejemplo en Suse.Las interfaces gráficas de este tipo seapoyan en programas en línea de coman-

dos como adduser o useradd para el tra-bajo duro.

Es extremadamente importante paralos administradores saber exactamentequé se está haciendo al crear una cuentade usuario. Las características automati-zadas pueden ajustarse a medida para

adecuarse a los requerimientos de nues-tro sistema. Cuando creamos una cuen-ta, ciertas bases de datos necesitan losdetalles del nuevo usuario. Estos usual-mente necesitan un directorio de usuarioy permisos de escritura a juego. Losadministradores abandonan a sus usua-

Cuentas de usuario • ADMINISTRACIÓN

Administrar cuentas de usuario en Linux

LLEVAR LA CUENTADE LA MANADALLEVAR LA CUENTADE LA MANADA

Los pasos para configurar cuentas nuevas bajo Linux están automatizados y usan frecuentemente her-

ramientas con interfaz gráfica. Por debajo, una serie de mecanismos suministran al usuario el entorno que

cumpla con sus necesidades. En el artículo de este mes veremos las técnicas para configurar las

cuentas.POR MARC ANDRÉ SELIG

6767Número 09W W W . L I N U X - M A G A Z I N E . E S

Page 68: Linux Magazine - Edición en Castellano, Nº 09

fijados a 0700. Y eso implicaba que cual-quiera podía leer las contraseñas encrip-tadas.

Los procesadores actuales no tardandemasiado en romper contraseñas débi-les [1] mediante fuerza bruta, por lo quecualquier usuario con acceso al sistematiene la oportunidad de realizar unaescalada de privilegios.

Para mejorar la seguridad, muchos delos derivados de Unix guardan las con-traseñas en el archivo /etc/shadow. Estearchivo es propiedad del administrador ydel grupo shadow, y los privilegios delectura se suelen restringir al administra-dor y posibles miembros del grupo sha-

dow. Esto evita que otros usuarios acce-dan a las contraseñas. Un registro típicode /etc/passwd tiene el siguiente aspecto:

pepe:x:1000:1000:Jose Garcia U

Selig,,,:/home/pepe:/bin/bash

Algunos sistemas Unix no usan el archi-vo de contraseñas directamente, sinoque generan una base de datos binariaa partir de ese archivo. A destacar lafamilia BSD, notable en este aspecto.Para evitar conflictos y condiciones decarrera, existe un vipw que permite aladministrador editar el archivo decontraseñas. Esta herramienta ejecutael editor vi con /etc/passwd, blo-

queando el fichero al mismo tiempo paraevitar el acceso de otros usuarios deadministración, y renueva las bases dedatos binarias del usuario después determinar las modificaciones.

GruposLos grupos de usuarios son una caracte-rística central de la administración deprivilegios en cualquier sistema Unix.Los administradores pueden crear gru-pos de manera similar a crear usuarios,usando las herramientas addgroup ogroupadd, por ejemplo. Los grupos seguardan en un fichero llamado/etc/group.

Cada fichero creado en una máquinaUnix se asigna automáticamente a unusuario y a un grupo. Los administrado-res pueden asignar permisos de maneraseparada para el usuario y el grupo decada archivo. La posibilidad de asignarmúltiples usuarios a un grupo facilita aestos usuarios el acceso a archivos odirectorios específicos.

Algunos ejemplos típicos de gruposson modem o dialout para el acceso alpuerto del modem, audio para la tarjetade sonido y cdrom para asignar permisospara la unidad de CD-ROM. Un sistemacon bases de datos podría asignar a losusuarios autorizados un grupo llamadodb, por ejemplo.

Los usuarios pueden pertenecer atodos los grupos que sea necesario, perocada usuario tendrá un grupo primarioque especifica la propiedad de grupo decualquier archivo que el usuario cree. El

grupo prima-

rios a la hora de las configuraciones deprogramas, muchas de ellas están inclu-so pre-fijadas. Por supuesto, es imposi-ble tener en cuenta absolutamente todaslas configuraciones al crear nuevos usua-rios, especialmente si el usuario no acce-de al sistema hasta pasado un ciertotiempo.

Crear una Cuenta deUsuarioAl crear una nueva cuenta de usuario, elprimer paso es guardar la información deese usuario en la base de datos centrali-zada. Suponiendo que no tenemos unsistema distribuido como NIS, NIS+,NetInfo o LDAP, sino que simplementeadministramos los usuarios desde unúnico equipo, el fichero se llamará/etc/passwd. Este es un fichero de textocon una entrada para cada cuenta, inclu-yendo el nombre de login y el ID delusuario, el ID del grupo primario, eldirectorio de usuario y el shell por defec-to. Podemos añadir incluso detallescomo el nombre y apellidos del usuario oel número de teléfono.

Los sistemas Unix guardaban una con-traseña encriptada que servía paraautenticar al usuario de /etc/passwd. Elproblema con este método es que/etc/passwd necesitaba ser leído global-mente, es decir, sus permisos estaban

ADMINISTRACIÓN • Cuentas de usuario

68 Número 09 W W W . L I N U X - M A G A Z I N E . E S

Figura 1: El menú principal de SSPE es muy claro. La interfaz basada en texto plano permite la

administración remota de la herramienta.

Page 69: Linux Magazine - Edición en Castellano, Nº 09

rio se lista en /etc/passwd y cualquierotra pertenencia se almacena en/etc/group. El comando id muestra laspertenencias a grupos de un usuario:

pepe@ishi:~$ id

uid=500(pepe) gid=100(users) U

groups=100(users),14(uucp),

16(dialout), U

17(audio),33(video)

pepe@ishi:~$

Las distribuciones modernas de Linuxtienen dos métodos diferentes respecto alas asignaciones al grupo primario.Algunas establecen un grupo de usuariosglobal users para todas las personasusuarias del sistema. Estos pueden luegoejecutar chmod para especificar si cual-quier fichero que creen debe tener acce-so de lectura para los demás miembrosdel grupo (poniendo los permisos a0640: lectura y escritura para el propieta-rio, lectura para el grupo y sin permisospara el resto). En caso contrario se fija-

rán como 0600: sin permisos ni para elgrupo ni para el resto).

Otras distribuciones asignan cadausuario a un grupo de su propiedad. Estomejora ligeramente la protección dedatos y permite a los usuarios fijarpequeños equipos añadiendo cada usua-rio a sus grupos individuales. Habiendodicho esto, tiene más sentido configurargrupos específicos orientados a tareasque simplemente dejarlo a ver qué pasa.

Hay un buen número de grupos deadministración para el control de accesoa programas o archivos específicos. Porejemplo, el grupo wheel agrupa tradicio-nalmente a los usuarios autorizados aejecutar el comando su o equivalentes.Las distribuciones de hoy en día no sue-len tener un grupo wheel para simplificarlas cosas, sino que simplemente cual-quier usuario está autorizado a ejecutarsu. Los grupos como tty, disk y lp refie-ren a componentes del sistema (acceso aterminales, discos duros e impresoras),mientras que los bin o sys permiten a losadministradores especificar qué cuentaspueden ejecutar programas. Estos gruposno se asignan nunca a usuarios huma-nos.

El grupo especial nobody (o nogroup)se asigna a usuarios sin privilegios. Sinembargo, hay un cierto peligro de quemuten al grupo de todo el mundo ya quemuchos paquetes de software suelencrear archivos con pertenencia a estegrupo. Tiene más sentido configurar ungrupo especial nobody para cada paquetede software.

Directorios de UsuarioCuando un administrador crea un nuevousuario añadiendo simplemente el direc-

torio de usuario /home/user a/etc/passwd no está haciendo un granavance. Por supuesto, el directorio ha decrearse. Además del paso obvio demkdir, el administrador tiene que acor-darse de configurar los permisos deusuario y grupos adecuados, ejecutandochown (y posiblemente chgrp).

Dependiendo de nuestra distribución ypreferencias, podemos fijar los permisosde los directorios de usuario a 0755, 0711o 0700. En el primer caso se permite atodo el mundo el acceso de lectura aldirectorio. La segunda variante permiteel acceso a ficheros y directorios situadosbajo el directorio de usuario, suponiendoque tienen los permisos configurados ysus nombres son conocidos, para evitarlistados de directorios. La tercera varian-te evita el acceso de otros usuarios.Como el directorio de usuario perteneceal nuevo usuario, éste puede modificar laconfiguración por defecto más tarde.

Cuentas de usuario • ADMINISTRACIÓN

69Número 09W W W . L I N U X - M A G A Z I N E . E S

Figura 2: Crear una nueva cuenta de usuario

implica una serie de tareas. Las herramien-

tas como useradd descargan mucho trabajo

para el administrador.

01 $ su

02 Password:

03 # vipw

04 [...]

05 # passwd pepe

06 # mkdir /home/pepe

07 # cd /etc/skel && tar cf - . |

(cd /home/pepe && tar xpf -)

08 # chown -R pepe:users

/home/pepe

09 # chmod -R u+rwX,go-rwx

/home/pepe

10 # exit

11 $

Listado 1: Cuanta de usua-rio “pepe”

01 #!/bin/sh

02 # $Id: xinitrc,v 1.2

2003/02/27 19:03:30 jharper

Exp $

03

04

userresources=$HOME/.Xresource

s

05 usermodmap=$HOME/.Xmodmap

06

sysresources=/etc/X11/xinit/.X

resources

07

sysmodmap=/etc/X11/xinit/.Xmod

map

08

09 # merge in defaults and key-

maps

10

11 if [ -f $sysresources ]; then

12 xrdb -merge $sysresources

13 fi

14

15 if [ -f $sysmodmap ]; then

16 xmodmap $sysmodmap

17 fi

18

19 if [ -f $userresources ]; then

20 xrdb -merge $userresources

21 fi

22

23 if [ -f $usermodmap ]; then

24 xmodmap $usermodmap

25 fi

26

27 # start some nice programs

28

29 xterm &

30

31 # start the window manager

32

33 exec fvwm2

Listado 2:/etc/X11/xinit/xinitrc

Page 70: Linux Magazine - Edición en Castellano, Nº 09

Pero los administradores no puedensimplemente sentarse y relajarse despuésde haber creado un directorio de usua-rio. Se necesita fijar la configuración pordefecto de los programas más comunes ydeben configurarse las variables globalespara el usuario. Muchos programas Unixusan los llamados dotfiles para la confi-guración. Los dotfiles son archivos ocul-tos de configuración (o directorios)situados en el directorio de usuario y quepertenecen al usuario que ejecuta el pro-grama. Se les llama así dado que el nom-bre del fichero o directorio empiezasiempre por un punto.

El EsqueletoUn gestor de ventanas necesita saber quésoftware está instalado para poder pro-porcionar los menús adecuados. Los pro-cesadores de textos y los programas deretoque de imágenes tienen que soportarlas impresoras y adaptarse a otros deta-lles locales. Los navegadores tienen quesaber bajo qué proxys están trabajando,etc…

El directorio /etc/skel/ (viene deesqueleto) tiene una plantilla básica paralos nuevos directorios de usuario. Losadministradores pueden guardar los dot-files o asignar a nuevos usuarios en estedirectorio. Cuando se crea un nuevodirectorio, este “esqueleto” simplementese copia allí.

Con esto se completaría la cuenta deusuario y su entorno. El Listado 1 mues-tra los comandos necesarios para crear

una cuenta de usuario. Ejecutar este lis-tado de comandos cada vez que necesi-temos crear un nuevo usuario llevademasiado tiempo, por lo que herra-mientas como adduser y useradd nosayudan a automatizar estos pasos. LaFigura 2 nos muestra un esquema de lospasos implicados.

Configuración AvanzadaUn gran problema con las cuentas pre-configuradas es que muchas de las confi-guraciones se desconocen de antemano.Aunque el idioma y la zona horaria sonfáciles de arreglar, y no suelen variar, lasconfiguraciones de programas específi-cos son algo completamente distinto ypueden incluso variar en caso de actuali-zaciones. Para empeorar las cosas, losadministradores no pueden presuponerque el usuario empezará a usar la cuentainmediatamente y para comenzar a con-trolar la configuración desde esemomento.

En muchos casos tiene sentido prepa-rar archivos de configuración en unalocalización centralizada, suponiendoque el programa soporta este método.Los típicos gestores de ventanas de X11,o la configuración de xinit son buenejemplo de esto. Los administradorespueden simplemente mantener la estruc-tura de configuración central en/etc/X11/. En caso de una actualización,el administrador (o el gestor de paque-tes) simplemente modifica estos directo-rios para propagar automáticamente la

ADMINISTRACIÓN • Cuentas de usuario

70 Número 09 W W W . L I N U X - M A G A Z I N E . E S

[1] John the Ripper, una herramientapara crackear contraseñas: http://

www.openwall.com/john/

RECURSOS

nueva configuración a los usuarios. Encaso de que los usuarios avanzados noestén conformes con la configuraciónpor defecto, los administradores dan porsentado que cambiarán la configuraciónen sus directorios de usuario.

El Listado 2 muestra un ejemplo dearchivo /etc/X11/xinit/xinitrc, que inicia-liza el teclado y los perfiles centralizada-mente (líneas de la 11 a la 17).Dondequiera que los usuarios hagancambios individuales, el script aplicaautomáticamente estos cambios (líneasde la 19 a la 25).

Los administradores pueden usar unmétodo similar para configurar variablesde entorno en los perfiles centrales delshell /etc/profile/ (para Sh y Bash) o/etc/csh.cshrc y /etc/csh.login (para Csh yTcsh). Da igual el sitio donde el usuariodefina sus propias versiones de estosarchivos dentro de sus directorios deusuario (son archivos dotfile), que elshell ejecutará estos arhivos, dándolesmayor prioridad a sus configuraciones,al menos para las variables. Las configu-raciones centrales como las de ulimits

pueden fijarse para que tengan mayorprioridad que las variables locales. ElBash permite a los administradores defi-nir algunas variables como readonly

(sólo lectura). Esto le da a los adminis-tradores un control preciso sobre las con-figuraciones.

Si el método de configuración y admi-nistración centralizado resulta impracti-cable, debido a aplicaciones que no losoportan y no hay manera de salvar elescollo, siempre podremos recurrir alviejo truco: sustituir el archivo del pro-grama con un script de arranque. Elscript tendrá que verificar el directoriode usuario en busca de una versión delarchivo de configuración, y si no existe,copiar el archivo con la configuracióninicial desde la ubicación central antesde ejecutar propiamente la aplicación.Dependiendo de la cantidad de esfuerzoque estemos dispuestos a invertir enesto, podríamos incluso conseguir en elscript de arranque que cambie los fiche-ros de configuración automáticamenteen caso de actualización. �

Page 71: Linux Magazine - Edición en Castellano, Nº 09

7171ISSUE 52 MARCH 2005W W W . L I N U X - M A G A Z I N E . C O M

Bienvenidos a Linux UserÉsta es la sección dedicada a la presentación de software interesante y útil

que nos ayuda en nuestro quehacer diario con el escritorio Linux. Aquí

aprenderemos a utilizar software estándar de una manera más eficiente,

adquiriremos valiosos conocimientos y descubriremos apasionantes

nuevas aplicaciones.

La conquista del escritorio 72

Konqueror de KDE 3.4 es una herramienta perfecta-

mente versátil que se siente en la web cómo en

casa.

Desktopía 76

xdesktopwaves nos permite convertir el escritorio

en un paisaje acuático. Podemos añadir lluvia y

tormentas o simplemente arrastrar el ratón para

animar las cosas.

Inkscape 78

Inkscape trae a los usuarios de Linux la potencia de

los gráficos vectoriales.Nuestro taller enseña cómo

utilizar este programa.

Educación 81

Terminamos esta breve presentación de ATNAG

mostrando varios juegos, y cómo se crean y orga-

niza su explotación en el cuaderno de clase.

Rock y consola 86

Echamos un vistazo a las aplicaciones que rocanro-

lean desde la líneade comandos.

Page 72: Linux Magazine - Edición en Castellano, Nº 09

dirección. Suse Linux viene ahora con elpaquete KDE-3.4 en la versión 8.2 o pos-teriores de la distribución [2]. Los usua-rios de Gentoo Linux necesitan habilitarprimero la nueva versión de KDE, queaún no se considera como estable.

ArranqueHay múltiples formas de ejecutarKonqueror. El icono y la entrada Home

en el menú de inicio de KDE nos lleva aKonqueror en el formato de administra-dor de ficheros. Incluso se puede des-plegar una ventana de comienzo rápido(Alt + F2) y teclear una dirección deInternet, para lanzar Konqueror enmodo navegador de Internet. La entradaInternet | Web Browser (Konqueror) o elcomando konqueror desde la consola,también nos llevan a la pantalla del

72

LINUX USER • KTools: Konqueror 3.4

72 Número 09 W W W . L I N U X - M A G A Z I N E . E S

Navegación con Konqueror 3.4

LA CONQUISTA DELESCRITORIO

Figura 1: Konqueror tras lanzarse sin un perfil de vista.

Ha habido bastantes críticas sobreel hecho de que InternetExplorer está inseparablemente

ligado a los sistemas Windows. KDEtiene su propio navegador nativo y aun-que la posición de Konqueror en elmundo de Linux no es tan dominantecomo IE en Windows, la última versiónde Konqueror proporciona nuevas carac-terísticas para integrar Konqueror con laexperiencia del usuario. Este artículoexamina algunas características prácticasy poco conocidas de Konqueror en elescritorio KDE 3.4.

ConfiguraciónAl instalar KDE automáticamente se ins-tala Konqueror en el disco duro. El cuartelgeneral del escritorio KDE es parte delpaquete kdebase y el número de versióndel paquete refleja la versión de KDE quese tiene instalada. La mayoría de las dis-tribuciones contienen los números de ver-sión. Así que si está interesado en la últi-ma versión de KDE 3.4, habrá que estarpreparado para algunos pasos manuales.

Mientras escribo este artículo, el servi-dor FTP del proyecto KDE [1] tiene bina-rios para Fedora Core 3 y Conectiva. Losusuarios con experiencia que tienentiempo para compilar los paquetes podrí-an estar interesados en el código fuentede KDE, que está disponible en la misma

Siguiendo la pista de invasores previos como

Navigator e Internet Explorer, Konqueror con-

tinua con la misión de conquistar Internet. Kon-

queror de KDE 3.4 es una herramienta perfecta-

mente versátil que se siente en la web como en casa.

POR HAGEN HÖPFNER

LA CONQUISTA DELESCRITORIO

Page 73: Linux Magazine - Edición en Castellano, Nº 09

73

KTools: Konqueror 3.4• LINUX USER

73Número 09W W W . L I N U X - M A G A Z I N E . E S

Konqueror (Figura 1). Cuando apareceKonqueror, este proporciona enlaces asitios importantes y tareas, permitiendoel acceso tanto al directorio home delusuario como a los módulos del Centrode Control de KDE.

Perfiles de VistasLa opción de usar múltiples perfiles devistas es extremadamente útil. El menúde configuración tiene tres elementostitulados Load view profile, Save view

profile “xyz” yConfigure view

profiles. xyzrepresenta elnombre del per-fil actual. Laconfiguraciónpor defecto deKDE 3.4 tieneseis perfiles devistas preconfi-gurados. Porejemplo, Tabbed

Browsing

(Figura 2) pro-porciona una sesión de navegación webcon solapas en Konqueror.

Compárese esto con la ventana tradi-cional del administrador de archivos queproporciona el perfil de vista denomina-do File Management. Incluso se puedemostrar una ventana de línea de coman-dos inmersa en el navegador en estemodo seleccionando View | Show

Terminal Emulator (Figura 3).La vista denominada KDE development

es una variante de la vista de navegaciónbasada en solapas que automáticamentenos lleva a la herramienta de documen-tación de desarrollo de KDE. A los fansde la herramienta Norton Commanderpuede que les interese echar un vistazo aSettings | Load view profile | Midnight

Commander para una sesión deKonqueror con un panel, conteniendouna vista en forma de árbol del sistemade ficheros.

La configuración por defecto es detodo menos intuitiva, ya que ambospaneles muestran el mismo directorio, ysi cambia de directorio, se produce elcambio en ambos paneles. Para cam-

biarlo, hay que hacer clic en una “checkbox” de la parte de abajo de la derechade las vistas.

Si los perfiles predefinidos no son desu agrado, se puede guardar fácilmentesu configuración personalizada bajo unperfil nuevo. Para ello, se configura laventana hasta ajustarla a nuestro gusto.Por ejemplo, podría añadir una ventanade terminal. Luego se seleccionaConfigure views profiles y se teclea unnombre para el perfil. Ahora el nombrese añade al submenú Load view profile.Para asegurarse que Konqueror se eje-cute con su perfil favorito cuando sehaga clic sobre el icono del escritorio,necesita ahora establecer el parámetro --profile del administrador de ficheros.Para ello, hay que cambiar la línea decomandos del icono a konqueror -profile

mi_vista; la próxima vez que se hagaclic sobre el icono, Konqueror apa-

recerá con la vista elegida.

kioslave Tareafinger Muestra información de

los usuarios; necesita tener finger instalado y fingerd ejecutándose.

help Llama a la ayuda de KDEinfo Accede a la página de

información del sistema en la barra de direcciones de Konqueror

man Muestra las páginas de ayuda para un comando

Tabla 1:MostrandoInformación

Figura 2: Konqueror navegando mediante solapas.

Figura 3: Konqueror como un gestor de ficheros con emulador de terminal.

kioslave Tareaaudiocd Muestra la pista en un

CD de audiocamera Accede a imágenes de

una cámara digital con soporte gphoto2; supo-niendo que gphoto2 estáinstalado.

floppy Accede al disquete usan-do mtools

mac Accede a particiones conformato HFS utilizando hfsplus tools

tar Navega por ficheros tar como si fuesen directorios normales; este kios-lave si lo necesita utiliza automáticamente la compresión mostrada enla Tabla 4.

Tabla 2: Kioslaves paraAcceder al Sistema de

Ficheros

Page 74: Linux Magazine - Edición en Castellano, Nº 09

posibles alternativas. La Tabla 1 contie-ne un listado de kioslaves que propor-cionan acceso a información genérica.

Konquistando el Sistema deFicherosKonqueror puede mostrar contenidoscon formato para las particiones, CDs deaudio y cámaras. Por ejemplo, hay unmac kioslave para acceder a los sistemasde ficheros HFS+ de Apple. Para queesta característica funcione, hay quetener las herramientas hfsplus en el siste-

ma, ya que el kioslave usalas funcionalidades dehfsplus.

Puede teclear audiocd:/

en la barra de direccionespara visualizar las pistas deun CD de audio.Dependiendo de los codecsy herramientas que se ten-gan instaladas, se proporcio-nará una serie de carpetascon ficheros virtuales en for-mato flac, mp3 u ogg. Losficheros en estas carpetas noestán realmente en el CD,pero si arrastra uno de losficheros de la carpeta MP3al disco duro, Konquerorcreará el fichero MP3 al

vuelo. Para ello, primero lee la pista y laconvierte al formato comprimido. Pordefecto, el administrador de ficherosaccederá a freedb, una base de datos deInternet con información de artistas ynombres de pistas de CDs. Esto permitea Konqueror añadir etiquetas ID3 preci-sas y descriptivas. Como Fedora no tienesoporte para MP3 por defecto, los usua-rios con la distribución Fedora no podránver la carpeta MP3.

La Tabla 2 contiene una lista de kiosla-ves que emulan sistemas de ficheros. Entre

Kioslaves

Los módulos especiales lla-mados Kioslaves extienden lafuncionalidad de Konqueror.Los Kioslaves de Konquerorle permite acceder a redes, aarchivos comprimidos, a CDsde audio [3] y cámaras consoporte gphoto [4]. Kioslavesson los módulos kio de entra-da/salida. Cada Kioslave esresponsable de un protocoloindividual, que no tiene por-qué ser un protocolo de red.Las bibliotecas kio tienen laventaja de permitir a cual-quier programa KDE accedera módulos individuales, eli-minando la necesidad de quelos desarrolladores se preocupen con pro-tocolos complicados y no pierdan el tiem-po intentando integrarlos en sus aplica-ciones.

Para averiguar cual de estos módulostiene disponible Konqueror, hay queteclear help:kioslave en la barra dedirecciones del programa. Konquerormostrará una lista con todos los kiosla-ves que tiene instalados. De hecho,está utilizando uno de ellos ahora:help:, que da acceso directo al sistemade ayuda de KDE. help:ksnapshot noslleva a los ficheros de ayuda de laherramienta de captura de pantalla deKDE. Si no está buscando ayuda de lasaplicaciones KDE, pero necesita lapágina man de un comando Unix, exis-te un kioslave que se encarga de ello.Teclee man:/su en la barra de direccio-nes de Konqueror para acceder a laversión HTML de la página man delcomando su (Figura 4). Si la búsquedaencuentra varias páginas man,

Koqueror muestraprimero una

lista conlas

LINUX USER • KTools: Konqueror 3.4

74 Número 09 W W W . L I N U X - M A G A Z I N E . E S

kioslave Tareafish Utiliza SSH para acceder a otras máquinas. Por ejemplo, fish:/hoepfner@nero

abriría una conexión para el usuario hoepfner en la máquina nero.ftp El Protocolo de Transferencia de Ficherosimap Utiliza el Protocolo de Acceso a Mensajes en Internet para acceder a servido-

res IMAP.imaps Acceso encriptado a servidores IMAPldap Acceso al directorio X.500 o a un servidor LDAPnfs Acceso a NFS en una rednntp Acceso a un servidor de News. La documentación previene a los usuarios que

un acceso NNTP consume tiempo y recursos de red - mostrando todos los grupos en un leafnode instalado localmente tarda un cuarto de hora en un Pentium M a 1300MHz

pop3 Utiliza el protocolo POP para accede a una cuenta de correopop3s Acceso encriptado al buzón de POPrlogin Login remoto del hostsftp FTP segurosmb Acceso compartido de Windows mediante Samba; Konqueror llama a

smbclient en segundo plano.telnet Hace login en una máquina remota ejecutando telnetd. Como las contraseñas

se transmiten sin cifrar en conexiones telnet, debería utilizar una conexión segura fish:/ en vez de telnet.

webdav Acceso a un servidor HTTP utilizando el protocolo WWW Distribuido Autorizado y Versionado

webdavs La variante encriptada del protocolo WebDAV

Tabla 3: Protocolos de Red con Soporte Kioslave

Figura 4: Konqueror como un centro de ayuda.

Page 75: Linux Magazine - Edición en Castellano, Nº 09

otros, la lista incluye un kioslave que per-mite un acceso fácil a cualquier cámaracon soporte gphoto2. Tecleando camera:/

en la barra de direcciones de Konquerorhace que se autodetecte el dispositivoantes de proceder a mostrar las carpetas ylos ficheros de imágenes que contiene.

Especialistas en RedesKonqueror también proporciona un acce-so sencillo a los recursos de red. El pro-grama no sólo entiende los protocoloshttp y ftp, sino que también permite elacceso a buzones de correo en servidoresIMAP si se teclea imap://nombreusua-

rio@servidor en la barra de direcciones.

Si sedispone deuna cuenta IMAP, tansólo hay que reempla-

zar nombreusuario por la ID del usuarioy server por el nombre del servidor IMAP(Figura 5).

Se pueden borrar mensajes directa-mente usando Konqueror, tal y como seharía con un programa de correo.

Si la seguridad es algo que le preocu-pa y desea una sesión encriptada paraacceder a la cuenta IMAP, necesita elkioslave imaps para mostrar los conte-nidos de los buzones de correo. LaTabla 3 muestra los otros protocolos dered que Konqueror soporta a través delos kioslaves.

Kioslaves InternosLos programas KDE hacen uso interna-mente de los kioslaves. Por ejemplo,haciendo clic en una dirección de correoen el centro de control se abre su progra-ma de correo favorito, que por defecto esKMail. Las aplicaciones KDE que hacenesto usan el kioslave mailto. Y porsupuesto, se puede hacer lo mismo tecle-ando mailto:usuario@dominio en labarra de direcciones de Konqueror. Estohace que el editor de KMail se ejecutecon la dirección de destino ya insertadaen el campo de dirección del mensaje. Sepuede teclear print:/ para acceder a otrokioslave interno de KDE. Si se realizaesto, nos dirigirá a la herramienta de ges-tión de impresión de KDE (Figura 6). LaTabla 4 muestra una lista de los kioslaveinternos.

ConclusiónKonqueror es un gran intento por partede los desarrolladores de KDE de imple-mentar una herramienta universal quepuede manejar casi cualquier tarea rela-cionada con los ficheros. Uno de los pro-blemas de Konqueror es que el programallega a ser tan grande que podría llevar aun usuario varios meses para descubriralgunas de las características extremada-mente útiles que los desarrolladores deKonqueror han incluido en esta aplica-ción innovadora.

El manual de usuario de Konqueror esun buen punto de partida para empezarsus aventuras con Konqueror. Un buencomienzo puede ser leer el manual y laayuda online para aprender algunas de lascaracterísticas más interesantes y útiles deesta poderosa herramienta. Se puede acce-der al manual a través del menú de ayudao tecleando help:konqueror en la barra dedirecciones de Konqueror. �

KTools: Konqueror 3.4• LINUX USER

75Número 09W W W . L I N U X - M A G A Z I N E . E S

[1] KDE 3.4: ftp:// ftp. kde. org/ pub/ kde/

stable/ 3. 4/

[2] KDE 3.4 para Suse Linux: ftp://ftp.

suse.com/pub/suse/i386/

supplementary/KDE/

[3] Más información del kioslave deaudio CD: http://docs.kde.org/en/3.3/

kdebase/kioslave/audiocd.html

[4] gphoto2: http:// www.gphoto.org/

RECURSOS

kioslave Tareabzip Acceso a archivos com-

primidos bzip

bzip2 Acceso a archivos com-primidos bzip2

gzip Acceso a archivos com-primidos gzip

cgi Ejecuta programas CGI sin un servidor web activo

file Muestra ficheros locales y directorios

mailto Lanza el editor de correo que tenga por defecto

print Información y configuración de la impresora

thumbnail Ejecuta KDE para crear thumbnails

Tabla 4: Kioslave Internos

Figura 5: El kioslave imap le permite eliminar un buzón

de correo como si fuese un directorio local.

Figura 6: Tecleando “print:/” en la barra de direcciones de

Konqueror le permite acceder al gestor de impresión de KDE.

Page 76: Linux Magazine - Edición en Castellano, Nº 09

Desempaquetamos el archivo xdesktop-

waves-1.3.tar.gz y nos vamos al directo-rio que se crea en este paso, xdesktop-

waves-1.3. Tecleamos make para compi-lar el programa. Pasamos a usuario root

y tecleamos make install para copiar elprograma a /usr/X11R6/bin y la páginaman a /usr/X11R6/man/man1.

Si preferimos situar la aplicación ennuestro directorio /usr/local, simplemen-te modificamos el Makefile antes decompilar cambiando las líneas BINDIR yMAN1DIR de la siguiente manera:

BINDIR = /usr/local/bin

MAN1DIR = /usr/local/man/man1

Como alternativa, podríamos simple-mente ejecutar el programa en el directo-rio de las fuentes tecleando ./xdesktop-

waves.

Bajo Tierraxdesktopwaves renderiza olas en unaventana situada por encima de la venta-na raíz (root window). Este método no

funcionará sin más en KDE, ya que elentorno de escritorio KDE, de hecho,dibuja una ventana por encima de laventana raíz de tal manera que la oculta.Para poder inundar nuestro escritorio apesar de esto, tendremos que abrir elControl Center y habilitar la opciónDesktop | Behavior | Allow programs in

desktop window (véase la Figura 1).El comando xdesktopwaves lanza el

programa con las opciones por defecto(véase Figura 2). Esto implica que elprograma usará el primero de los diezesquemas de color predefinidos y dibu-jará las olas con calidad media. Losniveles de calidad especifican cómo de

76

LINUX USER • Desktopia: xdesktopwaves

76 Número 09 W W W . L I N U X - M A G A Z I N E . E S

Hacer olas con xdesktopwaves

CABALGANDO LASOLAS

El agua atrae a millones de verane-antes a las costas, lagos y ríoscada año. Ahora, Oliver Hamann

ha desarrollado una herramienta paratraer un aspecto húmedo a nuestro escri-torio. xdesktopwaves [1] inunda nuestroescritorio y genera olas cuando arrastra-mos el ratón o movemos ventanas. Elprograma ofrece una variedad de opcio-nes que permiten al usuario añadir efec-tos como lluvia y tormentas o cambiar elcolor del agua. No es necesario desha-cerse de nuestro fondo favorito, el paisa-je acuático que proporciona xdesktopwa-

ves es transparente.

Hágalo-usted-mismoLa aplicación está disponible en la pági-na del proyecto. No hay paquetes listos-para-usar, por lo que tendremos quecompilar el programa desde el códigofuente. Todo lo que necesitamos es elcompilador gcc y los paquetes de des-arrollo del sistema gráfico. Muchas dis-tribuciones llaman al paquete requeridoXFree86-devel o xorg-devel.

Incluso si el fondo de escritorio más imaginativo ya empieza a aburrirnos, es hora de cambiar. xdesktop-

waves nos permite convertir el escritorio en un paisaje acuático. Podemos añadir lluvia y tormentas o simple-

mente arrastrar el ratón para animar las cosas. POR ANDREA MÜLLER

Hacer olas con xdesktopwaves

CABALGANDO LASOLAS

Sólo tú decides que aspecto tiene tuescritorio. Con Desktopia tomamosregularmente un viaje al mundo de losgestores de ventanas y entornos deescritorio, presentando herramientasútiles y llenas de color y preciososjuguetes.

Desktopia

Page 77: Linux Magazine - Edición en Castellano, Nº 09

77

xdesktopwaves • LINUX USER

77Número 09W W W . L I N U X - M A G A Z I N E . E S

realistas parecerán las olas al arrastrarel ratón o mover una ventana. El valormás alto genera un movimiento de olasrealmente genuino. Por supuesto, esterealismo es a costa de una mayor cargapara la CPU. La manera más fácil de verla diferencia entre los niveles de cali-dad es ejecutar primero el programacon el nivel inferior tecleando xdesktop-

waves -q 0 y luego con el superior tecle-ando xdesktopwaves -q 9.

La opción -c, con un valor entre 0 y 9,selecciona uno de los esquemas de colorpredefinidos. xdesktopwaves -c 1 nos pre-senta un agua azul profundo, mientrasque xdesktopwaves -c 6 genera un verdecaribeño. -c 5 nos muestra un agua per-fectamente cristalina en el escritorio. -c 8muestra un rojo intenso, que más bienaparenta un accidente en una centralquímica que unas vacaciones.

Ajuste FinoSi no estamos contentos con los esque-mas de color propuestos, podemos dise-ñar un esquema por nuestra cuenta. Lasopciones -wc, -sc y -lc seguidas del nom-bre del color, nos permiten configurar elesquema. El comando showrgb | less nosmuestra los colores válidos, listados consus valores RGB. El color tras -wc fija elcolor del agua, -sc el color del cielo y -lcel de las reflexiones de luz. Tendremosque arrastrar el ratón y hacer olas parapoder ver estos dos últimos. Cuandoestemos experimentando con los pará-metros, puede que queramos ejecutarxdesktopwaves en una ventana separada,mejor que en modo background. Para

ello, debemos especificar la opción -w alejecutar el programa.

El fondo de escritorio puede ser unamolestia si estamos intentando conse-guir el esquema de colores adecuado:podemos especificar el parámetro -o paradeshabilitar la transparencia. Para seratentos con nuestra CPU, deberíamosespecificar la opción -i para que el pro-grama no consuma ciclos de relojsi no hay actividad en el escritorio.

Podemos incluso fijar qué even-tos generarán olas mediante losparámetros adecuados. Por ejem-plo, -nwm deshabilita las olas cau-sadas por el movimiento del ratónpor el escritorio. -nww le indicaque podamos mover las ventanassin marearnos. Para eliminar lanecesidad de cerrar el programapulsando [Ctrl]+[C] en la consola,desde la que lanzamos el progra-ma, debemos ejecutar xdesktopwa-

ves -e.

Aviso de TormentaSi estas calmadas aguas nos están dejan-do dormidos, podemos incluir el pará-metro -st con un número entre 1 y 10para avivar las cosas. Este parámetroempieza en 1 con una ligera brisa y vaganando fuerza hasta una tempestad(10) que nos dará un buen remojón. -rn,de nuevo seguido de un número de 1 a10, añade algo de lluvia al esritorio.Mientras que xdesktopwaves -rn 2 pre-senta un ligero chirimiri, con -rn 10 inun-daremos nuestro escritorio con una vio-lenta lluvia monzónica. Podemos combi-

nar estos parámetros: por ejemplo, xdes-

ktopwaves -rn 10 -st 6 (véase la Figura 3)nos presenta un efecto realmente conse-guido.

Si disfrutamos de un fondo de pantallamovidito, xdesktopwaves puede ser exac-tamente lo que andábamos buscando.Como el programa no se ejecuta en unaventana de raíz, podemos incluso combi-

nar xdesktopwaves con otras aplicacionesde fondo de pantalla como xpenguins.Para los tendentes al agua xfishtank [2],que convierte nuestro escritorio en unacuario, es otra posible elección para unanimado y líquido escritorio. �

Figura 2: Arrastrando el ratón o moviendo una ventana generaremos

olas en el escritorio.

[1] xdesktopwaves: http://

xdesktopwaves.sourceforge.net/

[2] xfishtank: http://www.tuxfinder.com/

packages?defaultname=xfishtank

RECURSOS

Figura 3: Los parámetros “-rn” y “-st” nos propor-

cionan lluvia y tormentas.

Figura 1: Para usar xdesktopwaves con KDE, debemos cambiar “Allow

programs in desktop window” en el panel de control.

Page 78: Linux Magazine - Edición en Castellano, Nº 09

grama de gráficos vectoriales para expri-mir toda su potencia [1].

Iniciación Fácil a InkscapeDurante años, Linux no ha tenido unauténtico equivalente a las herramientasde dibujo de gráficos vectoriales másimportantes del mundo de Windows ode Macintosh. Pero ahora, un programade fuente abierta, llamado Inkscape, hallegado para llenar ese hueco. AunqueInkscape carece de muchos de los efec-tos especiales que se encuentran en loscaros programas comerciales, la actual

versión 0,41 de Inkscape ofrece todo loque realmente se necesita para realizarlogos o ilustraciones en la pantalla.

Don’t Worry, Be HappyComo primer ejemplo práctico, intentare-mos dibujar el smiley mostrado en laFigura 1. Completar este dibujo nos seráde gran ayuda con muchas de las másimportantes técnicas que se necesitanpara realizar ilustraciones más complejas.

Una vez se ha lanzado, y aunque nosparezca mentira por lo novedoso,Inkscape muestra un documento nuevovacío. Cambiamos el factor de zoom pul-sando las teclas [+] y [-] hasta que ape-nas se puedan ver los márgenes. LaFigura 2 muestra la secuencia de pasosque hay que seguir para obtener el smiley.

Seleccionamos la herramientacircle/ellipse/arc en la caja de herramien-tas de la izquierda (véase la Figura 3).Ahora presionamos la tecla [Ctrl], hace-mos click con el ratón en el área superiorizquierda del dibujo, mantenemos elbotón izquierdo del ratón y lo arrastra-mos hacia la esquina inferior derecha.Con esto obtendremos un círculo rellenode rojo. Manteniendo pulsada la tecla[Ctrl] guarda el aspecto, es decir, la rela-ción entre la altura y la anchura a 1:1,

78

LINUX USER • Inkscape

78 Número 09 W W W . L I N U X - M A G A Z I N E . E S

Gráficos vectoriales con Inkscape

EL PINCELELECTRÓNICO

Aunque se pueda ser un genio conla pluma y el papel, dibujardirectamente en el ordenador no

siempre dará los brillantes resultadosque se están buscando. Cuando las líne-as se convierten en garabatos, los profe-sionales se vuelven hacia las curvas deBézier para que les ayuden a dibujarlíneas lisas, a los puntos de anclaje paradefinir la trayectoria de la curva y a lastangentes para definir los radios.

Aunque los principales editores demapas de bits, como GIMP, dan soportea las curvas de Bézier, hace falta un pro-

Los profesionales cuando tienen que dibujar con el orde-

nador, optan normalmente por los gráficos vectoriales.

Inkscape trae a los usuarios de Linux la potencia de los

gráficos vectoriales. Nuestro taller enseña cómo utilizar

este programa. POR PETER KREUSSEL

Figura1: Un sencillo smiley compuesto de

algunos arcos y una curva de Bézier.

Figura2: La secuencia de pasos para dibujar

el smiley descrito en este artículo.

Page 79: Linux Magazine - Edición en Castellano, Nº 09

79

Inkscape • LINUX USER

79Número 09W W W . L I N U X - M A G A Z I N E . E S

2:1 o 1:2. Si nos equivocamos, podemospulsar [Ctrl]+[Z] para deshacer.

Para los ojos, necesitamos dibujar unsemicírculo abierto con la abertura en elfondo. Las dos cajas de herramientashorizontales sobre el área de dibujo nosayudarán a hacer esto. La caja de herra-mientas superior ofrece un juego deórdenes estándar (Figura 4); para descu-brir más, colocamos el cursor sobre unbotón para ver la función de esa herra-mienta. La caja de herramientas de abajocambia para reflejar la herramienta dedibujo que hemos seleccionado.

Dibujando círculosNecesitamos fijar los ángulos para dibu-jar la curva con la herramienta de círcu-los, que es la que está habilitada en estemomento (la Figura 5 nos muestra lacaja de herramientas). Para Start 180 yEnd 360 nos dará un semicírculo. Paraasegurarnos de que el semicírculo estáabierto, necesitamos comprobar el open

arc. Ahora dibujamos un círculo lomismo que en el paso 1, y el programaautomáticamente nos dará el arco abier-to que necesitamos.

Si el arco no está en el lugar adecuado,es demasiado grande, o demasiado peque-ño, necesitamos hacer click en la herra-mienta de selección en la caja de herra-mientas de la izquierda. Cuando arrastre-mos el ratón sobre el arco, veremos que elcursor se transforma, convirtiéndose enun cursor de movimiento. Mantenemospulsado el botón izquierdo del ratón yarrastramos el arco al sitio correcto.Cuando soltemos el botón del ratón, nota-remos los mandos alrededor del círculo.Podremos arrastrar los mandos para modi-

ficar la altura y laanchura del objetoseleccionado. Latecla [Ctrl] funcio-na igual que laherramienta de cír-culo. Si mantene-mos pulsada latecla, cualquiercambio que reali-cemos mantendráel aspecto, es decir,la relación entrelas ejes X e Y.

Para animar elmonótono círculorojo, vamos a ele-gir la herramienta

de selección y seleccionar el círculogrande. Presionamos [Shift]+[Ctrl]+[F]para ir al cuadro de diálogo Fill and stro-

ke dialog (trazar y rellenar) (Figura 6).Podemos ajustar los componentes de loscolores [R]ed, [G]reen y [B]lue (Rojo,Verde y Azul) para establecer el color delrelleno. Si arrastramos la barra de des-plazamiento de G (para el componentedel color verde) hacia la derecha, el cír-culo cambiará a un color un poco máscercano al color amarillo.

Si ahora establecemos el tipo de relle-no a linear gradient (efecto de degradadolineal), Inkscape nos dará un efecto decolor degradado que comienza en amari-llo y termina en transparencia. Para utili-zar un efecto de degradado más fino,pulsamos en el botón marcado en tur-quesa que muestra la Figura 7.

Seguimos estos pasos para fijar el efec-to de degradado para los ojos: seleccio-nar el semicírculo, abrir el cuadro de diá-logo Fill and stroke dialog, fijar los valo-res de color a R=190, g=200, b=255,seleccionar el linear gradient y modificarel efecto de degradado hasta que nosguste lo que vemos.

Ahora todo lo que necesitamos haceres dibujar un círculo pequeño (herra-mienta círculo, Start: 0, End: 0), hacerclick en el botón X del cuadro de diálogoFill and stroke dialog (para no utilizar unrelleno) y habremos terminado con elojo izquierdo. Siempre que necesitemosdibujar elementos muy pequeños, comoen este caso, lonormal es hacerzoom pulsandola tecla [+].Podemos utili-

zar el botón central del ratón para moverla sección actual de la pantalla.

Pulsamos la tecla [shift] y hacemosclick en múltiples elementos. Con laherramienta de la selección añadimosesos elementos a la selección actual.Utilizamos esta técnica para seleccionarel ojo completo (que es el arco y el círcu-lo pequeño). Con [Ctrl]+[D] duplicamoslos objetos seleccionados. En vez de usarel ratón, podemos mover los objetos pre-sionando las teclas de flecha. Para pro-bar esto, presionamos la tecla [flechaderecha] varias veces y veremos cómo lacopia del ojo se mueve hacia la derecha;pulsando [shift] aumentaremos la dis-tancia de cada paso. La ventaja de haceresto así, en vez de con el ratón, es quelos ojos ahora están exactamente a lamisma altura.

Mano alzadaPara la boca también necesitamos unarco que comience en 0 grados y termineen 180. Esta vez no mantenemos pulsa-da la tecla [Ctrl] mientras dibujamos elarco, ya que necesitamos que este arcosea más ancho.

Se puede utilizar la herramienta dedibujo para dibujar cualquier cosa amano alzada, pero por esta vez vamos areducir nuestras expectativas y solamen-te dibujaremos un trazo horizontal parala esquina de la boca. Para hacerlo, pri-mero habilitamos la herramienta dedibujo y arrastramos el ratón a la posi-ción donde queremos que comience lalínea. Después mantenemos pulsada latecla [Ctrl], arrastramos el ratón un pocohacia la derecha y hacemos click en elpunto final. Hacer click con el botónderecho termina esta acción. Lo qué ocu-rre al pulsar [Ctrl] con esta herramientaes que se cierra el ángulo de cualquierlínea recta que necesitemos dibujar enpasos de 15°, facilitando la tarea dedibujar una línea totalmente recta.

Figura3: Las herramientas

más importantes de Inkscape.

Figura5: La caja de herramientas horizontal

inferior muestra los ajustes que afectan a la

herramienta de dibujo que se ha selecciona-

do. La herramienta del círculo se selecciona

aquí.

Figura4: La caja de herramientas horizontal en la tapa tiene botones

para las ordenes estándar en la parte superior, por ejemplo Save, Open,

Cut y Paste.

Figura6: Este diálogo se utiliza

para fijar el color del relleno

mediante los componentes de color

[R]ed, [G]reen, y [B]lue.

Page 80: Linux Magazine - Edición en Castellano, Nº 09

haciendo click con el botón derecho opulsando la tecla [enter].

Inkscape también tiene herramientasque permiten modificar curvas que yaexisten: Modify nodes and handles

(Modificar nodos y mandos). Estasherramientas permiten mover los man-dos y modificar la dirección y longitudde las tangentes del control. Incluso losartistas gráficos profesionales dibujaránprimero una línea irregular antes de arre-glar los detalles. Probamos de la siguien-te manera: utilizamos la herramientapara seleccionar un mando y entoncesutilizamos el ratón para arrastrar los cír-culos pequeños en los finales de las tan-gentes (Figura 8).

Para terminar el smiley, elegimos laherramienta de selección y selecciona-mos nuestras lineas de practicas .Entonces presione [Del] para eliminarestas líneas.

La Figura 9 nos muestra cómo usar elratón para dibujar la lengua. Hacemosclick como muestra el dibujo.Arrastramos manteniendo pulsado elbotón del ratón y lo movemos en ladirección de la flecha (aparecerá el con-trol de tangente para que podamos cam-biar su longitud y dirección), entoncessoltamos el botón del ratón. Necesitamostres lineas para la lengua; añadimos unnodo en cualquiera de los sitios quecambia la curva. Ahora rellenamos lacurva ya finalizada con el color rojo ydefinimos un efecto de degradado.

El relleno de la lengua oculta el bordesuperior de la boca. Inkscape nos ofreceotra potente herramienta para solucionaresto, permitiendo que realicemos opera-

ciones bolea-nas con las trayectorias.

Primero seleccionamos el arco de laboca con la herramienta de selección.Duplicamos el arco pulsando [Ctrl] [D].Además, seleccionamos la lengua pul-sando la tecla [Shift]. Después, elegimosDifference en el menú Path.

Apenas queda un paso para completarel dibujo. Utilizamos la herramienta deselección para seleccionar todos los obje-tos, excepto la lengua. Entonces pulsamos[Ctrl]+[F] para abrir el cuadro de diálogoFill and stroke dialog . Para cambiar elestilo del trazo, hacemos click en la pesta-ña superior del cuadro de diálogo y fija-mos la anchura del trazo en 6 Pt; es posi-ble que tengamos que teclear Pt como uni-dad en el cuadro de entrada. Esto le dauna anchura uniforme al trazo.

Herramientas simplesAunque el smiley no es ninguna MonaLisa, dibujándolo nos ha enseñadomuchos de los fundamentos de los gráfi-cos vectoriales SVG: la realización de for-mas básicas y de curvas Bézier, la aplica-ción de rellenos, fijar propiedades deltrazo y la aplicación de operaciones bole-anas a las trayectorias. Estas técnicas sonla base de una gran parte de las habilida-des de los profesionales y de gran canti-dad de dibujos muy complejos. �

Ahora repetimos el paso que reali-zamos anteriormente para duplicar elojo: seleccionamos la línea corta con laherramienta de selección, presionamos[Ctrl]+[D] para duplicar, y después pul-samos la tecla [flecha derecha] paramover la línea a la posición correcta.

Antes de intentarlo con formas máscomplejas, hay que tomarse un poco detiempo para practicar con la herramientade dibujo dibujando algunas líneas arbi-trarias. Hacemos click con el ratón paramarcar el punto de partida, pero cuandonos desplazamos al segundo click, man-tenemos pulsado el botón del ratón ymovemos el ratón tangencialmente a lalínea que estamos dibujando. Podemosdibujar un control tangencial en cual-quier punto final. Pulsamos el botón ymovemos el puntero para ver cómo lalongitud y la dirección de la tangente decontrol afectan a la forma de la línearoja. Ahora soltamos el botón de ratón ymovemos el puntero otra vez; veremosque ahora podemos dibujar una nuevasección de línea. Hacemos click, mante-nemos pulsado el botón de ratón y arras-tramos el ratón. Después de dibujar algu-nos segmentos, acabamos la línea

LINUX USER • Inkscape

80 Número 09 W W W . L I N U X - M A G A Z I N E . E S

[1] Comparación de gráficos vectorialesy bitmaps: http://www.inkscape.org/

cgi-bin/wiki.pl?VectorAndBitmap

[2] Especificaciones de SVG: http://www.

w3.org/TR/SVG/

[3] Paquetes RPM y fuentes de Inkscape:http://www.inkscape.org/download.

php

[4] Aquí se puede buscar paquetes deGtk2: http://search.rpmseek.com/

search.html?hl=com

[5] ftp://ftp.de.debian.org/debian/pool/

main/i/inkscape/

RECURSOS

Figura7: Inkscape permite definir un

efecto de degradado de color para el smi-

ley. Seleccionamos el botón enmarcado

en turquesa para un degradado más fino.

Figura 8: Cambiando la forma de una curva

Bézier moviendo los puntos finales de las tan-

gentes de control.

Figura 9: Usando el ratón para dibujar la

forma de una lengua.

Page 81: Linux Magazine - Edición en Castellano, Nº 09

En el número anterior conocimos ATNAG, una herramienta para la creación de actividades específicas para

Educación Infantil y los primeros años de Primaria, y cómo se está trabajando en torno a ella en el proyecto

COR-EDUX del Colegio Corazón de María de Palencia. Terminaremos esta breve presentación mostrando va-

rios juegos, y cómo se crean y organiza su explotación en el cuaderno de clase.

POR Mª DOLORES ALMANSA TEJADA Y JUAN RAFAEL FERNÁNDEZ GARCÍA.

81

Educación • LINUX USER

81Número 09W W W . L I N U X - M A G A Z I N E . E S

Cosas que hacer con juegos

TRABAJANDO CON ATNAGTRABAJANDO CON ATNAG

Recordemos las características del cen-tro que estamos analizando: una red determinales conectados a un servidor.Por supuesto que no es imprescindibleeste escenario para utilizar ATNAG peronos dará pie a conocer toda su potencia.Recordemos también que es una aplica-ción GNU Linux que funciona sobre elsistema de cuentas de este sistema ope-rativo y da servicio a los usuarios exis-tentes en el entorno. Mencionemos porúltimo que el concepto de cuenta y deautentificación no puede ser el mismopara un alumno de cuatro años que

para un alumno de secundaria o unadulto.

¿Qué hay en un cuaderno?La interfaz básica tanto para los profeso-res como para los alumnos es un cuader-

no con hojas. En éstas la maestra o maes-tro añadirá las actividades a realizar porun alumno/a, por un grupo o por toda laclase. La metáfora del cuaderno permitecentralizar en un punto único todas lasacciones: la administración de la aplica-ción y sus actividades, personalizar lainterfaz y los juegos, construir enuncia-

Vamos a analizar en detalle elmódulo del juego de relaciones,ya que sus implicaciones y posi-

bilidades son muy ricas: incluye lectura,diferentes criterios o conceptos de clasi-ficación, valores matemáticos(suma,resta…); veremos cómo se estátrabajando en grupos de trabajo para eldesarrollo de actividades y se planeaincluirlo en las programaciones delcolegio. En el artículo anterior había-mos dejado instalado ATNAG en nues-tro ordenador y habíamos creado cuen-tas para los profesores y los alumnos.

Page 82: Linux Magazine - Edición en Castellano, Nº 09

dos, y hacer jugar a los alumnos y alum-nas en la red.

Un par de cuestiones previas: aunquelos profesores pueden crear cuadernosnuevos (y después estos cuadernospodrán ser modificados únicamente porel profesor que los creó y el administra-dor), al instalar un nuevo profesor seproduce automáticamente la creación deun cuaderno llamado <nombre_del_pro-

fesor>.cfg. También al empaquetar secrea un cuaderno y éste sirve cuando sedesempaqueta para lanzar las activida-des contenidas. Por otro lado (por razo-nes de espacio y de simplicidad) no

vamos a entrar en el tema del alta delos alumnos, la creación de las

clases y la asociación de alum-nos con ordenadores.

Daremos por supuestoque el administrador

ha hecho su trabajo y el pro-fesor no tendrá que preocu-parse más que de crear lashojas de trabajo y de asignar-las a sus alumnos.

Cuando un profesor regis-trado como tal (si no lo hizodurante la instalación eladministrador puede añadirnuevos profesores desde laopción A Nuevos Usuarios)entre en su escritorio, verá 3iconos: «Juegos-Educativos»o «Lanzador», «Actividades-Lúdicas» o «Modelo» (mode-le.cfg) y «Documentación»

(doc_view.sh). Para iniciar la aplicaciónpulsaremos doble-mente con el ratónsobre el icono«Lanzador», simboli-zado por una peonzaen el escritorio (loque equivale a ejecu-tar el comando laun-

cher.sh). Se nos ofre-cerá la opción deabrir un cuaderno,una hoja o un grupo;elegiremos abrir uncuaderno, y entre loscuadernos disponi-bles el que se nos haasignado durante lainstalación (que eshasta que se modifi-ca una copia del cua-derno enseignant.cfg). Para el artículohemos creado una cuenta de profesor«rafa», por lo que el cuaderno que vamosa utilizar se llama rafa.cfg (figura 1).

Vemos en la figura que la interfaz sedivide en tres partesprincipales: la clási-ca parte superiorcon el menú y losiconos de navega-ción, un índice de

hojas a la izquierday una parte princi-pal que muestra lahoja seleccionada.

Las hojasconstituyenla parteviva delconjunto.

El índicenos va a

servir para hacer una primera aproxima-ción al programa. La primera hoja, lla-mada Administración, contiene los pro-gramas de «Instalación» y«Desinstalación» de juegos para losusuarios. Mediante el programa «PorDefecto» se pueden fijar los valores pre-definidos que se deseen para cada unode los juegos, se puede acceder a la«Documentación» a través de un navega-dor, y puede ejecutarse una herramientaque permite la traducción de los recursos(«Ilo», por Internacionalización y

LOcalización). Disponemos también deuna «Demo», muy útil para familiarizar-nos con juegos y herramientas. Y final-mente «Resultados» es la herramienta

que nos facilita elseguimiento del pro-greso de los alum-nos. En la próximaversión también severán dos iconosmás: «Exportar» e«Importar»: a travésde ellos se podránempaquetar -con unarchivo tar.gz-, lasactividades que sequieran o desempa-quetar archivos com-primidos con cua-dernos de activida-des que hayan reali-zado en otros cen-tros.

La segunda hoja,llamada Juegos, contiene los programasque permiten configurar (nivel de difi-cultad, imágenes, textos y enunciados,con o sin sonido…) los 22 juegos, verlospreviamente, y guardarlos en una lista

LINUX USER • Educación

82 Número 09 W W W . L I N U X - M A G A Z I N E . E S

Figura 1: El cuaderno del profesor.

Figura 2: La herramienta relaciones.

Figura 3: Opciones para el juego lectura en la herramienta relacio-

nes.

Figura 4: Configuración del juego rela-

ciones.

Page 83: Linux Magazine - Edición en Castellano, Nº 09

Educación • LINUX USER

83Número 09W W W . L I N U X - M A G A Z I N E . E S

adaptarla a losdestinatarios.Prometimos alcomenzar estasegunda partedel artículomostrar elmódulo dejuegoRelaciones,estrechamenterelacionadocon otromódulo llama-do Lectura.Ambos obtie-nen los recur-sos de laHerramienta del mismo nombreRelaciones (que establece relacionesentre imágenes o imágenes y palabras yes utilizada por numerosos juegos). Eluso combinado de estos recursos nospermitirá mostrar el entorno ATNAG.

Aunque puede procederse a crear laactividad directamente desde el módulodel juego, es más conveniente haberutilizado previamente las herramientaspara crear los recursos básicos que utili-zará la actividad; esta configuraciónquedará guardada en el histórico deórdenes y hará fácil su incorporación ala hoja.

Por tanto en primer lugar deberemosfamiliarizarnos con la herramienta

Relaciones. Tal y como se observa en laimagen 2 vamos a escoger (1) el directo-rio que contiene los archivos imagen, (2)el archivo de Palabras-Clave con las quese va a relacionar cada imagen y (3) elarchivo donde quedarán registradas lasrelaciones (el fichero de relación).

Una vez seleccionados estos archivosy directorio, se confirmará la acción,obteniendo el cuadro de diálogo de lafigura 3. En él se observanlos siguientes apar-tados:

Nombre del Archivo Activo, que corres-ponde a la imagen con la que se asocia-rán los distintos criterios o Palabras-Clave. A través de las puntas de flecha(negras) situadas en la parte inferior delcuadro se irá navegando por las distintasimágenes que contiene el directorioseleccionado anteriormente.• Relaciones vinculadas a la

imagen.• Acciones: a través de las fle-

chas de dirección izquierda-derecha (azules) se irá vincu-lando cada palabra clave con laimagen.

• Palabras Clave: Estos criteriosde clasificación se asocian a laimagen mediante las flechas(azules) izquierda-derecha, trashaber seleccionado en la listaPalabras Clave, el criterio a des-plazar a la columna de Relacio-nes vinculadas.

• Las casillas situadas debajo delas flechas de direcciónizquierda-derecha (Acciones),están relacionadascon el

para su uso en una clase. Puede tambiéncrearse un comentario que acompañe alos juegos cuando los ejecute el alumnoo alumna posteriormente.

La tercera hoja, Herramientas, contie-ne 11 programas que permiten construirnuevos recursos (creación de geoformas,archivos de números y letras, paleta decolores, laberintos, juegos de la oca, detest) que serán utilizados por los módu-los de Juegos. Debemos tener clara ladiferencia entre las páginas de configura-ción de los Juegos y las de creación derecursos básicos con las Herramientas.Para evitar confusiones posterioresvamos a esforzarnos desde ahora en dis-tinguir el módulo de juegos Relaciones dela herramienta Relaciones.

¿Qué puede hacer el profesor en sucuaderno? El trabajo se realiza en pági-nas. Sólo tiene permisos para diseñaractividades y guardarlas, o crear páginasa las que añadirá las actividades quequiera de la base de datos. Tambiénpuede asignar esa página a un grupo dealumnos/as y en unos ordenadores con-cretos, mediante un icono de accesodirecto en el escritorio del alumno. Elprofesor o profesora podrá añadir, quitar,renombrar tantas páginas como seannecesarias. Pero sobre todo, podrá selec-cionar una página para asociarla (orde-nador-alumno), y dejarla de libre accesopara su uso.

¿Pero, cómo añadir actividades?Primero crearemos la página que las con-tenga. En el cuaderno marcaremos con elratón en el índice una página, normal-mente «Página vacía», y en el menúsuperior Páginas seleccionaremos «Crearuna Página Detrás».

Herramientas y juegosEl siguiente paso consiste en configurarla actividad que se va a incorporar y

Figura 5: Parámetros del juego relaciones.

Figura 6: Relaciones entre valores.

Page 84: Linux Magazine - Edición en Castellano, Nº 09

módulo de juego Lectura y lasdescribiremos en su momento.

Una vez completadas todas las posiblesrelaciones en el menú Archivo se haráun clic sobre Guardar.

El juego Relaciones trata de establecernexos de unión entre objetos representa-dos en imágenes (1 ó N) y unos criteriosde clasificación representados a través deetiquetas (relaciones o valores, comoveremos después). Para configurarlo pul-samos sobre la hoja Juegos y lanzamos(botón derecho sobre el icono y«Ejecutar») el juego. La figura 4 nosmuestra la ventana de configuración delmódulo.

Para la explicación vamos a crear unaactividad para trabajar los conceptos«Dentro-Fuera». Deberemos escoger enla lista el directorio que contiene lasimágenes y en la de relaciones, la quecorresponde. A continuación se desple-gará el cuadro de la figura 5. Para loscriterios «Dentro» y «Fuera» colocare-mos una etiqueta con una imagen sim-bólica. Es importante colocarlas en elmismo orden en se han activado las

casillas «Dentro» y «Fuera» en elapartado Presentación de

Relaciones para que el pro-grama clasifique correc-

tamente las imáge-nes. Si no se elige

una etiquetasim-

bólica el programa presentará una pape-lera con un texto debajo de la mismaaludiendo al criterio de clasificación delas imágenes.

Otros ejemplos: valoresmatemáticos y lecturaDecíamos que dentro del juegoRelaciones es posible vincular imágenescon valores y así trabajar los conceptosmatemáticos de cantidad -suma, resta,multiplicación y división- utilizando losoperadores matemáticos =, != , >, <,>=, <=, < x <, etc…, en las etique-tas. La aplicación eligirá aquellas imáge-nes necesarias para poder establecer vín-culos de unión con la etiqueta presenta-da en pantalla (figura 6).

Otra aplicación de la herramientaRelaciones se da en el Juego Lectura.Cuando describíamos el uso de la herra-mienta decíamos que las casillas situa-das debajo de las flechas de direcciónizquierda-derecha de la figura 7(Acciones) establecen criterios para queel niño/a discrimine auditiva y visual-mente si el nombre de una imagen con-

tiene o no lasletras, fonemasy sílabas.También esposible asociaruna imagen conun texto escrito,e incluso discri-minar su correc-ta ortografía oformación delplural.

El juegoLectura (figura8) se organizapor tanto aten-diendo a seis cri-terios diferentes:

1) Reconocimiento de Sílabas. 2)Reconocimiento de Fonemas. 3)Reconocimiento de Letras. 4)Reconocimiento de la AsociaciónImagen-Texto (nombre, frase…) 5)Reconocimiento de la Ortografía correcta6) Reconocimiento de la formación delPlural

La imaginación del profesorado y lapericia en el diseño de imágenes puedenhacer posible cualquier criterio de clasifi-cación o relación. La figura 8 muestra undetalle de la configuración del juego;vamos a seleccionar palabras que empie-cen por la sílaba «ba». La figura 9 nosmuestra el juego en acción.

¿Cómo se añade una activi-dad a una hoja?Pulsando con el botón derecho sobre lahoja creada aparece un menú. Allí des-plazamos el ratón hasta Añadir activi-

dad-lúdica (figura 10). Esta acción haceque se abra otro cuadro que contiene lasactividades guardadas en la base dedatos clasificadas por edades. Al pulsarsobre una de ellas se rellenan automáti-camente casi todas las casillas de la partederecha y el/la profesor/a sólo deberáponer un nombre a la actividad y unicono (figura 11, pequeño anticipo de lapróxima versión y de los materiales quese están creando).

Balance pedagógicoSí, balance pedagógico. No vamos aentrar en las peculiaridades de la aplica-ción desde el punto de vista de un des-arrollador o de un localizador. Ni vamosa incidir en la solución cliente-servidormás que, en tanto que permite la reali-

LINUX USER • Educación

84 Número 09 W W W . L I N U X - M A G A Z I N E . E S

Figura 9: El juego lectura en acción.

Figura 8: Parámetros del juego lectura.

Figura 7: Configuración del juego lectura.

Page 85: Linux Magazine - Edición en Castellano, Nº 09

dad de un proyecto pedagógico deéxito.

En este par de artículos sólo se hanpodido abordar un par de motores dejuego, pero si tenemos en cuenta los 22restantes, con todas sus potencialidades,permiten de forma firme y suficiente uncambio metodológico importante en lasaulas: el gran número de módulos, asícomo la posibilidad de adaptar las activi-dades a las capacidades de cada alum-no/a y de llevar un seguimiento del pro-ceso, hacen que a través de esta aplica-ción se pueda integrar el ordenador deforma plena en el aula de Infantil y abrela posibilidad de crear un Proyecto edu-cativo donde las actividades sobre sopor-te de papel queden bastante reducidas.

Para los alumnos ha sido toda unaexperiencia enriquecedora y llena deanécdotas, como la de que en los prime-ros días de contacto con los equipos, enlas aulas de tres años querían utilizar elratón como un mando a distancia; tam-bién les ha costado aprender a situar enel espacio y reproducir sobre una cuadrí-cula o rejilla un dibujo constituido porformas geométricas, pero ha terminadopor ser la actividad que más les gusta.

Los alumnos han aprendido aorientarse perfectamente por la aplica-ción. Si se dice: «hay que ir a la “A” deATNAG», saben lo que es. Identifican losordenadores como un elemento más delaula y de su entorno de trabajo, como unmural o el color de la puerta, de talmodo que cualquier variación (no olvi-demos que son equipos obsoletos y reu-tilizados, y al recibir algo en mejor esta-do, se cambia) es notada en seguida.

Queremos destacar que la experienciasirve para romper un lugar común en elpensamiento de los profesores: aunquemuchos asociemos la máquina al indivi-dualismo, hemos observado que para losniños es un motivo más de socializacióny ayuda mutua: unos a otros se enseñanel mecanismo de la actividad.

Aunque en la actualidad la Herramientade Autor ATNAG sigue en desarrollo y setrabaja en contacto con el autor aportandosugerencias y comentarios, para el Grupo

de Trabajo de Profesores y Profesoras delCentro Corazón de María, uno de los obje-tivos prioritarios es realizar las actividadespara cada Unidad Didáctica de los nivelesde 3, 4 y 5 años, con el deseo de ponerlo alservicio de cualquier Centro Educativo através de la web del Proyecto COR-EDUX.Se es consciente que el proceso es muylaborioso y se apela a la participación demás profesorado en el grupo de trabajo enlínea.

La colaboración se ha pedido tambiéna diseñadores gráficos de software libre,para poder obtener imágenes sin dificul-tades de licencias. Como se dijo en el pri-mer artículo, el Proyecto COR-EDUXquiere ser una propuesta de enlace entredesarrolladores, diseñadores, maestros ypedagogos por un Proyecto EducativoGNU/Linux desde la Educación Infantil.

Y en el próximo número…Hay entre los profesores una demandageneralizada de orientación sobre recur-sos educativos, dónde y cómo encontrarlos materiales adecuados para cada nively actitud pedagógica. La necesidad de uncatálogo de recursos educativos pareceevidente; y sin embargo las solucionespropuestas hasta ahora fallan por moti-vos que analizaremos. PresentaremosGNU Edu, un muy interesante indexadorcon un motor de búsqueda que puedeutilizar palabras clave y objetivos educa-tivos mínimos y la posibilidad de quesean los profesores los que publiquen losrecursos y los acompañen de los datos(licencia, destinatarios, tipo de activi-dad…) adecuados. �

Educación • LINUX USER

85Número 09W W W . L I N U X - M A G A Z I N E . E S

María Dolores Almansa Tejada

es profesora de educación infan-

til en el Centro de Ed. Infantil

Corazón de María de Palencia,

coordinadora del Proyecto

Educativo GNU/Linux Cor-Edux

y asesora pedagógica de la

Herramienta de Autor ATNAG.

Juan Rafael Fernández García es

profesor de educación secunda-

ria y tiene una larga experiencia

en la traducción y documenta-

ción del software libre. Ha sido

coordinador de uno de los

Centros que participan en la

experiencia andaluza de integrar

las TIC en la educación y actual-

mente trabaja como asesor de

formación del profesorado.

Socio de OFSET.

LOSAUTIORES

Figura 11: Selección de la actividad.

Figura 10: Añadiendo una actividad.

Page 86: Linux Magazine - Edición en Castellano, Nº 09

que ha dado servicio durante muchosaños en plataformas Unix y Linux. Comompg123 no se publicó bajo licencia GPL,Joe Drew desarrolló una alternativa com-pletamente libre: el reproductor mpg321[2]. No hay grandes diferencias entreestas herramientas, por lo que las opcio-nes en las que nos detendremos se apli-can a ambas por igual.

La manera más cómoda de llamar alprograma es tecleando mpg123 archi-

vo.mp3 o mpg321 archivo.mp3. Almismo tiempo que reproduce el archivopor los altavoces, muestra informaciónadicional en el terminal (véase Listado1). Junto con la versión del programa, semuestra información como el título,artista y álbum (suponiendo que las eti-quetas ID3 estén correctamente relle-nas), así como la calidad del archivoMP3. Si es demasiada información paratu gusto, podemos evitar que se muestrecon la opción -q.

Para interrumpir la reproducción, pul-samos [Ctrl]+[Z] para enviar el procesoa segundo plano. Tecleando fg devolve-mos el proceso a primer plano y se conti-

núa la reproducción por donde la había-mos dejado. Para cerrar el reproductor,presionamos [Ctrl]+[C].

Hablando de OggOgg es una alternativa al formato MP3.Al ser un formato completamente abier-to, no patentado, orientado también aaplicaciones de streaming, Ogg propor-ciona un contenedor para codecs comoVorbis o FLAC. El codec Ogg Vorbis decompresión de audio con perdidas [3]también ofrece una mejor calidad queMP3. El paquete vorbis-tools, que estáincluido en la mayoría de las distribucio-nes, contiene una útil selección de herra-mientas:• ogg123: Un reproductor en

línea de comandos que fun-ciona de manera similar ampg123 o mgg321.

• oggdec: Un sencillo decodifica-dor que convierte Ogg Vorbisen WAV.

• oggenc: Convierte ficheros WAVy AIFF en Ogg Vorbis.

• ogginfo: Muestra información

86

LINUX USER • Línea de Comandos

86 Número 09 W W W . L I N U X - M A G A Z I N E . E S

Reproductores de audio desde la línea de comandos

ROCK Y CONSOLAROCK Y CONSOLA

Si disponemos de un equipopotente, reproductores comoamaroK o JuK no son sólo un

regalo para nuestros oídos, sino tambiénpara nuestra vista. Pero si tenemos unordenador ya tirando a viejo, no tenemosporqué renunciar a escuchar músicamientras trabajamos. Gracias a los lige-ros reproductores que funcionan desdela línea de comandos para MP3 y OggVorbis, sólo necesitaremos abrir un ter-minal en modo texto.

La otra ventaja es que estos programasse integran perfectamente con otrasórdenes de línea de comandos. Podemoshacer búsquedas en nuestro disco y conlos resultados crear automáticamenteuna lista de reproducción. Y en cuanto aconversiones a formato WAV (por ejem-plo para grabar canciones en audio CD),la línea de comandos es definitivamentemejor que cualquier interfaz gráfica.

Música ligera con mpg123 ympg321mpg123 [1] es una herramienta en líneade comandos con una larga trayectoria,

No siempre es necesaria una apli-

cación con interfaz gráfica para

escuchar canciones en MP3 u Ogg

Vorbis. En el artículo de este mes,

echaremos un vistazo a estas apli-

caciones que rocanrolean desde

la línea de comandos.

POR HEIKE JURZIK

Page 87: Linux Magazine - Edición en Castellano, Nº 09

87

Línea de Comandos • LINUX USER

87Número 09W W W . L I N U X - M A G A Z I N E . E S

de los archivos Ogg en línea decomandos.

• vcut: Herramienta para cortarfragmentos de archivos OggVorbis.

• vorbiscomment: proporcionasoporte para editar etiquetasVorbiscomment.

El reproductor ogg123 es todo lo quenecesitamos para escuchar archivos OggVorbis. El Listado 2 es un ejemplo de lasalida que se muestra por pantalla. Denuevo, podemos usar los comandos decontrol habituales: [Ctrl]+[Z] para pau-sar la reproducción, fg para continuar y[Ctrl]+[C] para cerrar el programa. Aligual que mpg123 y mpg321 podemossuprimir la salida de información especi-ficando el parámetro -q.

De una tacadaPara reproducir varios archivos seguidoscon mpg123, mpg321 u ogg123, sólotenemos que especificar los nombres alejecutar el programa:

mpg321 U

05_Lily_Of_The_Valley.mp3 U

08_Stone_Cold_Crazy.mp3 U

09_Dear_Friends.mp3

o bien

ogg123 U

01_Barenaked_Ladies_- U

_Celebrity.ogg 02_ U

Barenaked_Ladies_- U

_Maybe_Katie.ogg ...

Por supuesto podemos usar los típicoscomodines y especificar cosas comompg321 *.mp3 para escuchar todos losarchivos MP3 (o ogg123 *.ogg para todos

los Ogg Vorbis) del directorio en el quenos encontremos. Pulsando [Ctrl]+[C]interrumpimos la reproducción del archi-vo y pasamos al siguiente. Para salir delprograma en este caso, debemos pulsar[Ctrl]+[C] rápidamente dos veces segui-das.

Si no tenemos los archivos de audio ennuestro equipo demasiado organizados,sino que están dispersos por subdirecto-rios en todo el disco, puede que quera-mos localizarlos ayudándonos delcomando find:

mpg321 $(find ~ -nombre "*.mp3")

Esta sentencia find busca archivos con laextensión .mp3, empezando en nuestrodirectorio de usuario (indicado por elsimbolo ~), en todos los subdirectorios.El símbolo del dolar y los paréntesis ledicen al bash que pase la salida delcomando como argumento a mpg321.

Las cosas se ponen más delicadas sinuestros ficheros incluyen espacios enblanco o caracteres no estándar: el resul-tado típico es una lluvia de mensajes deerror. Lo arreglaremos con un sencillotruco de línea de comandos:

find ~ -name "*.ogg" U

| ogg123 -@ - -z

El comando find se ejecuta en primerlugar. Todos los archivos que encuentre

se pasan por tubería a la llamada aogg123, que lee desde la entrada están-dar (-) y edita la lista de archivos comouna lista de reproducción (gracias a laopción -@). Con el último parámetro, -z,nos aseguramos de que ogg123 repro-duzca los archivos de manera aleatoria,en lugar de secuencialmente. Tantompg123 como mpg321 entienden losmismos parámetros, por lo que estetruco también es válido para archivosMP3.

ConvertidosPara guardar nuestra colección de MP3en un CD de audio y poderlo escuchar ennuestra cadena de música, por ejemplo,

$ mpg321

01_Keep_Yourself_Alive.mp3

High Performance MPEG 1.0/2.0/2.5

Audio Player for Layer 1,2, and

3.

Version 0.59q (2002/03/23).

Written and copyrights byJoe

Drew.

Uses code from various people.See

'README' for more!

THIS SOFTWARE COMES WITH ABSOLU-

TELY NO WARRANTY! USE AT YOUROWN

RISK!

Title : Keep Yourself Alive

Artist: Queen

Album : Queen Year : 1973

Comment: Genre : Rock

Playing MPEG stream from

01_Keep_Yourself_Alive.mp3 ...

MPEG 1.0 layer III, 128 kbit/s,

44100 Hz joint-stereo

Listado 1: Salida dempg123

ID3:Los archivos de audio (incluyendoMP3, Ogg Vorbis, WMA y AAC) guardaninformación en las llamadas etiquetasID3. La estándar para etiqueta ID3 descri-be dos variantes: ID3v1 y ID3v2.x. ID3v1restringe los meta-datos a un bloque de128 bytes con una estructura fija al finaldel archivo. Al contrario que su predece-sor, ID3v2 (la versión actual es la 2.4:ID3v2.4) no sitúa la información en losúltimos bytes, sino que precede a losdatos de audio. La información puedellegar hasta los 256Mbytes y está organi-zada en series de tramas (que puedenllegar a los 16Mbytes). Las etiquetasID3v2 pueden guardar muchísima másinformación (incluso imágenes), y adi-cionalmente soporta el juego de caracte-res Unicode. Los dos estándares ID3 noson mutuamente excluyentes: una apli-cación que acceda a la meta-informa-ción simplemente eligirá la variante queentienda.

GLOSARIO

Figura 1: La ayuda integrada describe las

funciones principales.

Page 88: Linux Magazine - Edición en Castellano, Nº 09

extensión .mp3, sino que en sulugar tendría la extensión.wav). El segundo parámetro esel archivo de salida $i.

El comando para convertirOgg Vorbis a formato WAV esmenos complicado. El progra-ma oggdec cambia automática-mente las extensiones y simple-mente recibe como entrada elarchivo a convertir.

$ oggdec sunrise.ogg

OggDec 1.0

Decoding "sunrise.ogg" U

to "sunrise.wav"

[100.0%]

Para convertir todos los archivos de unapasada, sólo tenemos que teclear oggdec

*.ogg.

Radiocassette en el termi-nalComo hemos podido comprobar, lasaplicaciones vistas hasta ahora carecende controles interactivos. Si necesita-mos una aplicación que proporcioneestos controles, pero sin el costo enmemoria de una interfaz gráfica deusuario, mp3blaster[4] puede ser loque andamos buscando. Este reproduc-tor admite archivos MP3, WAV y OggVorbis, y se incluye en la mayoría de lasdistribuciones. mp3blaster no necesitaun entorno de interfaz gráfica: gracias aNcurses se ejecuta en una ventana determinal y nos proporciona un controlbasado en botones.

Para ejecutar el reproductor, tecleamosmp3blaster en línea de comandos. Losatajos de teclado se muestran en la partesuperior derecha de la ventana.Pulsando [+] y [-] navegamos a derechae izquierda de la lista para ver otros

comandos. mp3blaster ofrece una infor-mación realmente amplia cuando repro-duce los archivos, incluyendo detallestécnicos del mismo, la lista de reproduc-ción, y la próxima canción que sonará.Podemos pulsar el símbolo de interroga-ción (?) para desplegar u ocultar laayuda integrada.

Si pulsamos [F1] entramos en elmodo de administración de archivos,donde podemos seleccionar los archi-vos a reproducir. Esto cambia tambiénlos atajos de teclado mostrados en laparte superior de la ventana. En laparte central de la ventana se mues-tran los archivos y directorios en lacarpeta desde donde lanzamos elreproductor. Podemos usar las flechasde dirección o [PgUp] y [PgDn] paramovernos entre estos. Para cambiar dedirectorio, sólo tendremos que presio-

nar la tecla Enter y para subir unnivel, seleccionar ../.

Para escuchar un archivo,usamos las teclas de direc-

ción hasta posicionarnossobre éste y presionamos

Enter. Si queremos selec-cionar varios archivos

y ponerlos en unalista de reproduc-ción, pulsamos labarra espaciadorapara seleccionar una

tendremos que convertir previamente losarchivos comprimidos a formato WAV.mpg123 y mpg321 nos ofrecen el pará-metro -w para conseguir esto. Nóteseque debemos especificar el archivo desalida antes que el de entrada:

$ mpg321 -w archivo.wavU

archivo.mp3

...

[3:47] Decoding of U

archivo.mp3 finished.

Como sólo podemos procesar un soloarchivo de esta manera, es buena ideahacer la llamada a mpg123 dentro de unbucle for, con lo que conseguimos auto-matizar la conversión de multiples archi-vos. Para convertir todos los archivosMP3 de un directorio a WAV, podemosteclear:

for i in *.mp3; do mpg321 -w U

`basename $i .mp3`.wav

$i; done

Esta llamada asigna cada archivo con laextensión .mp3 a la variable i y luegoejecuta mpg321 -w con esta variable. Elprimer parámetro es de nuevo el archivode salida (hecho con el nombre sin la

LINUX USER • Línea de Comandos

88 Número 09 W W W . L I N U X - M A G A Z I N E . E S

$ ogg123

01_Barenaked_Ladies_-_Celebrity.o

gg

Audio Device: Advanced Linux

Sound Architecture (ALSA) output

Playing:

01_Barenaked_Ladies_-_Celebrity.o

gg

Ogg Vorbis stream: 2 channel,

44100 Hz

Title: Celebrity

Artist: Barenaked Ladies

Genre: Rock

Date: 2003

Album: Everything to Everyone

Track number: 01

Time: 02:00,12 [01:27,62] of 0

3:27,73 (110,7 kbps) Output

Buffer 96,9%

Listado 2: Salida de ogg123

Figura 2: mp3blaster muestra la siguiente canción de

la lista de reproducción.

Page 89: Linux Magazine - Edición en Castellano, Nº 09

canción (queda destacada), y presiona-mos [F1] para añadir las seleccionadas ala lista de reproducción. Podemos selec-cionar el directorio completo rápidamen-te invirtiendo la selección ([F2]). Estaopción selecciona automáticamentetodas las canciones de ese directorio,permitiendo que presionemos [F1] para

añadirlas a nuestra lista de reproduc-ción.

Presionamos la tecla [5]para comenzar la reproduc-ción. mp3blaster muestra lapista actual y la siguiente areproducir de la lista(véase Figura 2). Otrosatajos de teclado son [5](pausa), [4] (canción pre-via), [6] (siguiente can-ción), [2] (stop), [1](rebobinar) y [3](avance rápido). Latecla [F6] activa lafunción de repeti-ción. [F7] seleccio-na el modo dereproducciónaleatoria. Elmezcladorintegrado está

escondido en la parte inferior derechade la ventana, presionando [T] conmu-tamos entre los diferentes dispositivos.Podemos presionar [<] (más bajo) o[Shift]+[<] (más alto) para fijar elvolumen. Aparecerá un porcentajepara tener más información del volu-men actual. Por último, pulsando [Q]cerramos el programa.

Ordenar la magiaSi pulsamos [F1] para cambiar al modode selección, los distintos formatos deaudio se muestran en verde por defecto.mp3blaster muestra las listas de repro-ducción, típicamente con extensión.m3u o .lst, en amarillo. Si selecciona-mos una lista de reproducción pulsandoEnter, mp3blaster añade automáticamen-te todas las canciones a la lista de repro-ducción actual.

Igual de sencillo es crear una nuevalista. Para guardar la selección actual dearchivos como una lista de reproducción,pulsamos en primer lugar [F4], luego ledamos un nombre a la lista (añadiendo laextensión .lst o .m3u) y pulsamos [Enter]para confirmar. Si necesitamos revisar uordenar la lista, podemos valernos de latecla [D] para borrar una canción de lalista. Pulsando [M] o [Shift]+[M] cam-biamos el orden de las canciones de lalista. Asimismo podemos borrar comple-tamente una lista pulsando [C].

Un buen comienzomp3blaster tiene unas cuantas opcionesen línea de comandos que nos permitencontrolar la manera en la cual se com-portará el reproductor al ejecutarse. Paracargar automáticamente una lista ycomenzar a reproducirla inmediatamen-te, usaremos el parámetro -a suminis-

trando el nombre de la lista:

mp3blaster -a queen.lst

Para cargar una lista sin empezar areproducirla, especificamos -l en

su lugar. Para habilitar unbucle infinito para esa lista,

usaremos la opción -R

(para “repetir”):

m p 3 b l a s t e r - a

queen.lst -R

Además de pasarleuna lista al reproduc-

tor, podemos también especificarle múl-tiples nombres de archivo. Tras reprodu-cirlas, mp3blaster se cerrará automática-mente. Para que no se cierre, podemosañadir el parámetro -q.

Totalmente automáticoPodemos modificar la apariencia y elcomportamiento de mp3blaster a travésdel archivo de configuración escondidoen nuestro directorio de usuario (~/

.mp3blasterrc). El programa viene conun fichero de ejemplo que podemosmodificar con cualquier editor de texto.El fichero-plantilla sample.mp3blasterrc

normalmente está localizado en/usr/share/mp3blaster/, aunque losusuarios de Debian tendrán que buscarun archivo comprimido en/usr/share/doc/mp3blaster/examples/.

El fichero de texto tiene una lista deentradas comentadas, cada líneacomenzando con unas barras cruzadas(#). Si eliminamos las barras, habilita-remos la funcionalidad correspondien-te. Además del comportamiento generaldel programa, podremos redefinir loscolores o incluso los atajos de teclado.Puede ser buena idea echarle un vista-zo a la página man del reproductor(man mp3blaster) para más consejos ytrucos de cara a nuestro ~/.mp3blas-

terrc. �

Línea de Comandos • LINUX USER

89Número 09W W W . L I N U X - M A G A Z I N E . E S

[1] Página de mpg123: http://www.

mpg123. de/

[2] Página de mpg321: http://mpg321.

sourceforge.net/

[3] Página de Ogg Vorbis: http://www.

vorbis.com/

[4] Reproductor mp3blaster: http://www.

stack.nl/~brama/

RECURSOS

Ncurses: Biblioteca libre escrita en C,que incluye soporte para el control deprogramas a través de teclado y ratón,así como de ventanas múltiples.

GLOSARIO

Heike Jurzik

estudió Alemán,

Informática e

Inglés en la Uni-

versidad de Colo-

nia, Alemania.

Descubrió Linux

en 1996 y quedó fascinada con

la potencia de la línea de coman-

dos desde ese momento. En su

tiempo libre puede que la

encuentre en clases de folclore

irlandés, o visitando Irlanda.

LAAUTORA

Page 90: Linux Magazine - Edición en Castellano, Nº 09

90

Eventos

90 Número 09 W W W . L I N U X - M A G A Z I N E . E S

Resumen de las jornadas y eventos del verano

VERANO MOVIDITO

En verano se acaba la universidad, la gente se coge sus vacaciones, los niños se empaquetan al campa-

mento, hace calor, mucho calor… y el ambiente es propicio para montar algún evento de proporciones mon-

struosas con el fin de difundir el uso del software libre.

Primera parada del verano: LaCampus Party [1], celebrada en laCiudad Ferial de Valencia. Con un

afluencia de público espectacular (másde 5500 participantes, según los datos dela organización), la Campus arrancó el25 de julio y se clausuró el 31, dejandoatrás siete días de intensa creatividad yactos.

Un Caos que Funciona BienLa party se dividió en siete seccionestemáticas: Juegos, Campuscrea,

Campusbot,Modding,Astronomía,Desarrollo deJuegos y la ZonaLibre. Todosellos registrarongran cantidadde actividades,talleres y con-cursos.

En un princi-pio, la zona

Libre iba a englobar tanto el Campusboty Desarrollo en vista de que en ambaszonas el software elegido para desarrolloera mayoritariamente libre. Pero la enor-me cantidad de participantes en todaslas áreas obligó a la escisión. A pesar deello, la zona libre registró la segundamayor afluencia después de la zona dejuegos con más de 1000 participantes.

De hecho, la zona libre empezó suvida como zona de “Software Libre”, yasí rezaba en el cubo del área, pero amedida que iba aumentando de tamañoy abarcando más y más temas, se optópor rebautizar la secciónsimplemente como“Libre”, dando cabida aponencias y actividadesrelacionadas no sólo conel software, sino con elmovimiento delCopyleft (a destacar laexposición de cuadros“libres” del artistaClaudio Zirotti conlicencia Creative

Commons, destinada a que los partici-pantes de la zona pudieran crear obrasderivadas de lo expuesto); la libertadsocial (tuvimos la oportunidad de depar-tir con Claudio Prado, asesor tecnológicodel gobierno brasileño y enterarnos deprimera mano como se está llevando acabo la implantación la tecnología y filo-sofía libre en Brasil) y la libertad de tra-siego de medios entre iguales (conponencia de Jorge Cortell incluida).

Como era de esperar en un evento deesta envergadura, no faltó la polémica,precisamente tanto por la intervenciónde Cortell (que ya lleva tiempo en el

Page 91: Linux Magazine - Edición en Castellano, Nº 09

91

Eventos

91Número 09W W W . L I N U X - M A G A Z I N E . E S

punto de mira), como con respecto a lasnormas del Campus que prohibían explí-citamente el uso de redes de P2P paradescargas masivas. Literalmente se veta-ba “la apología de la piratería”, signifi-que lo que signifique eso, y contamos

con una más que notoriapresencia de organismos como la SGAE yACAM en actividades y foros.

En otro orden de cosas, en la zonalibre, destacaron

las ponenciasdel mencionado Claudio Prado, que noshabló de la implantación de SoftwareLibre en Brasil; Xavi de Blas, que presen-tó su interesante proyectoChronoJump (ver [2]) queaglutina la informática apli-cada el deporte y el hardwarey software libres; DavidGascón, que departió sobreredes verdaderamente libres;y Juan José Porta, ingenierojefe de IBM y uno de los res-ponsables del proyectoMarenostrum, el superorde-nador que IBM acaba deinstalar en Barcelona.

En suma que, el balancegeneral, tanto por parte dela organización como losparticipantes fue positivo,ya que se potenció losaspectos más creativos delos asistentes y las char-las, ponencias y talleres fueron de altu-ra (menos el de nuestro director, PaulC. Brown, que fue un muermo total),productivos y contaron con un partici-pación extraordinaria (menos el dePaul, otra vez, al que acudie-ron cuatro gatos despistadosque se colaron por error ydespués se arrepintieron).

Andalucía CentroEn Mollina, en el centrogeográfico de Andalucía,se celebraron desde el 3 al11 de agosto las SegundasJornadas TecnológicasAndaluzas de SoftwareLibre [3] en el marcodel CEULAJ (casual-

mente el mismo lugar donde nacieron lasCampus Parties).

Durante el evento, aparte de poderrelajarnos en la piscina, hemos disfruta-

do de la presencia de Richard Stallman,que nos habló de “Software Libre en laÉtica y la Práctica”; y Juan TomásGarcía, presidente de Hispalinux, quenos informó del próximo paso en el

movimiento de software

Page 92: Linux Magazine - Edición en Castellano, Nº 09

libre y como aplicar su filosofía y lasideas derivadas de ella a la sociedad y ala política en su charla “Hackeando elPlaneta”.

Paul C. Brown volvió a aburrir ala concurrencia con una charlasobre piratería y licencias; yAntonio Larrosa nos enseñó lasnovedades del escritorio KDE ensu ponencia “Mundo KDE yaKademy 2005”.

Otros ponentes de altura inclu-yeron a Ismael Olea del proyectoLUCAS, J.J. Merelo deBarrapunto, y Miriam Ruíz deDebian Women/ALIXA, que nosinstruyó sobre el papel de las mujeres enel ámbito del Software Libre.

Aparte de ponencias, charlas y confe-rencias, se desarrollaron diversos talleressobre introducción a y administración deGuadalinex, creación de paquetesDebian, aplicaciones ofimáticas bajoLinux, programación en Java utilizandoEclipse y Netbeans, Linux

Eventos

92 Número 09 W W W . L I N U X - M A G A Z I N E . E S

RECURSOS

sobreclusters, diseñográfico con soft-ware libre y un larguísimo etcétera.

En suma, unas jornadas interesantes ymuy recomenda-

bles que esperamos volver a visitar ensubsiguientes ediciones.

Listo para DespegueMientras escribimos, esto la aKademy[4], el congreso anual de KDE, calientamotores. Durante seis días, la flor y lanata del desarrollo KDE se concentrará

en la universi-dad de Málagapara difundir eluso de KDEentre los usua-rios, marcar losobjetivos paralos desarrolla-dores y, en elúltimo tramodel congreso,entregarse auna orgía des-enfrenada deprogramaciónde 120 horascon el fin depropulsar elescritorio ysus aplica-

ciones a nuevas cotas de usabilidady diseño.

Entre los ponentes másdestacados, se encuentranMark Shuttleworth deCanonical, que disertarásobre Ubuntu y Kubuntu,Mirko Boehm de Kdevelop

y Aaron Seigo del proyectoPlasma.

Y, tranquilos, en ésta nohay ponencias de Paul C.Brown.

Y lo que vienePara que no se diga que sólo os conta-mos cosas ya pasadas, sabed que paraoctubre tenemos la segunda entrega dela Conferencia Internacional delSoftware Libre, el primer tramo de lacual se celebrará en Mérida los días 25 y26 y la segunda se celebrará en Málagaen febrero del 2006 (ver [5]).

Por supuesto que Linux Magazineestará allí para contároslo. �

[1] Campus Party 2005: http://web5.

campus-party.org/

[2] La página de Xavi de Blas: http://

www.deporteyciencia.com/wiki.

pl?Usuarios/Parleblas

[3] Segundas Jornadas TecnológicasAndaluzas de Software Libre: http://

jornadas.cursosdeverano.org/

[4] aKademy 2005: http://

conference2005.kde.org/

[5] Open Source World Conference II:http://www.

opensourceworldconference.com/

Page 93: Linux Magazine - Edición en Castellano, Nº 09

Más del 30% de descuento respecto al precio de portada: Consigue 12 números por 54’90 Euros y todos los DVDs ¡Gratis!

A diferencia de otras publicaciones, Linux Magazine no llenará tu buzón de recordatorios para que renueves tu subscripción. Ésta se renovaráautomáticamente cada año. Recibirás una confirmación aproximadamente 30 días antes del final de tu periodo de subscripción, pero no serequiere que hagas nada para seguir suscrito.

¡No te pierdas Linux Magazine nunca más! La subscripción te asegura que recibas los conocimientos Linux de más alta calidad en tu domiciliocada mes.

Si por cualquier motivo decides dejar de leer Linux Magazine, puedes cancelar tu subscripción en cualquier momento. Te abonaremos el preciode todos los números que no hayas recibido. Sin preguntas, sin fechas de cancelación, sin problemas.

Linux Magazine es algo más que una revista de Linux. Patrocinamos grupos, congresos, proyectos y eventos relacionados con el Software Libre.Suscribiéndote a Linux Magazine garantizas que podamos seguir apoyando al Software Libre allá donde haga falta.

Page 94: Linux Magazine - Edición en Castellano, Nº 09
Page 95: Linux Magazine - Edición en Castellano, Nº 09

95

Trucos

95Número 09W W W . L I N U X - M A G A Z I N E . E S

Problemas con el arranque con GRUB

¡GRUB! ¡GLUBS!Este mes los redactores de Linux

Magazine lidian con un GRUB de

un lector que se niega a hacer su

labor.

Un lector nos escribe con lasiguiente pregunta:

He intentado instalar hasta 3

veces la distribución de Fedora que adjun-

tan este mes en su revista y (Linux

Magazine nº 8), aunque parece que todo

el proceso se realiza correctamente, al

intentar arrancar de nuevo el ordenador,

simplemente me sale una pantalla negra

con el mensaje: GRUB, a la espera de que

introduzca algo. Pero da igual lo que

introduzca, ni la contraseña que he elegi-

do como root, ni nada. Y no solo eso, sino

que de esa pantalla no sale, con lo que

tampoco puedo arrancar Windows.

Hasta ahora, tenía instalada una distri-

bución de Suse y jamás tuve ese problema:

salía el GRUB y podía arrancar la parti-

ción que quisiera, Suse o Windows, que es

la que tenía por defecto. También con esta

distribución de Fedora parece que esto es

posible durante la instalación, pues en

uno de los intentos elegí por defecto

Windows (en los otros dos Fedora) pero

nada. Y por otro lado no ha ocurrido nada

extraño durante la instalación. De hecho,

en el segundo y tercer intento, lo detectaba

como ya instalado y había que elegir

Nueva Instalación para seguir adelante.

¿Sabriáis decirme cuál es el problema,

o qué es lo que estoy haciendo mal?

Bueno, la contraseña de root, a estasalturas, en poco nos va a ayudar, puestoque el sistema todavía no ha arrancado.De hecho, al parecer, Fedora, por algúnmotivo que desconocemos, le ha instala-

do un fichero menu.lst vacío. Le explica-mos: GRUB utiliza un fichero, habitual-mente situado en /boot/grub que contie-ne un menú con las opciones de arran-que. Para un ejemplo, véase el Listado 1.

La primera línea indica qué sistema searrancará por defecto. En este caso setrataría del Mandrake 2.6.10 (GRUBcuenta a partir de 0, por tanto Ubuntu es0, Mandrake 10 es 1, etc.).

La segunda línea indica cuanto tiempoesperará GRUB antes de arrancar el siste-ma por defecto. Y la tercera línea indicaqué sistema se arrancará en el caso deque falle el elegido por defecto.

A continuación vienen las opcionesque se presentarán en pantalla al arran-car GRUB.• title es lo que se mostrará en el

menú y ahí puede escribir loque desee.

• kernel le indica a GRUB quénúcleo Linux se desea arrancar(es perfectamente factible tenervarios núcleos en una mismapartición y escoger el que másnos interese). Mire en el direc-torio /boot y escoja algo que sellame algo así como vmlinuz-X-

X-X, donde las tres X indican elnúmero de versión del kernel.

Además tendrá que indicar la particióndonde se halla el kernel. Recuerde queGRUB cuenta a partir de 0. Por tanto, enel ejemplo anterior, (hd0,4) indica en laquinta partición del primer disco duro.

También tiene que indicar dónde se vaa montar el directorio raíz. Cómo éste es

un parámetro que se pasa al kernel, ya nocontamos desde 0, sino que utilizamos la

Listado 1: menu.lst deGRUB máquina de Pris:

01 default 2

02 timeout 10

03 fallback 0

04

05 title Ubuntu

06 kernel (hd0,7)/vmlinuz ro

root=/dev/hda8

07 initrd (hd0,7)/initrd.img

08

09 title Mandrake10

10 kernel (hd0,4)/boot/vmlinuz

ro root=/dev/hda5

psmouse.proto=imps

11 initrd

(hd0,4)/boot/initrd.img

12

13 title Mandrake 2.6.10

14 kernel

(hd0,4)/boot/vmlinuz-2.6.10-1m

dk ro root=/dev/hda5

psmouse.proto=imps

15 initrd

(hd0,4)/boot/initrd-2.6.10.img

16

17 title Guadalinex

18 kernel

(hd0,0)/boot/vmlinuz-2.6.5 ro

root=/dev/hda1

psmouse.proto=imps

Page 96: Linux Magazine - Edición en Castellano, Nº 09

nomenclatura típica deLinux, es decir hda5 (loque para GRUB es hd0,4).Lo montamos, por ciertocomo sólo lectura (ro),que es la manera están-

dar de proceder.En este caso, tam-

bién le decimos alkernel el tipo deratón del que dispo-

nemos (un touchpad de un portátil) parapoder optar a utilizar “tapping”.

En muchos casos, las distros modernasutilizan un fichero initrd. Tiene que buscar-lo en el mismo sitio que el fichero vmlinuz.

Pero, se preguntará, ¿cómo accedo atodo esto si no puedo arrancar el siste-ma? Muy fácil: cójase su DVD de FedoraCore 4 e insértelo en su lector. Arranquey en la primera pantalla de boot, pulse latecla “F2” para ver las opciones.

Verá que una de las opciones es “linuxrescue”. Escriba eso en la línea deprompt. Lo que vamos a hacer es inten-tar rescatar el sistema.

Escoja como idioma el español y elteclado “es” para seguir. No importa sihabilita o no tarjetas de red: no lasvamos a utilizar. Escoja la particióndonde instaló Fedora y el modo rescatese lo montará bajo /mnt/sysimage/. Conel fin de poder modificar algo, habremosde escoger la opción que nos permitaescribir en la partición.

No todo está perdidoSi tiene Windows en una partición ySuse en otra e instaló Fedora en una ter-cera, y el menu.lst de Suse es bueno (yaque dice que le funcionaba), puedeusted simplemente copiar el ficherodesde Suse a Fedora.

Para ello tendrá que tener montadasambas particiones. Nuestro consejo esque le eche un vistazo a su tabla de par-ticiones…

# cat /proc/partitions

A nosotros nos sale…

major minor #blocks name

3 0 39070080 hda

3 1 10257471 hda1

3 2 1 hda2

3 5 8908011 hda5

3 6 538146 hda6

Trucos

96 Número 09 W W W . L I N U X - M A G A Z I N E . E S

RECURSOS

3 7 11510541 hda7

3 8 7855753 hda8

Y monte todas las particiones montables(por su tamaño, probablemente hda1,hda5, hda7 y hda8 parecen particionesmontables. hda6 es swap, (utilice cat

/proc/partitions/swaps) por tanto, pasa-mos de ella) en directorios independientes.Puede crear directorios bajo /mnt/ con

# mkdir /mnt/hda1

# mdkir /mnt/hda5

Después vaya montando con…

# mount /dev/hda1 /mnt/hda1

# mount /dev/hda5 /mnt/hda5

Después vaya examinando los conteni-dos de /mnt/hdaX/boot/grub para ver sihay algún menu.lst utilizable. Puede uti-lizar para ello cat…

# cat/mnt/hdaX/boot/grub/menu.lst

o vi

# vi/mnt/hdaX/boot/grub/menu.lst

En este último caso, también podrá edi-tar el contenido de menu.lst (un tutorialde como utilizar vi, sin embargo, excedelos propósitos de este artículo).

Cuando haya encontrado su menu.lst

perdido, cópielo al directorio /boot/grub

de su partición Fedora Core 4.Supongamos que tiene su ficheromenu.lst de Suse en /mnt/hda3/boot/

grub/ y su Fedora Core 4 está en /mnt/

hda2, haría:

# cp /mnt/hda3/boot/grub/U

menu.lst /mnt/hda2/boot/grub/

Si eso funciona, podrá arrancar comohacía hasta ahora, pero tendrá que modifi-car hda3/boot/grub/menu.lst a mano paraincluir Fedora Core 4 (siga leyendo).

Todo Está PerdidoEn el caso de que decidiera sobreescribirSuse con Fedora, utilizaremos el modorescate para recabar información desdesus particiones. Vaya buscando los archi-vos vmlinuz y initrd y escriba su locali-zación en un papel.

Después tendrá que escribir un ficheromenu.lst a mano y guardarlo en el direc-

torio /boot/grub de Fedora (recuerde quepuede hacer todo esto desde el modorescate).

Imaginemos que tiene Fedora en hda2

y un

# ls /mnt/sysimage/boot/

le ofrece el siguiente aspecto:

config-2.6.11-1.1369_FC4

grub

initrd-2.6.11-1.1369_FC4.img

System.map-2.6.11-1.1369_FC4

vmlinuz-2.6.11-1.1369_FC4

Entonces sabe que la entrada paraFedora en menu.lst va a ser algo como

default=0

timeout=10

title Fedora Core 4

root (hd0,1)

kernel /boot/vmlinuz-U

2.6.11-1.1369_FC4 roU

root=hda2

initrd /boot/initrd-U

2.6.11-1.1369_FC4.img

Para Acceder a WindowsBueno, eso necesitaría un artículo ensí mismo. Podemos recomendarle elrecurso [1] o el artículo “rm -fR /” dela página 92 a la 94 del número 7 deLinux Magazine. También puede con-sultar la excelente FAQ de GRUB en[2], pero una entrada en menu.lst paraWindows podría tener el siguienteaspecto (suponiendo que Windowsestá en hda1):

title Windows

rootnoverify (hd0,1)

makeacive

chainloader +1

boot

Y debería funcionar. Si no lo hace, refié-rase a los Recursos citados más arriba.�

[1] GRUB y Windows: http://www.

geocities.com/epark/linux/

grub-w2k-HOWTO-es.html

[2] FAQ de GRUB: http://gnu.archive.hk/

software/grub/grub-faq.es.html

Page 97: Linux Magazine - Edición en Castellano, Nº 09

EVENTOS

97Número 9W W W . L I N U X - M A G A Z I N E . E S

LinuxWorld Conf. & Expo UKFecha: 5-6 Octubre

Ciudad: Londres, Reino Unido

Sitio Web:

www.linuxworld

expo.co.uk

akademy 2005Fecha: 27 Agosto - 4 Septiembre

Ciudad: Málaga, España

Sitio Web:

http://confe-

rence2005.kde.org

OSWC 2005Fecha: 25-26 Octubre

Ciudad: Mérida, España

Sitio Web:

http://www.opensource-

worldconference.com

Información de Contacto

DirectorPaul C. Brown

CoolaboradoresPaul C. Brown, Jose Manuel González Vida, JuanRafael Fernández, Pedro Orantes, José María Ruíz,Alberto Planas.

TraductoresPaqui Martín Vergara, Paul C. Brown, AntonioRueda, Víctor Tienda.

MaquetaciónSergio Hardasmal

Diseño de PortadaPinball([email protected])

Publicidadwww.linux-magazine.es/pub/

Para EspañaPaul C. [email protected]@linuxnewmedia.esTel.: (+ 34) 951 010 556Móvil.: (+ 34) 655 036 836Fax.: (+ 34) 951 010 516

Sergio Hardasmal [email protected].: (+ 34) 951 010 556 Fax.: (+ 34) 951 010 516

Para el Resto del MundoBrian Osborn [email protected]

Tel.: (+49) 6509 910 495Fax.: (+49) 6509 910 497

Director EditorialPaul C. Brown

Director de ProducciónSergio Hardasmal [email protected]

Subscripciones: www.linux-magazine.es/magazine/subs

Precios Subscripción España: 49,50 €Europa: 59,90 €Resto del Mundo - Euros: 79,90 €Resto del Mundo - Dólares U.S.A.: $ 94,90

Tel.: (+34) 951 010 556Fax.: (+34) 951 010 516 [email protected]

Linux MagazineLinux New Media Spain, S.L.Avda. Juan López Peñalver, 2129590 - Campanillas Málaga ESPAÑA [email protected].: (+34) 951 010 556Fax.: (+34) 951 010 516www.linux-magazine.es - Españawww.linux-magazine.com - Mundowww.linux-magazine.de - Alemania

Si bien se toman todas las medidas posibles paragarantizar la precisión del contenido de los artículos publi-cados en Linux Magazine, la editorial no se hace responsable de imprecisiones aparecidas en larevista. Asimismo, Linux Magazine no compartenecesariamente las opiniones vertidas por suscolaboradores en sus artículos. El riesgo derivado del uso del DVD y el material que contiene corren por cuenta del lector. El DVD es estudiado escrupu-losamente para confirmar que está libre de virus y errores.

Copyright y Marcas Registradas © 2004 Linux NewMedia Spain, S.L. Linux New Media Spain S.L. prohíbela reproducción total o parcial de los contenidos deLinux Magazine sin su permiso previo y por escrito.Linux es una Marca Registrada de Linus Torvalds.

Impreso en Alemania

Impresión: Dierichs Druck + Media GmbH

Distribución: SGEL

Depósito Legal: MA-116-2005

ISSN edición impresa: 1576-4079

ISSN edición online: 1699-2237

Calendario de Eventos

Evento Fecha Ciudad Sitio Web

akademy 2005 27 Agosto - 4 Septiembre Málaga http://conference2005.kde.org

LinuxWorld Conference & Expo Moscow 7 -9 Septiembre Moscú, Rusia www.linuxworldexpo.ru

International Computer Music Conference 5-9 Septiembre Barcelona,España www.icmc2005.org

Opensaar 2005 13-14 Spriembre Völklingen,Saar wwww.opensaar.de

LinuxWorld Conference & Expo South Africa 14-16 Septiembre Ciudad del Cabo,S.A. www.linuxworldexpo.co.za

php works 14-16 Septoembre Toronto,Canadá www.phparch.com/phpworks

New Security Paradigms Workshop 2005 20-23 Septiembre Lake Arrowhead,CA,EEUU www.nspw.org/current

LinuxWorld Conference & Expo UK 5-6 Octubre Londres,Reino Unido www.linuxworldexpo.co.uk

IT Underground 12-13 Octubre Varsovia,Polonia www.itunderground.org/en

LinuxWorld Conference & Expo NL 13-14 Octubre Utrecht,Holanda www.linuxworldexpo.nl

hack.lu 2005 14-15 Octubre Kirchberg,Luxemburgo www.hack.lu

AUUG 2005 16-21 Octubre Sydney,Australia http://auug.org.au/events/2005/auug2005

12th Annual Tcl/Tk Conference 24-28 Octubre Portland,Oregón,EEUU www.tcl.tk/community/tcl2005

Versteckte Computer Unkontrollierbare... 5-6 Noviembre Munich,Alemania www.fiff2005.de

International PHP Conference 2005 6-9 Noviembre Frankfurt,Alemania www.phpconference.com

LinuxWorld Conference & Expo NL 9-10 Noviembre Utrecht,Holanda www.linuxworldexpo.nl

LinuxWorld Conference & Expo Frankfurt 15-17 Noviembre Frankfurt,Alemania www.linuxworldexpo.de

linux.conf.au 2006 23-28 Enero Dunedin, Nueva Zelanda http://lca2006.linux.org.au

LinuxWorld Conference & Expo Australia 28-30 Marzo 06 Sydney, Australia www.linuxworldexpo.com.au

Page 98: Linux Magazine - Edición en Castellano, Nº 09

98

PRÓXIMO NÚMERO

98 Número 09 W W W . L I N U X - M A G A Z I N E . E S

NÚMEROPRÓXIMO

A LA VENTA: OCTUBRE 2005

INTEGRACIÓN WINDOWS - LINUXConvivir con Windows no siempre es fácil, pero aveces no hay más remedio. El mes que vienededicamos nuestra sección de portada a los intrinca-dos pasos que hay que dar para que Linux se llevebien con otros sistemas.Para empezar, abordaremos el espinoso temas de

los arranques duales y cómo evitar los problemasmás comunes de este proceso.Uno de los mayores problemas para trabajar con

Windows es su sistema de ficheros propietario NTFS.Hasta el momento no ha sido posible, por ejemplo,escribir de manera fiable utilizando los driversdisponibles para Windows… Insistimos: hasta ahora.Presentamos Captive NTFS, una herramienta quepermite el acceso a NTFS desde Linux y, en ciertamedida, a sistemas de ficheros Linux desde Win-dows.Correr programas bajo WINE puede ser un autén-

tico quebradero de cabeza si no se tienen las instruc-ciones adecuadas. Afortunadamente Linux Maga-zine trae un informe de 7 páginas en su número 10que explica los porqués y los cómos de este capa decompatibilidad

PRÁCTICOEl más novedoso de los APIsde Google ofrece interesantesposibilidades para el desar-rollador de aplicacionesJavascript. Acompáñanos enun paseo virtual por el mundode la mano de GMaps yAlberto Planas. En nuestro artículo sobreaudiostreams veremos

cómo capturar y grabarstreams de radios que ofre-cen sus emisiones a travésde Internet.

Linux dispone de múlti-ples y muy complejasopciones a la hora de elegirun motor de bases dedatos, pero a veces sólonecesitamos algo sencillo.Tellico puede ser la solu-ción.

DVD: SUSE 9.3El DVD del número 10 deLinux Magazine nos trae laúltima versión orientada aescritorio de la empresaalemana Suse. Ideal para elusuario final y profesional.

XFCE 4.2Xfce se ha ganado una re-putación de sistema de ven-tanas compacto, rápido yvistoso. En nuestro próximonúmero averiguamos si sufama es bien merecidaponiendo a prueba laúltima versión estable.

ZEND STUDIORevisamos el entornode desarrollo integradode los creadores dePHP y vemos cómo lanueva versión de estaherramienta puedeacelerar la creación desitios web que utiliceneste lenguaje comomotor.

NÚMERO

Noviembre 2005: Número 10

PRÓXIMO

Page 99: Linux Magazine - Edición en Castellano, Nº 09

• Número 1: Especial Redes - Servidores de correo TLSMediaWiki - Konversation - DVD Fedora Core 3 ...

¡Hazte con tus ejemplares atrasados!

#1

#2

#3

#4 #5 #6

• Número 2: Hardware Linux - PCs Silenciosos - Gestorde ventanas Twin - Backups con Konserve ...

• Número 3: Seguridad para todos - Configuracióniptables con Shorewall - Ruby Rails - Domótica ...

• Número 4: Redes Wireless - Scribus - Radio USBHackeando con Zaurus - DVD Mandrake 10.1 ...

• Número 5: Email seguro - Seguridad Wireless - Gimpcon Python - Bluetooth - QEMU - QTCanvas - Scribus (II)

• Número 6: Multimedia - MLDonkey - OpenOfficeJuegos DOS con SCUMMVM y DOSBox - Scribus (III)

• Número 7: Sistemas virtuales - Debianiza tu SuSeCoches teledirigidos - SoundJuicer - DVD SuSe 9.2

WWW.LINUX-MAGAZINE.ES

¡No esperes a que se agoten!

#7

Page 100: Linux Magazine - Edición en Castellano, Nº 09