DEBIAN SARGE 3.1 La última versión de la distro más estable
Inkscape
LINUX MAGAZINE
Diseño vectorial profesional bajo Linux
Thunderbird
Configuración avanzada para privacidad de correo
NÚMERO 09
Incluye corrección de errores 3.1 r0a 6500 paquetes
NÚMERO 9 • P.V.P 5,95 €
Seguridad
Los secretos de los intrusos de la red
Hotspotter
SEGURIDAD
SSPE
ARP Spoofing
Hotspotter: descubre vulnerabilidades en tu red p14 Protege tu LAN de ARP spoofing p18 Administración de cortafuegos con SSPE p24
Konqueroer
Konqueror
Música en red
El navegador de KDE que conquistará el escritorio p72
Universo Virtual
Música en red Crea tu propio sistema de hilo musical p43
Inkscape
Notebook Ubuntu
Podcatching Recibe y reproduce música sobre RSS ¡sin un iPod! p36 W W W. L I N U X - M A G A Z I N E . E S
Edición en Castellano
EDITORIAL
ARTE MODERNO Estimado Lector de Linux Magazine
L
eo en barrapunto que Trolltech, la empresa creadora de las librerías Qt, base del escritorio KDE, financiará el trabajo de Aaron J. Seigo. Seigo es un desarrollador de KDE que está creando un nuevo paradigma de escritorio y, al tiempo, mejorando la estética de iconos y superficie de trabajo con su proyecto Plasma (ver http://plasma.bddf.ca/). Después pienso en Linus Torvalds, financiado 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 programadores en los modernos bohemios, que al igual que los artistas visionarios de antaño, si no encontraban un mecenas que les protegiera/explotara estaban condenados a una vida de miseria y penalidades? Desde el renacimiento hasta muy recientemente, los artistas tenían que buscarse un papa, rey o corte quien les acogiera y que, en el mejor de los casos, les tolerasen las excentricidades a cambio de sus obras maestras (Da Vinci, Mozart) o que, en el peor, los tratasen como meros funcionarios del pincel o de la partitura (Velázquez, Bach). Pero incluso aún peor que esta última opción, era no encontrar ningún padrino que financiase sus trabajos y consumirse de tisis en algún oscuro, húmedo y frío agujero ubicado en un barrio marginal de París. Alguno puede argumentar que esto último al menos conserva un mínimo de romanticismo. Pero tal y como está el panorama del desarrollo en España, donde lo único que le interesa a las software factories son chavales recién salidos de la universidad a quienes explotar durante un periodo de prueba, para después echarlos a la calle, no te queda ni eso, ni mucho menos dignidad. En semejantes firmas, no hay sitio para la brillan-
Nos sentimos orgullosos de nuestros orígenes como publicación, que se remonta a los primero días de la revolución Linux. Nuestra revista hermana, la publicación alemana Linux Magazin, fundada en 1994, fue la primera revista dedicada a Linux en Europa. Desde aquellas tempranas fechas hasta hoy, nuestra red y experiencia han crecido y se han expandido a la par que la comunidad Linux a lo ancho y largo del mundo. Como lector de Linux Magazine, te unes a una red de información dedicada a la distribución del conocimiento y experiencia técnica. No nos limitamos a informar sobre el movimiento Linux y de Software Libre, sino que somos parte integral de él.
tez o la innovación, y aún añadiría, ni para el orgullo de lo artesanal bien hecho. Por tanto un virtuoso de la programación no va a encontrar en ellas el patrocinio que necesita, máxime cuando en muchas se considera invertir en I+D el hecho de comprar muchas cajas de cereales Kellogs con la esperanza de que toque un ratón inalámbrico. ¿Que nos queda pues? ¿La universidad? ¡Ah, la universidad! Permítame el lector que le cuente un interesante relato sobre la universidad. Jose Antonio (y su novia Ana) son dos brillantes matemáticos, becados por la universidad de Málaga que han conseguido sendos doctorados merecedores de cum laude en el área de programación distribuida sobre clusters creados a partir de equipos de consumo. No sólo han desarrollado un sistema para optimizar la compilación del código, multiplicando la velocidad de proceso por 16, sino que han creado una aplicación práctica donde aplicar los conocimientos adquiridos: damflow (ver damflow.org), un simulador de movimiento de grandes masas de fluidos que sirve para predecir el comportamiento y los efectos de inundaciones, vertidos accidentales y la intervención (y obstaculización) humana (construcción en cauces de ríos, tierra ganada a la mar, etc.) en el natural discurrir de aguas y lodos. Este software puede ser vital para evitar pérdidas de vidas humanas y bienes materiales al permitir una previsión de posibles desastres relacionados con grandes movimientos de líquidos. El problema es que Jose Antonio (y Ana) ya son doctores y se les acaba el chollo (si chollo se considera percibir 300 euros al mes) y la universidad de Málaga ya no sabe qué hacer con ellos. Sus opciones se reducen a sacarse unas oposiciones para convertirse en profesores de instituto para intentar inducirle el amor a las matemáticas a adolescentes
WWW.LINUX- MAGAZINE.ES
que, en muchos casos, ni les entenderán, ni les interesará lo que están contando. Recientemente tuve la oportunidad de compartir mesa con un programador especializado en clusters que estaba al cargo de un monstruo de 2500 nodos ubicado en una universidad catalana. Le conté lo que pasaba por Málaga y el desarrollador, perteneciente al clan de Deep Computing de IBM, pareció molesto por el hecho de que en un humilde departamento de análisis matemático de una universidad de provincias, un equipo de tres o cuatro personas se hubiera atrevido a pasar de todo y hubieran montado su propio cluster, sin contar con el Gran Azul. Alegó reinvención de la rueda, duplicación de esfuerzos, etc. Mi reacción a eso es: Pues, señores, vayan ustedes allí y ofrezcan sus servicios y productos para que esta gente no tenga que pasar por el proceso de reinvención y puedan progresar en lo que realmente les interesa: el estudio del desplazamiento de grandes masas de fluidos y salvar vidas humanas. Pero eso sí, no esperen cobrar el trabajo, porque si la universidad de Málaga no tiene dinero para contratar a Jose Antonio (ni a Ana), dudo que lo tengan para sus facturas.
Paul C. Brown Director
Número 09
3
CONTENIDOS • Linux Magazine nº 9
PORTADA 14 Hotspotter Los puntos de acceso público hacen que sea bastante fácil para los atacantes secuestrar conexiones, tal y como lo demuestra la Herramienta Hotspotter.
PRÁCTICO
DESARROLLO
28 El portátil Linux
48 Perl: Yahoo
El HP NC4200 es un potátil diferente: la distribución Ubuntu Linux con la que viene soporta prácticamente todas sus funcionalidades hardware.
18 Trucos de Tráfico
Tres guiones en Perl los que seran analizados que nos ayudarán a corregir la ortigrafía, localizar a los compis del colegio y ver la fotoos de vacaciones de otras personas.
53 Universo virtual
Las Técnicas denominadas ARP spoofing y poisoning permiten a un atacante manipular y curiosear tráfico facilmente.
Este mes vamos a crear un sistema Solar “virtual” tridimensional empleando VTK desde Python.
31 Coldfusion El nuevo servidor ColdFusion MX7 de Macromedia permite crear aplicaciones web de alto rendimiento.
36 Podcatching 24
Mostramos cómo recibir y reproducir podcasts bajo Linux.
40 Thunderbird 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.
Thunderbird ofrece varias opciones para un correo seguro y la encriptación de Enigmail basada en GnuPG nos proporciona una capa de protección adicional.
57 Reutilización de código 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.
ADMINISTRACIÓN 61 La Columna de Charly
LINUX MAGAZINE
10
Productos
12
Correo del lector Suscripciones Eventos Información de Contacto Próximo Número
6 7
93 97 97 98
4
Número 09
picz, www.sxc.hu
8
Editorial Productos Inseguridades DVD Linux Magazine
3
43 Music box Si tenemos una LAN en casa o en la oficina ¿Poe qué no se utiliza para algo realmente importante? ¡Escuchar música!
WWW.LINUX- MAGAZINE.ES
62 Calcetines para el proxy Este artículo describe la última versión del protocolo para proxy Socks y muestra cómo se implementa.
ADMINISTRACIÓN
LINUX USER
67 Cuentas
3.1 sarge
81 Educación
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.
Terminamos esta breve presentación de ATNAG mostrando varios juegos, y cómo se crean y organiza su explotación en el cuaderno de clase.
DVD de arranque de fácil instalación ■ Un amplio abanico de aplicaciones, para oficina, servidores, 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. ■
LINUX USER mzacha, www.sxc.hu
72 La conquista del escritorio Konqueror de KDE 3.4 es una herramienta perfectamente versátil que se siente en la web cómo en casa. saine, www.sxc.hu
86 Rock y consola Echamos un vistazo a las aplicaciones que rocanrolean desde la líneade comandos.
76 Desktopía 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.
COMUNIDAD 90 Eventos En verano el ambiente es propicio para montar algún evento de proporciones montruosas con el fin de difundir el uso del software libre.
lusi, www.sxc.hu
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.
95 Trucos Este mes los redactores de Linux Magazine lidian con un Grub de un lector que se niega a hacer su labor.
WWW.LINUX- MAGAZINE.ES
Número 09
5
006-007_Inseguridad_Linux9 14.09.2005 13:51 Uhr Página 6
LINUX USER NOTICIAS
Schlagwort sollte hier stehen
INSEGURIDADES ■ OPENSSL OpenSSL es una herramienta que implementa los protocolos Secure Sockets Layer (SSL v2/v3) y Transport Layer Security (TLS v1) tan bien como lo haría una librería criptográfica de propósito general. Colin Percival informó de un ataque temporizador de caché que permitiría a un usuario local malicioso obtener porciones de las claves criptográficas. El proyecto de Vulnerabilidades y Exposiciones Comunes (Common Vulnerabilities and Exposures o CVE – http:// cve.mitre.org) ha asignado el nombre CAN-2005-0109 a este problema. La librería OpenSSL ha sido parcheada añadiéndole una nueva imple-
mentación mod_exp fijada a ventana por defecto, para RSA, DSA y operaciones de clave privadas DH. Este parche está diseñado para mitigar el ataque temporizador de caché y todos los que estén potencialmente relacionados. Se encontró un defecto en la manera en la que el script der_chop crea los ficheros temporales. Es posible que un usuario local malicioso pudiera hacer que der_chop sobreescribiera ficheros (CAN-2004-0975). El script der_chop ha sido desfasado y borrado de los paquetes actualizados. ■ -Referencia Mandriva: MDKSA-2005: 096 -Referencia Red Hat: RHSA-2005:476-08
POLITICAS DE SEGURIDAD DE LAS DISTRIBUCIONES MAYORITARIAS Distribuidor
Fuente Seguridad
Debian
Info:http://www.debian.org/security/ Lista:http://www.debian.org/debian-security-announce/ Referencia:DSA-…1)
Gentoo
Mandrake
Red Hat
Slackware
Suse
Comentario
Los avisos de seguridad actuales se incluyen en la página de inicio. Los avisos se proveen como páginas HTML con enlaces a los parches. Los avisos también incluyen una referencia a la lista de correo. 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. 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. 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. 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. 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.
6
Número 08
WWW.LINUX- MAGAZINE.ES
■ GFTP gFTP 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 puede ser engañado durante la descarga de un fichero desde un servidor FTP malicioso, es posible sobreescribir ficheros arbitrarios propiedad de la víctima. El proyecto de Vulnerabilidades y Exposiciones Comunes (Common Vulnerabilities and Exposures o CVE – http://cve.mitre.org) ha asignado el nombre CAN-2005-0375 a este problema. De momento no se está trabajando en nada relacionado con esto. Los usuarios de gFTP deberán actualizar sus paquetes. Los nuevos paquetes contienen un parche retroportado para este problema. ■ -Referencia Red Hat: RHSA-2005:410-07
■ MAILUTILS
GNU MailUtils es una colección de utilidades de correo, que incluye un servidor IMAP4 (imap4d) y un Agente de Usuario de Correo (mail). infamous41d descubrió algunas vulnerabilidades en GNU Mailutils. imap4d no implementa correctamente la impresión formateada de etiquetas de comandos (CAN-20051523), falla al validar la secuencia de rango del comando “FETCH” (CAN2005-1522) y contiene un desbordamiento integrado en la rutina “fetch_io” (CAN-2005-1521). mail contiene un desbordamiento de búfer en “header_get_field_name()” (CAN-20051520). Un atacante remoto puede explotar la cadena de formato e integrar el desbordamiento en imap4d para ejecutar código arbitrario como un usuario imap4d, el cual habitualmente es root. Mediante el envío de un mensaje de correo especialmente manipulado, un atacante remoto podría explotar el desbordamiento de búfer en la utilidad “mail” para ejecutar código arbitrario con los derechos de un usuario corriendo mail. También se puede provocar un ataque de denegación de servicio (DoS) enviando un comando FETCH malicioso a un imap4d afectado. Todos los usuarios de GNU Mailutils deberán actualizarse a la última versión ■ disponible.
006-007_Inseguridad_Linux9 14.09.2005 13:51 Uhr Página 7
INSEGURIDADES
-Referencia Debian: DSA-732-1 -Referencia Gentoo: GLSA200505-20/ mailutils; GLSA200506-02/mailutils
■ FREERADIUS FreeRADIUS es una implementación del servidor de autenticación de código abierto RADIUS. Primoz Bratanic descubrió que la función SQL escape_func de FreeRADIUS podría ser vulnerable a un desbordamiento de búfer. También descubrió que FreeRADIUS falla al sanear la entrada de usuario antes de usarlo en una consulta SQL, permitiendo posiblemente la introducción de un comando SQL. Suministrando una entrada cuidadosamente manipulada, un usuario malicioso podría inyectar instrucciones SQL en el desbordamiento de búfer. Todos los usuarios de FreeRADIUS deberán actualizarse inmediatamente a la última versión disponible. ■ -Referencia Gentoo: GLSA 200505_13 / freeradius -Referencia Suse: SUSE_SR:2005:014
■ MOZILLA Mozilla es un avanzado navegador web, cliente de correo y agente de gru-
pos de noticias, cliente chat IRC y editor HTML de código abierto. Se encontraron algunos errores en la manera en la que Mozilla ejecuta código javascript. El Javascript ejecutado desde una página web debería correr con un nivel de acceso restringido, previniendo acciones peligrosas. Es posible que una web maliciosa ejecutara código javascript con privilegios elevados, permitiendo el acceso a funciones y datos protegidos. El proyecto Común de Vulnerabilidaes y Exposiciones (Common Vulnerabilities and Exposures o CVE http://cve.mitre.org) ha asignado los nombres CAN-2005-1476, CAN-2005-1477, CAN-2005-1531 y CAN2005-1432 a este problema. Se aconseja a los usuarios de Mozilla que se 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
■ GZIP gzip es una herramienta de compresión de ficheros.
WWW.LINUX- MAGAZINE.ES
Zgrep en versiones de gzip anteriores a la 1.3.5 no saneaba los argumentos apropiadamente, lo cual permitía a los usuarios locales ejecutar arbitrariamente los comandos vía nombre de ficheros que se introducen en un script sed (CAN-2005-0758). Se produce una condición de carrera en gzip 1.2.4, 1.3.3 y versiones anteriores cuando se descomprime un fichero gzip que permite a los usuarios locales modificar los permisos de ficheros arbitrarios a través de un ataque de un enlace duro a un fichero mientras está siendo descomprimido (CAN-20050988). La vulnerabilidad de un directorio transversal “gunzip-N” en las versiones gzip 1.2.4 hasta 1.3.5, permite a los atacantes remotos escribir a directorios arbitrarios a través de .. (punto punto) en el fichero original dentro de un fichero comprimido (CAN-2005-1228) Los paquetes actualizados están parcheados para resolver estos problemas.■ -Referencia Gentoo:GLSA 200505-05 / gzip -Referencia Mandriva: MDKSA-2005:092 -Referencia Red HAt:RHSA-2005:357-19
Número 08
7
DVD LINUX MAGAZINE
DVD DE LINUX MAGAZINE
rada. Debian utiliza la potencia de su super sistema de paquetes para una instalación rápida, fácil y fiable. También ofrece opciones avanzadas, tales como el arranque desde un dispositivo flash USB. Incluso se puede configurar RAID o
Contrato Social Debian 1. Debian Permanecerá 100% Software Libre – Prometemos mantener la Distribución GNU/Linux enteramente software libre. Daremos soporte a nuestros usuarios que desarrollen y ejecuten software que no sea libre en Debian, pero nunca haremos al sistema dependiente de un elemento de tal software. 2. Recompensaremos a la Comunidad del Software – Cuando escribamos nuevos componentes del sistema de Debian, los licenciaremos como software libre. Haremos el mejor sistema que podamos, de forma que el software libre tenga amplia difusión y uso. Enviaremos arreglos de errores, mejoras, peticiones de los usuarios, etc. a los autores originales del software incluido en nuestro sistema.
D
ocenas de distros embellecen las páginas de Internet y, sin embargo, el mundo entero sabe que sólo hay un Debian. El muy respetado Debian GNU/Linux merece un papel especial dentro del panteón Linux, tanto por su tamaño y alcance como por su conciencia social colectiva. La distribución Debian sobrepasa el tamaño, la energía y la estabilidad de los principales distros comerciales. A pesar de todo, Debian es libre, sin ánimo de lucro y basado en voluntariado. Los expertos en Linux han venido usando Debian durante años, pero el sis-
tema de instalación sin asistentes ofrecía pocas concesiones a los principiantes. Ahora, con la llegada de Debian 3.1, al fin se dispondrá de un sistema que es accesible para todo el mundo. Con su nuevo instalador, un amplio abanico de aplicaciones de escritorio útiles, y uno de los mejores paquetes de administración de sistemas disponible en cualquier parte, Debian GNU/Linux está completamente preparado para un nuevo público. Nos sentimos orgullosos de poder ofreceros Debian 3.1. “Sarge” en el DVD de este mes de Linux Magazine.
A destacar en Debian 3.1
El cambio más importante que introduce Debian 3.1, y quizás la razón más importante por la que esta versión de Debian está en condiciones de llegar hasta la nueva generación de usuarios, es la llegada del nuevo instalador de Debian. El instalador suministra una organización y una configuración fáciles del sistema Debian. Las opciones de instalación se presentan en un formato de menú muy cómodo. Detrás de los escenarios, el instalador Debian proporciona un administración disco y una detección de hardware mejo-
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
8
Número 09
Nuevo Instalador
WWW.LINUX- MAGAZINE.ES
3. No esconderemos Problemas – Mantendremos nuestra base de datos de informes de errores abierta a acceso público en todo momento. Los informes que los usuarios envíen en línea se harán visibles inmediatamente al resto. 4. Nuestras Prioridades son Nuestros Usuarios y el Software Libre – Nos guiaremos por las necesidades de nuestros usuarios y la comunidad del software libre. Pondremos sus intereses primero en nuestras prioridades. Daremos soporte a las necesidades de nuestros usuarios para que puedan trabajar en muchos tipos distintos de entornos de trabajo. No pondremos objeciones al software comercial que vaya a ejecutarse sobre sistemas Debian, y permitiremos a otros a crear distribuciones de valor añadido conteniendo tanto Debian como software comercial, sin ningún cobro por nuestra parte. 5. Programas que No Siguen Nuestros Estándares de Software Libre – Reconocemos que algunos de nuestros usuarios necesitan usar programas que no sigan las Directrices del Software Libre de Debian (DFSG). Hemos creado las áreas “contrib” y “non-free” en nuestro archivo de FTP para este software. El software en estos directorios no es parte del sistema Debian, aunque ha sido configurado para usarse con Debian.
DVD LINUX MAGAZINE
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.
administración lógica de volumen desde el instalador Debian.
Paquetes Perfectos La instalación y actualización de software en el sistema se lleva a cabo de manera rápida y cómoda gracias a su sistema de administración de paquetes. Típicamente sólo se necesita escribir un único comando para instalar una nueva aplicación. Si prefiere una GUI, puede administrar paquetes a través del intuitivo Synaptic. Las herramientas del paquete de Debian descargan automáticamente los ficheros necesarios desde fuentes de Internet y administran cual-
Figura 2:Sarge incluye la versión 1.1.3 de la suite de OpenOffice.
quier dependencia. Otras distros utilizan sistemas de paquetes similares (algunos derivados del sistema Debian y otros modelados a partir de él) pero el sistema Debian sigue siendo el más sencillo y el más eficiente en la instalación de nuevo software Linux. Según el proyecto Debian, todo el sistema Debian puede ser “actualizado, sin tocar ficheros de configuración a medida y (en la mayoría de los casos), sin tener que rearrancar el sistema”.
Tamaño y Alcance El DVD de este mes de Linux Magazine contiene unos 6.500 paquetes que representan el contenido de los 7 CDs
de instalación de Debian. Una vez que el sistema esté en marcha y corriendo, tendrá acceso al resto de Debian a través del sistema de administración de paquetes Debian. En total, su vasta distribución incluye unos 15.000 paquetes. Si elige Debian entrará a formar parte de una extensa comunidad de usuarios, bloggers, administradores y desarrolladores. El usuario de Debian siempre tiene a mano su ayuda. La comunidad Debian está constituida por una red de unos 1.600 voluntarios, los cuales están motivados e invierten personalmente en el éxito de Debian. Pero Debian no sólo es profundo, también es extenso. El lanzamiento oficial de Debian 3.1 soporta 11 arquitecturas de hardware diferentes (este DVD sólo es para la arquitectura Intel i386). El amplio abanico de hardware soportado por Debian hace que sea una opción popular para usuarios que trabajan con un gran variedad de plataformas.
Pruébelo ahora
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.
WWW.LINUX- MAGAZINE.ES
Nunca ha habido una mejor ocasión para probar Debian GNU/Linux. El nuevo Debian 3.1. puede calificarse como el de más fácil uso y el más amigable de los Debian hasta la fecha, y el práctico formato único de DVD le hace incluso más apropiado. Ahora puede probar el tan esperado Debian Sarge sin suplementos de distribución o descargas de larga duración. Enchúfese al DVD de Linux Magazine de este mes y llévese toda la energía del ■ Debian GNU/Linux 3.1.
Número 09
9
LINUX USER NOTICIAS
Schlagwort sollte hier stehen
NOTICIAS LINUX APRENDER DE LO BUENO Gracias a Dios que no sólo lo malo se pega: Suse estrena OpenSuse. Con OpenSuse, la empresa Linux filial de Novell democratiza el desarrollo de nuevas versiones al permitir la participación de desarrolladores y usuarios independientes en la creación e inclusión de paquetes dentro de Suse. En el sitio web de OpenSuse (ver más abajo), se alojarán las versiones estables y de desarrollo de la distro, que ya no contará con una versión “Profesional” y de pago como hasta ahora. A partir de la creación del proyecto, todas las versiones serán libres y gratuitas para su descarga.
Si bien algunos malpensados podrán alegar que lo que se pretende es recortar gastos (es decir, puestos de trabajo) delegando tareas que antes recaían en perso-
nal de Suse en miembros de la comunidad (y algo de esto sin duda hay), también es cierto que con este paso se democratiza la elección de paquetes, abriendo a los usuarios la puerta para que elijan qué paquetes se incluyen en la distro. Con este paso, Suse se suma a las distros que ya han implementado programas similares como Mandriva y Red Hat, a través de su versión libre, Fedora, que, sin llegar a la total democratización de Debian, permiten que los usuarios tengan poder de decisión en el curso a seguir por la distribución… y de eso se trata ¿o no? ■ http://www.opensuse. org/
FEDORA PARA CLUSTERS Y para todos aquellos quienes tienen más de una máquina 64 bits y varios metros de cable de red tirados por ahí, llega GFS para Fedora 4. GFS es el sistema de archivos para cluster más escalable disponible para Linux, y admite hasta 256 nodos y es el único sistema de archivos nativo de 64 bits para cluster disponible para Linux y compatible con las arquitecturas x86, AMD64/EM64T e Itanium. Red Hat obtuvo GFS con la adquisición de Sistina Systems en 2003. Tras la adquisición, Red Hat trabajó para que la tecnología patentada de GFS estuviese disponible bajo GPL.
10
Número 08
“Poner GFS a disposición de la comunidad de desarrolladores de código fuente abierto a través de Fedora Core es una continuación
del modelo de Red Hat, consistente en establecer amplias comunidades de uso para
impulsar la innovación”, declaró Paul Cormier, vicepresidente ejecutivo de ingeniería de Red Hat. “GFS es una tecnología muy valiosa que ahora tiene la oportunidad de mejorar incluso con mayor rapidez en la comunidad de des-
arrolladores de código fuente abierto.” Durante la conferencia Red Hat Summit celebrada en junio, Red Hat también anunció la disponibilidad de Fedora Directory Server, una
WWW.LINUX- MAGAZINE.ES
solución para la gestión segura de identidades. La instalación del Fedora Directory Server, según se advierte en el sitio de Fedora, “no es para los de corazón débil” (auguramos horas de diversión para los lectores que lo intenten), sin embargo, viene ampliamente documentado y soportado por una nutrida comunidad de usuarios. Tanto Fedora Core 4 con GFS, como FDS ya están disponibles para su descarga desde el sitio web de Fedora. ■ http://www.fedora.redhat. com
NOTICIAS
PRODUCTOS TECLAS CONFIGURABLES ¿Un teclado convencional? ¡Qué aburrido! Presentamos el Optimus, un teclado que lleva el concepto de “teclas configurables” a una dimensión totalmente nueva. El Optimus permite no sólo configurar las teclas para que realicen las funciones que deseemos, sino que se puede cambiar el aspecto del carác-
ter representado en cada tecla. Y, no, no hay que andar de aquí para
allá con pegatinas de colores. El Optimus incorpora en cada tecla una diminuta pantallita OLED de 40 x 40 pixels que permite al usuario
cambiar los símbolos con una serie de plantillas ya incorporadas o descargar iconos al teclado para un aspecto verdaderamente personalizado. A pesar de estar en una fase temprana de producción, la empresa rusa Art. Lebedev
Studio, creadores del invento, esperan empezar a comercializarlo a principios del 2005. El teclado podrá utilizarse con cualquier sistema operativo, dispondrá de un SDK de software libre para el desarrollo de nuevas aplicaciones y permitirá por fin a los usuarios de Emacs encontrar todos esos atajos de manera sencilla y visual (no es que creamos que ningún usuario de Emacs se rebajará a semejante cotas de lameness, pero, en fin…). ■ http://www.artlebedev.com/ portfolio/optimus/
NI TANTO NI TAN POCO Pero, ahora en serio ¿Eres un usuario de élite? ¿De verdad? ¿De verdad de la buena? Eso lo veremos para el final de la reseña. A un auténtico usuario de élite se le conoce por lo que no necesita. Un usuario de elite no necesita asistentes para configurar su equipo. Tampoco necesita iconos para arrancar sus aplicaciones. Ni siquiera necesita un entorno gráfico para manejar su sistema operativo, ni un ratón… lo único que le hace falta a un verdadero gurú es un monitor monocromo, un disquete y un teclado. Y hablando de teclados ¿A que no sabes de qué más
puede prescindir un power user que escupe sobre los programadores que desarrollan en lenguajes interpretados? Sigue leyendo… Si de verdad crees que eres el no va más en el uso y abuso de la línea de comandos, tienes que hacerte con el
“Das Keyboard” de Metadot corporation. El DK cuenta con un contrapeso para cada tecla que compensa la presión con la que se le suele pulsar, haciendo que el “Das Keyboard” sea más confortable y agradable de utilizar,
WWW.LINUX- MAGAZINE.ES
pero lo mejor de todo es que ni una de las teclas tiene un sólo carácter impreso en ellas. Eso es: es un teclado ciego. Según la empresa que comercializa el DK, el no tener caracteres obliga a no mirar el teclado, lo que, a la larga, acelera la mecanografía y mejora la precisión. Sin embargo, todos sabemos el porqué se haría uno con este trasto: por que son increíblemente cool, tanto por su aspecto, como por el concepto subyacente. (¿Es tonto preguntar si tiene la tecla “ñ”?). ■ http://www.daskeyboard. com/
Número 09
11
LINUX USER CORREO
Schlagwort sollte hier stehen
Correo del Lector
Lista de Mejoras En primer lugar felicitaros por la revista, aunque esto no quita que pida algunas mejoras: 1) Por un lado pienso que la revista se encuentra demasiado orientada a entornos KDE, cosa que no me parece mal. Yo mismo utilizo algunos programas de KDE en el escritorio XFCE. Tendriáis que dar más información sobre programas en otras plataformas (Gnome, GTK…). 2) Más artículos sobre otros usos de Linux. Creo que a Linux habría que sacarlo de ese entorno de servidores y laboratorios, como ya hacéis en la sección LinuxUser, pero dándole mas espacio. 3) Siempre me he preguntado si son necesarios los CDs que reparten las revistas, suelen acabar de posavasos. 4) Ya para acabar: ¿Sería posible una sección con empresas dedicadas, en España, a desarrollar en Linux? Seguid con el fenomenal trabajo que estáis haciendo. P.D.: Estoy tratando de montar un negocio de informática donde todo el sistema de facturación se haga en Linux, he mirado programas (GNUcash…) pero ninguno parece ajustarse a lo que busco. ¿Alguna sugerencia? Jolupa
12
Número 09
LM Vayamos por partes: 1) Sí, estamos de acuerdo contigo y estamos intentando introducir más información de otros escritorios. Da la casualidad que algunos de nuestros autores son desarrolladores KDE y escriben de lo que saben, pero habrás notado un incremento de información sobre Gnome en la revista recientemente: Ahí tenemos el artículo sobre administración de fuentes (tanto en KDE como para Gnome) del número 8. En el mismo número le dimos un repaso a la última versión estable de Gnome, la 2.10. En el número 7 publicábamos un artículo de nuestro nuevo colaborador Alberto Mora que versaba sobre Soundjuicer, el ripeador de CDs de Gnome. Hemos publicado en la sección de desktopia varios artículos sobre escritorios alternativos: WMI en el número 7 e incluso Twin, un gestor de ventanas basado en texto en el número 2. Pensamos seguir en esta vena, aportando toda la información sobre gestores de ventanas que quepan en nuestras páginas. 2) Lo que pasa es que Linux, al ser un sistema con tantas aplicaciones posibles, es difícil dedicarle muchas páginas a una sola área. Hablamos de programación, administración de sistemas y de usuarios finales en la revista. De vez en cuando tocamos sobre Linux embebido en dispositivos móviles y otras sobre temas de hardware, pero a pesar de los pesares, incluso 100 páginas se hacen cortas a la hora de abarcar todos los campos donde se puede aplicar Linux. 3) Hombre, nosotros no incluimos CDs, sino DVDs y siempre tratamos de que se traten de distribuciones recién salidas y, cuando podemos, con algún otro aliciente, como el caso del SuSE 9.2
WWW.LINUX- MAGAZINE.ES
Professional del número 7. 4) De hecho, estamos creando una nueva sección llamada “Linux Local”, un directorio donde empresas que trabajen con Linux puedan anunciarse y donde usuarios y otras empresas puedan encontrar los servicios Linux que necesiten. Si tienes una empresa y crees que tienes algo que ofrecer a la comunidad, contacta con nosotros en anuncios@linux-magazine.es para que te incluyamos. En cuanto a tu pregunta sobre programas de administración, estamos de acuerdo con que GNUcash no es apto para su uso como herramienta de administración monetaria de una empresa. De hecho, esta herramienta está más orientada a la administración de la contabilidad doméstica. En la redacción hemos probado tanto BULMAGes[1] y FacturaLux [2] y ambas alternativas funcionan estupendamente para lo que es la administración contable y de facturación de una empresa a nivel profesional. Se ajustan escrupulosamente al Plan Contable Nacional y ofrecen flexibilidad tanto de configuración como de arquitectura. Lo que sí es cierto es que para su correcto manejo, estos programas precisan conocimientos de contabilidad para poder explotarlos como es ■ debido.
RECURSOS [1] Sitio web de BULMAGes: http:// bulmages.sourceforge.net/ [2] Sitio web de FacturaLUX: http:// facturalux.org/
Puedes enviaar tus comentarios y sugerencias a: correo@linux-magazine.es
www.almogon.de
ACCESO DE ESCRITURA
Seguridad• PORTADA
Análisis de los métodos del enemigo
TÉCNICAS DE INTRUSIÓN L
a mayoría de los usuarios están tan acostumbrados a trabajar en red, que no caen en la cuenta de que podría haber alguien escuchando. Todos sabemos que conviene tener cuidado en Internet, hasta los usuarios domésticos utilizan cortafuegos para mantener a los intrusos fuera de su red y los administradores corporativos añaden una línea Maginot de servidores proxy, honeypots y herramientas de DMZ (DeMilitarized Zone, Zona DesMilitarizada). ¿Pero qué ocurre dentro del cortafuegos? ¿Cómo se puede saber si alguien está escuchando o suplantando la personalidad de otro usuario? Las estadísticas dicen que muchos ataques comienzan desde dentro, desde empleados aburridos, o descontentos, buscando emociones fuertes o incluso alguien más enojado que busca alguna forma de venganza. En muchas configuraciones corporativas, un perfecto desconocido puede aparecer con su ordenador portátil y enchufarlo a la red sin provocar ninguna respuesta de los sistemas de seguridad. El problema es aún peor en las redes inalámbricas. Un gamberro ocasional apostado al otro lado de la calle, o en el apartamento de al lado, puede conectarse a sus redes. ¿Pero cómo consiguen los intrusos el acceso para entrar? ¿De qué manera tru-
can estos tipos sus propios sistemas para que, usando la red como medio para sus ataques, conseguir entrar en los sistemas ajenos? En portada de este mes daremos algunas respuestas a esas cuestiones. Nuestro artículo principal analiza las técnicas de intrusión usadas para conectarse a clientes inalámbricos. Mostraremos oomo un atacante puede secuestrar una conexión inalámbrica. También podrán aprender cómo un intruso empresarial puede fingir ser una red segura y conseguir que se conecte un usuario ingenuo. Y mostraremos la extraordinaria herramienta Hotspotter, que evidenciará cuan vulnerable son sus redes inalámbricas. Nuestro segundo artículo examina el oscuro arte de la falsificación ARP (ARP spoofing). La falsificación ARP permite al intruso utilizar una dirección MAC de origen falsa para suplantar a otro ordenador en la red. También aprenderán acerca de los ataque por inundación MAC (MAC flooding), que ataca el mapeado de seguridad de un switch de la red. Tambien veremos el envenenamiento ARP, una forma especial de falsificación que ataca la tabla ARP de otro ordenador. Les enseñaremos porqué incluso SSL y SSH no son inmunes a los ataques ARP y describiremos
algunas herramientas de exploit ARP utilizadas por intrusos reales en redes reales. Finalizaremos con algunos trucos para que puedan proteger sus redes de los peligros de la falsificación ARP. Para terminar de redondear nuestra sección de portada de este mes, echaremos un vistazo al Editor Simple de Políticas de Seguridad (Simple Security Policy Editor o SSPE), una manejable herramienta que nos ayudará a organizar y mantener Políticas de seguridad a través de varios cortafuegos. El SSPE libre ofrece un sencillo front end que les permitirá configurar y administrar un complejo entorno de cortafuegos distribuido. Esperamos que nuestra historia de portada de este mes sobre seguridad les brinde nuevas perspectivas e ideas sobre cómo conseguir redes más seguras. ■
EN PORTADA Hotspotter
. . . . . . . . . . . . . . . . . . . . . . . .14
Falsificación
. . . . . . . . . . . . . . . . . . . . .18
Políticas de Seguridad SSPE . .24
WWW.LINUX- MAGAZINE.ES
Número 09
13
PORTADA • Hotspotter
Ataques a Clientes Inalámbricos
EN EL PUNTO DE MIRA
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
G
gente desea trabajar sin las ataduras de los cables. Actualmente, esto es una realidad. Gracias al incremento de la permisibilidad de las redes inalámbricas y a los buenos administradores, la gente puede trabajar en muchos lugares públicos: aeropuertos, hoteles o salas de congresos. Si realmente se desea trabajar, apenas habrá obstáculos que nos detengan. Los ejecutivos que tienen que viajar alrededor del mundo pueden apreciar la nueva flexibilidad que se encuentran y, a menudo, deciden reproducir sus propios medios empresariales. Los departamentos de las tecnologías de la información se ven forzados con frecuencia a introducir complejas infraestructuras de seguridad que se encarguen del tráfico sensible que viaja a través del éter. Además, los servicios inalámbricos de las empresas casi siempre deben estar restringidos a los usuarios autorizados.
racias a los complejos mecanisriales. Y para asegurarse, los puntos de mos actuales de seguridad, las acceso están equipados también con redes inalámbricas parecen que soporte VLAN, detección de intrusos y se vuelven más seguras día a día. Los sistemas de cortafuegos… todo esto con mecanismos de autenticación basados un coste considerablemente alto. en el marco de trabajo EAP (Protocolo de Pero los daños surgen más allá de los Autenticación Extensible) prometen que confines de la red de la empresa. En nuesmantendrá a los indeseables en la calle. tra actual y creciente era móvil, mucha El Protocolo de Integridad de Claves Temporales (TKIP) [1], con su rápido intercambio de claves WEP, impide la repetición de ataques y hace que sea más compleja la vulneración de la tecnología de encriptación, permitiendo que las claves sean más duraderas. WPA/WPA2 [2] y la transición a la encriptación AES [3] Figura 1:Conexión a un punto de acceso. Las vulnerabilidades parece que va a proporcionar afectan al cliente cuando aún está buscando las redes disponiuna solución de seguridad casi bles en los pasos 1 y 2. perfecta para las redes empresa-
14
Número 09
WWW.LINUX-MAGAZINE.ES
Administradores Movimiento
en
Un ejecutivo típico que viaja a lo ancho del país con su portátil equipado con capacidad WLAN bajo su brazo normalmente tiene
Hotspotter • PORTADA
tes, por ejemplo, de datos, de control y paquetes de gestión. Los paquetes de gestión son particularmente interesantes en este caso, ya que manejan alertas de servicios, conexiones y desconexiones (véase el cuadro titulado “Paquetes de Administración Críticos”).
En Claro Los paquetes de administración dentro de las redes Figura 2: Herramientas como Ethereal permiten analizar la inalámbricas son transmiestructura de los paquetes IEEE 802. El ejemplo muestra un tidos en claro (sin encrippaquete Probe Response como los usados por los atacantes tar). Y por si esto no fuera descritos en el artículo. poco, no hay nada que verifique la integridad ni la al menos dos configuraciones inalámbrivalidación del emisor/receptor. Un seguncas o perfiles -una para trabajar en puntos do punto de acceso podría transmitir de acceso públicos, ya sea en aeropuertos paquetes Respuesta de Sondeo en respuesu hoteles y otro para accesos seguros a la ta a un paquete Petición de Sondeo de un red protegida de la empresa. Internet procliente y luego invitarlo a que se asocie. porciona varias bases de datos que inforUn paquete Respuesta a Sondeo, como el man sobre dónde se encuentra localizado que se muestra en la Figura 2, se compone el siguiente punto de acceso público [4]. de múltiples segmentos. Una red inalámbrica se compone de múlLos más importantes son: tiples elementos y para manejar la cone• Control de Cuadro (FC) especixión se transmiten una variedad de paquefica el tipo del paquete (“0” para paquetes de gestión) y subtipo (“5” para Probe ResCuadro 1: Paquetes de ponse), además de flags que Administración Críticos habitualmente están a 0 para Beacons: Se envían por el punto de Probe Response. acceso para sincronización y para infor• Dirección de destino es la direcmar de los parámetros de la red. ción de destino. Probe Request: Se envían por el cliente • Dirección fuente es la dirección para buscar redes disponibles y contieMAC del cliente. nen parámetros tales como el SSID y la • BSS Id es la dirección MAC del frecuencia. punto de acceso. Probe Response: El punto de acceso • Parámetros fijos se componen responde a los paquetes Probe Request, de una marca de tiempo y de confirmando o rechazando las transacinformación sobre las capacidaciones. des de la red. Association Request: El cliente anuncia • Parámetros Etiquetadps inclusu intención de unirse a una red específiyen el SSID, su longitud y el ca.
Association Response: La contestación del punto de acceso, diciendo si permitirá al cliente unirse a la red. Disassociation: El punto de acceso le indica a los clientes que dejen su conexión actual. Authentication: La autenticación del cliente para la conexión en la red. Desauthentication: Se envía por el punto de acceso para eliminar una autenticación existente.
Cuadro 2: Modo Monitor El modo monitor, también denominado modo RFMON, es un modo especial en el que el firmware de la tarjeta inalámbrica pasa cualquier paquete que reciba al controlador software, en vez de los paquetes que realmente están destinados a ella -puede ser algo parecido a escuchar múltiples estaciones de radio al mismo tiempo.
WWW.LINUX-MAGAZINE.ES
canal, además de las velocidades de transmisión soportadas. La cuestión es, cómo se supone que los usuarios van a reconocer que realmente están conectados a la red real con la que se quieren conectar y no a una red controlada por un atacante. De hecho, los usuarios no tienen forma de saberlo y es aquí precisamente donde surge el agujero de seguridad. En una inspección más detallada, se observa que una red publica la siguiente información: • El nombre lógico de la red (SSID) • La dirección MAC del punto de acceso • La configuración del punto de acceso Cualquier punto de acceso puede usar cualquier SSID, ya que esto es el nombre lógico de la red actual, y es un valor libremente configurable que no se valida y no tiene porqué ser único. La dirección MAC del punto de acceso podría ser fácilmente duplicada si un atacante usa un punto de acceso basado en software. Y una dirección MAC duplicada no tiene habitualmente impacto dentro de una red, al contrario de lo que sucede en las redes cableadas tradicionales. Un punto de acceso normalmente no verifica los paquetes entrantes para averiguar si fueron realmente enviados por él mismo. Algunos dispositivos incluyen ahora módulos de Sistemas de Detección de Intrusos propietarios para comprobar si se está produciendo un ataque basado en infiltración de paquetes. Pero la única forma real de eliminar el peligro sería introducir un sistema de validación emisor/ receptor como el que se implementa en el proyecto de código abierto llamado Wlsec [6]. Desafortunadamente este proyecto ha tenido muy poca aceptación por los fabricantes de dispositivos inalámbricos.
Sin Autenticación Un punto de acceso no podrá saltarse una configuración de autenticación y encriptación, ya que esta información no se da a conocer. Sin embargo, los parámetros de configuración de los puntos de accesos públicos son diseñados para ser anticipados, algo que no ocurre en los usados por las empresas privadas. Ambos esquemas de protección son deshabilitados, ya que los puntos de acceso
Número 09
15
PORTADA • Hotspotter
públicos no autentican a los usuarios ni encriptan los datos. Esto permite a un atacante suplantar una red; los clientes supondrán que se han conectado a la red real, aunque en realidad, se hayan conectado a la red del atacante. Los atacantes pueden incluso usar múltiples adaptadores para configurar un escenario del “hombre en medio”, donde el punto de acceso examina los datos del cliente antes de enviarlos a su destino. Esta vulnerabilidad se demostró por primera vez con Airjack [7]. El grupo Ssmo, que se hizo famoso con Airsnort, reconoció rápidamente el problema y desarrolló la herramienta Airsnarf [8], que genera un punto de acceso basado en software con una página Web de conexión falsa. Si un cliente rechaza desconectarse de una sesión existente, la herramienta Void11 puede generar paquetes de “desautenticación” y forzar al cliente a retroceder y empezar la búsqueda de redes de nuevo.
Hotspotter Airsnarf no proporciona a los usuarios una herramienta totalmente automatizada, ya que supone que algunos parámetros de la red, como el SSID, son conocidos. La herramienta Hottspotter [9], del autor, utiliza una solución similar a Airsnarf pero reacciona autónomamente frente a las búsquedas realizadas por los clientes de redes desprotegidas. El programa puede usar cualquier adaptador que pueda ser configurado usando iwconfig mode monitor y iwconfig mode master. Las tarjetas con los chipsets
Cuadro 3: Peligro Grave con Windows Para mantener la administración de los clientes lo más sencilla posible y permitir a la gente usar más o menos cualquier punto de acceso público sin tener que reconfigurar sus portátiles, los usuarios normalmente crean un perfil “Mi red segura” y otro “Otras”. Esta última es un caso especial e incluye cualquier red, independientemente del nombre de la red. Si un atacante intenta colarse en una red segura, el cliente no podrá asociarse con la red, ya que la configuración de autenticación y encriptación se lo impedirá. Sin embargo, este no es siempre el caso de los usuarios Windows con la configuración que se ha descrito ya que el perfil “Otras” está implícito.
16
Número 09
Prism2 y Atheros nos proporcionaron buenos resultados en nuestro laboratorio. Hotspotter primero conmuta la tarjeta a RFMON o modo monitor (véase el cuadro titulado “Modo Monitor”). En este modo, el programa acepta cualquier paquete del área de recepción y evalúa cualFigura 3: Hotspotter en acción, cada punto indica un quier petición probe. Los paquete recibido de la red. paquetes Probe Request incluyen los detalles de la red que el cliente espere a que la tarjeta inalámbrica del está actualmente buscando (véase el atacante sea configurada como punto de cuadro “Paquetes de Gestión Críticos”). acceso. Para buscar una red, el cliente envía Por supuesto que no hay límites a lo paquetes Probe Request con el parámetro que un atacante pueda decirle a SSID de la red que se busca. De modo Hotspotter que haga dentro de los confimás sencillo, el cliente de nuestro ejemnes de un script bash. Esto puede incluir plo grita: Hola, ¿es ésta la red asignaciones de direcciones IP basadas “del_punto_de_acceso_público” o en DHCP y resoluciones de nombres “la_de_mi_empresa”? Y si sucede esto, basadas en DNS para el cliente, escaneo el punto de acceso envía una respuesta y automático de puertos, fisgoneo automála conexión puede ser establecida usantico de los datos de la comunicación o do la configuración definida por el perfil incluso hacerse con el sistema instalandel cliente. do otro exploit o algún troyano. El ataSi el cliente pierde la conexión, se cante podría presentarse al cliente con intenta de nuevo. Dependiendo de la una página de conexión falsa. configuración, el cliente puede intentar Conclusión localizar las redes definidas en sus perfiles a intervalos regulares o esperar a que Si se piensa en la cantidad de portátiles el usuario le indique cuando hacerlo. que tienen integrados tarjetas inalámbriSi el cliente no encuentra la red que cas en la actualidad, no es de extrañar está buscando, normalmente sigue con que las comunicaciones inalámbricas en la siguiente red que tenga definida en su trenes, aeropuertos o ferias sean un prolista de perfiles. Esto permite a un atablema de seguridad bastante serio. Es cante descubrir los perfiles que un clienimportante tomar medidas de seguridad te tiene definido. aunque sean caras y no facilitar a los ataHotspotter toma el SSID de la red solicantes nuevos vectores para atacar las ■ citada y la compara con una lista de pun“tan seguras” redes empresariales. tos de accesos que no proporcionan encriptación. Si Hotspotter encuentra RECURSOS alguna coincidencia, inmediatamente [1] TKIP: http://www.cisco.com desactiva el modo monitor y automática[2] WPA: http://wwww.wi-fi.org mente configura la tarjeta como un punto de acceso software (véase la [3] AES: http://www.faqs.org/rfcs/rfc3565. html Figura 3). De modo más simple: ¡Sí! Aquí esta la red “del_punto_de_acce[4] Directorio International de puntos de so_público”; ya puedes conectarte a mí. accesos: http://mobile.yahoo.com/wifi El cliente tan sólo tiene que acceder. Esto [5] Cliente Odyssey para Windows: http:// hace que la conexión a la red esté firmewww.funk.com/radius/wlan/ mente controlada por el atacante. lan_c_radius. asp
Exploit Automático Si se especifica la opción -r o -e y se le pasa a Hotspotter un script bash todo esto ocurre automáticamente. -r significa que se ejecute antes de conmutar al modo punto de acceso y -e significa que
WWW.LINUX-MAGAZINE.ES
[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
PORTADA • ARP Spoofing
ARP Spoofing y Poisoning
TRUCOS DE TRÁFICO
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
C
uriosidad, venganza o espionaje industrial pueden ser las razones por las que desde dentro de su propia red un atacante pueda realizar sus fechorías. Las estadísticas confirman que entre el 70 y 80 por ciento de los ataques efectuados a una red proceden desde dentro de la misma [1]. Los administradores pasan bastante tiempo impidiendo estos ataques internos ya que proteger la red desde dentro es mucho más difícil que protegerla frente a ataques externos. Una de las técnicas más formidables de ataques internos es la que se conoce como ARP spoofing. ARP spoofing coloca a un atacante en una posición en la que puede espiar y manipular el tráfico local. El ataque conocido como el hombre de en medio es fácil de realizar gracias a un software sofisticado, incluso los atacantes con muy pocos conocimientos sobre redes disponen de buenas utilidades para llevar a cabo su cometido con éxito.
¿Cómo funciona ARP? El protocolo ARP se publicó en Noviembre de 1982 como RFC 826 [2]
18
Número 09
por David C. Plumier. Como la seguridad en las tecnologías de la información no era un factor importante en aquella época, el objetivo era simplemente proporcionar funcionalidad. ARP transforma direcciones IP a direcciones MAC. Si el cliente C necesita enviar un paquete al servidor S, tiene que saber cual es la dirección MAC de S si ambas máquinas están dentro de la misma subred. Incluso si S reside en una red diferente, C aún necesita la MAC -en este caso, la dirección del router que reenviará el paquete. El router se hará cargo de todo lo demás. Para averiguar la dirección MAC, C retransmite una solicitud ARP a todas las máquinas de la red local, preguntando “¿Quién tiene la dirección IP a.b.c.d?”. La máquina que tiene dicha dirección IP responde indicándole al cliente su dirección MAC (Figura 1). Como se muestra en la Figura 2, un paquete ARP se transporta como información dentro de una trama Ethernet. Para permitir que esto pueda hacerse, el valor de 0x8006 se coloca en la cabecera de la trama en el campo tipo – esto le indica al destino que se trata de un paquete ARP.
WWW.LINUX-MAGAZINE.ES
Como sería muy costoso el tener que retransmitir solicitudes ARP y esperar las respuestas antes de enviar datos, cada pila IP contienen una tabla ARP, también conocida como ARP caché (Figura 3). La caché contiene una tabla con las direcciones IP y las direcciones MAC correspondientes. La tabla puede albergar entradas estáticas (por ejemplo, aquellas generadas por un usuario) y entradas dinámicas (aquellas que ha ido aprendiendo a través del protocolo ARP). Las entradas dinámicas a menudo son válidas para períodos cortos de tiempo, normalmente unos cuantos minutos.
Efectuando ataques en la LAN Como ARP no realiza ningún intento por protegerse frente paquetes manipulados, es vulnerable a una serie de ataques. Los más comunes son MAC spoofing, MAC flooding y ARP spoofing. MAC spoofing implica que el atacante debe usar una dirección fuente MAC manipulada. Esta técnica tiene sentido si los privilegios van ligados a una dirección MAC. Muchos administradores de WLAN
ARP Spoofing • PORTADA
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áquinas en la LAN. El nodo con la dirección pedida responderá directamente a la máquina que pregunta.
(Wireless LAN) ponen la dirección MAC de los usuarios autorizados en una lista de control de acceso. Esto es una medida de seguridad débil ya que es fácil de vulnerar. El atacante tan sólo tiene que conocer una dirección privilegiada y usarla cuando la máquina con dicha dirección esté apagada. MAC spoofing es útil cuando los atacantes quieren proteger su identidad. Hay una forma bastante sencilla de impedir esta clase de ataques en una red cableada: muchos switches permiten seguridad a nivel de puertos. El switch tan sólo aprende la dirección MAC una sola
vez y la almacena permanentemente. A partir de este momento, el switch no aceptará ninguna otra dirección MAC fuente conectada a ese puerto. Este mecanismo es efectivo frente a los ataques MAC spoofing. Como punto negativo se tiene que el administrador debe reconfigurar el switch cada vez que se cambie la red. La seguridad a nivel de puertos puede también proteger la red frente a otra clase de ataques. El ataque conocido como MAC flooding está diseñado para echar abajo la seguridad a nivel de puertos de un switch.
Al contrario que los hubs, los switches usan tablas CAM (Memoria de contenido direccionable), que especifican el puerto correspondiente a cada dirección MAC del switch. El switch tan solo enviará paquetes a través del puerto que conduzca a la máquina destino. Los atacantes pueden deshabilitar esta funcionalidad sobrecargando el switch con direcciones -la tabla CAM solo puede contener un número determinado de direcciones. Si el ataque tiene éxito, se consigue que el switch funcione como un hub y esto permite que las comunicaciones sean visibles por cualquier puerto.
ARP Poisoning El tercer ataque no es tan fácil de detectar y no hay contramedidas simples. El ataque se basa en un ARP spoofing, donde el atacante deliberadamente transmite un paquete ARP falso. ARP poisoning es un tipo específico de ARP spoofing cuyo objetivo es manipular (envenenar en inglés, de ahí el nombre) las tablas ARP de otras máquinas. Como los sistemas operativos no suelen comprobar si una respuesta ARP es realmente la contestación a una solicitud ARP enviada previamente, la información de la dirección de la respuesta es almacenada en la caché. En los sistemas Windows los atacantes pueden incluso
Direcciones de la LAN: Conceptos Básicos Si dos ordenadores en una red quieren charlar, necesitan una forma de identificación entre ellos unívoca. Ethernet utiliza un número de 48-bit (6 byte), que es asignado por el fabricante. La denominada dirección MAC (Control de Acceso al Medio) es única en el mundo. Esto permite a los usuarios añadir (más o menos) tantos adaptadores Ethernet como quieran a la LAN. Sin switches o bridges Ethernet usa broadcasting; esto es, cada paquete en el cable se envía a cada nodo de cada segmento de la red. Pero solo el destino pretendido aceptará el paquete, mientras todos los otros nodos lo ignorarán. Esta solución es sorprendentemente fácil, pero no se adapta bien en diversos entornos. Todo el que esté conectado al medio común comparte el ancho de banda. Los bridges y los switches reducen la situación dividiendo la red en múltiples segmentos y aprendiendo qué direcciones MAC están disponibles a través de los puertos (tabla CAM, Content
Addressable Memory). Esto permite a estos dispositivos transmitir paquetes sólo a los segmentos donde se encuentra la máquina destino. Sin cada segmento, los nodos de la red pueden enviarse paquetes unos a otros sin interferencias con comunicaciones en otros segmentos. Este principio no es aplicable a todas las redes. Cada switch necesita conocer el entorno que le rodea. Para manejar esto, los creadores de Internet presentaron un esquema de direcciones basados en las direcciones IP. Las direcciones IP tienen una longitud de 32 bits (4 bytes) y comprende una red y una sección de host. La máscara de red le dice qué parte de las direcciones se refiere a la red y qué parte identifica al host. Las redes individuales que forman Internet están conectadas por routers. Los routers sólo necesitan conocer direcciones de red para enviar paquetes de forma correcta. Mientras se asignan
WWW.LINUX-MAGAZINE.ES
direcciones IP, la LAN continua utilizando sólo direcciones MAC. Pero sería un inconveniente para cada programa que necesite conocer ambas direcciones IP y las direcciones MAC. Aquí es donde ARP (Address Resolution Protocol) puede ayudar proporcionando la dirección MAC que coincida con una dirección IP. El administrador no necesita configurar esto – es decir, no hay necesidad de configurar las coincidencias entre direcciones IP/MAC. Como parte negativa, la automatización lleva a un gran problema de seguridad, que discutiremos con más detalle en este artículo. Junto con ARP, también está RARP (Reverse ARP, [3]). De forma similar a DHCP, un servidor RARP asigna una dirección IP a una máquina basada en el conocimiento de la dirección MAC del equipo. Como RARP no pasa ningún otro parámetro (nombre del servidor, dirección del gateway, máscara de red), hoy en día es muy extraño usarlo.
Número 09
19
PORTADA • ARP Spoofing
modificar entradas declaradas por los usuarios como estáticas. Realizando esto se permite que un atacante monitorice el diálogo entre un cliente y un servidor y utilizando la técnica del “hombre de en medio”, manipule el diálogo. El hombre en medio manipula las entradas del servidor en caché ARP del cliente, haciendo creer al cliente que la dirección MAC del atacante es en realidad la dirección del servidor. El mismo truco se usa para el servidor. Si el cliente quiere hablar con el servidor, comprobará su tabla ARP manipulada y enviará el paquete a la dirección MAC del atacante. Esto permite al atacante leer y modificar el paquete antes de reenviarlo al servidor. Entonces el servidor supone que el paquete fue enviado directamente por el cliente. La respuesta del servidor de nuevo va al atacante, que la reenvía al cliente. Si el servidor reside en otra subred, el atacante tan solo tiene que lanzar su ataque contra el router. Desde luego, un atacante puede provocar una denegación de servicio simplemente descartando cualquier paquete recibido. Para manipular los datos, el atacante simplemente tiene que reenviar datos diferentes a los que reciba. Los atacantes pueden fácilmente recolectar contraseñas, ya que el número del puerto les permite averiguar el protocolo usado e identificar las credenciales del usuario basándose en este conocimiento.
Precaución incluso con SSL y SSH Las conexiones encriptadas no son automáticamente inmunes, como demuestran diversas herramientas ARP. Estos programas están ahora disponibles para varios sistemas operativos (véase el cuadro titulado “Exploits para ARP”). Además de la funcionalidad de ARP poisoning, incluye implementaciones para clientes y servidores de SSL (Secure Socket Layer), TLS (Transport Layer Security), SSH (Secure Shell) o PPTP (Point to Point Tunneling Protocol). Accediendo a un servidor web SSL, el navegador alerta al usuario que algo va mal con el certificado para la conexión. Pero hay muchos usuarios que no comprenden la importancia de la alerta y simplemente la ignoran. El hecho de que muchos servidores usen un certificado generado por ellos mismos hace que dichas alertas sean relativamente fre-
20
Número 09
cuentes; de hecho, se suele hacer clic y simplemente ignorar el mensaje. Un error en algunas versiones del navegador Internet Explorer hace que sea posible atacar las conexiones SSL sin que el navegador ni siquiera muestre la alerta. El ataque a SSH sigue un patrón similar (Figura 4). Si el cliente ya conoce la clave del lado del servidor, mostrará un mensaje claro (Figura 5). Pero muchos
usuarios y administradores ignoran el aviso, suponiendo que alguien ha cambiado la clave del servidor. Pocos protocolos o implementaciones son inmunes. (IPsec es una excepción. IPsec rehúsa trabajar si algo va mal con el proceso de autenticación). A causa de este problema, casi cualquier clase de comunicación interna es vulnerable. Hay incluso herramientas
Herramientas de Explotación ARP A continuación nombraremos algunos programas que permiten a los atacantes explotar las vulnerabilidades de ARP. Los administradores pueden utilizar estas herramientas para testear sus propias redes. Son bastante útiles para demostrar la severidad de los ataques ARP. El problema de seguridad real, por supuesto, no es el hecho de que estas herramientas existan, ya que ARP es relativamente inseguro. ARP-SK: Los programadores describen sus herramientas como una Navaja Suiza para ARP; está disponible para versiones Unix y Windows. El programa puede manipular las tablas ARP en varios dispositivos. http://www.arp-sk. org Arpoc y WCI: Este programa para Unix y Windows realiza un ataque tipo hombre de en medio en la LAN. Contesta a cada petición ARP que alcanza la máquina con una respuesta ARP manipulada y reenvía cualquier paquete de entrega no local al router apropiado. http://www. phenoelit.de/arpoc/ Arpoison: Una herramienta de línea de comandos que crea un paquete ARP manipulado. El usuario puede especificar la fuente y la dirección IP/MAC de la tarjeta. http://arpoison.sourceforge.net Brian: Esta herramienta extremadamente simple (comprendido en un sólo fichero C) utiliza ARP poisoning para deshabilitar las interconexiones en la LAN. Esto permite a un atacante fisgonear todo el tráfico en la red. http://www. bournemouthbynight.co.uk/tools/ Cain & Abel: Este sofisticado software de Windows comenzó como una herramienta de recuperación de claves. Fisgonea la red y utiliza una variedad de técnicas para descifrar claves encriptadas. La versión 2.5 de la herramienta fue la primera en introducir ARP poisoning, que permite a los atacantes fisgonear el tráfico IP en la LAN. El programa ataca conexiones SSH y HTTPS. http://www. oxid.it/cain.html/
WWW.LINUX-MAGAZINE.ES
Dsniff: Los programas individuales en esta suite de herramientas llevan a cabo distintas tareas. Dsniff, Filesnarf, Mailsnarf, Msgsnarf, Urlsnarf y Webspy fisgonean la red y cogen datos interesantes (como claves, correos y ficheros). Arpspoof, Dnsspoof y Macof permiten a los administradores y atacantes acceder a datos que un switch normalmente protege. Sshmitm y Webmitm soportan el ataque hombre de en medio en SSH y HTTPS (aunque el autor se refiere a ellos como ataques Monkey in the Middle). http://naughty.monkey. org/~dugsong/dsniff/ Ettercap: Un potente programa con una interfaz basada en texto (ver Figura 4); la última versión también tiene un interfaz Gtk. Las acciones se realizan automáticamente, con la herramienta se muestran tarjetas potenciales en una ventana. Junto a Sniffing, los ataques ARP y la obtención de claves automáticas, Ettercap también puede manipular datos sin una conexión. El programa también ataca conexiones SSHv1 y SSL (utilizando las técnicas del ataque del hombre de en medio). http://ettercap.sourceforge.net Hunt: Las conexiones fallidas, fisgoneo de datos y secuestro de sesiones. La herramienta utiliza manipulación ARP y otras técnicas. http:// packetstormsecurity.nl/sniffers/hunt/ Juggernaut: En 1997, Phrack Magazine publicó Juggernaut, el predecesor de la mayoría de los sniffers actuales con capacidad para manipular la caché ARP. http://www.phrack.org/show. php?p=50&a=6 Parasite: El servicio Parasite fisgonea la LAN y responde a peticiones ARP con respuestas ARP manipuladas. La herramienta permite gradualmente a la máquina establecerse por sí misma como un hombre de en medio para cualquier comunicación en la red. http://www.thc.org/releases.php
ARP Spoofing • PORTADA
difícil de llevar a cabo. Los administradores tendrían que restringir el uso de la conexión a Internet. HTTP, HTTPS, FTP y el correo electrónico hacen Figura 5: Durante el ataque Ettercap (Figura 4), el cliente (odo en que le sea fácil a este ejemplo) recibe una clave modificada del servidor. La clave proun atacante infilviene del atacante y no del servidor solicitado (bashir). Si el usuario trarse dentro de la escoge ignorar la advertencia, la conexión será fisgoneada. red software dañino. Los adminispara novatos que pueden obtener contratradores tendrían también que prohibir señas de unos 50 protocolos. Como este el uso de disquetes, CDs, además de disataque sucede a nivel ARP y normalmenpositivos móviles como portátiles y te tan solo los accesos IP son registrados PDAs. Debido a las restricciones de uso, los atacantes de hoy en día se sienten esta solución es inviable. bastante seguros ya que nadie se percaSi se usa Linux en la red interna y no tará de que ellos están al acecho. se le da a los usuarios los permisos de root, se pueden evitar la mayoría de los Impidiendo los ataques ARP ataques: los usuarios necesitan los priviUna posible solución para impedir los legios de root para enviar paquetes ARP ataques ARP sería imposibilitar la desdañinos. Sin embargo, como administracarga y ejecución de software externo, dor, no se tiene una forma efectiva de aunque esta regla es extremadamente impedir que los usuarios arranquen sus
máquinas desde un CD o que conecten sus portátiles a la red. Las entradas ARP estáticas pueden ayudar a impedir los ataques ARP, pero la mayoría de los administradores querrán evitar el esfuerzo titánico que supone el asignar las direcciones manualmente para todas las máquinas. Como el sistema operativo de Microsoft permite a los atacantes manipular incluso las entradas ARP estáticas asignadas manualmente, conseguir un entorno seguro es realmente difícil. Esta solución tan sólo tiene sentido en pequeñas redes, ya que el número de entradas ARP crece proporcionalmente al cuadrado del número de adaptadores de red. Dicho de otro modo, harían falta 9900 entradas para un sistema con cien máquinas (99 para cada uno de ellos). Esto implica un enorme esfuerzo de administración, especialmente si se tienen que resolver problemas de red.
Echándole un ojo Arpwatch [4] es una herramienta de código abierto para plataformas UNIX
PORTADA • ARP Spoofing
ataque. Esta arquitectura hace que ARP-Guard se adapte bien tanto Figura 3: La tabla ARP en un sistema Linux con una entrada incomen redes pequeñas pleta, una entrada estática y dos entradas dinámicas (C: completa, M: como en grandes estática). redes y el interfaz basado en web que dispone hace que sea que monitoriza las actividades ARP apreciado por los administradores. inusuales. La máquina que ejecuta ARP-Guard tiene sensores LAN y Arpwatch lee la información de direccioSNMP. Los sensores LAN funcionan namiento almacenada en cada paquete como Arpwatch o cualquier sistema IDS, ARP que pasa por ella y almacena esta analizando cualquier paquete ARP que información en una base de datos. Si el el sensor lea. Por el contrario, el sensor dato no coincide con las entradas ya SNMP usa el protocolo SNMP para almacenadas, Arpwatch envía un correo conectarse a los dispositivos existentes y al administrador avisándole. El autor preguntarle por sus tablas ARP. dice que la herramienta soporta SNMP, Los sistemas de detección de intrusos, aunque nos ha resultado imposible conIDS, (véase el cuadro titulado “Snort y firmarlo en nuestro laboratorio. ARP”) también son capaces de detectar Actualmente, la mayoría de las redes ataques ARP, pero normalmente se instausan direcciones IP dinámicas asignadas lan en las fronteras de la red. Pero a por DHCP (Dynamic Host Configuration muchos negocios, simplemente no les Protocol). En esta clase de entornos, vale la pena instalar un IDS en la red Arpwatch devolverá gran cantidad de interna. Además, los empleados podrían avisos de falsos positivos ya que avisará sentir que están dentro del “Gran de cualquier cambio producido por las Hermano” bajo la mirada del administradirecciones IP/MAC. dor de la red. El administrador puede ver ARP-Guard [5], un producto reciente todo el tráfico de la red y además monide ISL, funciona dentro del marco de torizar el acceso de la plantilla. La utiliuna arquitectura gestionada por sensodad de esta solución es cuestionable, res. Múltiples sensores monitorizan la como la mayoría de los sistemas IDS información ARP y envían dicha inforsimplemente ignoran el tráfico ARP. Y mación al sistema de gestión, que analipor último, el sistema al completo podría za los mensajes y alerta a los administracolapsar al enfrentarse a ataques de tipo dores en el caso de que se produzca un
ARP poisoning en combinación con la asignación dinámica de direcciones IP.
La criptografía al rescate Los protocolos criptográficos (IPsec sobre todo) se aseguran de la confidencialidad, autenticidad e integridad de los datos, los ataques ARP se reducen simplemente a una denegación de servicios. Cualquier intento de fisgonear o manipular los datos fracasarán. Sin embargo, pasará algún tiempo hasta que IPsec y otros protocolos criptográficos se instalen y configuren correctamente dentro de las redes internas. Hay un grupo de investigadores que solicitan que ARP sea reemplazado con una versión más segura [7]. S-ARP se basa en criptografía, un CA (Autoridad de Certificación) y mensajes ARP firmados digitalmente. Sin embargo, se cuestiona si vale realmente la pena: IPsec proporciona mucha más protección con el mismo esfuerzo, donde S-ARP tan solo protege ARP. Lo único que ARP tiene a su favor es que implica menor sobrecarga de CPU en los sistemas.
Otras técnicas de Prevención Agunos fabricantes de cortafuegos y routers sostienen que sus productos son capaces de detectar ataques ARP spoofing, pero estrictamente esto no es verdad ya que estos sistemas tan solo pue-
Snort y ARP Snort [6] es un ejemplo sobresaliente de lo que es un IDS para redes. Este sistema de detección de intrusiones ayuda a los administradores a detectar ataques en una red en una fase temprana, permitiendo implementar contramedidas. Snort dispone de un preprocesador Arpspoof con cuatro mecanismos de detección.
te y destino. Si una de estas comparaciones no coinciden, Snort emite una advertencia. Como en el caso anterior, esto no detectaría envenenamiento ARP per se, aunque sí Proxy ARP. Por otro lado, esta técnica a menudo es legítima e involucra una máquina que contesta peticiones ARP en delegación de otra máquina.
• Para cada petición ARP que detecta, el preprocesador Arpspoof valida la dirección fuente en el cuadro Ethernet contra la dirección fuente el paquete ARP. Si ambas direcciones no coinciden, emite una advertencia. El envenenamiento ARP no implica la utilización de direcciones diferentes en estos campos, por lo que no se detectaría un ataque en todos los casos.
• El sistema alerta en el caso de peticiones ARP que se envían a direcciones unicast en vez de a broadcast. Aunque este comportamiento no se conforma al estándar (que tiene más de 20 años), existen buenas razones para ello. Sin embargo, un auténtico ARP no necesita “unicastear” peticiones, por tanto, al igual que más arriba, este mecanismo podría fallar a la hora de detectar una ataque de envenenamiento.
• Para respuestas ARP, se lleva a cabo una comparación de direcciones fuen-
22
Número 09
WWW.LINUX-MAGAZINE.ES
• Snort comprueba todos los paquetes ARP basándose en una lista de direcciones IP y MAC proporcionadas por el administrador. Si la dirección IP está en la lista, el IDS leerá su correspondiente dirección MAC de la lista y la comparará con la dirección MAC del paquete y del cuadro Ethernet. En el caso de discrepancia, Snort emite una advertencia. Este mecanismo sólo es útil para redes pequeñas, al ser el esfuerzo de configuración demasiado grande en otros casos. No hay ninguna manera de utilizar esta funcionalidad de manera consistente con asignación dinámica de direcciones (DHCP). En otras palabras, la capacidad de Snort para la detección de envenenamiento ARP es limitada, al igual que en el caso de otros Sistemas de Detección de Intrusiones.
ARP Spoofing • PORTADA
vos terminales. El parche Antidote [8] le indica a una máquina Linux que envíe una solicitud a la dirección MAC previa antes de cambiar una entrada ARP. La máquina sólo cambiará la entrada si la solicitud a la dirección previa no es respondida. De nuevo, esta solución no proporciona ninguna protección real frente al sabotaje. El atacante puede simplemente asegurarse de que el ataque suceda cuando la máquina con la dirección MAC previa esté Figura 2: Un paquete ARP se transmite como contenido de la apagada o sea inalcanzable. En el caso de que trama Ethernet. Los campos con el tipo y la longitud de las haya bastante sobrecardirecciones en cada paquete son seguidos por el código y los ga o que se tenga una datos de destino. solución de balanceo de den detectar y registrar modificaciones carga, el parche puede causar que la de sus propias tablas ARP y no tienen comunicación a estos sistemas falle. forma de saber si el cambio se ha produOtra alternativa para protegerse contra cido por una causa legítima. ataques ARP poisoning es impedir el reaDividir la red en un gran número de signamiento de direcciones MAC-IP exissubredes y asignar un pequeño número de tentes. El parche Anticap [9] implementa usuarios a cada subred puede ayudar a este comportamiento para Linux, limitar la exposición a ataques ARP. Los FreeBSD y NetBSD. Solaris tiene una switches, que permiten a los administraopción similar, que requiere que un temdores manejar el tráfico de red, proporcioporizador expire antes de aplicar el camnan protección contra ataques ARP y sirbio. Este comportamiento se puede conven también para gestionar el tráfico. figurar libremente, sin embargo, una Como contrapunto, esta clase de switch es solución como el parche Anticap solacaro, aumenta el volumen de trabajo de mente protege sistemas que están encenlos administradores y pueden tener el didos permanentemente y los atacantes efecto de bloquear algunas aplicaciones. no tendrán ningún problema de manipuAlgunos desarrolladores intentan añalar las entradas nuevas una vez que las dir protección a la pila IP en los dispositientradas en la caché hayan expirado.
El kernel 2.4 de Linux o posteriores ya no reaccionan frente a respuestas ARP no solicitadas. Desafortunadamente, este mecanismo se puede saltar fácilmente, como explica el fichero readme de Ettercap. El kernel siempre tiene que procesar las solicitudes ARP. Como al kernel se le pasa una combinación de dirección IP y dirección MAC (de la fuente), añade estos datos a su caché ARP. Así que el atacante tan solo tiene que enviar una solicitud ARP manipulada. Ettercap envía una combinación de solicitud y respuesta, y cualquier sistema responderá a una de estas técnicas. La protección incorporada dentro de la pila IP es menos potente para impedir el ARP spoofing. Si un atacante responde a una solicitud ARP más rápido que la máquina a la que realmente se le está enviando la solicitud, el atacante gana la carrera y su dirección es la que se añade a la tabla ARP.
Sin protección Las técnicas actuales no pueden proporcionar una protección completa frente a ataques ARP, pero puede armarse con sistemas IDS y sensores especializados en la manipulación ARP para detectar la mayoría de los intentos. Para estar completamente seguro, hay que instalar IPsec en la red. Ignorar el problema no es una buena solución a menos que se tenga una confianza plena en todos los ■ usuarios que accedan a la red.
RECURSOS [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 y http://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 y http://www.acsac.org/ 2003/ papers/ 111. pdf
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.
WWW.LINUX-MAGAZINE.ES
[8] Parche Antidote: http:// www. securityfocus. com/ archive/ 1/ 299929 [9] Parche Anticap: http:// cvs. antifork. org/cvsweb. cgi/ anticap/
Número 09
23
PORTADA • Políticas de Seguridad SSPE
SSPE:Administración de políticas de seguridad para múltiples cortafuegos
CONTROL CENTRAL El Simple Security Policy Editor (SSPE) nos ayuda a organizar nuestra red y mantener las políticas de seguridad 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
T
ener muchas redes requiere muchos cortafuegos. El cortafuegos protege la pasarela a Internet, separa departamentos dentro de una empresa y ayuda a conectar sitios remotos gracias a la tecnología VPN. Con este escenario, es muy útil disponer de una herramienta central para administrar las políticas de seguridad de los cortafuegos. El pionero en este campo fue la interfaz gráfica Checkpoint Firewall-1 [3]. Pero este software comercial solía ser demasiado complicado, con demasiadas características, no todas útiles. Esto añadía a la herramienta bastante complejidad. El Simple Security Policy Editor (SSPE) [1] es mucho más ligero. Se compone básicamente de una colección de scrips de shell y Perl que
24
Número 09
ayudan a administrar un entorno de cortafuegos distribuido. Al ejecutarlo por primera vez, SSPE muestra un cuadro de diálogo basado en texto plano ([6] y Figura 1). Sin emabrgo, este front-end tan espartano esconde una poderosa herremienta por debajo. Esta interfaz en modo texto ofrece soporte para administración remota: podemos usar un modem o un teléfono móvil para llamar, aunque la herramienta tiene sus más y sus menos con las limitadas trasmisiones X11. Que sea una interfaz en modo texto no significa que no podamos usar el ratón. Dependiendo del terminal de emulación, seremos capaces de pulsar sobre la ventana de texto. En lugar de mostrar un menú de opciones para todo, SSPE presupone que el administrador establecerá una serie de archivos de configuración. Muchos usuarios preferieren este método, que es mucho más consistente con la naturaleza de los cortafuegos. (Otras interfaces más sofisticadas como Firewall Builder [2], simplemente proporcionan un front-end para las herramientas en línea de comandos del sistema
WWW.LINUX-MAGAZINE.ES
operativo, ocultando su complejidad al usuario).
Enfoque integral Debido a que cada característica adicional es una amenaza potencial para la seguridad, trabajar sin una interfaz demasiado compleja mejora la seguridad de la estación de trabajo. Incluso si un problema de seguridad potencial no afecta al cortafuegos directamente, el peligro está igualmente presente, desde el momento en el que un atacante podría manipular las reglas que el administrador subirá posteriormente a los cortafuegos. El creador de SSPE establece una mínima instalación Debian que incluya los paquetes que necesita SSPE: Bash, Dialog y Perl. Pero con requisitos mínimos cualquier distribución Linux debería funcionar. En nuestras pruebas no hubo ningún problema con Debian Woody y Sarge, el derivado Ubuntu, Gentoo y Red Hat Linux.
Instalación de SSPE Es muy recomendable fortalecer nuestra estación de trabajo de administrador. Claro, que con este consejo podríamos llenar toda una estantería. La documentación de SSPE proporciona un buen número de consejos útiles. Sugiere a los usuarios que corran sus equipos en una red confiable y que instalen el sistema desde una fuente igualmente confiable. En la documentación también se comenta qué servicios deberían deshabilitar los administradores. Antes de instalar SSPE, necesiaremos tener instalado IPsec. Aunque SSPE está basado en el proyecto Freeswan [4], que fue abandonado hace dos años, Openswan [5]
Políticas de Seguridad SSPE • PORTADA
Listado 1: Archivo Profile
Figura 1: El menú principal de SSPE es muy claro. La interfaz basada en texto plano permite la administración remota de la herreminta.
proporciona un perfecto y compatible sustituto. Un fork incompatible podría causar algun problema inicial, pero cualquier persona podrá resolverlo gracias a la disponibilidad de las fuentes Open Source. Instalar el software SSPE es un proceso algo contraintuitivo debido a la ambigüedad de la información proporcionada. El documento INSTALL incluido en el paquete no pretende dar más que algunos consejos para la instalación y presupone que el administrador sabe lo que está haciendo. Cuando nos quedemos sin más consejos, nos encontraremos sentados delante de una pantalla vacía y sin obtener los mensajes de error descriptivos que necesitaríamos para encontar el problema. La causa puede ser un simple directorio que falta o la ruta en la que estamos trabajando. Pero los scripts no dan cuenta de estos errores.
Cuenta de Administrador Es preferible no ejecutar ningún software crítico para la seguridad como usuario root: SSPE sólo necesita una cuenta normal de usuario. Tendremos que añadir un directorio para SSPE en el directorio de usuario. La documentación se refiere a este directorio como adm. Como varios scripts esperan encontrar el directorio en $HOME/adm, deberíamos seguir esta recomendación. La sigiente tarea será crear un árbol de directorios bajo el directorio de administración. Podemos
hacer esto de una manera sencilla copiando los subdirectorios desde el tarball de SSPE. SSPE espera encontrar los scripts de shell y Perl en adm/bin. Los scripts modifican los archivos de configuración genérica en adm/etc. El directorio adm/desc tiene otro subdirectorio para cada máquina que configure SSPE. Aquí es dónde se guardan las reglas, tablas de enrutado y otros detalles del equipo. adm/software tiene programas que distribuye SSPE a sus pasarelas. Los archivos temporales se sitúan en adm/tmp y también necesitaremos un archivo adm/.config que define las variables que necesita SSPE en tiempo de ejecución. Una variable particularmente interesante es BASEDIR: muchos scripts apuntarán a un agujero negro si la variable BASEDIR se define incorrectamente. Por lo tanto debemos asegurarnos de que apunte al directorio adm. Además de las variables defindas en .config, algunos scripts auxiliares requerirán una variable de shell denominada ADMROOT, que apunta al directorio creado en el primer paso. La mejor idea es crear un archivo
WWW.LINUX-MAGAZINE.ES
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
profile para configurar todo esto. Podemos manejar todo este proceso como se muestra en el Listado 1. Como SSPE direcciona los equipos por el nombre del host, tiene sentido añadir dichos equipos al archivo /etc/hosts. Aunque podemos saltarnos este paso si tenemos operativo un entorno DNS, es preferible usar /etc/hosts por motivos de seguridad, ya que así reducimos el riesgo de ataques por envenenamiento de las DNS. Las comunicaciones con los cortafuegos se basan enteramente en SSH con autenticación con clave pública, por lo que el nuevo usuario también necesita un par claves SSH. Para eludir la necesidad de teclear la frase de paso, los admi-
Número 09
25
PORTADA • Políticas de Seguridad SSPE
nistradores pueden asignar una frase de paso vacía a la clave o bien usar un agente de autenticación SSH. Por supuesto, tendremos que transferir la clave pública a la máquina objetivo donde SSPE se loguee como root. La documentación de SSPE menciona esto pero realmente no da ningún consejo al respecto.
Configuración Basica Los detalles de la configuración se almacenan en varios archivos, cada uno de ellos administra un asunto específico (se suministran ejemplos). La documentación es mucho más detallada en este punto y se extiende para explicar las relaciones entre los componentes individuales. El archivo central se denomina hostnet. Se localiza en adm/etc y agrupa las máquinas que se regirán por políticas similares. El agruparlas hace más fácil desplegar un diseño de seguridad altamente granular. Lo normal es tener una política común para la red interna, donde sólo se permite el acceso a clientes muy concretos. Las reglas de acceso para el propio cortafuegos son usualmente idénticas para muchos equipos, sólo la maquina de administración necesita especial atención. En el Listado 2 tenemos un ejemplo.
Listado 2: Hosts y Redes 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23
#Name Network address # Comment ##################################################################### any 0.0.0.0/0 # anything not explicitly assigned # Internal networks lan-dtm 192.168.0.0/24 # Work LAN DTM lan-muc 192.168.1.0/24 # Work LAN MUC dmz 192.168.2.0/24 # DMZ # The boss has more privileges than others boss 192.168.0.15/32 # The boss' PC # The administrative machines need SSH access admin 192.168.0.10/32 # sysadmin PC # The SSPE workstation needs special rules sspe 192.168.0.2/32 # SSPE administrative machine # Internal and external gateway definitions def-gw 192.168.0.1/32 # Internal NIC of firewall gw-all 192.168.0.1/32 # Firewall DTM location gw-all 1.2.3.4/32 # Firewall external DTM location gw-all 2.3.4.5/32 # Firewall external MUC location
Listado 3: Redes Privadas 01 02 03 04 05
#Name Network address # Comment ############################################################## lan-dtm 192.168.0.0/24 # Work LAN DTM lan-muc 192.168.1.0/24 # Work LAN MUC dmz 192.168.2.0/24 # DMZ
NAT e IPsec Si nuestra red usa NAT (Network Address Translation) es importante definir previamente las redes privadas de uso interno (usualmente basadas en la RFC 1918 [7]), para asegurar que el conjunto de
26
Número 09
reglas se aplica correctamente. El archivo de configuración privates (véase Listado 3) se usa para este propósito. El mapeo NAT para la red y las direcciones IP se definen en nathosts (véase Listado 4). Si queremos que además SSPE maneje la configuración de IPsec, tendremos que modificar el archivo ipsecs. Otros tres archivos de configuración terminan de definir el conjunto de reglas del cortafuegos. Las reglas para el acceso de administración en rules admin e IPsec rules.ipsec son más bien estáticas y no varían mucho entre las máquinas implicadas. El conjunto de reglas se almacena en rules.user. La
WWW.LINUX-MAGAZINE.ES
sintaxis de todos estos archivos es bastante sencilla (Listado 5). Las reglas aplicadas en nuestros archivos de ejemplo permiten a la máquina admin establecer una conexión SSH con la máquina obejtivo sspe (ambas máquinas están definidas en hostnet). La palabra clave Oneway asegura que la conexión es unidireccional. SSPE aplica estas reglas a cada pasarela, por lo que el conjunto de reglas que definamos debería ser lo más universal posible.
Cortafuegos Individuales Ya podemos usar la interfaz de SSPE que se ejecuta tecleando adm/bin/adm. Por supuesto, nada nos impide modificar los archivos de configuración en los directorios bajo desc de manera manual, pero parece evidente que la opción machine administration | add (véase Figuras 1 y 2) nos ofrecen un método más sencillo. Las máquinas tienen que usar los mismo nombres que
Políticas de Seguridad SSPE • PORTADA
Listado 4: Configuración NAT 01 02 03 04
#Local network NAT Address # Comment ########################################################### 192.168.0.0/24 1.2.3.4 # DTM 192.168.1.0/24 2.3.4.5 # MUC
Conclusiones
Listado 5: Conjunto de reglas 01 #Source Target Direction Protocol Port Options 02 ############################################################# 03 admin sspe Oneway TCP ssh accept LOG
se definieron en nuestro archivo hostnet. Desafortunadamente, la herramienta no resuelve nombres con direcciones IP e insiste en preguntar al administrador estos detalles. SSPE genera el directorio requerido con tres archivos: desc contiene la descripción, ip la
Si pulsamos en apply en el menú (véase Figura 1) se despliega el diseño de la seguridad de todas las máquinas implicadas, o a una selección de ellas. Aquí comprobaremos si la configuración es correcta. El apartado ipsecs administration simplemente revela el contenido de la configuración del archivo de configuración ipsecs, pero sin los comentarios. Si la estación de trabajo no tiene un archivo /ect/ipsecs, SSPE muestra un mensaje de error y se cierra. Si tiene éxito, el programa espera a que el administrador pulse [Enter]. Entonces empieza a generar y distribuir las configuraciones IPsec y otros secretos previamente compartidos. El apartado machine configuration (véase Figura 2). No sólo se usa para añadir nuevas pasarelas y listar las ya existentes: podemos incluso deshabilitar máquinas individuales que esten temporalmente no disponibles.
Policy
a los archivos rules.* globales. Estos enlaces simbólicos aseguran que cada cortafuegos observa también el conjunto de reglas global. En un escenario simple con un solo cortafuegos, sólo necesitaríamos las reglas globales. En casos más complejos se necesita usar distintos archivos rules.user para cada cortafuegos. Las reglas de este archivo tienen prioridad respecto del archivo global.
Menú Cinco Opciones El programa principal de SSPE está principalmente diseñado para ayudar a visualizar las configuraciones. El apartado rules administration lista el contenido de hostnet y permite a los administradores llamar a un editor de textos para editar manualmente el conjunto de reglas global. Será necesario politicas individuales para las reglas específicas de sitios concretos.
WWW.LINUX-MAGAZINE.ES
SSPE logra su objetivo de proporcionar una administración más simple y efectiva de sistemas con cortafuegos distribuidos. Puede ser algo complicado habituarse al diseño, pero está realmente bien pensado y es capaz de soportar escenarios realmente complejos. El proyecto no ha tenido la relevancia que merece hasta la fecha, pero su popularidad se está incrementando. Sólo cabe esperar que más desarrolladores se den cuenta de su potencial y contribuyan con ■ innovaciones.
RECURSOS [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 for Private Internets” http://www.ietf.org/ rfc/rfc1918.txt
EL AUTOR
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.
dirección de la máquina y hw identifica sistemas operativos tipo Unix y Cisco. Esto influye en cómo descubre SSPE las rutas de una pasarela, por ejemplo. Además de estos tres archivos independientes, hay tres enlaces simbólicos
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 contribuye en un buen número de proyectos de software libre.
Número 09
27
PRÁCTICO • Ubuntu Notebook
Sub-notebook HP Compaq NC4200 con Ubuntu Linux
EL PORTÁTIL LINUX
Figura 1: HP comercializará 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.
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 distribución Ubuntu Linux con la que viene soporta prácticamente todas sus funcionalidades de hardware. POR MIRKO DÖLLE
E
l mercado de los portátiles se divide fundamentalmente en dos grupos: aquellos con dispositivos Centrino certificados y los que tienen otro hardware diferente. Aunque Centrino no es otra cosa que un gran montaje de marketing de Intel para dominar el sector WLAN, la certificación Intel tiene un efecto en el mercado de los portátiles: todos los portátiles
28
Número 09
Centrino tienen más o menos el mismo hardware base. El mismo que el del HP’s NC4200 que se venderá con una versión personalizada de Ubuntu Linux en lugar de Windows XP.
El prototipo a prueba El Hardware Competence Center de Linux Magazine se las arregló para conseguir una unidad de pre-producción del
WWW.LINUX- MAGAZINE.ES
portátil. Tiene casi el tamaño de una hoja A4. En la versión estadounidense la pantalla puede rotarse 180 grados y situarse encima del teclado, convirtiendo el portátil en un tablet PC, incluso con pantalla táctil y algunos botones adicionales en el borde de la pantalla. La versión europea lleva una pantalla estándar con 12.1 pulgadas y una resolución de 1024x768 pixels.
Ubuntu Notebook • PRÁCTICO
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 necesidad 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.
Por lo demás, la unidad de pruebas es idéntica a la final: el portátil Centrino estará dotado de un Pentium Mobile 1,73 GHz, 512 MByte de RAM y un disco duro de 40 GBytes. Pero no se incluye ni una unidad de disco óptico ni una simple bahía por los 1500 Euros de este caro portátil: HP lo ha diseñado tan pequeño que sólo estarán disponibles como unidades externas. La ausencia de unidad óptica es el principal problema para instalar el sistema operativo: Ubuntu Linux 5.0.4 se adjunta sólo en CD, el disco duro contiene únicamente un sistema Free-DOS. Sin una unidad externa USB CD no hay forma de instalar Ubuntu en el portátil. Afortunadamente, no importa la marca de la unidad CD, una grabadora DVD estándar con un conector USB 2.0 funcionará sin problemas y nos ahorrará unos buenos euros en comparación con una simple unidad CD-ROM del fabricante del portátil.
Primer contacto Aunque no tenemos unidad óptica, el portátil viene equipado con un buen conjunto de conectores. Junto con tres puertos USB 2.0, un slot PCMCIA y una ranura para tarjetas SD/MMC, el HP NC4200 viene con un conector de modem, un puerto ethernet y conectores VGA y PS/2 en la parte trasera. En cuanto a conexiones inalámbricas, el portátil trae, siguiendo el estándar Centrino, un adaptador WLAN de Intel de 54 MBit/s así como una interfaz IrDA. El módulo Bluetooth que traía instalado la unidad de pruebas está disponible como ampliación. Tanto el adaptador WLAN como el Bluetooth pue-
den deshabilitarse y volverse a habilitar con un pequeño botón situado en el lado izquierdo del portátil, (véase Figura 2), sin necesidad de reiniciar. La batería de este sub-notebook puede acumular unos 50 Wh de energía y aguantó más de tres horas durante la prueba. Debido a que la batería de esta unidad de pre-producción tenía casi un año de uso, no le pasamos el test habitual. Un portátil nuevo debería aguantar entre tres y cuatro horas sin necesidad de alimentación. El acabado del portátil es razonablemente bueno, no tiene partes que vibren ni más grandes de la cuenta. El teclado tiene un umbral de actuación claramente perceptible y para suplir el ratón HP ha incluido un puntero tipo “track point” además de un touchpad con sus dos botones correspondientes.
Ubuntu personalizado Los desarrolladores de HP y Ubuntu han simplificado el proceso de instalación de
la distro enormemente: en lugar del nombre de usuario y su password, ya no hay selecciones complicadas. Únicamente la denominación de los dispositivos de red es un poco extraña, eth0 es el nombre para el módulo WLAN mientras que eth1 está asociado con el puerto ethernet de la parte de atrás del portátil. En la mayoría de los portátiles es exactamente a la inversa. Los desarrolladores de Ubuntu han hecho un gran trabajo en cuanto al soporte del hardware: salvo por la ranura de tarjetas SD/MMC, el modo suspendido y la pantalla táctil (que no está disponible en Europa), todos los demás componentes funcionan a la primera. El módulo del kernel ipw2200 es el responsable del módulo Intel WLAN Pro/ Wireless 2200BG y hace accesible el dispositivo WLAN a través de un dispositivo normal ethernet denominado eth0 con extensiones wireless en lugar de denominarlo wlan0. Por lo tanto, al configurar el firewall o el enrutado, debemos
HP Compaq NC4200 Fabricante: Hewlett Packard http://www.hewlett-packard.com CPU: Pentium-M, 1,73 GHz Memoria: 512 MB DDR (max. 2 GB) Discos: Disco duro 40 GB, 2,5 pulgadas Pantalla: TFT, 12,1 pulgadas, 1024x768 Píxeles Batería: LiIo, 10,8 Voltios, 4500 mAh (48,6 Wh) Dispositivos de señalamiento: Track point, Touchpad con zona de scrolling y tercer botón de ratón Dispositivos 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/MMC Tamaño/peso: 28,5 cm x 23,5 cm x 3 cm / 1,8 kg Precio: 1500 Euros aprox.
WWW.LINUX- MAGAZINE.ES
Número 09
29
PRÁCTICO • Ubuntu Notebook
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.
tener esto en cuenta para evitar proporcionar servicios no deseados o abrir puertos en el dispositivo equivocado. El demonio slmodem emula un pseudo TTY con emulación de un modem serie estándar para el softlink modem. Además de esto, el enlace simbólico /dev/modem apunta a este pseudo TTY para facilitar la configuración.
Teclas especiales Para conectar el teléfono móvil al portátil, HP ha incorporado un adaptador Bluetooth junto con una interfaz IrDA. Ambos están listos para operar desde el primer momento tras instalar Ubuntu. Incluso las teclas especiales de volumen, mute y el botón de información del lateral izquierdo. El único problema que puede acarrear el botón de info es la saturación: si abrimos muchas ventanas de ayuda podemos ir quedándonos sin memoria disponible. También podemos mapear nosotros mismos las teclas especiales a comandos que queramos, ya que cada tecla genera un código que pueden remapearse en System / Settings / Macros.
El tercer botón del ratón El touchpad es un sustituto del ratón bastante bueno: además del área sensitiva y los dos botones del ratón que hay bajo esta, tiene una zona ranurada a la derecha (véase Figura 3) que simula una
30
Número 09
rueda de desplazamiento. Además, esta zona ranurada funciona también como el botón central de un ratón de tres botones si se le da un toquecito. Esto resuelve el viejo problema de apretar el botón izquierdo y el derecho simultáneamente para emular el tercer botón en operaciones de copia y pega. El único “pero” se lo lleva la situación de esta zona ranurada: una persona diestra puede tocar esta área sin querer, al operar con el touchpad. Estaría mejor puesta en la parte izquierda. Los modos de ahorro de energía de los Intel Pentium Mobile están disponibles desde la instalación estándar de Ubuntu, excepto el modo suspendido a RAM (S3) que no funcionaba en esta unidad de pre-producción. Cada vez que poníamos el portátil en estado S3, que aparece como disponible en /proc/acpi/sleep, el portátil se suspendía pero no se podía volver a despertar. Según HP, esta característica debería estar disponible en el próximo lanzamiento de Ubuntu, que debería aparecer con mejoras y mayor soporte para los portátiles HP. Thomas Schneller ,de HP, es el responsable de desarrollo. Para cualquier duda se puede contactar con él en [1] .
Resumen El hardware del HP Compaq NC4200 está bien soportado por Ubuntu Linux, empezando por los componentes
WWW.LINUX- MAGAZINE.ES
Centrino ampliamente utilizados y terminando por algunos detalles adorables geniales como las teclas especiales programables. Con otras distribuciones de Linux podría aparecer algún problema menor con el soporte del harware. Las fuentes y los parches del kernel saldrán en julio, cuando HP comience a comercializar el portátil con Ubuntu en lugar de Windows XP. Debido al pequeño tamaño de este sub-notebook hay algunas limitaciones que deben de tenerse en cuenta: ausencia de disco óptico, una segunda batería debe conectarse externamente y que sólo está disponible una pantalla de 12.1 pulgadas con una resolución de 1024x768 píxeles como máximo. Hay pocas pantallas del mismo tamaño y con mayor resolución en el mercado, lo que haría al portátil mucho más caro, pero que una resolución XGA es el mínimo absoluto hoy día, no es ningún secreto. Si HP consigue finalmente incorporar el modo suspendido o el lector de tarjetas SD/MMC bajo Linux, el HP NC4200 será sin duda el portátil Linux óptimo. ■
RECURSOS [1] Sitio de Linux sobre portatiles HP: hp_linux_laptops@swipp.de [2] Descargas de la iso de Ubuntu para portátiles HP: http://www.ubuntu.com/ support/custom/hplaptops
ColdFusion MX 7 Server • PRÁCTICO
Una mirada al nuevo servidor ColdFusion MX7 de Macromedia para Linux
MUY COOL
entre otras. Con ColdFusion el usuario no tiene que preocuparse de ningún fichero de configuración; las opciones de configuración están disponibles en el Administrator.
Contenido Enriquecido
El nuevo servidor ColdFusion MX7 de Macromedia permite crear aplicaciones 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
L
a versión de ColdFusion MX7 [1] marca el décimo aniversario de la plataforma de desarrollo web ColdFusion. Originalmente era una aplicación Windows en C++, actualmente es un entorno de desarrollo basado en J2EE que se ejecuta en Linux, AIX, Mac OS X y Solaris, además de funcionar también en Windows. La plataforma ColdFusion fue creada y desarrollada por Allarie Corporation. Macromedia adquirió ColdFusion en el 2001 y lanzó la versión ColdFusion 6.0, llamando al producto ColdFusion MX para integrarlo con otros productos de la línea Macromedia MX, como Dreamweaver y Flash. Macromedia ha seguido desarrollando ColdFusion y ha ido añadiéndole distintas mejoras con el paso del tiempo. Esta última versión ha ido más lejos aún y ha proporcionado a ColdFusion una generación de contenidos nuevos como la mejora de capacidades gráficas, generación de
informes usando FlashPaper y PDF y formularios de entrada de datos Flash, permitiendo diseños complejos de formularios como las solapas.
El Administrador ColdFusion viene con una aplicación web de administración (Figura 1) para ayudar a gestionar el entorno ColdFusion. La aplicación de administración permite configurar la variable caché del cliente, la memoria de Java/JVM y otras variables de tiempo de ejecución que se pueden modificar para mejorar el rendimiento global. Esta característica proporciona una interfaz fácil de usar para gestionar los parámetros de configuración que requieren un fichero de texto (php.ini) en PHP. El Administrator también permite configurar las fuentes de datos, los servicios web, el planificador de tareas, las etiquetas personalizadas (se verá más adelante) y la seguridad del entorno de ejecución
WWW.LINUX- MAGAZINE.ES
Macromedia es sin duda el maestro del contenido enriquecido en Internet. El formato Flash [3] para las animaciones basadas en web, los juegos y los interfaces amigables al usuario es un estándar de hecho. Los Applets de Java y los controles ActiveX parecen primitivos si se les compara. Por tanto, no es sorprendente que Macromedia se haya aprovechado de su famosa tecnología Flash para mejorar la producción de contenidos en ColdFusion. El Formato Flash es una opción a la hora de mostrar gráficas y formularios de entrada de datos, y el nuevo formato Macromedia FlashPaper [4] (Figura 2) es una buena opción cuando se desea obtener documentos como informes. También está soportado el formato Adobe PDF (Portable Document Format). La elección de PDF y FlashPaper significa que el usuario puede obtener contenidos que se garantizan que van a ser impresos exactamente como aparecen en el navegador web. El soporte de Flash y PDF en Linux ha mejorado considerablemente en estos últimos meses. Esto supone que se puede instalar una aplicación ColdFusion en la intranet bajo un entorno Linux ofreciendo las mismas características que se disponían para otras plataformas.
La etiqueta CFCHART La etiqueta CFCHART de ColdFusion permite obtener gráficas con una alta cali-
Listado 1: empquery.cfm 01 <CFQUER Y NAME= qr yGetREmps 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 . Address1#, #qryGetEmps. Address2# 08 </CFOUTPUT>
Número 09
31
PRÁCTICO • ColdFusion MX 7 Server
dad en formatos PNG, JPEG o Flash. El formato Flash para las gráficas proporciona opciones adicionales a las mismas, como líneas o barras elevándose desde el eje-X al punto exacto del valor del dato o gráficas de tartas con sombras y degradados. Cada formato de gráfica permite el uso de regiones sensibles al clic del ratón, proporcionando al usuario la potencia de asignar valores URL a los segmentos de las gráficas. Esta característica proporciona la posibilidad de crear niveles de gráficas para los Sistemas de Información Empresarial (MIS) y los Sistemas de Soporte a la Decisión (DSS). ColdFusion ofrece muchas otras opciones para las gráficas. Por ejemplo, se puede elegir entre gráficas de líneas, barras, tartas, etc. PHP ofrece algunas opciones de terceros para crear gráficas. Probablemente la opción más popular para crear gráficas en PHP sea JpGraph, que proporciona
Listado 1: empquery.cfm 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 2: empquery.php 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 }
32
Número 09
una colección de tipos de gráficas mejores que las de ColdFusion. JpGraph está disponible gratuitamente para uso no comercial. Hay que decir que las gráficas en ColdFusion están mejor conseguidas, aparecen mejor definidas, con bordes suavizados y el motor interno de generaFigura 1: El Administrator de ColdFusion evita que el usuario se tenga ción de gráficas es que enfrentar con la línea de comandos y los ficheros de configuramás sencillo de ción. configurar. En la Figura 3 se puede ver una gráfica CFCHARTDATA. Como se puede observar de ejemplo mostrando los niveles de en el Listado 3, se pueden usar bastantes spam y virus de los últimos 30 días. En el parámetros para configurar las gráficas Listado 3, se encuentra el código que, en ColdFusion. haciendo uso de la etiqueta CFCHART, se Formularios Flash, ha usado para crear la gráfica de la Figura ActionScript y Remoting 3. Los formularios de entrada de datos La etiqueta CFCHARTSERIES se usa basados en Flash permiten el procesapara especificar cada línea o barra en una miento de los mismos en el lado cliente, gráfica de líneas o barras, o para especifitanto la visualización como la validación car los segmentos en una gráfica de tarta. de los mismos. Los formularios de entraEn el ejemplo descrito previamente, se da de datos basados en Flash amplían las itera sobre algunas consultas, creando características de HTML y JavaScript, y muchos puntos de datos con la etiqueta
La solución basada en etiquetas CFML es un lenguaje basado en etiquetas con CFML y HTML almacenado en ficheros de páginas web .cfm. En vez de usar la solución tradicional de los lenguajes de script como PHP y ASP, CFML usa etiquetas similares a HTML, con etiquetas de apertura y cierre. No todo lo que tiene CFML está basado en etiquetas, sin embargo, la mayoría de las etiquetas tienen su equivalente en script. El Listado 1 muestra una consulta SQL simple seguida de la salida de los resultados de la consulta.
Las variables y las llamadas a funciones se incluyen entre caracteres almohadillas (#) y se incluyen entre etiquetas CFML o como parámetros de etiquetas CFML para ser interpretados por ColdFusion. Incluir la consulta como parámetro de la etiqueta CFOUTPUT hace que la etiqueta itere por todas las filas del resultado de la consulta.
Nótese como las etiquetas CFML toman parámetros como las etiquetas HTML estándar. En el ejemplo anterior, la etiqueta CFQUERY se usa para obtener un conjunto de resultados de la conexión a la base de datos que se ha creado usando la cadena de conexión MyDSN definida en el Administrator de ColdFusion (se verá más adelante). La salida de los datos resultados se lleva a cabo fácilmente usando la etiqueta CFOUTPUT.
Como se puede ver en los listados, CFML tiene la ventaja de ser más fácil de escribir y leer que el código equivalente en PHP. Para un diseñador web sin conocimientos o con pocos conocimientos de programación, CFML es más fácil y rápido de aprender que PHP. CFML proporciona a los principiantes la capacidad de crear potentes aplicaciones con tan sólo unas cuantas etiquetas.
WWW.LINUX- MAGAZINE.ES
Compárese esto con el equivalente en PHP 5 / mysqli [2] en el Listado 2. La captura de excepciones ha sido omitida por simplicidad.
ColdFusion MX 7 Server • PRÁCTICO
a la aplicación ColdFusion interactuar con aplicaciones Flash MX avanzadas y animaciones. Un desarrollador Flash MX que no conozca CFML puede aún realizar un ActionScript del lado del servidor que interactúe con los recursos ColdFusion. Esto permite una separación entre la lógica de negocio y la presentación en Flash.
Programación Orientada a Objetos Aunque CFML y PHP históricamente han sido lenguajes de programación estructurados, ambos implementan características de orientación a objetos. Sin embargo, ninguno de los dos puede considerarse realmente uno lenguaje orientado a objetos, ya que no implementan todas las características de los lenguajes orientados a objetos como C++ o Java. CFML proporciona lo que se conoce como ColdFusion Components o CFCs. CFCs soportan encapsulamiento, herencia e introspección. Se almacenan en ficheros .cfc en vez de en ficheros .cfm. El Listado 4 muestra un ejemplo de fichero CFC que define un componente llamado CovertTemp, que convierte valores de temperatura de la escala Celsius a Fahrenheit y viceversa. El Listado 5 muestra algunos ejemplos de código
Figura 2: Un ejemplo de un documento FlashPaper inmerso en una página web.
son mucho más fáciles de implementar y desplegar que los formularios de entrada de datos basados en Applets de Java. Flash no sólo permite mayor control sobre cómo se introducen los datos forzándolos a las reglas de negocio, sino que también hace que la experiencia del usuario sea mucho más rica. La Figura 4 muestra un ejemplo de formulario Flash que usa solapas, un control calendario, títulos y características especiales de disposición. ActionScript es un lenguaje de script que se usa para interactuar con Flash MX. Se puede usar ActionScript en el código ColdFusion para interactuar con un servidor Flash Remoting permitiendo
Listado 3: chart.cfm 01 <cfchart scalefrom="0" scaleto="1" showlegend="yes" markersize="4" labelformat="percent" 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" serieslabel="Spam" 04 markerstyle="circle"> 05 <cfloop query="qry30days"> 06 <cfchartdata
07 08 09
10 11 12
item="#DateFormat(scan_ date,"dd-mmm-yy")# value="#(pspam_sum + bspam_sum) / total_sum#"> </cfloop> </cfchartseries> <cfchartseries type="line" seriescolor="red" serieslabel="Viruses" markerstyle="circle"> <cfloop query="qry30days"> <cfchartdata item="#DateFormat(scan_ date,"dd-mmm-yy")#" value="#virus_sum / total_ sum#"> </cfloop> </cfchartseries>
13 14 15 16 </cfchart>
WWW.LINUX- MAGAZINE.ES
CFML que invocan a los métodos de los componentes. Las características de orientación a objetos de ColdFusion no son tan elegantes como las proporcionadas por PHP 5, pero ColdFusion ofrece lo que realmente se necesita para crear una aplicación basada en componentes fácil de mantener.
Extendiendo ColdFusion Se puede extender la funcionalidad de ColdFusion a través del uso de las etiquetas personalizadas escritas en CFML, Java o C++. En el caso de usar CFML, simplemente hay que crear un fichero que contenga el código de la etiqueta personalizada y colocarlo en un directorio que se encuentre definido en la ruta de ColdFusion (similar al classpath). Las etiquetas escritas en Java o C++ (llamadas etiquetas CFX) tienen que ser declaradas explícitamente usando el Administrator. Las etiquetas personalizadas pueden ser entonces usadas como cualquier otra etiqueta CFML, tal como si fuera parte del núcleo del lenguaje. Esto también es posible en PHP, pero normalmente implica otra fuente de PHP en la página o bien recompilar PHP con un módulo nuevo. Como ColdFusion se ejecuta en un servidor de aplicaciones J2EE, también se tiene acceso a las clases de Java en el classpath de la JVM y en los directorios de clases WEB-INF/lib y WEB-INF/classes (tal y como funciona en Tomcat, por ejemplo). Usando la etiqueta CFOBJECT,
Listado 4: convertTemp.cfc 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>
Número 09
33
PRÁCTICO • ColdFusion MX 7 Server
Figura 3: La etiqueta CFCHART permite crear fácilmente gráficas espectaculares.
se pueden crear objetos, permitiendo el acceso a las funciones y métodos. También es posible acceder a los JavaBeans. La interoperabilidad entre páginas CFML, JSP y Servlet también es posible. Esto permite mantener páginas JSP y aplicaciones Servlet mientras se convierten a CFML. Se puede incorporar funcio-
Abstracción de Bases de Datos CFML incluye, por defecto, una capa de abstracción sobre bases de datos que permite escribir aplicaciones independientes de las bases de datos. La etiqueta CFQUERY, como ejemplo, sólo requiere que el parámetro DATASOURCE esté disponible para conectarse a una base de datos y realizar una consulta SQL. Como ODBC, ColdFusion ofrece una capa de abstracción sobre las bases de datos. Esta capa de abstracción puede soportar conexiones ODBC y conexiones nativas usando JDBC. Incluye controladores para MySQL (antes de la 4.1), DB2, Informix, SQL Server, Sybase, Oracle y los Datasources J2EE (usando JNDI). Los controladores para Oracle y Sybase tan solo se incluyen en la edición Enterprise de ColdFusion, sin embargo, se pueden crear fuentes de datos usando los controladores JDBC (normalmente copiando un fichero JAR a un directorio de librería adecuado) y especificar la URL JDBC y el nombre de la clase del controlador. Se puede conseguir algo similar con los recursos JNDI. Hay posibilidades de incorporar abstracción de bases de datos en PHP usando ADODB y PearDB, sin embargo, estas técnicas precisan que se incluyan ficheros adicionales en los scripts PHP.
34
Número 09
nalidad CFML a aplicaciones JSP existentes, por ejemplo, para usar las gráficas de ColdFusion o las características para generar informes de negocios. Si se tiene alguna operación que se ejecute con mayor rendimiento como página JSP o Servlet, se puede incorporar dicha funcionalidad en la aplicación CFML.
Motor de Búsqueda ColdFusion viene con un potente motor de búsqueda llamado Verity. El motor Verity se puede ejecutar independientemente del servidor ColdFusion y puede accederse a través de múltiples instancias de ColdFusion (instalando ColdFusion en modo multiservidor… lo veremos más adelante). Usando su Administrator, se puede crear una Collection. Una Collection es un almacén en disco que puede ser usado por Verity para buscar contenido. Existen varias etiquetas CFML para indexar y buscar contenido (por ejemplo texto plano, documentos PDF y documentos HTML). También se puede indexar el contenido devuelto por una consulta. Esta característica de ColdFusion permite buscar rápidamente entre una gran cantidad de texto mucho más rápido que a través de una consulta SQL SELECT, donde los campos largos de texto no pueden ser indexados (por ejemplo, el tipo de datos TEXT de MySQL). Uno de los campos donde se puede aplicar esta tecnología es en las bases de conocimiento. Verity Spider es nuevo en ColdFusion MX 7. Permite indexar directorios completos o sitios web dinámicamente. Al contrario que la etiqueta CFINDEX CFML que permite crear índices específicos por los que realizar búsquedas, Verity Spider los crea dinámicamente. Verity Spider soporta un amplio rango de tipos de documentos, entre los que se incluyen HTML, PDF, Microsoft Office, WordPerfect, XML y otros. Se comporta como cualquier otro buscador web, obedeciendo las instrucciones que se proporcionan en robots.txt y siguiendo los enlaces especificados en las etiquetas HTML
WWW.LINUX- MAGAZINE.ES
HREF, FRAME y META Refresh / Redirect. Las capacidades proporcionadas por Verity Spider permiten crear una utilidad de búsqueda dentro de un sitio web.
Ediciones ColdFusion se proporciona en tres ediciones diferentes. La edición Developer puede ser accedida desde la máquina local ejecutando ColdFusion y dos clientes remotos. Esto hace posible que un equipo pequeño de desarrolladores trabaje sobre una misma aplicación usando una sola instancia de ColdFusion. Esta edición contiene toda la funcionalidad de ColdFusion y se puede descargar gratuitamente. La Edición Standard contiene casi toda la funcionalidad de ColdFusion, excepto algunas características concernientes básicamente al rendimiento y disponibilidad. En vez de explicar todas las características que contiene esta edición profesional, es mejor que indiquemos las características que sólo están disponibles en la tercera y última edición de ColdFusion, la edición Enterprise. El precio para la edición Standard es de 1299 dólares. Con un desembolso mayor de dinero (la edición Enterprise cuesta 5999 dolares), se obtienen las características adicionales del nivel Enterprise. La siguiente sección describe la edición Enterprise.
Edición Enterprise El Enterprise Manager permite gestionar múltiples instancias de ColdFusion en un
Listado 5: convTempForm.cfm 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# degrees Celsius.</cfoutput>
ColdFusion MX 7 Server • PRÁCTICO
único servidor. La configuración es similar a otros servidores de aplicaciones J2EE como Tomcat, donde un servidor de aplicaciones binario es compartido entre múltiples JVMs privadas (Java Virtual Machines). Esto significa que múltiples aplicaciones pueden estar aisladas unas de otras, proporcionando mayor seguridad y estabilidad sin los requerimientos de varios servidores dedicados separados. Incluso se pueden ejecutar las aplicaciones en un cluster para mejorar el rendimiento y la disponibilidad. JRun [5] se incluye con la edición Enterprise, proporcionando una alternativa comercial a Tomcat. Se puede combinar el código de la aplicación ColdFusion con el código JSP o Servlet en JRun. Se pueden desplegar las aplicaciones ColdFusion con el servidor de aplicaciones J2EE que se prefiera. JRun, Weblogic y Websphere son soportados por Macromedia. La seguridad se ha mejorado para los entornos basados en servidores virtuales usando seguridad en “cajas de arena”. La seguridad en “cajas de arena” permite establecer políticas de seguridad, como etiquetas, funciones, fuentes de datos y restricciones en direcciones IP y directorios. Las aplicaciones que se ejecuten dentro de un directorio no tienen acceso a las configuraciones y ficheros de otras aplicaciones. Se pueden crear eventos personalizados para interactuar con dispositivos móviles y servidores de mensajes instantáneos, por ejemplo, o cualquier otra aplicación de servidor a través de cualquier protocolo de red (usando sockets de Java). Incluso se pueden usar pasarelas disponibles para SMS, XMPP (Extensible Messaging Service), Sun JMS (Java Messaging Service) y Lotus Sametime. XMPP [6] es una solución de mensajería instantánea de código abierto de la Jabber [7] Software Foundation. Lotus Sametime [8] es un producto ofrecido por IBM para la mensajería instantánea y conferencias web. La edición Enterprise también permite tomar ventaja del motor de informes de negocio de alto rendimiento basado en la tecnología de ejecución multihilos. Esto es ideal para los Sistemas de Información Empresarial, que pueden hacer uso de
las características de gráficas para crear estadísticas anidadas. Se pueden desplegar las aplicaciones como Java bytecode, evitando el tener que exponer el código fuente. Esto es importante si se quiere proteger la propiedad intelectual.
Plataformas soportadas Coldfusion es soportado por un amplio número de plataformas, entre las que se incluyen Linux, Windows, Solaris, AIX y Mac OS X (sólo para desarrollo). La versión de Linux Red Hat Enterprise 2.1 y 3.0, SUSE Linux Enterprise Server 8 y TurboLinux 8 (sólo en Japonés) son soportados por Macromedia, aunque no debería haber problemas si se ejecuta en CentOS 3, White Box Linux 3 y otras distribuciones Linux. En teoría, se debería poder ejecutar las aplicaciones ColdFusion en cualquier plataforma Java. JRun, BEA Weblogic e IBM Websphere son soportados también por Macromedia; hay disponible instrucciones para Tomcat y podrían presentarse algunos problemas en JBoss o Resin. ColdFusion se puede ejecutar como un servidor independiente o en conjunción con Apache (1.3.27 o superior, 2.0.43 o superior), iPlanet 6.x o Sun ONE 6.x.
¿Me servirá ColdFusion? No hay una respuesta sencilla a la pregunta de cuando o por qué sacaré beneficio a ColdFusion. Para algunas aplicaciones, PHP, Perl o JSP serán suficientes, y para otras ColdFusion es la mejor opción. Casi todo lo que se pueda hacer con otro lenguaje de scripting se puede hacer con ColdFusion. Si hay algo que no pudiera hacer, se conseguiría extendiéndolo con Java, JSP o Servlets. La elección de si usar o no ColdFusion dependerá de la naturaleza de la aplicación. Para desarrollar un sitio con contenidos ricos usando gráficas, formularios Flash, FlashPaper o PDF, ColdFusion es la mejor elección. Para sistemas de gestión con contenidos de propósito general, ColdFusion es también una buena opción. Para el desarrollo rápido, ofrece un lenguaje basado en etiquetas fácil de aprender que permite crear potentes aplicaciones con un mínimo de esfuerzo. Para muchos, esto es suficiente para justificar incluso el precio de la edición Enterprise de ColdFusion, que permite construir aplicaciones que demanden
WWW.LINUX- MAGAZINE.ES
Figura 4: Los formularios Flash proporcionan un gran control sobre los datos introducidos por los usuarios.
entornos de alto rendimiento y gran disponibilidad. Muchos desarrolladores de la plataforma Linux tendrán que elegir entre PHP, JSP / Servlets o ColdFusion. ColdFusion es la única elección que requiere un desembolso de dinero para desplegarla en un entorno de producción, aunque los tres se pueden descargar gratuitamente para desarrollar en ellos. Y con la gran cantidad de empresas de hosting que ofrecen soporte para ColdFusion a precios razonables, no habrá necesidad de gastarse dinero en una licencia. En resumen, si se está pensando explorar los beneficios de un producto comercial, antes de decidirse por uno, se debería investigar al menos ColdFusion MX 7. ■
RECURSOS [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/
Número 09
35
PRÁCTICO • Podcatching
Podcatching sin Ipod
REPARTIDOR SONORO 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
E
l podcasting es la última moda en el mundo de los weblogs. También conocido como audio en diferido, el podcasting es un método para suministrar streams de audio en formato mp3 a traves de proveedores de feeds rss, por lo que pueden descargarse automáticamente y ser escuchados durante nuestro tiempo libre. Al suscribirnos a un feed RSS con mp3 adjuntos, podemos recibir los nuevos mp3 automáticamente. Es algo parecido a los reproductores TiVO de televisión, pero en formato de audio. El nombre proviene del iPod de Apple, pero es un nombre inexacto, ya que no necesitamos un iPod para escuchar los archivos. El podcast es el programa emitido, mientras que al acto de recibirlo se llama podcatching. Aunque muchos podcasts, como muchos blogs, son intrascendentes, existe también material de alta calidad. Las IT Conversations de Doug Kate [1] por ejemplo, tienen más de 300 grabaciones de entrevistas, discursos y conferencias del sector TIC, viejas y recientes, así como resÚmenes de conferencias y otros eventos. Grandes corporaciones como la BBC en el Reino Unido están también mostrando interés en este fenómeno y están emitiendo algunos de sus programas en formato podcast. Esta moda de los podcasts puede atribuirse en gran medida al antiguo DJ de la MTV Adam Curry [2]. Después de un debate con Adam Curry en 2001, Dave
36
Número 09
Winer decidió cambiar el modelo de distribución multimedia en Internet añadiendo el sub-elemento “adjunto” (enclosure) a los feeds rss [3]. En la propia página de Curry ipodder.com [4] se almacenan cientos de podcasts. Un cliente de podcatching funciona como un agregador que lee los feed RSS 2.0 con sus adjuntos. El cliente verifica automáticamente los feeds a los que estamos suscritos y descarga los archivos de audio, colocándolos en nuestro directorio de audio o en nuestro reproductor mp3. Los usuarios de Ipod e iTunes en Mac’s son los que lo tienen más fácil. Los usuarios de Linux con otros reproductores de mp3 tendrán un poco más de trabajo para conseguir que todo funcione de manera “automágica”. En este artículo describiremos cómo configurar nuestro equipo Linux para hacer podcatching.
WWW.LINUX- MAGAZINE.ES
Bajar Podcasts al Ordenador Ciertos reproductores (como el iPod) necesitan drivers especiales para sincronizarse ([5], [6]) pero en este artículo supondremos que estamos usando el típico reproductor de mp3 basado en dispositivos de almacenamiento flash que pueden ser montados como un disco externo. Empezaremos por describir algunas aplicaciones para el podcatching bajo Linux y luego veremos algunas técnicas de sincronización. Si nuestro dispositivo necesita algún software especial bajo Linux para sincronizarse, puede seguir la primera parte del tutorial para suscribirse a los podcasts y adaptar la segunda mitad adecuadamente. iPodder [7] es una interfaz gráfica de usuario escrita en Python para suscribirse y recibir podcasts. En el momento de escribir estas líneas, la última versión
Podcatching • PRÁCTICO
Figura 1:La pestaña Subscriptions de iPodder muestra los feeds a los que estamos actualmente suscritos.
para Linux era la iPodder-Linux-2.0RC2.tar.bz2. Hay un par de pequeños bugs que van a ser solventados antes de que aparezca la versión final. iPodder requiere Python2.3 o superior (pero n o soporta Python2.5). También requiere: python-gtk, wxPythonGTK, libwxPythonGTK2.5_2, pythonlib, libpython2.3, libxml2-python y xmmspython (para soportar el reproductor xmms). Para instalarlo, desempaquetamos el archivo, nos vamos al directorio que acabamos de crear y ejecutamos el instalador. tar -xvjf iPodder- U linux-2.0-RC2.tar.bz2 cd iPodder-linux/ sudo run ./install.sh
El paquete se instala en /opt/iPodder/ y crea un enlace simbólico desde /opt/iPodder/ipodder.sh en /usr/bin/iPodder. Si queremos añadir un icono en el escritorio, hay una imagen iPodder.png instalada en /opt/iPodder. La enlazamos con /usr/bin/iPodder y pulsamos para lanzar el programa, o bien podemos teclear iPodder& en un terminal. iPodder se inicia por defecto en la pestaña Subscriptions (véase Figura 1), que muestra los feeds a los que estamos actualmente suscritos. Pulsando en cualquiera de las entradas listadas descargaremos una lista de los podcasts disponibles desde ese canal en la ventana Episode en la parte de abajo. Por defecto, sólo se verifica el último podcast de ese canal para su descarga, pero se puede seleccionar cualquiera de los otros si queremos escuchar alguno que se nos haya pasado.
Pulsando en la pestaña Podcast directory (véase Figura 2) podremos elegir los podcasts a los que suscribirnos, así como introducir manualmente direcciones de feeds. Abrimos un directorio de la lista pulsando sobre él. Hacemos doble clic en cualquiera de los feeds para añadirlo a nuestras suscripciones. Cuando hayamos acabado, volvemos a la pestaña Subscriptions y pulsamos el botón verde con dos flechas para poner en marcha la descarga. Las descargas pueden monitorizarse desde la pestaña Download (véase Figura 3). Las descargas pueden programarse fácilmente con la opción de horario que se encuentra en Tools/Scheduler. Tenemos la opción de verificar los nuevos feeds en intervalos regulares de tiempo o a ciertas horas prefijadas. Al cerrar iPodder se minimiza la aplicación y se queda ejecutándose en segundo plano, por lo que podremos dedicarnos a otra cosa. iPodder crea un directorio ~/iPodder-Data/downloads donde guarda los mp3. Debido a un pequeño error no pudimos ajustarlo a través de la interfaz gráfica, por un problema con la posición de los bordes. Pero pudimos cambiarlo manualmente editando el archivo de configuración ~/iPodderData/ipodder.cfg. Para los propósitos de este artículo, vamos a crear un directorio llamado ~/podin y configurarlo como el directorio de descarga. iPodder es una aplicación muy elegante y muy bien diseñada con una interfaz intuitiva. De momento sólo tiene soporte para iTunes y Windows Media Player como reproductores, pero hemos encontrado una opción realmente útil en File | Preferences | Advanced para ejecutar un script tras completar una descarga. Usaremos ese script un poco más adelante. Echamos en falta algún que otro detalle: no existe una rutina que verifique el espacio libre en el disco, aunque este y otros pequeños fallos están en la lista de mejoras de los desarrolladores y se espera que lo solucionen pronto. Una interfaz de usuario alternativa es jPodder [8]. jPodder es un cliente multiplataforma escrito en Java. La beta de Linux en el momento de escribir este artículo es la 0.9, y aún falta pulirlo bastante. Sin embargo es destacable que viene distribuido junto a Azureus [9] y ofrece un buen soporte para los podcasts
WWW.LINUX- MAGAZINE.ES
distribuidos via bittorrent, por lo que puede que merezca la pena seguir investigando su evolución.
Alternativas en Línea de Comandos BashPodder [10] de Linc Fessenden ocupa sólo 44 líneas de cóigo bash y requiere únicamente bash, wget y sed, los cuales están instalados por defecto en la mayoría de las distribuciones Linux. Linc señala que “BashPodder fue escrito para ser pequeño y rápido, y lo que es más importante, para seguir la regla KISS (Keep It Simple Stupid, mantenlo simple estúpido). De esta manera, cualquiera puede añadir o suprimir parte del script para adaptarlo a sus necesidades (y serán bienvenidos si lo hacen)”. Para usar BashPodder, descargamos el programa principal bashpodder.shelf y el ejemplo de configuración bp.conf y los situamos en el directorio en el que queramos guardar los podcasts. No hay que descomprimir ni instalar nada. Simplemente tecleamos chmod +x bashpodder.shell para hacerlo ejecutable.
Listado 1: syncplayer 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
Número 09
37
PRÁCTICO • Podcatching
bp.conf es un archivo de texto simple que lista las urls o los feeds, uno por línea. Podemos editar bp.conf a mano, pero si lo hacemos, hemos de acordarnos de apretar Enter al final de la última entrada, ya que el script no la procesará si no termina con un carácter de nueva línea. Por defecto, BashPodder sitúa los podcasts en una carpeta datestamped en ese directorio desde donde podemos ejecutarlos. Para los propósitos de este artículo, vamos a cambiarlo por ~/podin. Para cambiarlo, abrimos el script con nuestro editor de textos favorito, buscamos la definición de datadir cerca del principio y la cambiamos de datadir=$(date + %Y-%m-%d) a datadir= /path/to/podin Para ejecutar el script automáticamente, usaremos crontab. Crontab usa vi por defecto, para editarlo con nuestro editor favorito, debemos exportarlo previamente como la variable VISUAL. Por ejemplo, si preferimos usar joe: export VISUAL=joe crontab -e
Para configurar bashpodder.shell para que se ejecute a las 9am cada día por ejemplo añadimos la siguiente línea: 0 9 * * * U /path/to/bashpodder.shell
En la página podemos encontrar numerosas revisiones del script sugeridas por usuarios, así como añadidos, como el BPConf de Leon Pennington, una sencilla interfaz de configuración para KDE.
Preparados para sincronizar Lo que pasa cuando conectamos nuestro dispositivo depende de qué distribución usemos. Suse 9.2, por ejemplo, usa subfs/submount y lo montará automáticamente con un nombre derivado del número de serie de nuestro dispositivo. Otra particularidad de las distribuciones Suse es que usa /media/ mientras que otras usan /mnt/. Al conectar mi PowerMusic mp3 en un equipo bajo Suse, por ejemplo, crea automáticamente un punto de montaje /media/usb-035211010152:0:0:0p1 (Otras distribuciones gestionarán la conexión en caliente de manera diferente, y puede que deba adaptar lo comentado a su sistema para que funcione. De ahora en adelante vamos a referirnos al punto de montaje del reproductor como
38
Número 09
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.
/path/to/mp3. Acuérdese de adaptar el punto de montaje en su sistema). Para mayor facilidad de uso, vamos a crear un enlace simbólico para que sea más fácil de recordar: ln -s /media/usb- U 035211010152:0:0:0p1 /path/to/mp3player
U
Ya habíamos creado nuestro directorio para los nuevos podcasts que habíamos llamado ~/podin. Necesitamos ahora crear otro llamado ~/podmirror, en el que habrá una copia de los archivos del reproductor mp3. Dejaremos de momento este directorio vacío por razones que explicaremos luego. Para evitar que se mezclen los podcasts con otras canciones del reproductor, podemos también crear un directorio en el dispositivo, que llamaremos /path/to/mp3player/podcasts/.
Sensaciones síncronas Sincronizar un dispositivo con una carpeta no es algo tan trivial como pueda parecer, especialmente si los archivos pueden borrarse directamente tanto en el reproductor como en el ordenador. Vamos a hacer dos suposiciones clave: que no hay nada en el directorio del reproductor cuando empecemos, y que no hay otras maneras de añadir archivos mp3 al reproductor, aparte de sincronizar con el ordenador. El proceso necesita tres pasos. El primer paso es sincronizar el directorio de podcast del reproductor /path/to/mp3player/podcasts/ con el directorio ~/podmirror del ordenador. Se borrará cualquier archivo de ~/podmi-
WWW.LINUX- MAGAZINE.ES
rror que no esté en el reproductor, pues se ha supuesto que se ha borrado del reproductor porque ya no se quería oir más. Seguidamente, si existe algún archivo en el reproductor que no esté en ~/podmirror, el proceso ignora el archivo y no crea una copia en ~/podmirror, pues se supone que se borró deliberadamente del directorio del ordenador. El segundo paso es una simple transferencia de archivos mp3 desde ~/podin a ~/podmirror. Esta transferencia no puede hacerse hasta que la primera sincronización haya terminado, pues de otra manera los nuevos archivos se borrarían ya que no están en el reproductor mp3. El tercer paso sincroniza ~/podmirror con /path/to/mp3player/podcasts/. Borra cualquier archivo de este último que no esté en ~/podmirror pues se supone que la hemos borrado deliberadamente del ordenador. Entonces crea una copia en el reproductor de cualquier archivo de ~/podmirror que no esté en el dispositivo: estos son los nuevos archivos que hemos transferido desde ~/podin. Debemos tener cuidado de entender el proceso, y hacer una copia de seguridad del reproductor antes de la primera sincronización. Un error puede ser desastroso para los archivos del reproductor, así como también sincronizar después de haber eliminado los archivos equivocados del reproductor puede acabar con los contenidos de ~/podmirror. Para sincronizar el dispositivo, vamos a usar la aplicación en línea de comandos rsync. Buena parte de las distribuciones puede que vengan con su propia versión. Como alternativa siempre podemos
Adjuntos RSS El siguiente ejemplo de una sección de un feed RSS muestra una etiqueta <enclosure> con sus tres atributos: la url del archivo a descargar, su tamaño en bytes 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 Winer definía un máximo de un adjunto, pero como otros aspectos de RSS, esto es aún objeto de discusión.
Podcatching • PRÁCTICO
bajarnos las fuentes desde [12] y compilarlas . Como se detalló antes, el primer paso es eliminar cualquier archivo de podmirror/ que hayamos borrado del reproductor: rsync -r --progress --delete --existing --size-only U /path/to/mp3player/podcasts/ /path/to/podmirror/
U U
Muchos dispositivos flash usan el sistema de archivos FAT32 que no guarda la información de fecha/hora al estilo unix. La opción -size-only nos permite evitar actualizar archivos iguales pero que pueden parecer que son distintos debido a la información de fecha/hora. La opción -existing evita que rsync reinstale archivos que hayamos borrado de ~/podmirror. Con la opción -progress veremos por pantalla información de qué operaciones se están haciendo, lo que puede ser útil si lo estamos haciendo a mano. El paso dos, copiar los podcasts desde ~/podin a ~/podmirror es simplemente hacer lo siguiente: mv /path/to/podin/* /path/to/podmirror/
0x0003. La segunda y tercera son las id del fabricante y producto, respectivamente, que obtuvimos de /proc/usb/devices. Los otros campos no se usan y pueden dejarse a 0x0. Lo siguiente será crear on_plug_powermusic en /etc/hotplug/usb/
U
El paso tres usa rsync de nuevo, pero en sentido contrario, y sin la opción -existing esta vez, ya que queremos copiar los nuevos archivos al dispositivo: rsync -r --progress U --delete --size-only U /path/to/podmirror/ U /path/to/mp3player/podcasts
Cuando hayamos terminado, no debemos olvidar desmontar el reproductor antes de desconectarlo para evitar posibles daños a la unidad. Lo desmontamos con eject /path/to/mp3player y ya estamos listos para escuchar los podcasts.
Todo Junto Podemos ejecutar el script syncplayer (véase Listado 1). El script no funcionará si el reproductor de mp3 no está montado o si el directorio de destino no existe. Debemos ajustar /path/to/ de las líneas 3 a 5 para nuestro caso. Para ejecutar automáticamente el script cuando aparezcan nuevos podcasts, podemos configurar iPodder para que haga la llamada especificando
Figura 3: Administramos y vigilamos las descargas desde la pestaña Download.
syncplayer en la opción de ejecutar scripts al descargar (File/Preferences/ Advanced). Si estamos usando bashpodder, sólo tenemos que añadir una línea al final de bashpodder.shell, editándolo o bien tecleando simplemente echo "path/to/syncplayer >> bashpodder.shell. (Cuidado con no teclear > en lugar de >> pues si no sobrescribiremos el archivo). Si queremos ejecutar automáticamente el script cada vez que insertemos el reproductor, podemos aprovechar la detección en caliente para activarlo. Buscamos la id del fabricante y del producto conectándolo y verificando la salida de cat /proc/bus/usb/devices para ver los detalles del reproductor de mp3. En el caso particular de nuestro PowerMusic: P: Vendor=0d7d ProdID=0153 Rev= 1.00 S: Product=PowerMusic
U
Ahora creamos /etc/hotplug/usb/powermusic.usermap para activar un script al que llamaremos on_plug_powermusic a ejecutarse cuando se enchufe el dispositivo: 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 deben coincidir. Este campo debe dejarse a
WWW.LINUX- MAGAZINE.ES
# /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 a nuestro nombre de usuario y rellenamos /path/to en sendos casos. Hacemos el archivo ejecutable, y reiniciamos el hotplug: chmod +x U on_plug_powermusic U && /etc/init.d/boot.hotplug U restart
Ahora, cada vez que conectemos el dispositivo, se activará el script syncplayer, transfiriéndose los nuevos podcasts a nuestro reproductor. No olvidemos, por ■ último, desmontarlo al acabar.
RECURSOS [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/
Número 09
39
PRÁCTICO • Seguridad Thunderbird
Correo Seguro con Thunderbird y Enigmail
UN PÁJARO SEGURO Thunderbird ofrece varias opciones para un correo seguro y la encriptación de Enigmail basada en GnuPG nos proporciona una capa de protección adicional. POR PATRICK BRUNSCHWIG Y OLAV SEYFARTH
E
l cliente de correo Thunderbird está teniendo un gran auge en la comunidad de Internet. La mayoría de las distribuciones Linux incluyen Thunderbird [1] por defecto. Los desarrolladores de Mozilla tienen versiones preparadas para ejecutarse en la mayoría de los sistemas de sus sitios web. Debian no tiene un paquete oficial para las versiones actuales, pero versiones de prueba están disponibles en el repositorio de mantenimiento [2]. Con la reciente versión 0.9 de Thunderbird, el pájaro está listo para volar con una colección impresionante de características de seguridad. En este artículo, aprenderá algunos de los puntos de seguridad de Thunderbird.
Autenticación Thunderbird soporta POP, IMAP y SMTP para el correo electrónico, así como NNTP Y SMTP para las News y LDAP para la libreta de direcciones. Todos estos servicios requieren autenticación. En el caso más simple, el cliente querrá transmitir su información de login y se enviará en claro, abriendo un agujero de seguridad en el esquema. Para combatir esto, Thunderbird proporciona a los usuarios un número de soluciones para una autenticación segura. Challenge-Response soluciona transferencias en secreto (tal como una clave por ejemplo) como un código hash temporal. Esta solución confia en el servidor capacitándolo para soportarlo. Thunderbird intentará detectar las capacidades del servidor, pero no se garantiza el éxito. Aunque DIGEST-MD5 y CRAM-MD5 son
40
Número 09
autonegociados para nodos SMTP, necesitará habilitar CRAM-MD5 para cuentas POP e IMAP utilizando Enable secure authentication en las opciones del servidor para una cuenta de correo.
Tráfico
decirle a Thunderbird que utilice su nombre de usuario y su clave, a lo largo de una conexión segura. En este caso, TLS; el puerto para SSL se configurará automáticamente. En Tools | Settings | Compose también puede configurar los servidores LDAP para conexiones SSL en Address autocompletation.
Desafortunadamente, las técnicas de Challenge-Response no proporcionan ninguna protección contra los ataques del hombre de en medio. Para mayor seguridad y privacidad, puede encriptarEncriptación de Passwords se el tráfico entre cliente y servidor utilizando el protocolo Transport Layer Los usuarios con múltiples proveedores Security (TLS). TLS (un sucesor del prode correo querrán seleccionar una clave tocolo SSL) encripta cualquier comunidistinta para cada proveedor. Como cación entre el cliente y el servidor. puede llegar a ser difícil recordar todas Thunderbird sólo proporciona TLS para estas claves y como es molesto el tener SMTP. que teclearlas cada vez, Thunderbird perCuando configure una cuenta nueva mite a los usuarios almacenar las claves. utilizando el Account Manager, al prinEn la configuración por defecto, cipio la conexión será insegura. Antes Thunderbird codificará en Base64 las de conectar con el servidor de correo, passwords; esto es, no las encriptará y abra el cuadro de diálogo Tools | las almacenará en el perfil del usuario Account Settings, donde puede configurar protocolos individualmente. En Account name | Server settings, seleccione Use secure connection (SSL) (Figura 1). Thunderbird configurará el puerto automáticamente. Para Use secure authentication, se recomienda seleccionar CRAM-MD5. Para Outgoing server Figura 1: El cuadro de diálogo Server Settings de Thunderbird (SMTP) necesitará tiene una opción para configurar una conexión segura.
WWW.LINUX- MAGAZINE.ES
Seguridad Thunderbird • PRÁCTICO
os utilizando estos nombres. Hay dos estándares incompatibles entre sí, S/ MIME y OpenPGP, que le proporcionan este tipo de seguridad. Thunderbird soporta ambas, suponiendo que está instalado Enigmail [4]; hay que tener en cuenta que ni S/MIME ni OpenPGP proporcionan una solución de seguridad Figura 2: Enigmail encripta y desencripta mensajes de completa. Como describirecorreo en Thunderbird. mos más adelante en ese artículo, también necesitaen un fichero con un nombre aleatorio y rá proteger los datos de los usuarios y el con la extensión .s. Esta solución de proceso de autenticación. seguridad es un compromiso que deberá Máquina Enigmática aceptar si es el único usuario que accede Enigmail OpenPGP se desarrolló como al sistema. El módulo de software de una aplicación para la comunicación criptografía basado en Mozilla Network entre procesos. En 2001, el desarrollador Security Services (NSS) proporciona a de Mozilla Ramalingam Saravana deslos usuarios una mayor seguridad arrolló una librería para abrir y gestionar encriptando las claves almacenadas. pipes. Como Mozilla no tenía encriptaHay diferentes opiniones sobre el ción OpenPGP, codificó un pequeño plualmacenamiento de las passwords, pero gin con propósitos de prueba. El plugin la característica de la encriptación de claacepta y encripta correos webs para ves de Thunderbird parece ser un comGNUPG y muestra el texto desencriptado promiso funcional. Si necesita en el navegador (Figura 2). Este fue el Thunderbird para almacenar direcciones comienzo del mayor plugin para los de correo en un directorio LDAP protegido por password, no tendrá alternativa para almacenar sus claves, como cada Gestión de correo nuevo abre una nueva conexión En la mayoría de los casos, preferirá usar en el directorio LDAP, esto significaría una conexión SSL protegida en el navevolver a teclear su clave. gador web para recoger su certificado Para encriptar passwords existentes y desde el CA. Paquetes integrados como futuras, necesitará habilitar Use a master el Mozilla permiten al navegador y al password to encrypt stored passwords programa de correo utilizar el mismo bajo Tools | Preferentes | Advanced | certificado almacenado. Thunderbird Saved Passwords | Master Passwords y tiene su propio almacén y sólo si utiliza luego establezca sus claves maestras el navegador Firefox junto con seleccionando Change password. Como Thunderbird, necesitará descargar el estas claves necesitarán proteger todas certificado con su navegador, almacesus otras claves y su propio certificado narlo en un fichero PKCS-#12 e importarlo al fichero en Thunderbird. X.509, asegúrese de que sea realmente robusta. Para crear una clave segura, cerLa gestión de certificados está situada en ciórese de que sea lo suficientemente Tools | Preferences | Advanced | Certificates | Manage Certificates. Hay larga, contenga letras mayúsculas y pestañas para su certificado protegido minúsculas, números y caracteres especon claves, los certificados de otros ciales.
Firmado y Sellado Tras autenticarse de forma segura en el servidor de correo del proveedor, probablemente querrá encriptar cualquier mensaje almacenado en el servidor. Actualmente existen gusanos que atacan con nombres de usuarios y envían corre-
usuarios, los sitios web (certificados SSL/TLS de servidores de correo y de news) y certificados CA (que ha añadido o que las ha aceptado por defecto). En algunos casos tiene sentido tener dos certificados por usuario. Uno genérico para usarse en el gateway. Esto permitirá al programa ejecutarse en su gateway
WWW.LINUX- MAGAZINE.ES
clientes de correo de Mozilla y más tarde para Thunderbird. Enigmail no importa automáticamente claves públicas (aunque puede establecer GnuPG para que lo haga especificando key-server-options auto-key-retrieve), sin embargo, puede buscar servidores de claves públicas para comprobar claves cuando se envía un mensaje. Muchas distribuciones Linux integran el soporte Enigmail con Thunderbird, o lo proporcionan en un paquete separado, por ejemplo mozilla-thunderbird-enigmail para Debian. Si está utilizando la versión proporcionada por el sitio web de Thunderbird, necesitará instalar Enigmail mediante la extensión manager. Asegúrese que la versión de Enigmail coincide con su versión de Thunderbird, si no Thunderbird podrá caer. Además, Enigmail y Thunderbird necesitan estar en el mismo idioma. Tras la instalación, primero hay que comprobar si Enigmail está trabajando correctamente y encuentra GnuPG. Para hacerlo, abra el menú Enigmail | About Enigmail. La primera vez que haga esto, le preguntará si quiere configurar Enigmail. Puede contestar no y volver a configurar Enigmail más tarde.
Certificados para desencriptar mensajes de correo y chequearlos en busca de malware. El otro certificado pertenecería al usuario y se utilizará con propósitos de firmado. Tras importar su propio certificado, seleccione un certificado para firmar los mensajes salientes y otro certificado para la encriptación y desencriptación bajo Security en la configuración de su cuenta. Para encriptar un mensaje, necesitará el certificado del receptor. Si no puede obtenerse desde su PKI, necesitará preguntar al receptor que se lo envíe. Esto es perfectamente aceptable para que el receptor le envie un mensaje de correo electrónico firmado contestando al mensaje, como cualquier certificado, el mensaje que contiene será importado automáticamente. Como alternativa, puede ejecutar una búsqueda contra un meta keyserver o la autoridad certificadora para localizar el certificado; Thunderbird por sí mismo no tiene esta característica integrada que hace esto por usted.
Número 09
41
PRÁCTICO • Seguridad Thunderbird
PGP sólo encripta el cuerpo del mensaje, pero requiere que el usuario encripte los ficheros adjuntos por separado y una vez encriptados los adjunte al mensaje. Además, Inline-PGP no En soporta mensajes HTML la vencon textos formateados y tana que se conjuntos de caracteres nos muestra, en la extendidos como el Chino tercera línea debería aparecer un mensapueden causar problemas. je indicando: Using pgp executable path PGP/MIME encripta el to encrypt and decrypt. Si ve un mensaje mensaje incluyendo cualde error en este punto, significa que quier fichero adjunto y Enigmail no ha encontrado GnuPG, o formato; desafortunadaque la versión de Enigmail que ha instamente, no todos los clienFigura 3: El diálogo Recipient Settings permite configurar lado no es compatible con Thunderbird. tes de correo PGP soporreglas OpenPGP para destinos específicos. Si no tiene una clave OpenPGP, puede tan PGP/MIME. generarla utilizando el gestor de claves Enigmail tiene un número de opciones para la firma, encriptación y aplicación Key | Generate key. Para enviar mensajes para controlar GnuPG y Thunderbird de PGP/MIME e IDs de claves por reciOpenPGP-firmados o encriptados, necebajo Enigmail | Preferences. Por defecto piente o grupo de recipientes (Figura sita configurar Enigmail en cada cuenta. está marcado para la mayoría de los 3). El editor le permite establecer las Esto indica a Enigmail que añada una usuarios, pero para optimizar el uso de preferencias para las direcciones de pestaña extra OpenPGP Security para Enigmail, es preferible cambiar unas correo seleccionadas. Enigmail no sólo cada cuenta. Aquí es donde selecciona cuantas opciones de Thunderbird. Para soporta reglas para usuarios individualas claves a usar y especifica los valores hacer esto más fácil, las extensiones de les, también para grupos de usuarios, por defecto para la encriptación y firmaEnigmail muestran unas cuantas opciocomo todas las direcciones de su do de mensajes. nes de Thunderbird que normalmente empresa. Aunque es más apropiado permitir al vienen ocultas. Ver el cuadro titulado La función de ayuda integrada tiene programa seleccionar la clave automática“Opciones de Enigmail” para algunas información detallada para las reglas. mente basada en la dirección de correo, opciones interesantes. Thunderbird aplica automáticamente no se recomienda si existen múltiples claestas reglas cuando envía mensajes así Siguiendo las Reglas ves asociadas a la misma dirección. que tiene sentido dejar activado el OpenPGP soporta dos codificaciones Enigmail tiene un editor de reglas que prompt. Esto le proporciona un recordaestándar: Inline-PGP y PGP/MIME. Inlinele permiten definir la configuración torio, para el caso en el que intente enviar un mensaje desencriptado. Opciones de Enigmail Thunderbird tiene todo lo que el usuario preocupado por la seguridad puede Habilitando Enigmail | Preferences | tarlo. La opción Enigmail | Preferences | desear, aunque una simple aplicación de Sending | Allow flowed text se le indica a Advanced | Load MIME parts on demand las tecnologías de encriptación moderThunderbird que rompa las líneas en un le permite cambiar este comportamiennas está bastante lejana, como algunos mensaje en múltiples líneas si las líneas to. ■ de los fallos descritos demuestran. son más largas de lo permitido. El mailer Para desencriptar mensajes Inline-PGP, añade el carácter “>” en las líneas continuas. Desafortunadamente, esto rompe la firma que Enigmail crea para el mensaje original. Cuando contesta a un mensaje, Enigmail reemplaza “>” al comienzo de cada línea con”|”, para prevenir que Thunderbird realice cambios en la línea. Pero es mejor desactivar esta característica. Para desencriptar mensajes PGP/MIME encriptados almacenados en servidores IMAP, no será capaz de descargar partes MIME individuales. Por otro lado Enigmail no coge el mensaje completo de Thunderbird y no puede desencrip-
42
Número 09
necesitará deshabilitar la presentación en HTML del mensaje con la opción View | Messsage Body | Plain text. Enigmail soporta ambos, Inline-PGP y PGP/MIME. Si envía un mensaje con ficheros adjuntos, le preguntará si quiere encriptar los ficheros individualmente o utilizar PGP/MIME para enviarlos. Puede utilizar el menú de contexto para desencriptar y abrir ficheros adjuntos encriptados en los mensajes entrantes. Enigmail puede almacenar diferentes opciones por defecto para firmar y encriptar mensajes basados en la información de la cuenta del emisor.
WWW.LINUX- MAGAZINE.ES
RECURSOS [1] Página del producto Thunderbird: http://www.mozilla.org/products/ thunderbird [2] Paquetes Debian Thunderbird y Enigmail 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
SlimServer • PRÁCTICO
Música en red con SlimServer
CAJA DE MÚSICA
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
S
i compartes una casa con otras personas, especialmente adolescentes, habrás tenido la experiencia de buscar uno de tus CDs, y después de una larga búsqueda encontrarlo debajo de un enorme pila de ropa y de papeles, abrir la caja y descubrir que el CD no está dentro. Después de pasar personalmente por muchas de estas búsquedas, y para evitar esta clase de frustraciones, decidí configurar un acceso inmediato a mi colección completa de música para todos los habitantes de la casa, a la que se accedería con un solo clic de ratón: Jean-Philippe Rameau, Roxy Music, y el prometedor cantante galés Meinir Gwilym estarían disponibles con sólo un gesto.
¿Qué hay disponible? Desde hace más o menos dos años disponemos de software multimedia para Linux realmente bueno. En KDE, por ejemplo, Juk [1]y Amarok [2] están ampliamente reconocidos como un gran paso adelante en la gestión de música. Este tipo de programas permiten configurar una lista de reproducción en un PC y escucharla en ese equipo o enviarlo a otra ubicación, aunque en las versiones anteriores a la 1.2 la funcionalidad de
streaming de Amarok algunas veces no funcionaba correctamente [3]. Una alternativa a los programas de escritorio son los gestores de música basados en web, tales como Ampache [4], Zina [5] o el más reciente Jinzora [6]. Normalmente estas herramientas son multiusuario, pero tienen su parte negativa, ya que con frecuencia es muy complicado ponerlas en marcha. Mis requisitos para este proyecto eran muy específicos: una caja (preferiblemente de fácil instalación y configuración) para toda la música de la casa, que diera servicio a tantos PC’s como necesitara, con cada oyente capaz de controlar su listado independientemente, y con soporte completo para ficheros ogg. También quería algún modo de usar la salida de un dispositivo que no fuera un PC en el caso de que decidiera reproducir la música en el salón y no quisiera colocar un ordenador allí. Después de documentarme un poco y de 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 primeras compañías en usar el software de código abierto sobre hardware de diseño especializado. En el 2001 se editó el SLIMP3,
WWW.LINUX- MAGAZINE.ES
una pequeña caja que utilizaba un stream mp3 sobre la red, suprimiendo la necesidad de tener que usar un reproductor basado en un PC. En el 2003 apareció la siguiente generación de productos llamado Squeezebox. El nuevo Squeezebox2 se lanzó hace un par de meses. Se escribió un servidor GPL basado en Perl al que se le llamó SlimServer, el cual proporciona una salida de música para Squeezebox. La inversión de la compañía y de la comunidad ascendió a 9 personas durante un año dedicadas al desarrollo. Lo importante de SlimServer es que puede usarse para que fluya la música a los PCs independientemente de los dispositivos de Squeezebox2, o a otros reproductores que no sean PCs. Decidí instalar SlimServer con un servidor de música para la red de mi casa.
Instalación y Configuración El PC que utilicé como servidor de música era una vieja caja que había estado recogiendo polvos desde hace 7 años. Tenía un procesador AMD K6/450 y 128Mb de memoria. Le actualicé el firmware el año pasado para permitir que el mobo MSI accediera a discos de más de 20 Mb y le instalé 2 discos duros de 80
Número 09
43
PRÁCTICO • SlimServer
inicio para SuSE 9.1 [8] que también parece funcionar en SUSE 9.2. Para usarlo, descarga el script y sálvalo como /etc/ init.d/init.d/slimserver. Luego haz un enlace simbólico a rcslimserver tecleando, (como root), ln -s /etc/init.d/init.d/ slimserver /usr/sbin rcslimserver. Yo prefiero correr SlimServer desde la cuenta de usuario Tigris que establecí previamente, mejor que desde la cuenta de usuario SlimServer establecida ppr el rpm. Para ello cambié 3 de las líneas en /etc/sysconfig/slimserver:
Figura 1: Configuración de la carpeta de música y la carpeta de listas de reproducción en Server Settings.
MBs. La principal ventaja que ofrecen viejas máquinas como ésta es que tienden a no calentarse tanto y son, por tanto, más silenciosas que las cajas modernas. De hecho esta máquina se podría utilizar en el salón de ser más bonita y pequeña. La gran desventaja es que pueden llegar a ser muy lentas cuando tienen que realizar determinadas tareas, como por ejemplo, renderizar la colección de música. Por este motivo, el ripeado de los CDs se realizó sobre máquinas rápidas y se transfirieron los ficheros finalizados. Puedes seguir algunos consejos sobre cómo ripear y etiquetar tu música en el cuadro titulado Etiqueta esa Pista. El primer paso fue instalar SuSE 9.2 en la caja del servidor de música, a la que llamé Tigris. Establecí una cuenta de usuario y un login. Descargué el rpm SlimServer Linux y lo instalé. Utilicé la versión 5.4, aunque actualmente existe una versión beta disponible en la web de Dispositivos de Slim. El rpm está construido para Red Hat y, aunque corre bien bajo SuSE, los scripts de arranque no funcionan correctamente. Sin embargo, puedes correr /usr/local/slimserver/slimserver.pl para arrancar el servidor. Si obtienes un mensaje sobre /etc/slimserver.conf no editable, cambia el propietario a tu usuario con chown. Quizás quieras vincular SlimServer con el sistema de arranque de SuSE (si, por ejemplo, quieres que arranque automáticamente después de un reboot). Pascal Scheffers ha escrito un script de
44
Número 09
SLIMSERVER_USER="tigris" SLIMSERVER_CFG=U "/home/tigris/.slimserver.conf" SLIMSERVER_LOG=U "/home/tigris/.slimserver.log"
Estos cambios guardan todos los ficheros relevantes en un lugar (incluyendo los dos ficheros de bases de datos SlimServer). Lo siguiente es crear el fichero .slimserver.conf : <C>touch .slimserver.conf<C>
y finalmente, como root, edité /usr/local/ slim-server/slimserver.pl comentando la línea 762: # $0 = "slimserver";
para permitir al script de inicio cerrarse correctamente. Ahora se puede controlar SlimServer ejecutando (como root) slimserver start|stop|status. SlimServer contiene su propio servidor web que corre en el puerto 9000. La siguiente cosa que hay que hacer es acceder al servidor de música, bien desde el mismo servidor de música, (escribiendo en el navegador http:// localhost:9000), o desde otro PC en tu LAN (introduciendo la dirección IP o el nombre del host en el navegador: http:// 192.168.0.6:9000, o http://tigris:9000, en mi caso). En la siguiente descripción supondremos que estás trabajando ahora desde otro PC usándolo como cliente del servidor de música. Una vez que te has conectado al servidor selecciona Server Settings en la parte izquierda del cuadro. Crea una carpeta para tu música y pulsa Change (Figura 1). Si no especificas una carpeta para tu lista de reproducción, no puedes salvar o
WWW.LINUX- MAGAZINE.ES
Figura 2: La página Browse Artists muestra la lista de interpretes, ordenada por nombres.
cargar las listas de reproducción ya existentes. Por último, pulsa Rescan para listar la música. Este comando puede llevarte algún tiempo si tienes muchas pistas. Finalmente, haz clic sobre Home | Browse Artists para ver tu música clasificada por artistas (Figura 2). Pulsando en el nombre de un artista, se te mostrará los álbumes asociados a dicho cantante y, pulsando sobre los álbumes, se te mostrará las pistas. También puedes ir directamente a los álbumes o géneros desde la página home. Podrías pensar que puedes comenzar creando una lista de reproducción, pero SlimServer necesita que un reproductor haga una conexión primero.
¡Música Maestro! La manera más sencilla de comenzar con SlimServer es acceder a él usando un reproductor de música, tal como XMMS desde 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 pulsa OK. No oirás nada porque no hay nada sonando, pero si haces clic sobre Home en la página web de SlimServer, deberías ver ahora una nueva entrada bajo Settings, la cual te dirá algo parecido a Player Settings para 192.168.0.50 (o cualquiera que sea la dirección IP del cliente). Haciendo clic en esta entrada se te permite establecer un nombre para el cliente y también ajustar elementos de la configuración, tales como el formato del display para la información de la pista(Figura 6).
SlimServer • PRÁCTICO
Etiqueta esa pista Si se está configurando un servidor de música, vale la pena perder un poco de tiempo pensando cuál será la norma estándar para los nombres de los archivos y las etiquetas de metadatos. Linux tiene una buena cantidad de “ripeadores”. De entre los principales, yo prefiero KaudioCreator, porque lo encuentro más sencillo que Grip. Personalmente utilizo
Hay que observar que si se cambia el nombre del interprete del álbum y después se hace clic, KaudioCreator preguntará si también se desea reemplazar el nombre del intérprete en las pistas, así que habrá que contestar que no si se han editado los intérpretes de las pistas a mano. Si se están transfiriendo pistas de un equipo a otro a través del protocolo SSH incluido en Konqueror, mucho cuidado, ya que la aplicación puede cascar debido a tildes en los nombres de los archivos. Durante el ripeado, pueden aparecer ventanas emergentes donde KaudioCreator indica que ha detectado daños en el CD. Normalmente es inofensivo ignorar esos errores y el ripeado continuará en segundo plano.
clase entre las aplicaciones de Linux para el rebanar y cortar en taquitos las etiquetas de los metadatos. Se puede configurar que un directorio en concreto sea revisado cada vez que arranca el programa mediante Settings | Preferences | Browser tab. Tras añadir nuevos archivos al directorio, se pueden añadir también al display haciendo clic con el botón derecho en el árbol de archivos y eligiendo Refresh Tree. Los archivos que de algún modo sean erróneos (por ejemplo, archivos a los que les falte una etiqueta importante, como pueda ser el Título) se muestran en rojo (Véase la Figura 5), así como los archivos que se han editado pero no se han guardado, o aquellos nombres de archivos que contengan caracteres que no le gusten a EasyTag (y sorprendentemente parece que el símbolo de interrogación es uno de ellos). Se puede aplicar una etiqueta a más de un archivo en un solo paso, para marcar todos los archivos de un mismo álbum: Resaltamos los archivos, introducimos el nombre en el campo álbum, después se pulsa el botón a la derecha del campo y por último pulsamos sobre el icono de guardar. El escáner también ofrece una manera de escribir las etiquetas basándose en el nombre del archivo de la pista, pero hasta donde he podido comprobar, esta característica no funciona de manera fiable.
Una alternativa a la edición de los archivos antes de ripearlos es editarlos posteriormente usando EasyTAG [12] de Jerome Couderc, que está incluido en el “nombre del intérprete” y el “álbum” los discos de SuSe 9.2. Para utilizar como directorios y después uso el EasyTAG, se selecciona Scanner | esquema “número de la pista – título de Rename File in EasyTAG y seleccionala pista – nombre del intérprete” como mos el esquema en el campo Scan File nombre del archivo. Esto se puede camName (véase la Figura 4), puede ser de biar fácilmente dirigiéndonos a Settings ayuda conmutar entre las máscara y la | Configure KAudioCreator | Encoder | información de la inscripción haciendo Wizard y utilizando los botones para clic en esos dos iconos en la barra de crear los árboles de directorios y nomventana de herramientas de la ventana bres de archivos (Véase la Figura 3). Scanner. Después se selecciona con el Se pueden buscar CDs ratón el archivo que se en las bases de datos quiere cambiar, siendo CDDB para ahorrar Si EasyTag no puede ver los archivos del posible realizar selectiempo al ripear, pero directorio, primero se debe comprobar si ciones múltiples, utilihay que tener en cuense tienen los metadatos correctos utilizando la combinación ta que la información zando vorbiscomment -l nombrearchide ratón y tecla shift. CDDB de la mayoría de Se pulsa sobre el vo.ogg. Una versión de KaudioCreator las álbumes compilaicono verde para necesita que se cambien los permisos de dos rompen el esqueexplorar los archivos 644 a 655 y después a 644 otra vez, para ma anterior. El intérseleccionados. Los que se vea el archivo. Hay algunas anoprete del álbum norarchivos resaltados malías más: una versión de Grip coloca malmente aparece en cambiarán al color rojo un número en vez de un nombre en el el listado como para indicar que han campo género y a consecuencia de esto “Various”, lo cual sido editados. Por últiSlimServer se suele colgar. puede estar bien, pero mo, se la mayoría de las pispulsa en el Figura 4: Utilización de EasyTAG tas parece que tambotón de bién tienen a para editar un nombre de archivo guardar de “Various” como intérdespués de haberlo ripeado. la ventana prete y el intérprete principal correcto sólo se menciona en el título de para guardar los cambios. la pista. En estos casos se puede corregir Sin embargo, renombrar el nombre, después de haberlo “ripeaficheros no es el fin principal do”, haciendo doble click en la primera de EasyTag. Este programa se pista y cambiando los campos de intérutiliza para escribir metadaprete y nombre de la pista como se tos en mp3, ogg, flag y otros Figura 5: EasyTAG marca en rojo los archivos erróneos o desee. Después con Next Track se tipos de archivos y probableque no se han salvado. mueve la ventana a la pista siguiente. mente sea el primero de su Figura 3: En KAudioCreator se puede especificar el esquema de nombres.
WWW.LINUX- MAGAZINE.ES
Número 09
45
PRÁCTICO • SlimServer
Figura 7: Administración una lista de reproducción en el cuadro Playlist del Slim-Server.
En la página web de SlimServer busca algunas pistas (ya sea mediante la búsqueda de artista, álbum, o género) y añádelas a la lista de reproducción en la tabla de la derecha pulsando el + junto al nombre en la tabla de la mano izquierda. Pulsando + junto a un nombre de un álbum te añadirá todas las pistas de ese álbum (aunque puedes cambiar este comportamiento en Settings). Nótese que deberás refrescar el navegador para ver las entradas de la nueva lista de reproducción. Esto normalmente ocurre de forma automática, pero en la práctica, parece variar dependiendo del navegador, su versión y del tipo de conexión. Finalmente, pulsa
Play en la lista de reproducción (Figura 7). Después de una corta demora causada por el búfer de XMMS, deberías oír tu música en el PC cliente. Hasta aquí, todo bien, pero el búfer es la principal desventaja del uso de un cliente de streaming como XMMS. Si cambias de pistas haciendo doble clic sobre otra pista, puede tardar hasta 10 segunFigura 8: La primera vez que se arranca dos hasta que el sonido salga de SoftSqueeze, aparece el diálogo SoftSqueeze XMMS. Esto molestaba tanto a Preferences. Richard Titmuss que escribió una emulación Java del dispositivo de corre java-jar SoftSqueeze.jar. Una vez Squeezebox llamado SoftSqueeze [9]. que has comenzado SoftSqueeze se abriSoftSqueeze mejora sensiblemente la rá el diálogo Preferences (Figura 8). sincronización con SlimServer. Además Sobre la etiqueta Basic, copia la direcusa el protocolo slim basado en TCP, lo ción IP de tu servidor de música en el que ayuda a SoftSqueeze a atravesar el campo SlimServer Hostname, y (debido a cortafuego en el caso de que quieras oír que el skin por defecto de slim es demala música de tu casa en la oficina. El siado grande) elige slim skin para inconveniente es que, como es un proSoftsqueeze Skin (Figura 9). El skin por grama en Java, puede acaparar muchos defecto imita a Squeezebox, pero los ciclos del procesador. otros skins también son bonitos. Pulsa Para instalar SoftSqueeze, descarga OK. Si la aplicación empieza a saltar de primero el plugin mp3 de Java desde el un lado a otro de la pantalla, que no sitio de Sun [10], abre el fichero y mueve cunda el pánico: este comportamiento el mp3plugin.jar al directorio /lib/ext tan aberrante se debe a un bug de Java, bajo el Java Runtime Environment (en corregido en Java 1.5. Muévelo hacia un SUSE 9.2 éste se encuentra en /usr/lib/ lado de la pantalla y todo volverá a estar jvm/jre/lib/ext). Luego descarga el fichebien. ro comprimido de SoftSqueeze desde su El controlador de Squeezebox también sitio web (nótese que las versiones supese emula (Figura 10). Pulsa en la flecha riores a 1.17 incluyendo, parecen no fundel botón de la izquierda de abajo para cionar con SlimServer 6beta, necesitareconseguir un controlador vertical y en la mos utilizar SlimServer 5.4). Abre y flecha de la derecha para conseguir otro
Reproductores en todas partes En la actualidad está apareciendo una ingente cantidad de nuevos dispositivos para aprovecharse de la tendencia creciente de centralizar la música en un lugar, pero un breve repaso sugiere que no hay muchos que funcionen con Linux. El producto más similar a Squeezebox2 es el Roku Soundbridge [14]. Este producto puede utilizar SlimServer 5.4 y los usuarios pueden incluso conseguir algo de soporte a través del email. Sin embargo, Roku indica que el SoundBridge “está optimizado para el Windows Media Connect e iTunes”, y que han probado el SoundBridge con SlimServer “en las plataformas Windows y Macintosh, pero no en Linux”. El Netgear MP101 [15] también es similar a Squeezebox2, pero parece que sólo fun-
46
Número 09
ciona con archivos mp3 y WMA y necesita Microsoft Windows como plataforma del servidor. Algunos “concentradores multimedia” pueden manejar fotos y vídeos tan bien como la música; por ejemplo D-Link MediaLounge DSM-320 [16], el ViewSonic WMA100 [17], el Prismiq MediaPlayer [18] y el Philips Streamium SL300i [19]. Parece que ninguno de ellos puede reproducir archivos ogg y la mayoría dependen por completo de una televisión para la interacción con el usuario (aunque el Streamium tiene integrada una pequeña pantalla). Parece que también necesitan Microsoft Windows como plataforma del servidor, funcionando con Microsoft Media Server o con su propio software. En un rango de precios mayor están las
WWW.LINUX- MAGAZINE.ES
cajas como Hifidelio [20] y el Sonos ZonePlayer ZP100 [21]. El formato es el de caja todo-en-uno que ripea y almacena las pistas de música, así como proporciona el acceso a las mismas. Reproducen archivos ogg, pero parece que los PCs necesitan utilizar iTunes para conectarse a ellas (y aún no hay una versión nativa de iTunes para Linux). El ZonePlayer es con diferencia el reproductor de medios con mejor aspecto, con un control remoto al estilo de un PDA, pero también es el más caro. Aunque aún no reconoce los archivos ogg (aunque parece que lo hará pronto), es el único cacharro que específicamente funciona con Linux como servidor, conectándose a través de Samba (aunque Red Hat 9.0 es la única distribución que está oficialmente soportada).
SlimServer • PRÁCTICO
ducción de cada cliente parece ser accesible desde cualquier otro cliente simplemente selecFigura 9: El reproductor de música cionando el nombre relevante SoftSqueeze. del cliente en la caja que cuelga en la parte superior derecha de horizontal. Si el panel de botola página web. Por consiguiente, nes tapa al reproductor oprime esperemos que los usuarios no Alt y arrástralo a un lado con el hagan trastadas con las listas de ratón. En el controlador, las flereproducción de otros usuarios. chas de la derecha e izquierda La configuración también está entran y salen de los menús y disponible desde cada cliente, las flechas de arriba y abajo se aunque hay un plugin de mueven arriba y abajo a través Michael Herger de las opciones. la manera más NoSetup::Plu-gin.pm) que lo ciesencilla de controlar SlimServer Figura 10: rra todo a cal y a canto. es, de hecho, a través de la SoftSqueeze SlimServer tiene muchas y útiinterfaz web, pero a veces, si emula un les características y una activa has presionado Pause en el conmando a discomunidad de usuarios, con una trolador, deberás volverlo a pretancia. lista de correos muy útil y howsionar otra vez antes de oír la tos sobre temas tan variados como ficheros AAC y WMA, el uso de música, incluso si has seleccionado Play carátulas de los álbumes y la recepción en la página web. de radio a través de Internet. También se En Marcha puede instalar SlimServer en una Los usuarios puede que sean adultos LinkStation Buffalo, lo que proporciona jóvenes, o personas un poco torpes, así un servidor de música atractivo pero de que es una buena idea simplificar el bajo precio [11]. Una de sus principales acceso a SlimServer. Puedes hacerlo atractivos es que puede usarse como fácilmente añadiendo 2 iconos al escritofuente única para rellenos periódicos de rio. El primero de ellos arrancará reproductores de Linux. SoftSqueeze y el segundo abrirá la págiSqueezebox2, especialmente la versión na web del cliente en SlimServer. Para el inalámbrica, forma ahora parte de mi reproductor, pulsa con el botón derecho lista de mis nuevos y más apreciados seren el escritorio y elige Create New | File | vicios de entretenimiento de salón. La Link to Application. En el cuadro nueva caja ofrece una mayor cobertura y Application, escribe java -jar ‘/ruta/a/ la capacidad de emitir radio de Internet SoftSqueeze. Como comando se pone jar. directamente sin pasar a través de un Para la página server, pulsa en el escritoPC. Una característica puente permite rio y elige Create New | File | Link to Location (URL). En la caja, copia y pega la URL desde la página web. Esto incluirá algo como ?player=19:b8:89:b8:37:68 al final, la cual es una falsa dirección MAC que SoftSqueeze pasa a SlimServer para identificar al cliente. A continuación puedes decirle a tus usuarios que pulsen primero sobre el icono reproductor y que empiecen a elegir su música. El número de clientes que puedes soportar depende del ancho de banda de tu red, pero en la LAN de casa, Tigris puede soportar 4 usuarios sin problemas… aunque la CPU funciona a tope. También funciona bien con un cliente portátil inalámbrico. Ya no tengo excusa para no trabajar en el jardín. Figura 6: Configuración de las opciones del La única desventaja que SlimServer display y del nombre del cliente en la página puede tener es que cada lista de reproPlayer Settings.
WWW.LINUX- MAGAZINE.ES
que dispositivos inalámbricos (como una PlayStation) se conecten a una LAN inalámbrica e Internet a través de Squeezebox2. Si estás considerando comprar alguno de los dispositivos musicales actuales que existen en el mercado (ver el cuadro titulado “Reproductores por todas partes”), vale la pena preguntarle a las compañías que están detrás de esos productos si están realmente preparadas para soportar totalmente a Linux, ya no hablamos de apoyar el desarrollo de una aplicación GPL como SlimServer. Comprar productos de esas compañías que apoyan Linux, en oposición a aquéllas otras que no lo hacen, es una buena manera de estimular a los fabricantes a ■ que apoyen Linux.
RECURSOS [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/
Número 09
47
DESARROLLO • Perl: Yahoo API Scripting
Uso de la API Yahoo Search con Perl
CONTACTO
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
E
s muy común que los servicios de Internet ofrezcan un API Web. Los desarrolladores usan la API Web para integrar los servicios de Internet con sus propias aplicaciones. Yahoo acaba de publicar una interfaz REST(Representational State Transfer, transferencia de estado representacional) para su infraestructura de búsqueda. Básicamente, REST permite enviar una URL a una aplicación y a cambio obtiene un fichero XML. Por supuesto que también hay un nuevo módulo Perl, Yahoo::Search, a juego; el módulo está disponible en CPAN y ha sido desarrollado por el gurú de las expresiones regulares Jeffrey Friedl. Yahoo::Search facilita la búsqueda de documentos, imágenes, vídeos y otras muchas cosas. El acceso HTTP y la extrac-
48
Número 09
ción XML se ocultan debajo de sencillas llamadas a métodos. Si intentamos escribir una aplicación, necesitaremos registrarnos para obtener nuestra propia ID de aplicación. Se permitirá realizar 5000 llamadas por día a los servicios mencionados en este artículo. Para registrarnos en [2], necesitaremos nuestro propio ID Yahoo, que podremos conseguir a cambio de una dirección de correo electrónico válido. También será necesario que aceptemos las directivas de privacidad de Yahoo (Yahoo’s Privacy Statement); no debemos olvidar leerlas con atención.
¿Quizás quiso decir…? Si no estamos seguros de cuál es la ortografía correcta de una palabra, siempre podemos trincar nuestro diccionario favorito, aunque es muy posible que
WWW.LINUX- MAGAZINE.ES
echemos en falta algunas de las ultimas palabras de moda, términos de la cultura pop o los nombres propios. En este caso, Internet es de gran ayuda. La mayoría de los motores de búsqueda ofrecen una función “¿Quizás quiso decir?” que es lo que ellos sugieren como la alternativa correcta si tecleamos algo que estos motores no puedan entender. Por ejemplo el guión de errores ortográficos (Véase el Listado 1) utiliza el método Term() del API Web para invocar al corrector ortográfico de Yahoo con una palabra o frase para que la revise: $ typo foo foughters Corrected: foo fighters
El corrector ortográfico no sólo encuentra palabras en el diccionario. Podemos
Perl: Yahoo API Scripting • DESARROLLO
notaremos inmediatamente los cambios si él o ella comienzan una nueva página web o se hacen famosos de un día para otro. Por supuesto que nadie tiene tiempo de realizar manualmente este tipo de búsquedas, además de que puede ser muy complicado seguirle la pista a los resultados.
Servicio de búsqueda
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.
verificar casi cualquier término sobre el cual se haya escrito en la Web. Incluso hasta los de los políticos bien conocidos: $ typo tonie blayre Corrected:tony blair
Listado 1: typo 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22
#!/usr/bin/perl -w ############################# use strict; my $term = "@ARGV"; die "uso: $0 palabra/frase ..." unless length $term; use Yahoo::Search AppId => "YOUR_APP_ID"; my ($suggestion) = Yahoo::Search->Terms( Spell => $term ); if (defined $suggestion) { print "Corregido: ", "$suggestion\n"; } else { print "Sin sugerencias\n"; }
El listado 1 muestra cómo se ha implementado. La orden use de la línea 11 carga el módulo Yahoo::Search, que previamente habremos instalado usando la shell de CPAN, y le pasaremos la ID que hemos obtenido desde [2]. En este punto necesitamos modificar los detalles del guión para reflejar nuestras credenciales. El parámetro Spell del método Terms() espera una palabra o frase, que enviará al servicio Yahoo, analizará el XML devuelto por la contestación y extraerá la respuesta si es que existe una. La línea 14 almacena la contestación en la variable $suggestion. A continuación una estructura if-else nos dará la respuesta o bien indicará No corrections si el motor no encuentra nada. Aunque el servicio está haciendo progresos con la internacionalización, no podemos esperar buenos resultados en otras lenguas distintas del inglés, sobre todo cuando se trata de palabras con tilde.
Buscando en el baúl de los recuerdos Los robots de los motores de búsqueda vagabundean sin descanso a través del conocimiento depositado en Internet buscando nuevas fuentes de información. Esto significa que los resultados de las búsquedas pueden cambiar y cambiarán. Si buscamos todos los días el nombre de un compañero de colegio,
WWW.LINUX- MAGAZINE.ES
Para que conseguir que las cosas sean más fáciles para nosotros, el guión buddy (coleguita, véase el Listado 2) arranca una vez al día mediante cronjob. El guión recupera los primeros 25 resultados de una lista de nombres almacenados en el archivo de configuración ~/.buddy. Este guión enviara las URL’s de las que no tenga conocimiento previo, junto con un extracto del contenido del sitio Web, a una dirección de correo electrónico preconfigurada. Esto le permitirá saber si alguno de sus coleguitas de la lista ha sido nominado, por ejemplo, para los premios Nobel. Durante todo un mes nuestro hábil guión buddy mantendrá cualquier URL que encuentre en una caché. Cada vez que encuentre un nombre que ya ha sido cacheado, se extiende el periodo de caché. Los nombres que han estado ausentes durante un mes, serán redescubiertos como si fueran nuevos, simulando de este modo una mala memoria y animándonos ocasionalmente. La línea 12 del guión espera una dirección de correo electrónico a la cual deberá enviar las actualizaciones. Si lanzamos buddy en la línea de ordenes, especificando la opción -v (para el modo prolijo, viste), la línea 24 inicializa la estructura Log4perl con un nivel de registro de $DEBUG, haciendo que los registros sean más exhaustivos. Por omisión, sólo veremos los mensajes de registro con la prioridad igual o superior a WARN. La línea 26 declara la función mailadd (que será definida después) para decirle a Perl que ésta es una función nueva, permitiendo hacer así cualquier llamada que preceda a la definición sin necesitar paréntesis. La función mailadd, que comienza en la línea 93, mantiene el texto del correo acumulado en una variable our llamada $maildata. La función mailsend de la línea 100 comparte la misma variable. Las llamadas a mailadd simplemente añaden texto a $maildata. Después la llamada a close() en la línea 118 enviará el mensaje
Número 09
49
DESARROLLO • Perl: Yahoo API Scripting
completo a la dirección que hayamos indicado (Véase la Figura 1) usando el módulo de CPAN Mail::Send. La función plough, que ha sido exportada por el modulo Sysadm::Install, espera una función de callback y un nombre de fichero en la línea 30. La función analiza el archivo de configuración ~/.buddy, llamando a la función callback después de cada línea que haya leido, pasando el contenido de cada línea a la variable $_. La línea 31 descarta las líneas comentadas con # y la orden chomp arrancará de un mordisco el carácter newline. La línea 33 empujará a
cualquier compañero que el proceso encuentre al final de array @buddies y así se va ampliando continuamente. Después la línea 53 utiliza el método Results() para contactar con el servicio de Yahoo, envolviendo los nombres de nuestros compañeros guardados en el archivo de configuración con dobles comillas y pasando después esta cadena entrecomillada qq{"$buddy"} con el parámetro Doc, ya que ésta es una búsqueda para un documento Web. La lista de objetos resultantes devueltos en la respuesta utilizan los métodos Url() ySummary() dando como resulta-
do las URL y un extracto para cada acierto. El archivo de cache (línea 37) está preparado tras las bambalinas, gracias a Caché::FileCache y está localizado en /tmp/FileCache. El caché mantiene cualquier entrada durante 30 días, tal como se especifica mediante el parámetro default_expires_in. Como el servicio Web exige estrictamente UTF-8, los nombres en ~/.buddy deben estar codificados en UTF-8. Esto es irrelevante para nombres en inglés corriente, pero los caracteres acentuados son una historia diferente. Si tenemos una moderna distribución de Linux, nuestro
Listado 2: buddy 001 002 003 004 005 006 007 008 009
001 #!/usr/bin/perl -w ############################# # buddy - Seguimiento de # resultados de búsqueda # 2005, m@perlmeister.com ############################# use strict;
my $BUDDY_FILE = "$ENV{HOME}/.buddy"; 010 my $EMAIL_TO = 'email@algunlado.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 });
50
Número 09
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(
WWW.LINUX- MAGAZINE.ES
079 080 081 082 083 084 085 086 087 088 089 090 091 092 093 094 095 096 097 098 099 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117
$result->Url(), 1); mailadd fill( " ", " ", $result->Summary() ), } } mailsend(); ############################# sub mailadd { ############################# our $maildata; $maildata .= "$_\n" for @_; } ############################# sub mailsend { ############################# our $maildata; return unless defined $maildata; DEBUG "Enviando email: ", "$maildata"; my $msg = Mail::Send->new(); $msg->to($EMAIL_TO); $msg->subject( "Noticias Buddy Watch"); my $fh = $msg->open; print $fh $maildata; close $fh; }
Perl: Yahoo API Scripting • DESARROLLO
editor almacenará los caracteres acentuados en UTF-8 predeterminadamente. Si aún usamos Latin 1, deberemos utilizar alguna herramienta, tal como toutf8, en la línea de ordenes como por ejemplo toutf8 buddy.latin1 >~/.buddy, para convertir el 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 la dirección de correo electrónico en la línea 12 del guión para que concuerde con nuestras necesidades. Una entrada en cron como por ejemplo 0 5 * * * $HOME/bin/buddy llamará al guión cada mañana, consultando al motor de búsqueda, actualizando la caché y enviándonos un mensaje por correo electrónico con todas las novedades producidas desde la ultima búsqueda. Funciona mejor con nombres poco corrientes; seguir la pista de nombres como Juan Ruiz generarán demasiado ruido.
ce una clave de búsqueda en el diccionario (por ejemplo San Francisco y pulsa sobre el boton de Search, se establece el parámetro CGI q y la línea 68 llama al método Results() del paquete Yahoo::Search. El parámetro Image pasa la clave de búsqueda, Count limita el resultado a 50 aciertos, y el ajuste de AllowAdult con un valor de 0 al menos, intenta prevenir que contenido adulto se despliegue en su pantalla. Como el texto de los títulos están otra vez en UTF-8, el método heaFigura 2: Una consulta para “San Francisco” en el formulario der() en la línea 26 le de entrada devuelve una presentación de diapositivas con visindica a nuestro navegatas de la ciudad. dor que las páginas dinámicamente generadas para convertir los datos devueltos a la están codificadas en UTF-8. estructura anidada original de Perl.
Memoria Caché
El guión CGI slideshow almacena el resultado de nuestras búsquedas. En otras palabras, slideshow las URLs de las imáImagina esto genes y un resumen de texto almacenado como un array de arrays, en un archivo de El nuevo servicio también permite la caché persistente. Esta técnica evita que búsqueda de imágenes. El motor de búsel proyector de la presentación de diaposiqueda recuperará una serie de URLs que tivas tenga que interrogar al motor de coincidirán con nuestra clave de búsquebúsqueda cada vez que el proyector avanda, pasándosela al guión slideshow ce hacia la siguiente imagen. (Véase el Listado 3), el cual las mostrará El módulo Caché::FileCache almacena en la ventana de nuestro navegador con pares de clave-valor donde los valores un intervalo de 5 segundos. son simples scalars, pero no se permiten El guión mostrará en primer lugar un estructuras anidadas. El módulo Storable sencillo formulario de búsqueda (Véase puede ayudarnos a seguir trabajando a la Figura 3). Cuando un usuario introdupesar de la carencia de estructuras anidadas. La función freeze() del módulo Storablepuede serializar una estructura de datos antes de almacenarla en la caché. Si hace falta recuperar desde la caché los datos serializados, Figura 3: La búsqueda de imágenes del Listado 3 nos ofrece una se llama al desbuena presentación, que sobre todo contiene instantáneas de vacaerializador thaw() ciones.
WWW.LINUX- MAGAZINE.ES
Detalles Para evitar que accidentalmente el guión CGI use datos de entrada inseguros y sin comprobar que puedan hacer llamadas al sistema (por ejemplo, para evitar la posibilidad de abrir un gran agujero de seguridad en la aplicación) la opción -T, (del modo taint, manchar) está correctamente habilitada al comienzo del guión en la siguiente línea Shebang que llama al intérprete de Perl. El primer bloque if (línea 28) está habilitado si se llama al guión, tanto con la cadena de consulta como con el número de serie de la imagen actual. En este caso, la caché mantendrá una secuencia de URLs de imagen con subtítulos que coinciden, de una llamada anterior. La línea 31 descongela el array de arrays, y el operador del módulo en la línea 35 garantiza que el número de serie incrementado señale siempre a una posición dentro del array y no a alguna parte fuera de los límites. La función refresh() llamada en la línea 36 usando el parámetro 5 está definida en la línea 107. Esta función refresh() devuelve las secuencias HTML, que pasan meta etiquetas al navegador para decirle que cargue la siguiente imagen después de esperar el número de
Número 09
51
DESARROLLO • Perl: Yahoo API Scripting
segundos especificados con el parámetro del intervalo que ha pasado. El segundo parámetro opcional para la función refresh() especifica si el siguiente URL para ser cargado por el guión mostrará la siguiente imagen (next_ url incrementando simplemente el parámetro numérico s) o si el guión debe ir de nuevo a la página de comienzo con el URL original. La línea 88 utili-
za este segundo parámetro si no se encuentra ninguno de los resultados de la búsqueda.
Instalación Para instalar el guión, simplemente lo copiamos al directorio cgi-bin de nuestro servidor Web, tecleamos una consulta, nos sentamos ¡y a relajarnos con las fotos de vacaciones de otras personas! ■
RECURSOS [1] Listados de este artículo: http://www. linux-magazine.es/Magazine/ Downloads/09 [2] Página principal del API de Yahoo para los desarrolladores: http:// developer.yahoo.com
Listado 3: slideshow 001 #!/usr/bin/perl -wT 002 ############################# 003 # slideshow - Búsqueda de imágenes 004 # en Yahoo como presentación CGI 005 # 2005, m@perlmeister.com 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"
52
Número 09
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 {
WWW.LINUX- MAGAZINE.ES
087 088 089 090 091 092 093 094 095 096 097 098 099 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129
print h2( "Búsqueda de Presentación"), start_form(), textfield( -name => 'q' ), submit( -value => "Search" ), end_form(), font( { size => 1 }, "Impulsado por " . "Yahoo Search" ); } ############################# sub refresh { ############################# my ($sleep, $reset) = @_; return start_html( -title => "Presentación", -head => meta({ -http_equiv => "Refresh", -content => "$sleep, URL=" . ( $reset ? url() : next_url())})); } ############################# sub next_url { ############################# my $s = param('s'); $s ||= 0; return sprintf "%s?q=%s&s=%d", url(), param('q'), $s + 1; }
Infografía - VTK • DESARROLLO
Un simulador 3D del Sistema Solar
UNIVERSO VIRTUAL
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 .
L
a escena del Sistema Solar la vamos a crear en VTK, basándonos en las técnicas explicadas en el número 8 de Linux Magazine. Construiremos una interfaz de usuario en Tkinter que contenga un área de renderizado y un frame con botones para controlar el inicio y el fin del movimiento. En este artículo construiremos una versión simplificada del Sistema Solar, donde sólo incluiremos el Sol y los tres planetas más próximos a él (según la Figura 1). Alrededor de la Tierra situaremos también la Luna. Cada uno de estos objetos celestes tendrán asociados sus correspondientes movimientos de rotación y traslación. Aprenderemos cómo
poner las texturas de los planetas, así como el modo de controlar los movimientos. Con todas las técnicas que veremos ya podéis dejar libre vuestra creatividad…
Organización de ideas La estructura del programa está organizada en dos clases: class MyGUI que controla los widgets de la interfaz de usuario; y class RenderWindow que controla el área de renderizado de VTK, donde incluiremos los planetas. Mercurio, Venus y la Tierra rotan sobre su eje y se trasladan en un movimiento elíptico en torno al Sol. En nuestro caso, por simplicidad, vamos a suponer que el movimiento es circular y que cada plane-
WWW.LINUX- MAGAZINE.ES
ta tiene forma de esfera. Como las dimensiones reales son tan grandes, tendremos que trabajar a escala, pues de lo contrario sólo veríamos unos pequeños puntos en la escena. Para ello vamos a considerar el radio de la órbita de la Tierra como unidad de referencia. Los datos que vamos a emplear los organizamos 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,
Número 09
53
DESARROLLO • Infografía - VTK
y la Luna; igual que en la Figura 3. Haced un zoom sobre cada planeta. Podeis ver la Luna con sus cráteres, la superficie terrestre con los distintos continentes y océanos, etc. (Figura 4 y Figura 5).
'Tierra': (1.49*10**8)/U (1.49*10**9)}
A cada uno de los planetas le vamos a aplicar una textura, una imagen del planeta que pega adecuadamente en la esfera para dar sensación de realismo en la representación (en la zona de descargas de Linux Magazine en [1] podéis descargar las texturas de todos los planetas así como el código completo del programa):
Movimiento de rotación y traslación
Figura 1: Sistema Solar hasta el planeta Tierra.
@LI textures={‘Sol’: ‘fotosol2.jpg’, ‘Tierra’:ßß ‘reletierra.jpg’}
Para poder apreciar el movimiento de los planetas, consideramos que 1 día equivale a la variable self.var_seg=1 (en segundos). Pongámonos manos a la obra. Lo primero es crear la GUI con el área de renderizado y los botones PLAY, STOP y QUIT, cuyo comportamiento detallaremos posteriormente. En el fichero sistsolar_Paso1.py, que encontraréis en el área de descarga, tenéis la base del código donde se construye la GUI con la escena de VTK (Figura 2).
Creación del Sistema Solar Coloquemos los planetas en nuestra escena (los planetas serán los actores de la misma). Para hacer referencia a cada planeta, vamos a usar el diccionario self.planetsActor={}, que guardará las instancia a cada vtkActor. Vamos a crear el método create_planet(self, center,radio,name_texture), en la clase RenderWindow; para construir un planeta con forma de esfera de un determinado radio, con una textura name_textura, y ubicado en la escena en la posición center. El código correspondiente a este método se puede ver en el Listado 1. El objeto vtkTexturedSphereSource() crea una esfera centrada en el origen y de un radio especificado, sobre la que se puede pegar una textura. El objeto vtkJPEGReader() lee ficheros JPEG; cuyo path lo especificamos mediante el método SetFileName. El objeto atext = vtk.vtkTexture() proporciona los métodos
54
Número 09
para controlar el mapeado de la textura, que se asocia al actor planetActor mediante el método SetTexture. Finalmente, mediante return planetActor devolvemos una instancia del vtkActor que se crea. Ahora basta escribir en el constructor de la clase RenderWindow el siguiente bucle: 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 la lista de los planetas que queremos ubicar en la escena. Según el centro, el radio y la textura de cada planeta creamos un actor,self.planetsActor[k], que colocamos en la escena mediante el método que add_actor, de la clase RenderWindow. Probad el código ahora. Si habéis seguido todos los pasos, deberíais estar viendo el Sol, Mercurio, Venus, la Tierra
Figura 2: Interface básica con un área de renderizado.
WWW.LINUX- MAGAZINE.ES
Ahora vamos a mover los planetas…En primer lugar, usaremos la variable self.move que nos va a servir para controlar el movimiento del sistema; self.move=1 si hay movimiento y self.move=0 en caso contrario. Creemos en la clase RenderWindow los siguientes métodos: def stop(self): self.move=0 def ini_move(self): self.move=1
Para trasladar cualquier planeta en torno al Sol, describiendo una órbita circular (según se muestra en la Figura 6), basta crear 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 coordenadas en el instante dt. Mediante self.planetsActor[ind].SetPosition([x,y,0] ), situamos el actor self.planetsActor[ind] en el punto (x,y,0). En el caso concreto de la traslación de la Luna, el método de traslación sería análogo, sólo que habría que tener en cuenta la posición de la Tierra; tal como se recoge en las siguientes líneas, aux=self.planetsActorU ['Tierra'].GetPosition() xTierra=aux[0] yTierra=aux[1]
Infografía - VTK • DESARROLLO
Cada uno de los planetas rota sobre sí mismo en torno al eje Z (Figura 7). En el caso concreto de la rotación de la Tierra bastaría escribir, self.planetsActor['Tierra'].U RotateZ(omega_gr*dt) self.planetsActor['Tierra'].U Modified()
El método RotateZ rota el actor omega_gr*dt grados (en radianes), en torno al centro de dicho actor. Mediante
Listado 1: Método create_planet 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(center) 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
Figura 3: Sistema Solar en el instante inicial.
Figura 4: Superficie de la Tierra y la Luna.
Modified() actualizamos el tiempo de actualización del actor en la escena. Para lograr un movimiento global creamos el método move_sistsolar(self), en el que llamamos a cada uno de los métodos 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']:
WWW.LINUX- MAGAZINE.ES
06 07 08
self.translate_planets (self.dt,k_rot) aux=self.planetsActor ['Tierra']. GetPosition() xTierra=aux[0] yTierra=aux[1]
09 10 11 12 self.rotate_Tierra(self. dt_mov) 13
Número 09
55
DESARROLLO • Infografía - VTK
Figura 8: Movimiento del Sistema Solar.
Probad el programa ahora y pulsad PLAY… Todos los planetas comienzan a moverse y al cabo de unos segundos deberíais ver una situación similar a la Figura 8, donde los planetas ya no están alineados. Con todo lo que hemos visto, ya podeis crear el resto de los planetas añadiendo los correspondientes movimientos de rotación y traslación. También podéis dibujar las órbitas de los planetas y colocar luces rojas en el Sol para dar sensación de fuego, según se ve en la Figura 9 (en el fichero sistsolar_Paso4.py tenéis detallado el código correspondiente). Si queréis jugar con muchos más tipos de texturas podéis encontrarlas y descargarlas de forma gratuita, por ejemplo, en la página de ■ Celestia [5].
Figura 5: Vista del Sol, Mercurio y Venus.
RECURSOS
self.translate_Luna(self. dt,xTierra,yTierra,'Luna') 14 self.render_window() 15 self.gui.update_parent()
Mediante time.sleep() se pausa la ejecución en los segundos que se indiquen. La variable self.dt_mov guarda el tiempo correspodiente a la traslación; y self.dt_move almacena el paso de tiempo. El método self.gui.update_parent() pertenece a la clase MyGUI, y sirve para actualizar la GUI en cada paso del bucle:
Figura 7: Movimiento de traslación.
pondiente a los botones PLAY y STOP. Al pulsar el botón STOP invocamos el método self.renwin.stop(); mientras que al pulsar PLAY se invoca el método mover; def mover(self,event=None): self.renwin.ini_move() self.renwin.move_sistsolar()
def update_parent(self): self.parent.update()
Ahora ya tenemos todo lo necesario para el movimiento del sistema solar, sólo nos falta escribir el código corres-
56
Número 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 de texturas de cuerpos celestes): http:// www.celestiamotherlode.net
LOS AUTORES
Figura 6: Movimiento de rotación.
[1] Fuentes y medios para el programa de este artículo: http://www. linux-magazine.es/Magazine/ Downloads/09
Figura 9: Sistema Solar con sus órbitas y luces.
WWW.LINUX- MAGAZINE.ES
Ana M. Ferreirro Ferreiro es matemá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ífica 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++.
Python • DESARROLLO
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
Y
a en los años 70 la gente del mundo de la Ingeniería del Software comenzó a imaginar un futuro donde sólo se avanzaría. No habría que volver a escribir programas para problemas ya resueltos. El famoso: “No reinventes la rueda”. Comenzaron a hablar de objetos y componentes. Desgraciadamente esta visión del futuro se parecía demasiado a esa otra en la que todos vamos en cohetes al trabajo y comemos en una hamburguesería que orbita alrededor de la Tierra. La realidad es más extraña ¿quién se imaginaba un ordenador en cada casa y todos conectados mundialmente? A día de hoy el código más reutilizado es que viene en forma de librerías, ya sea de funciones o de objetos. Pero la mayor parte de estas librerías, y especialmente en el mundo de Linux, han sido programadas en C o C++. Estos lenguajes, debido a múltiples factores, han sido los más populares para el desarrollo de librerías y sistemas, y hoy por hoy siguen siendo insustituibles en muchos ámbitos. De C se destacaba su portabilidad (es muy sencillo encontrar
o crear un compilador de C para una nueva arquitectura) mientras que de C++, su balance entre portabilidad y capacidad para grandes diseños. En este artículo vamos a ver cómo podemos hacer uso de una pequeña librería C desde Python a través de un ejemplo gráfico.
Nuestra librería OpenGL en C La librería que vamos a utilizar va a proveer una serie de funciones que nos permiten manipular objetos 3D a través de OpenGL. ¿A que suena rimbombante? En realidad no es tan difícil. No entraremos en detalles respecto a OpenGL, pero aclararemos un poco qué es. OpenGL es un estándar mundial creado por SGI (Silicon Graphics Interactive) para el desarrollo de aplicaciones 3D interactivas. Esto traducido a la informática doméstica significa… ¡juegos!. Todos los juegos multiplataforma que utilicen 3D están programados utilizando OpenGL (DirectX, la otra alternativa, sólo funciona bajo plataformas Microsoft, o sea en sistemas Intel con Windows).
WWW.LINUX- MAGAZINE.ES
OpenGL tiene un diseño simple, los objetos se componen de vértices (un triángulo tiene 3 vértices) y estos vértices definen áreas que pueden tener una serie de propiedades como puede ser color o brillo. Una vez definidos los objetos pasamos a crear una serie de funciones que serán llamadas cuando se produzcan eventos. OpenGL utiliza un bucle infinito que, básicamente, se dedica a recoger un evento, por ejemplo, la pulsación de una tecla por parte del usuario, para, a continuación, llamar a la función que se dedica a gestionarlo. Así de simple. Evidentemente hacer un videojuego 3D es una tarea muy complicada, pero la base es esa, hacer que las imágenes en pantalla reaccionen a eventos que se disparan en cualquier momento y que la reacción sea en tiempo real, o sea, que el usuario no perciba demora en el tiempo de reacción. Todos hemos actualizado nuestra tarjeta gráfica alguna vez para que la sensación, a más “frames por segundo” mejor, fuese más realista. En el Listado 1 (descargable desde [5]) podemos ver un programa OpenGL muy
Número 09
57
DESARROLLO • Python
simple, pero que será la base para nuestra librería. Para compilarlo deberemos ejecutar make listado1 en el mismo directorio en que esté, copiando a ese directorio el contenido del Listado 2 (descargable desde [5])a un fichero llamado Makefile. ¿Y qué hace nuestro programa? Pues nuestro programa base genera un cubo 3D con texturas y lo gira sin parar hasta que pulsamos la tecla ‘2’. Entonces lo detiene, comenzando a girar de nuevo cuando pulsemos la tecla ‘1’. Con los tres botones del ratón podemos cambiar el ángulo en el que gira el cubo. Si compilamos el programa tal cual obtendremos un ejecutable que podremos usar. La velocidad a la que gire el cubo depende de la potencia del equipo de cada uno. Ahora necesitamos algo para “pegar” código C con Python, y ese algo es SWIG.
SWIG SWIG es una aplicación desarrollada en 1995 en el departamento de Física Teórica del Los Álamos National Laboratory (ver [1] en Recursos). Fue allí donde se desarrolló la primera bomba atómica y desde entonces ha sido un centro puntero en investigación a nivel mundial. El objetivo era el de reducir la complejidad de muchas aplicaciones científicas donde es obligado el uso de lenguajes de bajo nivel, como C o Fortran. Desgraciadamente con estos lenguajes es muy complicado, por ejemplo, desarrollar GUI que a día de hoy son imprescindibles. También son lenguajes
58
Número 09
complicados que sólo deben ser usados por expertos, y la mayor parte del personal de Los Álamos son científicos con poca preparación en programación. Así que tenemos potentísimas librerías C y Fortran desarrolladas en lenguajes que no son capaces de usar sus destinatarios. ¿Qué hicieron los ingenieros de Los Álamos para simplificar el uso de estas potentes herramientas de cálculo? Pues se dedicaban a crear librerías que permitiesen manejarlas desde lenguajes más expresivos, como pueden ser Perl o Python. Este proceso, a la vez que laborioso, es altamente repetitivo, de manera que decidieron no volver a tener que pasar por él. Desarrollaron SWIG que, de forma casi automática, genera todo el código necesario para utilizar desde multitud de lenguajes de alto nivel (desde Python hasta OCaml pasando por Java o C#) librerías de C. Lo de casi automático es esencial. Sólo tenemos que generar un fichero de interfaz (acabado en extensión .i) y SWIG generará un fichero <nombre>_wrap.c que compilaremos junto al original para crear la librería. De esta manera obtendremos una librería dinámica (esos ficheros .so que podemos ver a miles en /usr/lib), así como una librería en el lenguaje de destino. En nuestro caso ese lenguaje será Python.
El programa OpenGL. En el Listado 1 vimos un programa de ejemplo en OpenGL. Es básicamente un cubo, que gira y responde a eventos. Tiene una serie de propiedades que no podemos alterar, como la velocidad de giro o el color. En el Listado 3 (descargable desde [5])veremos la librería equivalente necesaria para nuestros propósitos. Examinémosla.
WWW.LINUX- MAGAZINE.ES
Para comenzar, al ser una librería no puede tener función main, así que la hemos renombrado arranque(). Se han incorporado nuevas funciones con el objetivo de poder modificar algunas características del objeto (color, velocidad, título de la ventana…). OpenGL (ver [2] en recursos) se compone de las librerías GL, GLU y GLUT. Esta última es muy importante, pero desgraciadamente la librería GLUT estándar tiene un defecto ( o problema, según como se mire). La función glutMainLoop() es el bucle infinito de gestión de eventos. Se entra en ella pero jamás se sale. Cuando se dispara el evento que provoca la salida del bucle, el programa acaba. Cualquier cosa que pongamos detrás de la llamada a glutMainLoop() no se ejecutará jamás. Eso no parece muy lógico ¿no? ¿y si quiero poder arrancar el gestor de eventos, pararlo y volver a arrancar? Como no somos los únicos con este problema (casi todo el mundo piensa que es un problema ;) unos valientes, en la mejor tradición del software libre, han creado FreeGLUT (ver [3] en Recursos para más información). Básicamente es igual a GLUT solo que, entre otras cosas, nos permite salir del bucle interno de glutMainLoop() pero sin que finalice el programa. ¿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 vez que finalice su ejecución, en lugar de finalizar todo el programa. Este un un problema típico que nos podemos encontrar al crear librerías para Python usando librerías C. A veces lo que queremos usar son las funciones de un programa ya existente (por ejemplo, imagina poder acceder a las funciones que tiene Mozilla o Firefox para RSS o análisis de HTML), así que los pasos serán: elimina los puntos de salida del programa (generalmente los exit()) y elimina el main. Así ya tendremos nuestra librería, lista para ejecutar SWIG sobre ella.
El archivo de interfaz para SWIG SWIG (ver [4] en Recuros) necesita un archivo que le diga qué funciones y definiciones de datos exportar a Python. Este
Python • DESARROLLO
para aislar código específico para SWIG respecto de las librerías originales. Y bueno, casi hemos acabado, sólo Figura 1: El cubo inicial tal y como Figura 2: Con las teclas podemos nos queda se ve en la ventana del programa. modificar su posición y giro. declarar los tipos de datos y cabeceras necesarias. Podemos ver las fichero se parece mucho a los ficheros de definiciones en el Listado 4 (descargable cabeceras (o headers, mirar en en [5]). Básicamente son las cabeceras /usr/include para ver unos cuantos) de de las funciones que queremos usar C. El fichero comienza con la sentencia: desde Python con la palabra extern %module listado3 delante. Esta palabra le dice a SWIG que son funciones que existen en un fichero Que declara el nombre del módulo y externo. debe ser igual al nombre de nuestra Las palabras mágicas librería C. Este nombre será exportado a Ya tenemos casi lista la poción, ahora cada lenguaje de manera que se corressólo tenemos que usar las palabras mágiponda con la estructura de organización cas del Listado 5 (descargable en [5]). que en él exista. En el caso de Python el Éste muestra un fichero Makefile que ya nombre del módulo se corresponderá usamos para compilar el Listado 1, ahora con un paquete. tenemos que ejecutar: El resultado final de la ejecución de SWIG será un fichero llamado listado3_wrap.c. Es un fichero en lenguaje C, > make que define una serie de funciones que nos permitirán acceder a la librería listaY se realizará la ejecución de las órdedo3.c definidas en listado3.i. nes: Algunas de las definiciones que pondremos en listado3.i devuelven datos de swig -python listado3.i tipos definidos en OpenGL, por lo que gcc -c -fPIC listado3.c $(INCS) tendremos que decirle a SWIG que en el gcc -c -fPIC listado3_wrap.cU fichero listado3_wrap.c debe incorporar $(PYINCS) $(INCS) la cabecera: gcc -shared listado3.cU #include <GL/glut.h>
listado3_wrap.c -o _listado3.soU $(INCS) $(PYINCS) $(LIBS)U $(PYLIBS)
Esto se hace mediante la declaración: %{ #include <GL/glut.h> %}
Entre los símbolos %{ y %} podemos introducir cualquier declaración extra o incluso código que no exista en el fichero listado3.c. Digamos que es una manera
El primer comando genera el fichero listado3_wrap.c, así como listado3.py. Hay una opción, -python que podríamos cambiar por -perl o -java. Esta opción controla el lenguaje que se utilizará para generar la librería. Pero claro, estos ficheros no son más que código,
WWW.LINUX- MAGAZINE.ES
hay que compilarlos. De eso se encargan los tres siguientes comandos. El primero compila nuestra librería, el segundo los ficheros generados por SWIG y el tercero lo une todo para generar la librería dinámica. Esos $(INC) o PYLIBS son opciones de compilación guardadas en variables de control en el Makefile, varían de sistema en sistema, pero las que aparecen en el Listado 5 son las más genéricas.
Nueva librería Por increíble que parezca hemos acabado, ya tenemos nuestra librería. Si miramos en el directorio en el que hemos estado realizando todas las acciones veremos un fichero llamado _listado3.so. Es una librería dinámica que puede ser cargada en cualquier momento. ¿A qué esperamos? Arranquemos nuestro intérprete 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 cargar la librería y la tenemos disponible para su uso. Comencemos con la acción más simple, arranquemos el programa con las opciones por defecto: >>>listado3.arranque()
Cuando pulsemos INTRO aparecerá una ventana en la pantalla con un objeto que se mueve a gran velocidad. Es nuestro cubo, lo que ocurre es que se mueve demasiado rápido. Si pulsamos la tecla 2, el cubo se detendrá, para ponerlo de nuevo en movimiento debemos pulsar 1.
Número 09
59
DESARROLLO • Python
>>> listado3.setTiempoEsperaU (10000000) >>> listado3.arranque()
Para no complicar el código (debería haber usado nanosleep de la librería C estándar) se ha introducido un bucle que itera un número determinado de veces en la función display() de listado3.c. Esta función es invocada por OpenGL para dibujar en pantalla los objetos, si se introduce un retraso en ella tardará más en realizar su trabajo. Eso se traduce en que podremos ver mejor el cubo girando si hacemos que el retraso sea el adecuado. En nuestro sistema, un valor de 10.000.000 de iteraciones hace que el cubo se vea girar de manera suave. Evidentemente al ser un bucle, depende de la velocidad del sistema. No es la manera más elegante de introducir un retraso, pero sí la más simple y corta (nuestras páginas son limitadas). La variable espera en listado3.c es de tipo INT. Eso significa que su valor máximo será un poco más de 4.000.000.000 ¿qué ocurre si introduzco un retraso de 5.000.000.000? >>> listado3.setTiempoEsperaU (5000000000) Traceback (most recent callU
60
Número 09
last): File "<stdin>", line 1, in ? OverflowError: argument numberU 1: long int too large toU convert to int >>>
¡Python se queja!, diciendo que la asignación no se puede realizar. Un fallo de este tipo en un programa C nos hubiera llevado a un fallo irreversible que abortaría el programa. Pero en Python no, simplemente llegamos de nuevo al intérprete. Esta es una de las razones por las que es interesante utilizar Python sobre librerías C, eliminamos muchos errores fatales porque Python verifica por nosotros los tipos de datos y es capaz de recuperarse de los errores. Juguemos con los colores del cubo. El cubo tiene 6 caras y lo normal sería darle un color a cada cara, pero en OpenGL se le dan colores a los vértices. Como el cubo tiene 8 vértices tenemos que asignar 8 colores. ¿Qué color tendrá el cubo en el centro de una de sus caras si cada vértice tiene un color? Pues siguiendo la jerga de OpenGL tendrá un color “interpolado”, una mezcla de los 4 colores de los vértices. Una de nuestras funciones nos permite definir el color de los vértices (setColor()), así que vamos a hacer que las caras sean de color gris. A un vértice le damos color negro y al siguiente blanco. En el Listado 5 podemos ver un programa que asigna colores blanco y negro alternativamente a los vértices. El resultado no es del todo gris, ¿por qué? Porque depende de la manera en que fueron definidos los vértices. Los vérti-
WWW.LINUX- MAGAZINE.ES
ces 0 y 1 no tienen porqué estar en el sentido correcto. Se puede jugar con el código del Listado 5 para intentar conseguir otros colores.
Conclusión No resulta tan complicado acceder a miles de librerías en C desde Python, en la propia documentación de SWIG aparece como ejemplo generar una librería Python de manera casi automática para la famosa librería GD de dibujo 2D. Seguro que la próxima vez que veamos una nueva librería para Python nos preguntaremos si los autores han usado SWIG, puede que incluso lo pudiéramos ■ haber hecho nosotros ;)
RECURSOS [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
EL AUTOR
Si pulsamos, con el cubo girando, con los botones del ratón sobre la ventana, veremos que cada botón cambia la dirección de giro del cubo en un sentido distinto. Cuando nos aburramos del cubo, o estemos mareados si nuestro ordenador es muy rápido, pulsaremos q y la ventana desaparecerá. Volveremos a ver el prompt >>> de Python. Esto ya es todo un logro, ¡hemos ejecutado una función C que interactúa con OpenGL desde Python!. Pero aún así apenas hemos hecho nada, ¡también lo podríamos haber hecho con un script BASH! Vamos a interactuar más con la librería. Si miramos el fichero de interfaz listado3.i que está en el Listado 4 veremos las funciones que están disponibles para su uso desde Python. Cambiemos la velocidad de giro de manera que podamos ver el cubo.
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 usando y desarrollando software libre y, desde hace dos, se está especializando 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.
La Columna de Charly • ADMINISTRACIÓN
El Día a Día del Administrador de Sistemas: Mtop
CHEQUEO DE RUTINA 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 desafortunadamente de vez en cuando los problemas aparecen. Los ficheros de
una base de datos está siendo inundada por muchas peticiones. Mtop
Mtop eliminando el privilegio reload. Si se elimina este privilegio, Mtop no será capaz de manejar el comando flush.
al rescate. POR CHARLY KÜHNAST
En la Cima del Mundo
registros no son de mucha ayuda cuando se está investigando por qué
H
ace poco vimos el ApacheTop en esta columna. ApacheTop es una herramienta que le dice lo que su servidor web está haciendo en este momento, destacando los posibles cuellos de botella. En la columna de este mes veremos otro miembro de la familia top: Mtop, el monitor en tiempo real para MySQL [1]. El tamaño del paquete comprimido de Mtop es de al menos unos 48 Kbytes. Necesita unos cuantos módulos de Perl: Curses, DBI, DBD::mysql y Net::Domain. Pero probablemente la mayoría estarán instalados y si no, CPAN se encargará de ello. Tras satisfacer las dependencias, introduzca perl Makefile.PL, make y make install en /usr/local/bin para completar la compilación de Mtop. El siguiente paso es permitirle a Mtop acceder al proceso de información de MySQL. A diferencia de Apachetop, Mtop no sólo analiza los ficheros de registros del servidor, sino que además necesita acceso directo a ellos. Decidí configurar un usuario con privilegios
SYSADMIN Socks v5….….……………………….. 62 El protocolo universal para proxy El Taller del Administrador………… 67 Creación y manejo de cuentas de usuarios
extremadamente restringidos en MySQL y no le asigné contraseña. Los siguientes comandos SQL resolverán el problema para la versión 4.0.2 o superior de MySQL: 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 privilegios de process. Puede dejar el privilegio super si no necesita terminar las consultas desde Mtop.
¡¡Cuidadín!! Desde las versiones 3.22.11 hasta la 4.0.1 de MySQL se utiliza el privilegio process para asignar los derechos de finalización de consultas. Se necesitan las tres líneas siguientes para estas versiones: grant reload, U process on *.* U to mysqltop; grant reload, process on *.* to mysqltop@localhost; flush privileges;
Ahora es el momento de lanzar Mtop por primera vez. Si la base de datos se está ejecutando en otra máquina, necesitará especificar la máquina destino estableciendo el parámetro -h host. Si la base de datos no está procesando muchas consultas, el interfaz de usuario de Mtop debería parecer bastante bonito y limpio.. Tres de las abreviaturas más importantes utilizadas por Mtop son: • RRN: El número de peticiones de consultas de acceso a la siguiente línea de la tabla. Un valor grande indica que la tabla no está indexada o que las consultas no están utilizando sus índices. • TLW: Indica cuantas veces las peticiones para acceso exclusivo en la tabla han fallado. El motivo de esto podría ser una tabla enormemente grande o una consulta mal formulada. • QPS: El número de comandos SQL desde que el servidor se lanzó o desde que tuvo lugar la última ejecución del comando flush. Al igual que los otros miembros de la familia Top, Mtop también soporta atajos de teclado. Consulte la página de ayuda de Mtop para averiguar qué atajos de ■ teclado están disponibles.
RECURSOS Quienes prefieran restricciones más severas pueden limitar los privilegios de
WWW.LINUX-MAGAZINE.ES
[1] Mtop: http://mtop.sourceforge.net
Número 09
61
ADMINISTRACIÓN • Socks v5
El protocolo genérico Socks para proxy versión 5 a examen
CALCETINES PARA EL PROXY 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 protocolo para proxy Socks y muestra cómo se implementa. POR THOMAS KUHN Y ACHIM LEITNER
M
uchos administradores de cortafuegos permiten acceso directo a la Web desde la red interna pero son más restrictivos con otros servicios como el FTP o el SMTP. Comentan que las reglas de los filtros que permiten un mínimo de servicios y puertos son más fáciles de manejar y seguir. Los Gateways del nivel de Aplicación (ALGs) proporcionan control y se implementan como proxies (Figura 1). Sin embargo, la aplicación del cortafuego necesita un proxy por cada servicio. El protocolo Socks [2] (RFC 1928,
Figura 1b) traza una ruta entre el filtro de paquetes de estado y el ALG. Socks está implementado, por ejemplo, en el paquete Dante [1]. La tecnología del proxy genérico Socks deja al cortafuego el control de las aplicaciones, redes separadas en la Capa de Transporte y deja a los clientes un puerto de peticiones fijo (típicamente 1080). Los clientes realizan peticiones al Socks, especificando el tipo de los servidores y servicios (como HTTP, SMTP o FTP). El proxy Socks (también conocido como servidor Socks) autentifica los clientes y autoriza el acceso a los clientes, configura la conexión al servidor y de forma transparente reenvía cualquier dato enviado o recibido.
Intermediarios Normalmente, las aplicaciones de los clientes necesitan tener integrados el soporte Socks para permitir el uso del proxy, de forma que Socks utiliza la forma de interactuar del protocolo. Sin embargo, un wrapper puede añadir soporte Socks a binarios utili-
62
Número 09
WWW.LINUX-MAGAZINE.ES
zando la tecnología LD_PRELOAD. Para hacer esto, el wrapper implementa una librería de socket personalizada. El nombre Socks proviene de Socket, el título original del trabajo fue SOCK-etS. Hay dos versiones principales: Socks v4 y v5. Ambos protocolos se insertan en el modelo OSI entre las capas de Transporte y Aplicación. La versión 4 está limitada al manejo de solicitudes de conexión, reglas del proxy y reenvío de datos. No proporciona ningún tipo de
Socks v5 • ADMINISTRACIÓN
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.
cando qué servicio necesita (la dirección de destino DST.ADDR y el puerto DST.PORT). El proxy Socks evalúa la petición, basada en la ID del cliente y la dirección de destino, tomando una lista de control de acceso en consideración al estilo típico del cortafuegos. Si al cliente no se le permite el acceso por el tipo de petición, el proxy Socks rechaza la conexión del cliente. En cualquier otro caso, responde con uno o múltiples paquetes de respuestas del servidor.
Direcciones
Figura 1b: A diferencia de un ALG, Socks asume el papel de un proxy genérico, aceptando conexiones desde cualquier protocolo de aplicación en el puerto 1080, autenticando clientes y autorizando transferencias.
autentificación y está restringido para TCP. Socks v5 añade mecanismos de autenticación robustos y soporte extendido a UDP.
Un Rodeo En un escenario típico de Socks, el cliente querrá acceder al servicio HTTP proporcionado por un servidor en una red externa. El procedimiento se muestra en la Figura 2, el formato de los datos en la Figura 3 y el contenido de los campos en la Tabla 1. El cliente comienza abriendo la conexión TCP al proxy Socks (1); por defecto la conexión utiliza el puerto 1080. El cliente envía un paquete de
Negociación sugiriendo unos cuantos métodos de autenticación (número en NMETHODS y métodos en METHODS). Si el proxy acepta la petición (paso 2 en la Figura 2), utiliza un paquete de Negociación de Servidor para decirle al cliente el método de autenticación (METHODS con exactamente una entrada). A continuación, el proxy autentifica al cliente (paso 3). El procedimiento exacto en este paso depende del método seleccionado. En este punto, el cliente envía una petición al proxy indi-
Las peticiones y respuestas de Socks pueden contener distintos tipos de direcciones. El protocolo soporta direcciones IPv4 e IPv6, junto con nombres de dominios. El último elimina la necesidad del cliente para realizar consultas al DNS y la red interna no necesita resolver nombres externos DNS. Dependiendo del tipo de respuesta del cliente, es decir, dependiendo del valor de CMD (Figura 2 y Tabla 1), los detalles de la dirección en la respuesta del servidor Socks tienen una diferencia significativa. Una respuesta a una petición CONNECT contiene el BND.PORT y BND.ADDR, esto es la dirección con la que el proxy se ha conectado al servidor de destino. La dirección BND.ADDR normalmente no
Listado 1: Servidor Socks 01 02 03 04 05 06
logoutput: syslog #logoutput: stdout
internal: eth0 port = 1080 external: eth1 #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 15 16 17 18
user.privileged: proxy user.notprivileged: nobody
client pass { 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 {
WWW.LINUX-MAGAZINE.ES
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 }
Número 09
63
ADMINISTRACIÓN • Socks v5
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).
es la misma que la dirección del servidor Socks, en la cual el cliente envía la respuesta original. Este sistema es conocido como servidor sock multihome, es típico de un cortafuegos Socks que conecta dos redes. Tras un exitoso comando Connect, el cliente y el servidor pueden comunicarse de forma transparente mediante el proxy; el Socks simplemente reenvía cualquier dato. El cliente envía una petición REQUEST para indicar que espera una conexión entrante desde el servidor. Este escenario podría parecer que es al revés, pero esto es normal en el caso del protocolo FTP en modo activo. Con FTP y siguiendo los tradicionales cliente-servidor, el cliente primero establecerá una conexión al servidor FTP; esto se conoce como control de conexión. Si un fichero necesita ser transferido, el servidor establece una conexión de datos tras el cliente. Antes de esto, el cliente necesita decirle al servidor qué dirección y qué puerto del servidor puede utilizar. Esta información se envía a través del canal de control.
Un Mundo al Revés Selectivamente el Socks puede permitir este tipo de conexión en la red interna. El cliente abre el canal de control al servidor enviando una respuesta normal Connect. El cliente luego utiliza una respuesta Bind sin una segunda conexión para preguntar al proxy Socks para abrir un puerto a la conexión de datos entrante. El proxy envía dos contestaciones en respuesta. El primero contiene el puerto y la dirección que el servidor Socks escuchará por las conexiones entrantes. El proxy no envía la segunda respuesta hasta que el servidor abre la conexión. Cuando esto ocurre, la respuesta del proxy contiene la dirección y el puerto
64
Número 09
como el cliente necesita para la autenticación de una conexión TCP.
Autenticando
de la máquina utilizada para abrir la El método de autenticación también conexión. Finalmente, el proxy reenvía puede proporcionar confianza e integrilos datos desde el servidor externo al dad entre el cliente y el proxy. La autencliente interno. Si quiere que el Socks Tabla 1: Etiquetas de los Paquetes actúe como un proxy UDP, el cliente necesita Etiqueta Contenido/ Descripción utilizar primero TCP ATYP Tipo de Dirección: para contactar con el 0x01: Dirección IPv4 0x02: Nombre de dominio proxy y autenticarse 0x03: Dirección IPv6 (Figura 4). El CMD lo BND.ADDR Socks Proxy source address para transminegocia, en este caso es sión de datos al servidor el tercer valor de la BND.PORT Socks Proxy source port para transmisión de Tabla 1: UDP Associate. datos al servidor Como el cliente actualCMD Tipos de transmisión: mente utilizará UDP 0x01 CONNECT para transmitir los 0x02 BIND datos, necesitará decirle 0x03 UDP Associativo al proxy que llegarán DST.ADDR Dirección destino solicitada (en el servidor) estos paquetes. Para DST.PORT Puerto destino solicitado (en el servidor) hacerlo, el cliente añade FRAG Número de fragmento actual (para paquetes a su propia dirección y UDP) METHODS Campo de selección para el método de puerto a los campos autenticación: DST.ADDR y DST.PORT. 0x00: Sin autentificación El proxy abre un 0x01: GSSAPI puerto interno UDP, 0x02: Nombre de usuario y contraseña permitiendo al cliente 0x03 a 0x7E: Definido por IANA enviar paquetes hacia 0x80 a 0xFE: Reservado para métodos priva fuera. El cliente lee la dos (sólo utilizado localmente) dirección y el puerto del 0xFF: El proxy ha rechazado el método ofre proxy desde la respuescido por el cliente ta del servidor a la resNMETHODS Número de entradas en el campo METHODS puesta UDP asociada: REP Campo de respuesta: BND.PORT y 0x00: Perfecto 0x01: Generic Socks proxy error BND.ADDR. Y aquí es 0x02: Conexión deshabilitado por ruleset donde el cliente tiene 0x03: Red no accesible que enviar cualquier 0x04: Host no accesible paquete UDP destinado 0x05: Petición de conexión rechazada a la red externa. El 0x07: No soporta comandos Socks cliente coge su propio 0x08: No soporta el tipo de dirección paquete UDP en una 0x09 a 0xFF: No definido solicitud UDP (Figura RSV Reservado 3). La UDP se queda VER Versión del protocolo (0x05) abierta tanto tiempo
WWW.LINUX-MAGAZINE.ES
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.
ticación podría implicar el encapsulado de los datos, por ejemplo, utilizando un protocolo seguro como SSL o TLS. Tras completar el proceso de negociación del cliente/servidor, el cliente se autentica usando SSL/TSL. Cualquier otro dato enviado durante la conexión también puede ser protegido por SSL/TSL y esta forma de comunicación segura asegura la confiabilidad e integridad. Los usuarios pueden utilizar dispositivos móviles,
wireless seguros mediante el proxy Socks.
Dante La implementación del cliente y el servidor de Socks con licencia BSD Dante para Unix[1] soporta Socks v4 y v5 y los últimos MSproxy. La versión 1.1.15 se ha lanzado a finales de Enero de 2005. Dante lo desarrolló una consultoría noruega llamada Inferno Nettverk A/S,
que también ha comercializado módulos de control de banda ancha y monitoreo de puertos y reenvíos. Se comenta que la versión gratuita es suficiente para la mayoría de las tareas. Además de proporcionar los servicios Socks y MSproxy, también puede actuar como proxy HTTP, autenticar usuarios basándose en sus nombres de usuarios y contraseñas o a través de PAM (Pluggable Authentication Module). El soporte para nombre de interfaces en los ficheros de configuración permite el uso de DHCP.
Configuración del Proxy La instalación normal, utilizando configure && make && make install, coloca el fichero de configuración del servidor en /etc/sockd.conf (Listado 1). En la línea 1, una instrucción logoutput le indica a Dante dónde colocar los ficheros de log (Syslog o Stdout). En las líneas 4 y 5 se especifican el nombre de las interfaces de red. Esto es muy útil para equipos configurados con DHCP. Las líneas 6 y 7 muestran que las direcciones IP son aceptadas.
ADMINISTRACIÓN • Socks v5
que chequear los ficheros de registros del proxy, que estarán en /var/log/messages si utiliza Syslog.
Socks por todas partes
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.
Al igual que el servidor Socks, el paquete Dante tiene un script wrapper denominado socksify. El script socksify proporciona al usuario la opción de añadir capacidades de Socks a la mayoría de los programas cliente de la red. Con socksify, puede añadir la capacidad Socks a protocolos como SMTP, FTP, NTP, DNS o IRQ. Por ejemplo: ./socksify -c ftp 10.0.0.10
Hay que tener en cuenta que la interfaz interna necesita un número de puerto. El método de autenticación soportado por Dante incluye el nombre del usuario / contraseña (línea 9), el método Ident especificado en RFC 931 (línea 11) y PAM. El servidor Socks necesita distintos usuarios privilegiados para reflejar el método de autenticación. Si necesita acceder al fichero de contraseñas, optará por una cuenta de usuario con los privilegios necesarios (definido como proxy en la línea 14), aunque en cualquier otra circunstancia es mejor ser nobody (línea 15). Sugerimos utilizar una cuenta de usuario dedicada para el servidor Socks v5. Los administradores pueden ejecutar el servidor en un entorno aislado para alejarlo de los sistemas de ficheros y también dar al servidor su propio fichero de claves.
Buen Filtrado Las reglas de filtrado en los ficheros de configuración le permiten especificar qué clientes pueden acceder al proxy Socks y a qué direcciones se puede conectar el proxy. Dante analiza las reglas de los filtros secuencialmente. Primero evalúa cualquier regla con el prefijo client para establecer qué ordenadores tienen permisos para acceder al servidor Socks (desde las líneas 17 al 24). Las reglas pass permiten el acceso, y las reglas block lo deniegan. Desde las líneas 17 a la 19 permiten al ordenador con la dirección 10.0.0.3 tener acceso sin restricciones, y las líneas 21 a 24 deniegan cualquier
66
Número 09
otro acceso. Estas reglas son aplicadas a nivel TCP/IP y no tienen nada que ver con el protocolo Socks. La segunda clase de reglas de filtros comprueba el contenido de las peticiones de los clientes. Estas reglas especifican las clases de peticiones que el proxy atenderá. La regla block en las líneas de la 26 a la 29 del Listado 1 rechaza cualquier petición de los ordenadores que quieran conectarse a 10.0.0.11. El tráfico TCP y UDP de la máquina 10.0.0.3 con petición para 10.0.0.10 es admitida (líneas 1 a 34). El proxy ignorará cualquier otra solicitud.
Primeros Tests Llamando a /sbin/sockd-d se lanza al proxy en modo de depuración. Este modo le dice al proxy que registre cualquier cosa importante en logoutput. Ethereal es perfecto para chequear los detalles de la comunicación. Utilizamos el navegador Mozilla como nuestro cliente de prueba. Establecemos el servidor Socks a 10.0.0.11 y el puerto 1080 en el Manual de configuración del proxy en nuestro caso. Si el proxy Socks rechaza una conexión de una cuenta con privilegios de acceso inapropiados, el usuario podría darse cuenta de los síntomas sin llegar a saber por qué ha fallado la conexión. Por ejemplo, si el navegador Mozilla muestra un fallo de conexión, simplemente mostrará que The document contains no data en el caso de un error en la parte 2 de las reglas de filtrado, pero no hay que mencionar que la causa sea el proxy. Para investigar las posibles causas de un problema de conexión de este tipo, hay
WWW.LINUX-MAGAZINE.ES
Junto con un fichero de configuración adecuado /etc/socks.conf, el comando anterior le dice a socksify que llame al programa ftp mediante el proxy Socks sin 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 a socksify que utilice Socks v5 como un protocolo proxy y que establezca una conexión de red segura mediante el puerto 1080 en el ordenador 10.0.0.11.
Uno para Todos La tecnología Socks le proporciona a los administradores de la red la capacidad de desplegar un método simple y transparente para la gestión de seguridad. Socks también añade autenticación y encriptación a aplicaciones de la red. A diferencia de muchos otros protocolos, el protocolo Socks no distingue entre conexión y autenticación de usuario y por tanto, Socks proporciona un cortafuegos con control com■ pleto sobre todo el tráfico de datos.
RECURSOS [1] Dante: http://www.inet.no/dante/ [2] RFC 1928, “SOCKS Protocol Version 5”: http://www.ietf.org/rfc/rfc1928.txt [3] RFC 1929, “Username/ Password Authentication for SOCKS V5”: http:// www.ietf.org/rfc/rfc1929.txt [4] RFC 1961, “GSS-API Authentication Method for SOCKS Version 5”: http:// www.ietf.org/rfc/rfc1961.txt
Cuentas de usuario • ADMINISTRACIÓN
Administrar cuentas de usuario en Linux
LLEVAR LA CUENTA DE LA MANADA
Los pasos para configurar cuentas nuevas bajo Linux están automatizados y usan frecuentemente herramientas 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
C
on cualquiera de las modernas distribuciones de Linux, sólo necesitamos 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 se apoyan en programas en línea de coman-
dos como adduser o useradd para el trabajo duro. Es extremadamente importante para los administradores saber exactamente qué se está haciendo al crear una cuenta de usuario. Las características automatizadas pueden ajustarse a medida para
WWW.LINUX-MAGAZINE.ES
adecuarse a los requerimientos de nuestro sistema. Cuando creamos una cuenta, ciertas bases de datos necesitan los detalles del nuevo usuario. Estos usualmente necesitan un directorio de usuario y permisos de escritura a juego. Los administradores abandonan a sus usua-
Número 09
67
ADMINISTRACIÓN • Cuentas de usuario
queando el fichero al mismo tiempo para evitar el acceso de otros usuarios de administración, y renueva las bases de datos binarias del usuario después de terminar las modificaciones.
Grupos
Figura 1: El menú principal de SSPE es muy claro. La interfaz basada en texto plano permite la administración remota de la herramienta.
rios a la hora de las configuraciones de programas, muchas de ellas están incluso pre-fijadas. Por supuesto, es imposible tener en cuenta absolutamente todas las configuraciones al crear nuevos usuarios, especialmente si el usuario no accede al sistema hasta pasado un cierto tiempo.
Crear una Cuenta de Usuario Al crear una nueva cuenta de usuario, el primer paso es guardar la información de ese usuario en la base de datos centralizada. Suponiendo que no tenemos un sistema distribuido como NIS, NIS+, NetInfo o LDAP, sino que simplemente administramos los usuarios desde un único equipo, el fichero se llamará /etc/passwd. Este es un fichero de texto con una entrada para cada cuenta, incluyendo el nombre de login y el ID del usuario, el ID del grupo primario, el directorio de usuario y el shell por defecto. Podemos añadir incluso detalles como el nombre y apellidos del usuario o el número de teléfono. Los sistemas Unix guardaban una contraseña encriptada que servía para autenticar al usuario de /etc/passwd. El problema con este método es que /etc/passwd necesitaba ser leído globalmente, es decir, sus permisos estaban
68
Número 09
fijados a 0700. Y eso implicaba que cualquiera podía leer las contraseñas encriptadas. Los procesadores actuales no tardan demasiado en romper contraseñas débiles [1] mediante fuerza bruta, por lo que cualquier usuario con acceso al sistema tiene la oportunidad de realizar una escalada de privilegios. Para mejorar la seguridad, muchos de los derivados de Unix guardan las contraseñas en el archivo /etc/shadow. Este archivo es propiedad del administrador y del grupo shadow, y los privilegios de lectura se suelen restringir al administrador y posibles miembros del grupo shadow. Esto evita que otros usuarios accedan a las contraseñas. Un registro típico de /etc/passwd tiene el siguiente aspecto: pepe:x:1000:1000:Jose Garcia U Selig,,,:/home/pepe:/bin/bash
Algunos sistemas Unix no usan el archivo de contraseñas directamente, sino que generan una base de datos binaria a partir de ese archivo. A destacar la familia BSD, notable en este aspecto. Para evitar conflictos y condiciones de carrera, existe un vipw que permite al administrador editar el archivo de contraseñas. Esta herramienta ejecuta el editor vi con /etc/passwd, blo-
WWW.LINUX-MAGAZINE.ES
Los grupos de usuarios son una característica central de la administración de privilegios en cualquier sistema Unix. Los administradores pueden crear grupos de manera similar a crear usuarios, usando las herramientas addgroup o groupadd, por ejemplo. Los grupos se guardan en un fichero llamado /etc/group. Cada fichero creado en una máquina Unix se asigna automáticamente a un usuario y a un grupo. Los administradores pueden asignar permisos de manera separada para el usuario y el grupo de cada archivo. La posibilidad de asignar múltiples usuarios a un grupo facilita a estos usuarios el acceso a archivos o directorios específicos. Algunos ejemplos típicos de grupos son modem o dialout para el acceso al puerto del modem, audio para la tarjeta de sonido y cdrom para asignar permisos para la unidad de CD-ROM. Un sistema con bases de datos podría asignar a los usuarios autorizados un grupo llamado db, por ejemplo. Los usuarios pueden pertenecer a todos los grupos que sea necesario, pero cada usuario tendrá un grupo primario que especifica la propiedad de grupo de cualquier archivo que el usuario cree. El grupo prima-
Cuentas de usuario • ADMINISTRACIÓN
Figura 2: Crear una nueva cuenta de usuario implica una serie de tareas. Las herramientas como useradd descargan mucho trabajo para el administrador.
rio se lista en /etc/passwd y cualquier otra pertenencia se almacena en /etc/group. El comando id muestra las pertenencias 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 Linux tienen dos métodos diferentes respecto a las asignaciones al grupo primario. Algunas establecen un grupo de usuarios global users para todas las personas usuarias del sistema. Estos pueden luego ejecutar chmod para especificar si cualquier fichero que creen debe tener acceso de lectura para los demás miembros del grupo (poniendo los permisos a 0640: lectura y escritura para el propietario, lectura para el grupo y sin permisos para el resto). En caso contrario se fija-
rán como 0600: sin permisos ni para el grupo ni para el resto). Otras distribuciones asignan cada usuario a un grupo de su propiedad. Esto mejora ligeramente la protección de datos y permite a los usuarios fijar pequeños equipos añadiendo cada usuario a sus grupos individuales. Habiendo dicho esto, tiene más sentido configurar grupos específicos orientados a tareas que simplemente dejarlo a ver qué pasa. Hay un buen número de grupos de administración para el control de acceso a programas o archivos específicos. Por ejemplo, el grupo wheel agrupa tradicionalmente a los usuarios autorizados a ejecutar el comando su o equivalentes. Las distribuciones de hoy en día no suelen tener un grupo wheel para simplificar las cosas, sino que simplemente cualquier usuario está autorizado a ejecutar su. Los grupos como tty, disk y lp refieren a componentes del sistema (acceso a terminales, discos duros e impresoras), mientras que los bin o sys permiten a los administradores especificar qué cuentas pueden ejecutar programas. Estos grupos no se asignan nunca a usuarios humanos. El grupo especial nobody (o nogroup) se asigna a usuarios sin privilegios. Sin embargo, hay un cierto peligro de que muten al grupo de todo el mundo ya que muchos paquetes de software suelen crear archivos con pertenencia a este grupo. Tiene más sentido configurar un grupo especial nobody para cada paquete de software.
Directorios de Usuario Cuando un administrador crea un nuevo usuario añadiendo simplemente el direc-
Listado 1: Cuanta de usuario “pepe” 01 02 03 04 05 06 07 08 09 10 11
$ su Password: # vipw [...] # passwd pepe # mkdir /home/pepe # cd /etc/skel && tar cf - . | (cd /home/pepe && tar xpf -) # chown -R pepe:users /home/pepe # chmod -R u+rwX,go-rwx /home/pepe # exit $
torio de usuario /home/user a /etc/passwd no está haciendo un gran avance. Por supuesto, el directorio ha de crearse. Además del paso obvio de mkdir, el administrador tiene que acordarse de configurar los permisos de usuario y grupos adecuados, ejecutando chown (y posiblemente chgrp). Dependiendo de nuestra distribución y preferencias, podemos fijar los permisos de los directorios de usuario a 0755, 0711 o 0700. En el primer caso se permite a todo el mundo el acceso de lectura al directorio. La segunda variante permite el acceso a ficheros y directorios situados bajo el directorio de usuario, suponiendo que tienen los permisos configurados y sus nombres son conocidos, para evitar listados de directorios. La tercera variante evita el acceso de otros usuarios. Como el directorio de usuario pertenece al nuevo usuario, éste puede modificar la configuración por defecto más tarde.
Listado 2:/etc/X11/xinit/xinitrc 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 keymaps 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
WWW.LINUX-MAGAZINE.ES
20 21 22 23 24 25 26 27 28 29 30 31 32 33
xrdb -merge $userresources fi if [ -f $usermodmap ]; then xmodmap $usermodmap fi # start some nice programs xterm & # start the window manager exec fvwm2
Número 09
69
ADMINISTRACIÓN • Cuentas de usuario
Pero los administradores no pueden simplemente sentarse y relajarse después de haber creado un directorio de usuario. Se necesita fijar la configuración por defecto de los programas más comunes y deben configurarse las variables globales para el usuario. Muchos programas Unix usan los llamados dotfiles para la configuración. Los dotfiles son archivos ocultos de configuración (o directorios) situados en el directorio de usuario y que pertenecen al usuario que ejecuta el programa. Se les llama así dado que el nombre del fichero o directorio empieza siempre por un punto.
El Esqueleto Un gestor de ventanas necesita saber qué software está instalado para poder proporcionar los menús adecuados. Los procesadores de textos y los programas de retoque de imágenes tienen que soportar las impresoras y adaptarse a otros detalles locales. Los navegadores tienen que saber bajo qué proxys están trabajando, etc… El directorio /etc/skel/ (viene de esqueleto) tiene una plantilla básica para los nuevos directorios de usuario. Los administradores pueden guardar los dotfiles o asignar a nuevos usuarios en este directorio. Cuando se crea un nuevo directorio, este “esqueleto” simplemente se copia allí. Con esto se completaría la cuenta de usuario y su entorno. El Listado 1 muestra los comandos necesarios para crear
70
Número 09
una cuenta de usuario. Ejecutar este listado de comandos cada vez que necesitemos crear un nuevo usuario lleva demasiado tiempo, por lo que herramientas como adduser y useradd nos ayudan a automatizar estos pasos. La Figura 2 nos muestra un esquema de los pasos implicados.
Configuración Avanzada Un gran problema con las cuentas preconfiguradas es que muchas de las configuraciones se desconocen de antemano. Aunque el idioma y la zona horaria son fáciles de arreglar, y no suelen variar, las configuraciones de programas específicos son algo completamente distinto y pueden incluso variar en caso de actualizaciones. Para empeorar las cosas, los administradores no pueden presuponer que el usuario empezará a usar la cuenta inmediatamente y para comenzar a controlar la configuración desde ese momento. En muchos casos tiene sentido preparar archivos de configuración en una localización centralizada, suponiendo que el programa soporta este método. Los típicos gestores de ventanas de X11, o la configuración de xinit son buen ejemplo de esto. Los administradores pueden simplemente mantener la estructura de configuración central en /etc/X11/. En caso de una actualización, el administrador (o el gestor de paquetes) simplemente modifica estos directorios para propagar automáticamente la
WWW.LINUX-MAGAZINE.ES
nueva configuración a los usuarios. En caso de que los usuarios avanzados no estén conformes con la configuración por defecto, los administradores dan por sentado que cambiarán la configuración en sus directorios de usuario. El Listado 2 muestra un ejemplo de archivo /etc/X11/xinit/xinitrc, que inicializa el teclado y los perfiles centralizadamente (líneas de la 11 a la 17). Dondequiera que los usuarios hagan cambios individuales, el script aplica automáticamente estos cambios (líneas de la 19 a la 25). Los administradores pueden usar un método similar para configurar variables de entorno en los perfiles centrales del shell /etc/profile/ (para Sh y Bash) o /etc/csh.cshrc y /etc/csh.login (para Csh y Tcsh). Da igual el sitio donde el usuario defina sus propias versiones de estos archivos dentro de sus directorios de usuario (son archivos dotfile), que el shell ejecutará estos arhivos, dándoles mayor prioridad a sus configuraciones, al menos para las variables. Las configuraciones centrales como las de ulimits pueden fijarse para que tengan mayor prioridad que las variables locales. El Bash permite a los administradores definir algunas variables como readonly (sólo lectura). Esto le da a los administradores un control preciso sobre las configuraciones. Si el método de configuración y administración centralizado resulta impracticable, debido a aplicaciones que no lo soportan y no hay manera de salvar el escollo, siempre podremos recurrir al viejo truco: sustituir el archivo del programa con un script de arranque. El script tendrá que verificar el directorio de usuario en busca de una versión del archivo de configuración, y si no existe, copiar el archivo con la configuración inicial desde la ubicación central antes de ejecutar propiamente la aplicación. Dependiendo de la cantidad de esfuerzo que estemos dispuestos a invertir en esto, podríamos incluso conseguir en el script de arranque que cambie los ficheros de configuración automáticamente ■ en caso de actualización.
RECURSOS [1] John the Ripper, una herramienta para crackear contraseñas: http:// www.openwall.com/john/
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 perfectamente 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 organiza su explotación en el cuaderno de clase.
Rock y consola
86
Echamos un vistazo a las aplicaciones que rocanrolean desde la líneade comandos.
WWW.LINUX- MAGAZINE.COM
ISSUE 52 MARCH 2005
71
LINUX USER • KTools: Konqueror 3.4
Navegación con Konqueror 3.4
LA CONQUISTA DEL ESCRITORIO Siguiendo la pista de invasores previos como Navigator e Internet Explorer, Konqueror continua con la misión de conquistar Internet. Konqueror de KDE 3.4 es una herramienta perfectamente versátil que se siente en la web como en casa. POR HAGEN HÖPFNER
H
a habido bastantes críticas sobre el hecho de que Internet Explorer está inseparablemente ligado a los sistemas Windows. KDE tiene su propio navegador nativo y aunque la posición de Konqueror en el mundo de Linux no es tan dominante como IE en Windows, la última versión de Konqueror proporciona nuevas características para integrar Konqueror con la experiencia del usuario. Este artículo examina algunas características prácticas y poco conocidas de Konqueror en el escritorio KDE 3.4.
dirección. Suse Linux viene ahora con el paquete KDE-3.4 en la versión 8.2 o posteriores de la distribución [2]. Los usuarios de Gentoo Linux necesitan habilitar primero la nueva versión de KDE, que aún no se considera como estable.
Arranque Hay múltiples formas de ejecutar Konqueror. El icono y la entrada Home
en el menú de inicio de KDE nos lleva a Konqueror en el formato de administrador de ficheros. Incluso se puede desplegar una ventana de comienzo rápido (Alt + F2) y teclear una dirección de Internet, para lanzar Konqueror en modo navegador de Internet. La entrada Internet | Web Browser (Konqueror) o el comando konqueror desde la consola, también nos llevan a la pantalla del
Configuración Al instalar KDE automáticamente se instala Konqueror en el disco duro. El cuartel general del escritorio KDE es parte del paquete kdebase y el número de versión del paquete refleja la versión de KDE que se tiene instalada. La mayoría de las distribuciones contienen los números de versión. Así que si está interesado en la última versión de KDE 3.4, habrá que estar preparado para algunos pasos manuales. Mientras escribo este artículo, el servidor FTP del proyecto KDE [1] tiene binarios para Fedora Core 3 y Conectiva. Los usuarios con experiencia que tienen tiempo para compilar los paquetes podrían estar interesados en el código fuente de KDE, que está disponible en la misma
72
Número 09
Figura 1: Konqueror tras lanzarse sin un perfil de vista.
WWW.LINUX- MAGAZINE.ES
KTools: Konqueror 3.4• LINUX USER
profile “xyz” y Configure view profiles. xyz representa el nombre del perfil actual. La configuración por defecto de KDE 3.4 tiene seis perfiles de vistas preconfigurados. Por ejemplo, Tabbed Figura 2: Konqueror navegando mediante solapas. Browsing (Figura 2) proKonqueror (Figura 1). Cuando aparece porciona una sesión de navegación web Konqueror, este proporciona enlaces a con solapas en Konqueror. sitios importantes y tareas, permitiendo Compárese esto con la ventana tradiel acceso tanto al directorio home del cional del administrador de archivos que usuario como a los módulos del Centro proporciona el perfil de vista denominade Control de KDE. do File Management. Incluso se puede mostrar una ventana de línea de comanPerfiles de Vistas dos inmersa en el navegador en este La opción de usar múltiples perfiles de modo seleccionando View | Show vistas es extremadamente útil. El menú Terminal Emulator (Figura 3). de configuración tiene tres elementos La vista denominada KDE development titulados Load view profile, Save view es una variante de la vista de navegación basada en solapas que automáticamente nos lleva a la herramienta de documenTabla 1: Mostrando tación de desarrollo de KDE. A los fans Información de la herramienta Norton Commander kioslave Tarea puede que les interese echar un vistazo a finger Muestra información de Settings | Load view profile | Midnight los usuarios; necesita Commander para una sesión de tener finger instalado y fingerd ejecutándose. Konqueror con un panel, conteniendo help Llama a la ayuda de KDE una vista en forma de árbol del sistema info Accede a la página de de ficheros. información del sistema La configuración por defecto es de en la barra de direccio todo menos intuitiva, ya que ambos nes de Konqueror paneles muestran el mismo directorio, y man Muestra las páginas de si cambia de directorio, se produce el ayuda para un comando cambio en ambos paneles. Para cam-
Tabla 2: Kioslaves para Acceder al Sistema de Ficheros kioslave audiocd camera
floppy mac
tar
Tarea Muestra la pista en un CD de audio Accede a imágenes de una cámara digital con soporte gphoto2; suponiendo que gphoto2 está instalado. Accede al disquete usando mtools Accede a particiones con formato HFS utilizando hfsplus tools Navega por ficheros tar como si fuesen directo rios normales; este kioslave si lo necesita utiliza automáticamente la compresión mostrada en la Tabla 4.
biarlo, hay que hacer clic en una “check box” de la parte de abajo de la derecha de las vistas. Si los perfiles predefinidos no son de su agrado, se puede guardar fácilmente su configuración personalizada bajo un perfil nuevo. Para ello, se configura la ventana hasta ajustarla a nuestro gusto. Por ejemplo, podría añadir una ventana de terminal. Luego se selecciona Configure views profiles y se teclea un nombre para el perfil. Ahora el nombre se añade al submenú Load view profile. Para asegurarse que Konqueror se ejecute con su perfil favorito cuando se haga 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 de comandos del icono a konqueror -profile mi_vista; la próxima vez que se haga clic sobre el icono, Konqueror aparecerá con la vista elegida.
Figura 3: Konqueror como un gestor de ficheros con emulador de terminal.
WWW.LINUX- MAGAZINE.ES
Número 09
73
LINUX USER • KTools: Konqueror 3.4
Kioslaves
ma, ya que el kioslave usa Los módulos especiales llalas funcionalidades de mados Kioslaves extienden la hfsplus. funcionalidad de Konqueror. Puede teclear audiocd:/ Los Kioslaves de Konqueror en la barra de direcciones le permite acceder a redes, a para visualizar las pistas de archivos comprimidos, a CDs un CD de audio. de audio [3] y cámaras con Dependiendo de los codecs soporte gphoto [4]. Kioslaves y herramientas que se tenson los módulos kio de entragan instaladas, se proporcioda/salida. Cada Kioslave es nará una serie de carpetas responsable de un protocolo con ficheros virtuales en forindividual, que no tiene pormato flac, mp3 u ogg. Los qué ser un protocolo de red. ficheros en estas carpetas no Las bibliotecas kio tienen la están realmente en el CD, ventaja de permitir a cualpero si arrastra uno de los quier programa KDE acceder ficheros de la carpeta MP3 a módulos individuales, eliFigura 4: Konqueror como un centro de ayuda. al disco duro, Konqueror minando la necesidad de que creará el fichero MP3 al los desarrolladores se preocupen con proposibles alternativas. La Tabla 1 contievuelo. Para ello, primero lee la pista y la tocolos complicados y no pierdan el tiemne un listado de kioslaves que proporconvierte al formato comprimido. Por defecto, el administrador de ficheros po intentando integrarlos en sus aplicacionan acceso a información genérica. accederá a freedb, una base de datos de ciones. Konquistando el Sistema de Internet con información de artistas y Para averiguar cual de estos módulos Ficheros nombres de pistas de CDs. Esto permite tiene disponible Konqueror, hay que Konqueror puede mostrar contenidos a Konqueror añadir etiquetas ID3 preciteclear help:kioslave en la barra de con formato para las particiones, CDs de sas y descriptivas. Como Fedora no tiene direcciones del programa. Konqueror audio y cámaras. Por ejemplo, hay un soporte para MP3 por defecto, los usuamostrará una lista con todos los kioslamac kioslave para acceder a los sistemas rios con la distribución Fedora no podrán ves que tiene instalados. De hecho, de ficheros HFS+ de Apple. Para que ver la carpeta MP3. está utilizando uno de ellos ahora: esta característica funcione, hay que La Tabla 2 contiene una lista de kioslahelp:, que da acceso directo al sistema tener las herramientas hfsplus en el sisteves que emulan sistemas de ficheros. Entre de ayuda de KDE. help:ksnapshot nos lleva a los ficheros de ayuda de la herramienta de captura de pantalla de Tabla 3: Protocolos de Red con Soporte Kioslave KDE. Si no está buscando ayuda de las aplicaciones KDE, pero necesita la kioslave Tarea página man de un comando Unix, exisfish Utiliza SSH para acceder a otras máquinas. Por ejemplo, fish:/hoepfner@nero te un kioslave que se encarga de ello. abriría una conexión para el usuario hoepfner en la máquina nero. Teclee man:/su en la barra de direccioftp El Protocolo de Transferencia de Ficheros nes de Konqueror para acceder a la imap Utiliza el Protocolo de Acceso a Mensajes en Internet para acceder a servidoversión HTML de la página man del res IMAP. comando su (Figura 4). Si la búsqueda imaps Acceso encriptado a servidores IMAP encuentra varias páginas man, ldap Acceso al directorio X.500 o a un servidor LDAP Koqueror muestra nfs Acceso a NFS en una red primero una nntp 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 lista con grupos en un leafnode instalado localmente tarda un cuarto de hora en un las pop3 pop3s rlogin sftp smb telnet
webdav webdavs
74
Número 09
Pentium M a 1300MHz Utiliza el protocolo POP para accede a una cuenta de correo Acceso encriptado al buzón de POP Login remoto del host FTP seguro Acceso compartido de Windows mediante Samba; Konqueror llama a smbclient en segundo plano. 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. Acceso a un servidor HTTP utilizando el protocolo WWW Distribuido Autorizado y Versionado La variante encriptada del protocolo WebDAV
WWW.LINUX- MAGAZINE.ES
KTools: Konqueror 3.4• LINUX USER
Figura 5: El kioslave imap le permite eliminar un buzón de correo como si fuese un directorio local.
Si se dispone de una cuenta IMAP, tan sólo hay que reemplazar nombreusuario por la ID del usuario y server por el nombre del servidor IMAP (Figura 5). Se pueden borrar mensajes directamente usando Konqueror, tal y como se haría con un programa de correo. Si la seguridad es algo que le preocupa y desea una sesión encriptada para acceder a la cuenta IMAP, necesita el kioslave imaps para mostrar los contenidos de los buzones de correo. La Tabla 3 muestra los otros protocolos de red que Konqueror soporta a través de los kioslaves.
Figura 6: Tecleando “print:/” en la barra de direcciones de Konqueror le permite acceder al gestor de impresión de KDE.
otros, la lista incluye un kioslave que permite un acceso fácil a cualquier cámara con soporte gphoto2. Tecleando camera:/ en la barra de direcciones de Konqueror hace que se autodetecte el dispositivo antes de proceder a mostrar las carpetas y los ficheros de imágenes que contiene.
Especialistas en Redes Konqueror también proporciona un acceso sencillo a los recursos de red. El programa no sólo entiende los protocolos http y ftp, sino que también permite el acceso a buzones de correo en servidores IMAP si se teclea imap://nombreusuario@servidor en la barra de direcciones.
Tabla 4: Kioslave Internos kioslave bzip bzip2 gzip cgi
file mailto print thumbnail
Tarea Acceso a archivos comprimidos bzip Acceso a archivos comprimidos bzip2 Acceso a archivos comprimidos gzip Ejecuta programas CGI sin un servidor web activo Muestra ficheros locales y directorios Lanza el editor de correo que tenga por defecto Información y configura ción de la impresora Ejecuta KDE para crear thumbnails
Kioslaves Internos Los programas KDE hacen uso internamente de los kioslaves. Por ejemplo, haciendo clic en una dirección de correo en el centro de control se abre su programa de correo favorito, que por defecto es KMail. Las aplicaciones KDE que hacen esto usan el kioslave mailto. Y por supuesto, se puede hacer lo mismo tecleando mailto:usuario@dominio en la barra de direcciones de Konqueror. Esto hace que el editor de KMail se ejecute con la dirección de destino ya insertada en el campo de dirección del mensaje. Se puede teclear print:/ para acceder a otro kioslave interno de KDE. Si se realiza esto, nos dirigirá a la herramienta de gestión de impresión de KDE (Figura 6). La Tabla 4 muestra una lista de los kioslave internos.
WWW.LINUX- MAGAZINE.ES
Conclusión Konqueror es un gran intento por parte de los desarrolladores de KDE de implementar una herramienta universal que puede manejar casi cualquier tarea relacionada con los ficheros. Uno de los problemas de Konqueror es que el programa llega a ser tan grande que podría llevar a un usuario varios meses para descubrir algunas de las características extremadamente útiles que los desarrolladores de Konqueror han incluido en esta aplicación innovadora. El manual de usuario de Konqueror es un buen punto de partida para empezar sus aventuras con Konqueror. Un buen comienzo puede ser leer el manual y la ayuda online para aprender algunas de las características más interesantes y útiles de esta poderosa herramienta. Se puede acceder al manual a través del menú de ayuda o tecleando help:konqueror en la barra de ■ direcciones de Konqueror.
RECURSOS [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 de audio CD: http://docs.kde.org/en/3.3/ kdebase/kioslave/audiocd.html [4] gphoto2: http:// www.gphoto.org/
Número 09
75
LINUX USER • Desktopia: xdesktopwaves
Hacer Hacer olas olas con con xdesktopwaves xdesktopwaves
CABALGANDO LAS OLAS
Incluso si el fondo de escritorio más imaginativo ya empieza a aburrirnos, es hora de cambiar. 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. POR ANDREA MÜLLER
E
l agua atrae a millones de veraneantes a las costas, lagos y ríos cada año. Ahora, Oliver Hamann ha desarrollado una herramienta para traer un aspecto húmedo a nuestro escritorio. xdesktopwaves [1] inunda nuestro escritorio y genera olas cuando arrastramos el ratón o movemos ventanas. El programa ofrece una variedad de opciones que permiten al usuario añadir efectos como lluvia y tormentas o cambiar el color del agua. No es necesario deshacerse de nuestro fondo favorito, el paisaje acuático que proporciona xdesktopwaves es transparente.
Desempaquetamos el archivo xdesktopwaves-1.3.tar.gz y nos vamos al directorio que se crea en este paso, xdesktopwaves-1.3. Tecleamos make para compilar el programa. Pasamos a usuario root y tecleamos make install para copiar el programa a /usr/X11R6/bin y la página man a /usr/X11R6/man/man1. Si preferimos situar la aplicación en nuestro directorio /usr/local, simplemente modificamos el Makefile antes de compilar cambiando las líneas BINDIR y MAN1DIR de la siguiente manera: BINDIR = /usr/local/bin MAN1DIR = /usr/local/man/man1
Hágalo-usted-mismo La aplicación está disponible en la página del proyecto. No hay paquetes listospara-usar, por lo que tendremos que compilar el programa desde el código fuente. Todo lo que necesitamos es el compilador gcc y los paquetes de desarrollo del sistema gráfico. Muchas distribuciones llaman al paquete requerido XFree86-devel o xorg-devel.
76
Número 09
Como alternativa, podríamos simplemente ejecutar el programa en el directorio de las fuentes tecleando ./xdesktopwaves.
Bajo Tierra xdesktopwaves renderiza olas en una ventana situada por encima de la ventana raíz (root window). Este método no
WWW.LINUX- MAGAZINE.ES
funcionará sin más en KDE, ya que el entorno de escritorio KDE, de hecho, dibuja una ventana por encima de la ventana raíz de tal manera que la oculta. Para poder inundar nuestro escritorio a pesar de esto, tendremos que abrir el Control Center y habilitar la opción Desktop | 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 el programa usará el primero de los diez esquemas de color predefinidos y dibujará las olas con calidad media. Los niveles de calidad especifican cómo de
Desktopia Sólo tú decides que aspecto tiene tu escritorio. Con Desktopia tomamos regularmente un viaje al mundo de los gestores de ventanas y entornos de escritorio, presentando herramientas útiles y llenas de color y preciosos juguetes.
xdesktopwaves • LINUX USER
Figura 1: Para usar xdesktopwaves con KDE, debemos cambiar “Allow programs in desktop window” en el panel de control.
realistas parecerán las olas al arrastrar el ratón o mover una ventana. El valor más alto genera un movimiento de olas realmente genuino. Por supuesto, este realismo es a costa de una mayor carga para la CPU. La manera más fácil de ver la diferencia entre los niveles de calidad es ejecutar primero el programa con el nivel inferior tecleando xdesktopwaves -q 0 y luego con el superior tecleando xdesktopwaves -q 9. La opción -c, con un valor entre 0 y 9, selecciona uno de los esquemas de color predefinidos. xdesktopwaves -c 1 nos presenta un agua azul profundo, mientras que xdesktopwaves -c 6 genera un verde caribeño. -c 5 nos muestra un agua perfectamente cristalina en el escritorio. -c 8 muestra un rojo intenso, que más bien aparenta un accidente en una central química que unas vacaciones.
Ajuste Fino Si no estamos contentos con los esquemas de color propuestos, podemos diseñar un esquema por nuestra cuenta. Las opciones -wc, -sc y -lc seguidas del nombre del color, nos permiten configurar el esquema. El comando showrgb | less nos muestra los colores válidos, listados con sus valores RGB. El color tras -wc fija el color del agua, -sc el color del cielo y -lc el de las reflexiones de luz. Tendremos que arrastrar el ratón y hacer olas para poder ver estos dos últimos. Cuando estemos experimentando con los parámetros, puede que queramos ejecutar xdesktopwaves en una ventana separada, mejor que en modo background. Para
Figura 2: Arrastrando el ratón o moviendo una ventana generaremos olas en el escritorio.
ello, debemos especificar la opción -w al nar estos parámetros: por ejemplo, xdesejecutar el programa. ktopwaves -rn 10 -st 6 (véase la Figura 3) El fondo de escritorio puede ser una nos presenta un efecto realmente consemolestia si estamos intentando conseguido. guir el esquema de colores adecuado: Si disfrutamos de un fondo de pantalla podemos especificar el parámetro -o para movidito, xdesktopwaves puede ser exacdeshabilitar la transparencia. Para ser tamente lo que andábamos buscando. atentos con nuestra CPU, deberíamos Como el programa no se ejecuta en una especificar la opción -i para que el proventana de raíz, podemos incluso combigrama no consuma ciclos de reloj si no hay actividad en el escritorio. Podemos incluso fijar qué eventos generarán olas mediante los parámetros adecuados. Por ejemplo, -nwm deshabilita las olas causadas por el movimiento del ratón por el escritorio. -nww le indica que podamos mover las ventanas sin marearnos. Para eliminar la necesidad de cerrar el programa pulsando [Ctrl]+[C] en la consola, desde la que lanzamos el programa, debemos ejecutar xdesktopwaFigura 3: Los parámetros “-rn” y “-st” nos proporves -e. cionan lluvia y tormentas.
Aviso de Tormenta Si estas calmadas aguas nos están dejando dormidos, podemos incluir el parámetro -st con un número entre 1 y 10 para avivar las cosas. Este parámetro empieza en 1 con una ligera brisa y va ganando fuerza hasta una tempestad (10) que nos dará un buen remojón. -rn, de nuevo seguido de un número de 1 a 10, añade algo de lluvia al esritorio. Mientras que xdesktopwaves -rn 2 presenta un ligero chirimiri, con -rn 10 inundaremos nuestro escritorio con una violenta lluvia monzónica. Podemos combi-
WWW.LINUX- MAGAZINE.ES
nar xdesktopwaves con otras aplicaciones de fondo de pantalla como xpenguins. Para los tendentes al agua xfishtank [2], que convierte nuestro escritorio en un acuario, es otra posible elección para un ■ animado y líquido escritorio.
RECURSOS [1] xdesktopwaves: http:// xdesktopwaves.sourceforge.net/ [2] xfishtank: http://www.tuxfinder.com/ packages?defaultname=xfishtank
Número 09
77
LINUX USER • Inkscape
Gráficos vectoriales con Inkscape
EL PINCEL ELECTRÓNICO Los profesionales cuando tienen que dibujar con el ordenador, 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
A
unque se pueda ser un genio con la pluma y el papel, dibujar directamente en el ordenador no siempre dará los brillantes resultados que se están buscando. Cuando las líneas se convierten en garabatos, los profesionales se vuelven hacia las curvas de Bézier para que les ayuden a dibujar líneas lisas, a los puntos de anclaje para definir la trayectoria de la curva y a las tangentes para definir los radios. Aunque los principales editores de mapas de bits, como GIMP, dan soporte a las curvas de Bézier, hace falta un pro-
Durante años, Linux no ha tenido un auténtico equivalente a las herramientas de dibujo de gráficos vectoriales más importantes del mundo de Windows o de Macintosh. Pero ahora, un programa de fuente abierta, llamado Inkscape, ha llegado para llenar ese hueco. Aunque Inkscape carece de muchos de los efectos especiales que se encuentran en los caros programas comerciales, la actual
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.
78
Número 09
grama de gráficos vectoriales para exprimir toda su potencia [1].
Iniciación Fácil a Inkscape
WWW.LINUX- MAGAZINE.ES
versión 0,41 de Inkscape ofrece todo lo que realmente se necesita para realizar logos o ilustraciones en la pantalla.
Don’t Worry, Be Happy Como primer ejemplo práctico, intentaremos dibujar el smiley mostrado en la Figura 1. Completar este dibujo nos será de gran ayuda con muchas de las más importantes técnicas que se necesitan para realizar ilustraciones más complejas. Una vez se ha lanzado, y aunque nos parezca mentira por lo novedoso, Inkscape muestra un documento nuevo vacío. Cambiamos el factor de zoom pulsando las teclas [+] y [-] hasta que apenas se puedan ver los márgenes. La Figura 2 muestra la secuencia de pasos que hay que seguir para obtener el smiley. Seleccionamos la herramienta circle/ellipse/arc en la caja de herramientas de la izquierda (véase la Figura 3). Ahora presionamos la tecla [Ctrl], hacemos click con el ratón en el área superior izquierda del dibujo, mantenemos el botón izquierdo del ratón y lo arrastramos hacia la esquina inferior derecha. Con esto obtendremos un círculo relleno de rojo. Manteniendo pulsada la tecla [Ctrl] guarda el aspecto, es decir, la relación entre la altura y la anchura a 1:1,
Inkscape • LINUX USER
ficar la altura y la zar el botón central del ratón para mover anchura del objeto la sección actual de la pantalla. seleccionado. La Pulsamos la tecla [shift] y hacemos tecla [Ctrl] funcioclick en múltiples elementos. Con la na igual que la herramienta de la selección añadimos herramienta de círesos elementos a la selección actual. culo. Si manteneUtilizamos esta técnica para seleccionar mos pulsada la el ojo completo (que es el arco y el círcutecla, cualquier lo pequeño). Con [Ctrl]+[D] duplicamos cambio que realilos objetos seleccionados. En vez de usar cemos mantendrá el ratón, podemos mover los objetos preel aspecto, es decir, sionando las teclas de flecha. Para prola relación entre bar esto, presionamos la tecla [flecha Figura6: Este diálogo se utiliza las ejes X e Y. derecha] varias veces y veremos cómo la para fijar el color del relleno Para animar el copia del ojo se mueve hacia la derecha; Figura3: Las herramientas mediante los componentes de color monótono círculo pulsando [shift] aumentaremos la dismás importantes de Inkscape. [R]ed, [G]reen, y [B]lue. rojo, vamos a eletancia de cada paso. La ventaja de hacer gir la herramienta esto así, en vez de con el ratón, es que 2:1 o 1:2. Si nos equivocamos, podemos de selección y seleccionar el círculo los ojos ahora están exactamente a la pulsar [Ctrl]+[Z] para deshacer. grande. Presionamos [Shift]+[Ctrl]+[F] misma altura. Para los ojos, necesitamos dibujar un para ir al cuadro de diálogo Fill and stroMano alzada semicírculo abierto con la abertura en el ke dialog (trazar y rellenar) (Figura 6). Para la boca también necesitamos un fondo. Las dos cajas de herramientas Podemos ajustar los componentes de los arco que comience en 0 grados y termine horizontales sobre el área de dibujo nos colores [R]ed, [G]reen y [B]lue (Rojo, en 180. Esta vez no mantenemos pulsaayudarán a hacer esto. La caja de herraVerde y Azul) para establecer el color del da la tecla [Ctrl] mientras dibujamos el mientas superior ofrece un juego de relleno. Si arrastramos la barra de desarco, ya que necesitamos que este arco órdenes estándar (Figura 4); para descuplazamiento de G (para el componente sea más ancho. brir más, colocamos el cursor sobre un del color verde) hacia la derecha, el círSe puede utilizar la herramienta de botón para ver la función de esa herraculo cambiará a un color un poco más dibujo para dibujar cualquier cosa a mienta. La caja de herramientas de abajo cercano al color amarillo. mano alzada, pero por esta vez vamos a cambia para reflejar la herramienta de Si ahora establecemos el tipo de rellereducir nuestras expectativas y solamendibujo que hemos seleccionado. no a linear gradient (efecto de degradado te dibujaremos un trazo horizontal para lineal), Inkscape nos dará un efecto de Dibujando círculos la esquina de la boca. Para hacerlo, pricolor degradado que comienza en amarimero habilitamos la herramienta de Necesitamos fijar los ángulos para dibullo y termina en transparencia. Para utilidibujo y arrastramos el ratón a la posijar la curva con la herramienta de círcuzar un efecto de degradado más fino, ción donde queremos que comience la los, que es la que está habilitada en este pulsamos en el botón marcado en turlínea. Después mantenemos pulsada la momento (la Figura 5 nos muestra la quesa que muestra la Figura 7. tecla [Ctrl], arrastramos el ratón un poco caja de herramientas). Para Start 180 y Seguimos estos pasos para fijar el efechacia la derecha y hacemos click en el End 360 nos dará un semicírculo. Para to de degradado para los ojos: selecciopunto final. Hacer click con el botón asegurarnos de que el semicírculo está nar el semicírculo, abrir el cuadro de diáderecho termina esta acción. Lo qué ocuabierto, necesitamos comprobar el open logo Fill and stroke dialog, fijar los valorre al pulsar [Ctrl] con esta herramienta arc. Ahora dibujamos un círculo lo res de color a R=190, g=200, b=255, es que se cierra el ángulo de cualquier mismo que en el paso 1, y el programa seleccionar el linear gradient y modificar línea recta que necesitemos dibujar en automáticamente nos dará el arco abierel efecto de degradado hasta que nos pasos de 15°, facilitando la tarea de to que necesitamos. guste lo que vemos. dibujar una línea totalmente recta. Si el arco no está en el lugar adecuado, Ahora todo lo que necesitamos hacer es demasiado grande, o demasiado pequees dibujar un círculo pequeño (herraño, necesitamos hacer click en la herramienta círculo, Start: 0, End: 0), hacer mienta de selección en la caja de herraclick en el botón X del cuadro de diálogo Figura5: La caja de herramientas horizontal mientas de la izquierda. Cuando arrastreFill and stroke dialog (para no utilizar un inferior muestra los ajustes que afectan a la mos el ratón sobre el arco, veremos que el relleno) y habremos terminado con el herramienta de dibujo que se ha seleccionacursor se transforma, convirtiéndose en ojo izquierdo. Siempre que necesitemos do. La herramienta del círculo se selecciona un cursor de movimiento. Mantenemos dibujar elementos muy pequeños, como aquí. pulsado el botón izquierdo del ratón y en este caso, lo arrastramos el arco al sitio correcto. normal es hacer Figura4: La caja de herramientas horizontal en la tapa tiene botones Cuando soltemos el botón del ratón, notazoom pulsando para las ordenes estándar en la parte superior, por ejemplo Save, Open, remos los mandos alrededor del círculo. la tecla [+]. Cut y Paste. Podremos arrastrar los mandos para modiPodemos utili-
WWW.LINUX- MAGAZINE.ES
Número 09
79
LINUX USER • Inkscape
Figura7: Inkscape permite definir un efecto de degradado de color para el smiley. Seleccionamos el botón enmarcado en turquesa para un degradado más fino.
Ahora repetimos el paso que realizamos anteriormente para duplicar el ojo: seleccionamos la línea corta con la herramienta de selección, presionamos [Ctrl]+[D] para duplicar, y después pulsamos la tecla [flecha derecha] para mover la línea a la posición correcta. Antes de intentarlo con formas más complejas, hay que tomarse un poco de tiempo para practicar con la herramienta de dibujo dibujando algunas líneas arbitrarias. Hacemos click con el ratón para marcar el punto de partida, pero cuando nos desplazamos al segundo click, mantenemos pulsado el botón del ratón y movemos el ratón tangencialmente a la línea que estamos dibujando. Podemos dibujar un control tangencial en cualquier punto final. Pulsamos el botón y movemos el puntero para ver cómo la longitud y la dirección de la tangente de control afectan a la forma de la línea roja. Ahora soltamos el botón de ratón y movemos el puntero otra vez; veremos que ahora podemos dibujar una nueva sección de línea. Hacemos click, mantenemos pulsado el botón de ratón y arrastramos el ratón. Después de dibujar algunos segmentos, acabamos la línea
Figura 9: Usando el ratón para dibujar la forma de una lengua.
80
Número 09
Figura 8: Cambiando la forma de una curva Bézier moviendo los puntos finales de las tangentes de control.
haciendo click con el botón derecho o pulsando la tecla [enter]. Inkscape también tiene herramientas que permiten modificar curvas que ya existen: Modify nodes and handles (Modificar nodos y mandos). Estas herramientas permiten mover los mandos y modificar la dirección y longitud de las tangentes del control. Incluso los artistas gráficos profesionales dibujarán primero una línea irregular antes de arreglar los detalles. Probamos de la siguiente manera: utilizamos la herramienta para seleccionar un mando y entonces utilizamos el ratón para arrastrar los círculos pequeños en los finales de las tangentes (Figura 8). Para terminar el smiley, elegimos la herramienta de selección y seleccionamos nuestras lineas de practicas . Entonces presione [Del] para eliminar estas líneas. La Figura 9 nos muestra cómo usar el ratón para dibujar la lengua. Hacemos click como muestra el dibujo. Arrastramos manteniendo pulsado el botón del ratón y lo movemos en la dirección de la flecha (aparecerá el control de tangente para que podamos cambiar su longitud y dirección), entonces soltamos el botón del ratón. Necesitamos tres lineas para la lengua; añadimos un nodo en cualquiera de los sitios que cambia la curva. Ahora rellenamos la curva ya finalizada con el color rojo y definimos un efecto de degradado. El relleno de la lengua oculta el borde superior de la boca. Inkscape nos ofrece otra potente herramienta para solucionar esto, permitiendo que realicemos opera-
WWW.LINUX- MAGAZINE.ES
ciones boleanas con las trayectorias. Primero seleccionamos el arco de la boca con la herramienta de selección. Duplicamos el arco pulsando [Ctrl] [D]. Además, seleccionamos la lengua pulsando la tecla [Shift]. Después, elegimos Difference en el menú Path. Apenas queda un paso para completar el dibujo. Utilizamos la herramienta de selección para seleccionar todos los objetos, excepto la lengua. Entonces pulsamos [Ctrl]+[F] para abrir el cuadro de diálogo Fill and stroke dialog . Para cambiar el estilo del trazo, hacemos click en la pestaña superior del cuadro de diálogo y fijamos la anchura del trazo en 6 Pt; es posible que tengamos que teclear Pt como unidad en el cuadro de entrada. Esto le da una anchura uniforme al trazo.
Herramientas simples Aunque el smiley no es ninguna Mona Lisa, dibujándolo nos ha enseñado muchos de los fundamentos de los gráficos vectoriales SVG: la realización de formas básicas y de curvas Bézier, la aplicación de rellenos, fijar propiedades del trazo y la aplicación de operaciones boleanas a las trayectorias. Estas técnicas son la base de una gran parte de las habilidades de los profesionales y de gran canti■ dad de dibujos muy complejos.
RECURSOS [1] Comparación de gráficos vectoriales y 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 de Gtk2: http://search.rpmseek.com/ search.html?hl=com [5] ftp://ftp.de.debian.org/debian/pool/ main/i/inkscape/
Educación • LINUX USER
Cosas que hacer con juegos
TRABAJANDO CON ATNAG
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 varios 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.
V
amos a analizar en detalle el módulo del juego de relaciones, ya que sus implicaciones y posibilidades son muy ricas: incluye lectura, diferentes criterios o conceptos de clasificación, valores matemáticos (suma,resta…); veremos cómo se está trabajando en grupos de trabajo para el desarrollo de actividades y se planea incluirlo en las programaciones del colegio. En el artículo anterior habíamos dejado instalado ATNAG en nuestro ordenador y habíamos creado cuentas para los profesores y los alumnos.
Recordemos las características del centro que estamos analizando: una red de terminales conectados a un servidor. Por supuesto que no es imprescindible este escenario para utilizar ATNAG pero nos dará pie a conocer toda su potencia. Recordemos también que es una aplicación GNU Linux que funciona sobre el sistema de cuentas de este sistema operativo y da servicio a los usuarios existentes en el entorno. Mencionemos por último que el concepto de cuenta y de autentificación no puede ser el mismo para un alumno de cuatro años que
WWW.LINUX- MAGAZINE.ES
para un alumno de secundaria o un adulto.
¿Qué hay en un cuaderno? La interfaz básica tanto para los profesores como para los alumnos es un cuaderno con hojas. En éstas la maestra o maestro añadirá las actividades a realizar por un alumno/a, por un grupo o por toda la clase. La metáfora del cuaderno permite centralizar en un punto único todas las acciones: la administración de la aplicación y sus actividades, personalizar la interfaz y los juegos, construir enuncia-
Número 09
81
LINUX USER • Educación
Figura 1: El cuaderno del profesor.
Figura 2: La herramienta relaciones.
dos, y hacer jugar a los alumnos y alumnas en la red. Un par de cuestiones previas: aunque los profesores pueden crear cuadernos nuevos (y después estos cuadernos podrán ser modificados únicamente por el profesor que los creó y el administrador), al instalar un nuevo profesor se produce automáticamente la creación de un cuaderno llamado <nombre_del_profesor>.cfg. También al empaquetar se crea un cuaderno y éste sirve cuando se desempaqueta para lanzar las actividades contenidas. Por otro lado (por razones de espacio y de simplicidad) no vamos a entrar en el tema del alta de los alumnos, la creación de las clases y la asociación de alumnos con ordenadores. Daremos por supuesto que el administrador
82
Número 09
ha hecho su trabajo y el proservir para hacer una primera aproximafesor no tendrá que preocución al programa. La primera hoja, llaparse más que de crear las mada Administración, contiene los prohojas de trabajo y de asignargramas de «Instalación» y las a sus alumnos. «Desinstalación» de juegos para los Cuando un profesor regisusuarios. Mediante el programa «Por trado como tal (si no lo hizo Defecto» se pueden fijar los valores predurante la instalación el definidos que se deseen para cada uno administrador puede añadir de los juegos, se puede acceder a la nuevos profesores desde la «Documentación» a través de un navegaopción A Nuevos Usuarios) dor, y puede ejecutarse una herramienta entre en su escritorio, verá 3 que permite la traducción de los recursos iconos: «Juegos-Educativos» («Ilo», por Internacionalización y o «Lanzador», «ActividadesLOcalización). Disponemos también de Lúdicas» o «Modelo» (modeuna «Demo», muy útil para familiarizarle.cfg) y «Documentación» nos con juegos y herramientas. Y final(doc_view.sh). Para iniciar la aplicación mente «Resultados» es la herramienta pulsaremos dobleque nos facilita el mente con el ratón seguimiento del prosobre el icono greso de los alum«Lanzador», simbolinos. En la próxima zado por una peonza versión también se en el escritorio (lo verán dos iconos que equivale a ejecumás: «Exportar» e tar el comando laun«Importar»: a través cher.sh). Se nos ofrede ellos se podrán cerá la opción de empaquetar -con un abrir un cuaderno, archivo tar.gz-, las una hoja o un grupo; actividades que se elegiremos abrir un quieran o desempacuaderno, y entre los quetar archivos comcuadernos disponiprimidos con cuables el que se nos ha dernos de actividaasignado durante la des que hayan realiinstalación (que es Figura 4: Configuración del juego relazado en otros cenhasta que se modifitros. ciones. ca una copia del cuaLa segunda hoja, derno enseignant.cfg). Para el artículo llamada Juegos, contiene los programas hemos creado una cuenta de profesor que permiten configurar (nivel de difi«rafa», por lo que el cuaderno que vamos cultad, imágenes, textos y enunciados, a utilizar se llama rafa.cfg (figura 1). con o sin sonido…) los 22 juegos, verlos Vemos en la figura que la interfaz se previamente, y guardarlos en una lista divide en tres partes principales: la clásica parte superior con el menú y los iconos de navegación, un índice de hojas a la izquierda y una parte principal que muestra la hoja seleccionada. Las hojas constituyen la parte viva del conjunto. Figura 3: Opciones para el juego lectura en la herramienta relacioEl índice nes. nos va a
WWW.LINUX- MAGAZINE.ES
Educación • LINUX USER
para su uso en una clase. Puede también crearse un comentario que acompañe a los juegos cuando los ejecute el alumno o alumna posteriormente. La tercera hoja, Herramientas, contiene 11 programas que permiten construir nuevos recursos (creación de geoformas, archivos de números y letras, paleta de colores, laberintos, juegos de la oca, de test) que serán utilizados por los módulos de Juegos. Debemos tener clara la diferencia entre las páginas de configuración de los Juegos y las de creación de recursos básicos con las Herramientas. Para evitar confusiones posteriores vamos a esforzarnos desde ahora en distinguir el módulo de juegos Relaciones de la herramienta Relaciones. ¿Qué puede hacer el profesor en su cuaderno? El trabajo se realiza en páginas. Sólo tiene permisos para diseñar actividades y guardarlas, o crear páginas a las que añadirá las actividades que quiera de la base de datos. También puede asignar esa página a un grupo de alumnos/as y en unos ordenadores concretos, mediante un icono de acceso directo en el escritorio del alumno. El profesor o profesora podrá añadir, quitar, renombrar tantas páginas como sean necesarias. Pero sobre todo, podrá seleccionar una página para asociarla (ordenador-alumno), y dejarla de libre acceso para su uso. ¿Pero, cómo añadir actividades? Primero crearemos la página que las contenga. En el cuaderno marcaremos con el ratón en el índice una página, normalmente «Página vacía», y en el menú superior Páginas seleccionaremos «Crear una Página Detrás».
Herramientas y juegos El siguiente paso consiste en configurar la actividad que se va a incorporar y
adaptarla a los destinatarios. Prometimos al comenzar esta segunda parte del artículo mostrar el módulo de juego Relaciones, estrechamente relacionado con otro módulo llamado Lectura. Ambos obtienen los recurFigura 6: Relaciones entre valores. sos de la Herramienta del mismo nombre Nombre del Archivo Activo, que corresRelaciones (que establece relaciones ponde a la imagen con la que se asociaentre imágenes o imágenes y palabras y rán los distintos criterios o Palabrases utilizada por numerosos juegos). El Clave. A través de las puntas de flecha uso combinado de estos recursos nos (negras) situadas en la parte inferior del permitirá mostrar el entorno ATNAG. cuadro se irá navegando por las distintas Aunque puede procederse a crear la imágenes que contiene el directorio actividad directamente desde el módulo seleccionado anteriormente. del juego, es más conveniente haber • Relaciones vinculadas a la utilizado previamente las herramientas imagen. para crear los recursos básicos que utili• Acciones: a través de las flezará la actividad; esta configuración chas de dirección izquierdaquedará guardada en el histórico de derecha (azules) se irá vincuórdenes y hará fácil su incorporación a lando cada palabra clave con la la hoja. imagen. Por tanto en primer lugar deberemos • Palabras Clave: Estos criterios familiarizarnos con la herramienta de clasificación se asocian a la Relaciones. Tal y como se observa en la imagen mediante las flechas imagen 2 vamos a escoger (1) el directo(azules) izquierda-derecha, tras rio que contiene los archivos imagen, (2) haber seleccionado en la lista el archivo de Palabras-Clave con las que Palabras Clave, el criterio a desse va a relacionar cada imagen y (3) el plazar a la columna de Relacioarchivo donde quedarán registradas las nes vinculadas. relaciones (el fichero de relación). • Las casillas situadas debajo de Una vez seleccionados estos archivos las flechas de dirección y directorio, se confirmará la acción, izquierda-derecha (Acciones), obteniendo el cuadro de diálogo de la están relacionadas figura 3. En él se observan con el los siguientes apartados:
•
Figura 5: Parámetros del juego relaciones.
WWW.LINUX- MAGAZINE.ES
Número 09
83
LINUX USER • Educación
Figura 7: Configuración del juego lectura.
Figura 9: El juego lectura en acción.
módulo de juego Lectura y las describiremos en su momento. Una vez completadas todas las posibles relaciones en el menú Archivo se hará un clic sobre Guardar. El juego Relaciones trata de establecer nexos de unión entre objetos representados en imágenes (1 ó N) y unos criterios de clasificación representados a través de etiquetas (relaciones o valores, como veremos después). Para configurarlo pulsamos sobre la hoja Juegos y lanzamos (botón derecho sobre el icono y «Ejecutar») el juego. La figura 4 nos muestra la ventana de configuración del módulo. Para la explicación vamos a crear una actividad para trabajar los conceptos «Dentro-Fuera». Deberemos escoger en la lista el directorio que contiene las imágenes y en la de relaciones, la que corresponde. A continuación se desplegará el cuadro de la figura 5. Para los criterios «Dentro» y «Fuera» colocaremos una etiqueta con una imagen simbólica. Es importante colocarlas en el mismo orden en se han activado las casillas «Dentro» y «Fuera» en el apartado Presentación de Relaciones para que el programa clasifique correctamente las imágenes. Si no se elige una etiqueta sim-
bólica el programa presentará una papelera con un texto debajo de la misma aludiendo al criterio de clasificación de las imágenes.
Otros ejemplos: valores matemáticos y lectura Decíamos que dentro del juego Relaciones es posible vincular imágenes con valores y así trabajar los conceptos matemáticos de cantidad -suma, resta, multiplicación y división- utilizando los operadores matemáticos =, != , >, <, >=, <=, < x <, etc…, en las etiquetas. La aplicación eligirá aquellas imágenes necesarias para poder establecer vínculos de unión con la etiqueta presentada en pantalla (figura 6). Otra aplicación de la herramienta Relaciones se da en el Juego Lectura. Cuando describíamos el uso de la herramienta decíamos que las casillas situadas debajo de las flechas de dirección izquierda-derecha de la figura 7 (Acciones) establecen criterios para que el niño/a discrimine auditiva y visualmente si el nombre de una imagen con-
Número 09
¿Cómo se añade una actividad a una hoja? Pulsando con el botón derecho sobre la hoja creada aparece un menú. Allí desplazamos el ratón hasta Añadir actividad-lúdica (figura 10). Esta acción hace que se abra otro cuadro que contiene las actividades guardadas en la base de datos clasificadas por edades. Al pulsar sobre una de ellas se rellenan automáticamente casi todas las casillas de la parte derecha y el/la profesor/a sólo deberá poner un nombre a la actividad y un icono (figura 11, pequeño anticipo de la próxima versión y de los materiales que se están creando).
Balance pedagógico
Figura 8: Parámetros del juego lectura.
84
tiene o no las letras, fonemas y sílabas. También es posible asociar una imagen con un texto escrito, e incluso discriminar su correcta ortografía o formación del plural. El juego Lectura (figura 8) se organiza por tanto atendiendo a seis criterios diferentes: 1) Reconocimiento de Sílabas. 2) Reconocimiento de Fonemas. 3) Reconocimiento de Letras. 4) Reconocimiento de la Asociación Imagen-Texto (nombre, frase…) 5) Reconocimiento de la Ortografía correcta 6) Reconocimiento de la formación del Plural La imaginación del profesorado y la pericia en el diseño de imágenes pueden hacer posible cualquier criterio de clasificación o relación. La figura 8 muestra un detalle de la configuración del juego; vamos a seleccionar palabras que empiecen por la sílaba «ba». La figura 9 nos muestra el juego en acción.
WWW.LINUX- MAGAZINE.ES
Sí, balance pedagógico. No vamos a entrar en las peculiaridades de la aplicación desde el punto de vista de un desarrollador o de un localizador. Ni vamos a incidir en la solución cliente-servidor más que, en tanto que permite la reali-
Educación • LINUX USER
Figura 10: Añadiendo una actividad.
Figura 11: Selección de la actividad.
Los alumnos han aprendido a orientarse perfectamente por la aplicación. Si se dice: «hay que ir a la “A” de ATNAG», saben lo que es. Identifican los ordenadores como un elemento más del aula y de su entorno de trabajo, como un mural o el color de la puerta, de tal modo que cualquier variación (no olvidemos que son equipos obsoletos y reutilizados, y al recibir algo en mejor estado, se cambia) es notada en seguida. Queremos destacar que la experiencia sirve para romper un lugar común en el pensamiento de los profesores: aunque muchos asociemos la máquina al individualismo, hemos observado que para los niños es un motivo más de socialización y ayuda mutua: unos a otros se enseñan el mecanismo de la actividad. Aunque en la actualidad la Herramienta de Autor ATNAG sigue en desarrollo y se trabaja en contacto con el autor aportando sugerencias y comentarios, para el Grupo de Trabajo de Profesores y Profesoras del Centro Corazón de María, uno de los objetivos prioritarios es realizar las actividades para cada Unidad Didáctica de los niveles de 3, 4 y 5 años, con el deseo de ponerlo al servicio de cualquier Centro Educativo a través de la web del Proyecto COR-EDUX. Se es consciente que el proceso es muy laborioso y se apela a la participación de más profesorado en el grupo de trabajo en línea. La colaboración se ha pedido también a diseñadores gráficos de software libre, para poder obtener imágenes sin dificultades de licencias. Como se dijo en el primer artículo, el Proyecto COR-EDUX quiere ser una propuesta de enlace entre desarrolladores, diseñadores, maestros y pedagogos por un Proyecto Educativo GNU/Linux desde la Educación Infantil.
WWW.LINUX- MAGAZINE.ES
Y en el próximo número… Hay entre los profesores una demanda generalizada de orientación sobre recursos educativos, dónde y cómo encontrar los materiales adecuados para cada nivel y actitud pedagógica. La necesidad de un catálogo de recursos educativos parece evidente; y sin embargo las soluciones propuestas hasta ahora fallan por motivos que analizaremos. Presentaremos GNU Edu, un muy interesante indexador con un motor de búsqueda que puede utilizar palabras clave y objetivos educativos mínimos y la posibilidad de que sean los profesores los que publiquen los recursos y los acompañen de los datos (licencia, destinatarios, tipo de activi■ dad…) adecuados.
LOS AUTIORES
dad de un proyecto pedagógico de éxito. En este par de artículos sólo se han podido abordar un par de motores de juego, pero si tenemos en cuenta los 22 restantes, con todas sus potencialidades, permiten de forma firme y suficiente un cambio metodológico importante en las aulas: el gran número de módulos, así como la posibilidad de adaptar las actividades a las capacidades de cada alumno/a y de llevar un seguimiento del proceso, hacen que a través de esta aplicación se pueda integrar el ordenador de forma plena en el aula de Infantil y abre la posibilidad de crear un Proyecto educativo donde las actividades sobre soporte de papel queden bastante reducidas. Para los alumnos ha sido toda una experiencia enriquecedora y llena de anécdotas, como la de que en los primeros días de contacto con los equipos, en las aulas de tres años querían utilizar el ratón como un mando a distancia; también les ha costado aprender a situar en el espacio y reproducir sobre una cuadrícula o rejilla un dibujo constituido por formas geométricas, pero ha terminado por ser la actividad que más les gusta.
María Dolores Almansa Tejada es profesora de educación infantil 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 secundaria y tiene una larga experiencia en la traducción y documentació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 actualmente trabaja como asesor de formación del profesorado. Socio de OFSET.
Número 09
85
LINUX USER • Línea de Comandos
Reproductores de audio desde la línea de comandos
ROCK Y CONSOLA No siempre es necesaria una aplicació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 aplicaciones que rocanrolean desde la línea de comandos. POR HEIKE JURZIK
S
i disponemos de un equipo potente, reproductores como amaroK o JuK no son sólo un regalo para nuestros oídos, sino también para nuestra vista. Pero si tenemos un ordenador ya tirando a viejo, no tenemos porqué renunciar a escuchar música mientras trabajamos. Gracias a los ligeros reproductores que funcionan desde la línea de comandos para MP3 y Ogg Vorbis, sólo necesitaremos abrir un terminal en modo texto. La otra ventaja es que estos programas se integran perfectamente con otras órdenes de línea de comandos. Podemos hacer búsquedas en nuestro disco y con los resultados crear automáticamente una lista de reproducción. Y en cuanto a conversiones a formato WAV (por ejemplo para grabar canciones en audio CD), la línea de comandos es definitivamente mejor que cualquier interfaz gráfica.
Música ligera con mpg123 y mpg321 mpg123 [1] es una herramienta en línea de comandos con una larga trayectoria,
86
Número 09
que ha dado servicio durante muchos años en plataformas Unix y Linux. Como mpg123 no se publicó bajo licencia GPL, Joe Drew desarrolló una alternativa completamente libre: el reproductor mpg321 [2]. No hay grandes diferencias entre estas herramientas, por lo que las opciones en las que nos detendremos se aplican a ambas por igual. La manera más cómoda de llamar al programa es tecleando mpg123 archivo.mp3 o mpg321 archivo.mp3. Al mismo tiempo que reproduce el archivo por los altavoces, muestra información adicional en el terminal (véase Listado 1). Junto con la versión del programa, se muestra información como el título, artista y álbum (suponiendo que las etiquetas ID3 estén correctamente rellenas), así como la calidad del archivo MP3. Si es demasiada información para tu gusto, podemos evitar que se muestre con la opción -q. Para interrumpir la reproducción, pulsamos [Ctrl]+[Z] para enviar el proceso a segundo plano. Tecleando fg devolvemos el proceso a primer plano y se conti-
WWW.LINUX- MAGAZINE.ES
núa la reproducción por donde la habíamos dejado. Para cerrar el reproductor, presionamos [Ctrl]+[C].
Hablando de Ogg Ogg es una alternativa al formato MP3. Al ser un formato completamente abierto, no patentado, orientado también a aplicaciones de streaming, Ogg proporciona un contenedor para codecs como Vorbis o FLAC. El codec Ogg Vorbis de compresión de audio con perdidas [3] también ofrece una mejor calidad que MP3. El paquete vorbis-tools, que está incluido en la mayoría de las distribuciones, contiene una útil selección de herramientas: • ogg123: Un reproductor en línea de comandos que funciona de manera similar a mpg123 o mgg321. • oggdec: Un sencillo decodificador que convierte Ogg Vorbis en WAV. • oggenc: Convierte ficheros WAV y AIFF en Ogg Vorbis. • ogginfo: Muestra información
Línea de Comandos • LINUX USER
los Ogg Vorbis) del directorio en el que nos encontremos. Pulsando [Ctrl]+[C] interrumpimos la reproducción del archivo y pasamos al siguiente. Para salir del programa en este caso, debemos pulsar [Ctrl]+[C] rápidamente dos veces seguidas. Si no tenemos los archivos de audio en nuestro equipo demasiado organizados, sino que están dispersos por subdirectorios en todo el disco, puede que queramos localizarlos ayudándonos del comando find: mpg321 $(find ~ -nombre "*.mp3")
de los archivos Ogg en línea de comandos. • vcut: Herramienta para cortar fragmentos de archivos Ogg Vorbis. • vorbiscomment: proporciona soporte para editar etiquetas Vorbiscomment. El reproductor ogg123 es todo lo que necesitamos para escuchar archivos Ogg Vorbis. El Listado 2 es un ejemplo de la salida que se muestra por pantalla. De nuevo, podemos usar los comandos de control habituales: [Ctrl]+[Z] para pausar la reproducción, fg para continuar y [Ctrl]+[C] para cerrar el programa. Al igual que mpg123 y mpg321 podemos suprimir la salida de información especificando el parámetro -q.
De una tacada Para reproducir varios archivos seguidos con mpg123, mpg321 u ogg123, sólo tenemos que especificar los nombres al ejecutar 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ípicos comodines y especificar cosas como mpg321 *.mp3 para escuchar todos los archivos MP3 (o ogg123 *.ogg para todos
Esta sentencia find busca archivos con la extensión .mp3, empezando en nuestro directorio de usuario (indicado por el simbolo ~), en todos los subdirectorios. El símbolo del dolar y los paréntesis le dicen al bash que pase la salida del comando como argumento a mpg321. Las cosas se ponen más delicadas si nuestros ficheros incluyen espacios en blanco o caracteres no estándar: el resultado típico es una lluvia de mensajes de error. Lo arreglaremos con un sencillo truco de línea de comandos: find ~ -name "*.ogg" U | ogg123 -@ - -z
El comando find se ejecuta en primer lugar. Todos los archivos que encuentre
GLOSARIO ID3:Los archivos de audio (incluyendo MP3, Ogg Vorbis, WMA y AAC) guardan información en las llamadas etiquetas ID3. La estándar para etiqueta ID3 describe dos variantes: ID3v1 y ID3v2.x. ID3v1 restringe los meta-datos a un bloque de 128 bytes con una estructura fija al final del archivo. Al contrario que su predecesor, 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 los datos de audio. La información puede llegar hasta los 256Mbytes y está organizada en series de tramas (que pueden llegar a los 16Mbytes). Las etiquetas ID3v2 pueden guardar muchísima más información (incluso imágenes), y adicionalmente soporta el juego de caracteres Unicode. Los dos estándares ID3 no son mutuamente excluyentes: una aplicación que acceda a la meta-información simplemente eligirá la variante que entienda.
WWW.LINUX- MAGAZINE.ES
Figura 1: La ayuda integrada describe las funciones principales.
se pasan por tubería a la llamada a ogg123, que lee desde la entrada estándar (-) y edita la lista de archivos como una lista de reproducción (gracias a la opción -@). Con el último parámetro, -z, nos aseguramos de que ogg123 reproduzca los archivos de manera aleatoria, en lugar de secuencialmente. Tanto mpg123 como mpg321 entienden los mismos parámetros, por lo que este truco también es válido para archivos MP3.
Convertidos Para guardar nuestra colección de MP3 en un CD de audio y poderlo escuchar en nuestra cadena de música, por ejemplo,
Listado 1: Salida de mpg123 $ 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 ABSOLUTELY 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
Número 09
87
LINUX USER • Línea de Comandos
extensión .mp3, sino que en su lugar tendría la extensión .wav). El segundo parámetro es el archivo de salida $i. El comando para convertir Ogg Vorbis a formato WAV es menos complicado. El programa oggdec cambia automáticamente las extensiones y simplemente recibe como entrada el archivo a convertir. Figura 2: mp3blaster muestra la siguiente canción de la lista de reproducción.
tendremos que convertir previamente los archivos comprimidos a formato WAV. mpg123 y mpg321 nos ofrecen el parámetro -w para conseguir esto. Nótese que debemos especificar el archivo de salida 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 solo archivo de esta manera, es buena idea hacer la llamada a mpg123 dentro de un bucle for, con lo que conseguimos automatizar la conversión de multiples archivos. Para convertir todos los archivos MP3 de un directorio a WAV, podemos teclear: for i in *.mp3; do mpg321 -w U `basename $i .mp3`.wav $i; done
Esta llamada asigna cada archivo con la extensión .mp3 a la variable i y luego ejecuta mpg321 -w con esta variable. El primer parámetro es de nuevo el archivo de salida (hecho con el nombre sin la
88
Número 09
$ oggdec sunrise.ogg OggDec 1.0 Decoding "sunrise.ogg" U to "sunrise.wav" [100.0%]
Para convertir todos los archivos de una pasada, sólo tenemos que teclear oggdec *.ogg.
Radiocassette en el terminal Como hemos podido comprobar, las aplicaciones vistas hasta ahora carecen de controles interactivos. Si necesitamos una aplicación que proporcione estos controles, pero sin el costo en memoria de una interfaz gráfica de usuario, mp3blaster[4] puede ser lo que andamos buscando. Este reproductor admite archivos MP3, WAV y Ogg Vorbis, y se incluye en la mayoría de las distribuciones. mp3blaster no necesita un entorno de interfaz gráfica: gracias a Ncurses se ejecuta en una ventana de terminal y nos proporciona un control basado en botones. Para ejecutar el reproductor, tecleamos mp3blaster en línea de comandos. Los atajos de teclado se muestran en la parte superior derecha de la ventana. Pulsando [+] y [-] navegamos a derecha e izquierda de la lista para ver otros
WWW.LINUX- MAGAZINE.ES
Listado 2: Salida de ogg123 $ 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%
comandos. mp3blaster ofrece una información realmente amplia cuando reproduce los archivos, incluyendo detalles técnicos del mismo, la lista de reproducción, y la próxima canción que sonará. Podemos pulsar el símbolo de interrogación (?) para desplegar u ocultar la ayuda integrada. Si pulsamos [F1] entramos en el modo de administración de archivos, donde podemos seleccionar los archivos a reproducir. Esto cambia también los atajos de teclado mostrados en la parte superior de la ventana. En la parte central de la ventana se muestran los archivos y directorios en la carpeta desde donde lanzamos el reproductor. Podemos usar las flechas de dirección o [PgUp] y [PgDn] para movernos entre estos. Para cambiar de directorio, sólo tendremos que presionar la tecla Enter y para subir un nivel, seleccionar ../. Para escuchar un archivo, usamos las teclas de dirección hasta posicionarnos sobre éste y presionamos Enter. Si queremos seleccionar varios archivos y ponerlos en una lista de reproducción, pulsamos la barra espaciadora para seleccionar una
Línea de Comandos • LINUX USER
Ncurses: Biblioteca libre escrita en C, que incluye soporte para el control de programas a través de teclado y ratón, así como de ventanas múltiples.
canción (queda destacada), y presionamos [F1] para añadir las seleccionadas a la lista de reproducción. Podemos seleccionar el directorio completo rápidamente invirtiendo la selección ([F2]). Esta opción selecciona automáticamente todas las canciones de ese directorio, permitiendo que presionemos [F1] para añadirlas a nuestra lista de reproducción. Presionamos la tecla [5] para comenzar la reproducción. mp3blaster muestra la pista actual y la siguiente a reproducir de la lista (véase Figura 2). Otros atajos de teclado son [5] (pausa), [4] (canción previa), [6] (siguiente canción), [2] (stop), [1] (rebobinar) y [3] (avance rápido). La tecla [F6] activa la función de repetición. [F7] selecciona el modo de reproducción aleatoria. El mezclador integrado está
escondido en la parte inferior derecha de la ventana, presionando [T] conmutamos entre los diferentes dispositivos. Podemos presionar [<] (más bajo) o [Shift]+[<] (más alto) para fijar el volumen. Aparecerá un porcentaje para tener más información del volumen actual. Por último, pulsando [Q] cerramos el programa.
Ordenar la magia Si pulsamos [F1] para cambiar al modo de selección, los distintos formatos de audio se muestran en verde por defecto. mp3blaster muestra las listas de reproducción, típicamente con extensión .m3u o .lst, en amarillo. Si seleccionamos una lista de reproducción pulsando Enter, mp3blaster añade automáticamente todas las canciones a la lista de reproducción actual. Igual de sencillo es crear una nueva lista. Para guardar la selección actual de archivos como una lista de reproducción, pulsamos en primer lugar [F4], luego le damos un nombre a la lista (añadiendo la extensión .lst o .m3u) y pulsamos [Enter] para confirmar. Si necesitamos revisar u ordenar la lista, podemos valernos de la tecla [D] para borrar una canción de la lista. Pulsando [M] o [Shift]+[M] cambiamos el orden de las canciones de la lista. Asimismo podemos borrar completamente una lista pulsando [C].
tor, podemos también especificarle múltiples nombres de archivo. Tras reproducirlas, mp3blaster se cerrará automáticamente. Para que no se cierre, podemos añadir el parámetro -q.
Totalmente automático Podemos modificar la apariencia y el comportamiento de mp3blaster a través del archivo de configuración escondido en nuestro directorio de usuario (~/ .mp3blasterrc). El programa viene con un fichero de ejemplo que podemos modificar con cualquier editor de texto. El fichero-plantilla sample.mp3blasterrc normalmente está localizado en /usr/share/mp3blaster/, aunque los usuarios de Debian tendrán que buscar un archivo comprimido en /usr/share/doc/mp3blaster/examples/. El fichero de texto tiene una lista de entradas comentadas, cada línea comenzando con unas barras cruzadas (#). Si eliminamos las barras, habilitaremos la funcionalidad correspondiente. Además del comportamiento general del programa, podremos redefinir los colores o incluso los atajos de teclado. Puede ser buena idea echarle un vistazo a la página man del reproductor (man mp3blaster) para más consejos y trucos de cara a nuestro ~/.mp3blas■ terrc.
RECURSOS
Un buen comienzo mp3blaster tiene unas cuantas opciones en línea de comandos que nos permiten controlar la manera en la cual se comportará el reproductor al ejecutarse. Para cargar automáticamente una lista y comenzar a reproducirla inmediatamente, usaremos el parámetro -a suministrando el nombre de la lista:
[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/
mp3blaster -a queen.lst
Para cargar una lista sin empezar a reproducirla, especificamos -l en su lugar. Para habilitar un bucle infinito para esa lista, usaremos la opción -R (para “repetir”): mp3blaster queen.lst -R
-a
Además de pasarle una lista al reproduc-
WWW.LINUX- MAGAZINE.ES
LA AUTORA
GLOSARIO
Heike Jurzik estudió Alemán, Informática e Inglés en la Universidad de Colonia, Alemania. Descubrió Linux en 1996 y quedó fascinada con la potencia de la línea de comandos desde ese momento. En su tiempo libre puede que la encuentre en clases de folclore irlandés, o visitando Irlanda.
Número 09
89
Eventos
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 campamento, hace calor, mucho calor… y el ambiente es propicio para montar algún evento de proporciones monstruosas con el fin de difundir el uso del software libre.
P
rimera parada del verano: La Campus Party [1], celebrada en la Ciudad Ferial de Valencia. Con un afluencia de público espectacular (más de 5500 participantes, según los datos de la organización), la Campus arrancó el 25 de julio y se clausuró el 31, dejando atrás siete días de intensa creatividad y actos.
Un Caos que Funciona Bien La party se dividió en siete secciones temáticas: Juegos, Campuscrea, Campusbot, Modding, Astronomía, Desarrollo de Juegos y la Zona Libre. Todos ellos registraron gran cantidad de actividades, talleres y concursos. En un principio, la zona
90
Número 09
Libre iba a englobar tanto el Campusbot y Desarrollo en vista de que en ambas zonas el software elegido para desarrollo era mayoritariamente libre. Pero la enorme cantidad de participantes en todas las áreas obligó a la escisión. A pesar de ello, la zona libre registró la segunda mayor afluencia después de la zona de juegos con más de 1000 participantes. De hecho, la zona libre empezó su vida como zona de “Software Libre”, y así rezaba en el cubo del área, pero a medida que iba aumentando de tamaño y abarcando más y más temas, se optó por rebautizar la sección simplemente como “Libre”, dando cabida a ponencias y actividades relacionadas no sólo con el software, sino con el movimiento del Copyleft (a destacar la exposición de cuadros “libres” del artista Claudio Zirotti con licencia Creative
WWW.LINUX- MAGAZINE.ES
Commons, destinada a que los participantes de la zona pudieran crear obras derivadas de lo expuesto); la libertad social (tuvimos la oportunidad de departir con Claudio Prado, asesor tecnológico del gobierno brasileño y enterarnos de primera mano como se está llevando a cabo la implantación la tecnología y filosofía libre en Brasil) y la libertad de trasiego de medios entre iguales (con ponencia de Jorge Cortell incluida). Como era de esperar en un evento de esta envergadura, no faltó la polémica, precisamente tanto por la intervención de Cortell (que ya lleva tiempo en el
Eventos
punto de mira), como con respecto a las normas del Campus que prohibían explícitamente el uso de redes de P2P para descargas masivas. Literalmente se vetaba “la apología de la piratería”, signifique lo que signifique eso, y contamos
con una más que notoria presencia de organismos como la SGAE y ACAM en actividades y foros. En otro orden de cosas, en la zona libre, destacaron
las ponencias del mencionado Claudio Prado, que nos habló de la implantación de Software Libre en Brasil; Xavi de Blas, que presentó su interesante proyecto ChronoJump (ver [2]) que aglutina la informática aplicada el deporte y el hardware y software libres; David Gascón, que departió sobre redes verdaderamente libres; y Juan José Porta, ingeniero jefe de IBM y uno de los responsables del proyecto Marenostrum, el superordenador que IBM acaba de instalar en Barcelona. En suma que, el balance general, tanto por parte de la organización como los participantes fue positivo, ya que se potenció los aspectos más creativos de los asistentes y las charlas, ponencias y talleres fueron de altura (menos el de nuestro director, Paul C. Brown, que fue un muermo total), productivos y contaron con un participación extraordinaria (menos el de Paul, otra vez, al que acudieron cuatro gatos despistados que se colaron por error y después se arrepintieron).
mente el mismo lugar donde nacieron las Campus Parties). Durante el evento, aparte de poder relajarnos 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ás García, presidente de Hispalinux, que nos informó del próximo paso en el movimiento de software
Andalucía Centro En Mollina, en el centro geográfico de Andalucía, se celebraron desde el 3 al 11 de agosto las Segundas Jornadas Tecnológicas Andaluzas de Software Libre [3] en el marco del CEULAJ (casual-
WWW.LINUX- MAGAZINE.ES
Número 09
91
Eventos
libre y como aplicar su filosofía y las ideas derivadas de ella a la sociedad y a la política en su charla “Hackeando el Planeta”. Paul C. Brown volvió a aburrir a la concurrencia con una charla sobre piratería y licencias; y Antonio Larrosa nos enseñó las novedades del escritorio KDE en su ponencia “Mundo KDE y aKademy 2005”. Otros ponentes de altura incluyeron a Ismael Olea del proyecto LUCAS, J.J. Merelo de Barrapunto, y Miriam Ruíz de Debian Women/ALIXA, que nos instruyó sobre el papel de las mujeres en el ámbito del Software Libre. Aparte de ponencias, charlas y conferencias, se desarrollaron diversos talleres sobre introducción a y administración de Guadalinex, creación de paquetes Debian, aplicaciones ofimáticas bajo Linux, programación en Java utilizando Eclipse y Netbeans, Linux
92
Número 09
sobre clusters, diseño gráfico con software libre y un larguísimo etcétera. En suma, unas jornadas interesantes y muy recomenda-
bles que esperamos volver a visitar en subsiguientes ediciones.
Listo para Despegue Mientras escribimos, esto la aKademy [4], el congreso anual de KDE, calienta motores. Durante seis días, la flor y la nata del desarrollo KDE se concentrará en la universidad de Málaga para difundir el uso de KDE entre los usuarios, marcar los objetivos para los desarrolladores y, en el último tramo del congreso, entregarse a una orgía desenfrenada de programación de 120 horas con el fin de propulsar el escritorio y sus aplica-
WWW.LINUX- MAGAZINE.ES
ciones a nuevas cotas de usabilidad y diseño. Entre los ponentes más destacados, se encuentran Mark Shuttleworth de Canonical, que disertará sobre Ubuntu y Kubuntu, Mirko Boehm de Kdevelop y Aaron Seigo del proyecto Plasma. Y, tranquilos, en ésta no hay ponencias de Paul C. Brown.
Y lo que viene Para que no se diga que sólo os contamos cosas ya pasadas, sabed que para octubre tenemos la segunda entrega de la Conferencia Internacional del Software Libre, el primer tramo de la cual se celebrará en Mérida los días 25 y 26 y la segunda se celebrará en Málaga en febrero del 2006 (ver [5]). Por supuesto que Linux Magazine ■ estará allí para contároslo.
RECURSOS [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ógicas Andaluzas de Software Libre: http:// jornadas.cursosdeverano.org/ [4] aKademy 2005: http:// conference2005.kde.org/ [5] Open Source World Conference II: http://www. opensourceworldconference.com/
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 se requiere 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 domicilio cada mes.
Si por cualquier motivo decides dejar de leer Linux Magazine, puedes cancelar tu subscripción en cualquier momento. Te abonaremos el precio de 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.
Trucos
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.
U
n lector nos escribe con la siguiente pregunta:
He intentado instalar hasta 3 veces la distribución de Fedora que adjuntan 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 elegido 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 distribución de Suse y jamás tuve ese problema: salía el GRUB y podía arrancar la partició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 estas alturas, en poco nos va a ayudar, puesto que el sistema todavía no ha arrancado. De hecho, al parecer, Fedora, por algún motivo que desconocemos, le ha instala-
do un fichero menu.lst vacío. Le explicamos: GRUB utiliza un fichero, habitualmente situado en /boot/grub que contiene un menú con las opciones de arranque. Para un ejemplo, véase el Listado 1. La primera línea indica qué sistema se arrancará por defecto. En este caso se trataría del Mandrake 2.6.10 (GRUB cuenta a partir de 0, por tanto Ubuntu es 0, Mandrake 10 es 1, etc.). La segunda línea indica cuanto tiempo esperará GRUB antes de arrancar el sistema por defecto. Y la tercera línea indica qué sistema se arrancará en el caso de que falle el elegido por defecto. A continuación vienen las opciones que se presentarán en pantalla al arrancar GRUB. • title es lo que se mostrará en el menú y ahí puede escribir lo que desee. • kernel le indica a GRUB qué núcleo Linux se desea arrancar (es perfectamente factible tener varios núcleos en una misma partición y escoger el que más nos interese). Mire en el directorio /boot y escoja algo que se llame algo así como vmlinuz-XX-X, donde las tres X indican el número de versión del kernel. Además tendrá que indicar la partición donde se halla el kernel. Recuerde que GRUB cuenta a partir de 0. Por tanto, en el ejemplo anterior, (hd0,4) indica en la quinta partición del primer disco duro. También tiene que indicar dónde se va a montar el directorio raíz. Cómo éste es
WWW.LINUX- MAGAZINE.ES
un parámetro que se pasa al kernel, ya no contamos desde 0, sino que utilizamos la
Listado 1: menu.lst de GRUB 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
Número 09
95
Trucos
nomenclatura típica de Linux, es decir hda5 (lo que para GRUB es hd0,4). Lo montamos, por cierto como sólo lectura (ro), que es la manera estándar de proceder. En este caso, también le decimos al kernel el tipo de ratón del que disponemos (un touchpad de un portátil) para poder optar a utilizar “tapping”. En muchos casos, las distros modernas utilizan un fichero initrd. Tiene que buscarlo en el mismo sitio que el fichero vmlinuz. Pero, se preguntará, ¿cómo accedo a todo esto si no puedo arrancar el sistema? Muy fácil: cójase su DVD de Fedora Core 4 e insértelo en su lector. Arranque y en la primera pantalla de boot, pulse la tecla “F2” para ver las opciones. Verá que una de las opciones es “linux rescue”. Escriba eso en la línea de prompt. Lo que vamos a hacer es intentar rescatar el sistema. Escoja como idioma el español y el teclado “es” para seguir. No importa si habilita o no tarjetas de red: no las vamos a utilizar. Escoja la partición donde instaló Fedora y el modo rescate se lo montará bajo /mnt/sysimage/. Con el fin de poder modificar algo, habremos de escoger la opción que nos permita escribir en la partición.
No todo está perdido Si tiene Windows en una partición y Suse en otra e instaló Fedora en una tercera, y el menu.lst de Suse es bueno (ya que dice que le funcionaba), puede usted simplemente copiar el fichero desde Suse a Fedora. Para ello tendrá que tener montadas ambas particiones. Nuestro consejo es que le eche un vistazo a su tabla de particiones… # cat /proc/partitions
3 3 3 3 3
96
0 1 2 5 6
#blocks
name
39070080 10257471 1 8908011 538146
hda hda1 hda2 hda5 hda6
Número 09
7 8
11510541 hda7 7855753 hda8
Y monte todas las particiones montables (por su tamaño, probablemente hda1, hda5, hda7 y hda8 parecen particiones montables. hda6 es swap, (utilice cat /proc/partitions/swaps) por tanto, pasamos 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 contenidos de /mnt/hdaX/boot/grub para ver si hay algún menu.lst utilizable. Puede utilizar 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á editar el contenido de menu.lst (un tutorial de como utilizar vi, sin embargo, excede los 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 fichero menu.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 como hacía hasta ahora, pero tendrá que modificar hda3/boot/grub/menu.lst a mano para incluir Fedora Core 4 (siga leyendo).
Todo Está Perdido
A nosotros nos sale… major minor
3 3
En el caso de que decidiera sobreescribir Suse con Fedora, utilizaremos el modo rescate para recabar información desde sus particiones. Vaya buscando los archivos vmlinuz y initrd y escriba su localización en un papel. Después tendrá que escribir un fichero menu.lst a mano y guardarlo en el direc-
WWW.LINUX- MAGAZINE.ES
torio /boot/grub de Fedora (recuerde que puede hacer todo esto desde el modo rescate). 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 para Fedora 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 Windows Bueno, eso necesitaría un artículo en sí mismo. Podemos recomendarle el recurso [1] o el artículo “rm -fR /” de la página 92 a la 94 del número 7 de Linux Magazine. También puede consultar la excelente FAQ de GRUB en [2], pero una entrada en menu.lst para Windows podría tener el siguiente aspecto (suponiendo que Windows está 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.■
RECURSOS [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
EVENTOS
LinuxWorld Conf. & Expo UK
akademy 2005
OSWC 2005
Fecha: 5-6 Octubre
Fecha: 27 Agosto - 4 Septiembre
Fecha: 25-26 Octubre
Ciudad: Londres, Reino Unido
Ciudad: Málaga, España
Ciudad: Mérida, España
Sitio Web: www.linuxworld expo.co.uk
Sitio Web: http://confe-
Sitio Web: http://www.opensourceworldconference.com
rence2005.kde.org
Calendario de Eventos Evento Fecha akademy 2005 27 Agosto - 4 Septiembre LinuxWorld Conference & Expo Moscow 7 -9 Septiembre International Computer Music Conference 5-9 Septiembre Opensaar 2005 13-14 Spriembre LinuxWorld Conference & Expo South Africa 14-16 Septiembre php works 14-16 Septoembre New Security Paradigms Workshop 2005 20-23 Septiembre LinuxWorld Conference & Expo UK 5-6 Octubre IT Underground 12-13 Octubre LinuxWorld Conference & Expo NL 13-14 Octubre hack.lu 2005 14-15 Octubre AUUG 2005 16-21 Octubre 12th Annual Tcl/Tk Conference 24-28 Octubre Versteckte Computer Unkontrollierbare... 5-6 Noviembre International PHP Conference 2005 6-9 Noviembre LinuxWorld Conference & Expo NL 9-10 Noviembre LinuxWorld Conference & Expo Frankfurt 15-17 Noviembre linux.conf.au 2006 23-28 Enero LinuxWorld Conference & Expo Australia 28-30 Marzo 06
Ciudad Málaga Moscú, Rusia Barcelona,España Völklingen,Saar Ciudad del Cabo,S.A. Toronto,Canadá Lake Arrowhead,CA,EEUU Londres,Reino Unido Varsovia,Polonia Utrecht,Holanda Kirchberg,Luxemburgo Sydney,Australia Portland,Oregón,EEUU Munich,Alemania Frankfurt,Alemania Utrecht,Holanda Frankfurt,Alemania Dunedin, Nueva Zelanda Sydney, Australia
Sitio Web http://conference2005.kde.org www.linuxworldexpo.ru www.icmc2005.org wwww.opensaar.de www.linuxworldexpo.co.za www.phparch.com/phpworks www.nspw.org/current www.linuxworldexpo.co.uk www.itunderground.org/en www.linuxworldexpo.nl www.hack.lu http://auug.org.au/events/2005/auug2005 www.tcl.tk/community/tcl2005 www.fiff2005.de www.phpconference.com www.linuxworldexpo.nl www.linuxworldexpo.de http://lca2006.linux.org.au www.linuxworldexpo.com.au
Información de Contacto Director Paul C. Brown Coolaboradores Paul C. Brown, Jose Manuel González Vida, Juan Rafael Fernández, Pedro Orantes, José María Ruíz, Alberto Planas. Traductores Paqui Martín Vergara, Paul C. Brown, Antonio Rueda, Víctor Tienda. Maquetación Sergio Hardasmal Diseño de Portada Pinball (info@pinball-werbeagentur.de) Publicidad www.linux-magazine.es/pub/ Para España Paul C. Brown pbrown@linux-magazine.es pbrown@linuxnewmedia.es Tel.: (+ 34) 951 010 556 Móvil.: (+ 34) 655 036 836 Fax.: (+ 34) 951 010 516 Sergio Hardasmal anuncios@linux-magazine.es Tel.: (+ 34) 951 010 556 Fax.: (+ 34) 951 010 516 Para el Resto del Mundo Brian Osborn ads@linux-magazine.com
Tel.: Fax.:
(+49) 6509 910 495 (+49) 6509 910 497
Director Editorial Paul C. Brown Director de Producción Sergio Hardasmal anuncios@linux-magazine.es Subscripciones: www.linux-magazine.es/ magazine/subs Precios Subscripción España: Europa: Resto del Mundo - Euros: Resto del Mundo - Dólares U.S.A.:
49,50 € 59,90 € 79,90 € $ 94,90
Tel.: (+34) 951 010 556 Fax.: (+34) 951 010 516 subs@linux-magazine.es Linux Magazine Linux New Media Spain, S.L. Avda. Juan López Peñalver, 21 29590 - Campanillas Málaga ESPAÑA info@linuxnewmedia.es Tel.: (+34) 951 010 556 Fax.: (+34) 951 010 516 www.linux-magazine.es - España www.linux-magazine.com - Mundo www.linux-magazine.de - Alemania
WWW.LINUX- MAGAZINE.ES
Si bien se toman todas las medidas posibles para garantizar la precisión del contenido de los artículos publicados en Linux Magazine, la editorial no se hace responsable de imprecisiones aparecidas en la revista. Asimismo, Linux Magazine no comparte necesariamente las opiniones vertidas por sus colaboradores 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 escrupulosamente para confirmar que está libre de virus y errores. Copyright y Marcas Registradas © 2004 Linux New Media Spain, S.L. Linux New Media Spain S.L. prohíbe la reproducción total o parcial de los contenidos de Linux 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
Número 9
97
PRÓXIMO NÚMERO
Noviembre 2005: Número 10
PRÓXIMO NÚMERO INTEGRACIÓN WINDOWS - LINUX
DVD: SUSE 9.3 El DVD del número 10 de Linux Magazine nos trae la última versión orientada a escritorio de la empresa alemana Suse. Ideal para el usuario final y profesional.
Convivir con Windows no siempre es fácil, pero a veces no hay más remedio. El mes que viene dedicamos nuestra sección de portada a los intrincados pasos que hay que dar para que Linux se lleve bien con otros sistemas. Para empezar, abordaremos el espinoso temas de los arranques duales y cómo evitar los problemas má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 drivers disponibles para Windows… Insistimos: hasta ahora. Presentamos Captive NTFS, una herramienta que permite el acceso a NTFS desde Linux y, en cierta medida, a sistemas de ficheros Linux desde Windows. Correr programas bajo WINE puede ser un auténtico quebradero de cabeza si no se tienen las instrucciones adecuadas. Afortunadamente Linux Magazine trae un informe de 7 páginas en su número 10 que explica los porqués y los cómos de este capa de compatibilidad
PRÁCTICO El más novedoso de los APIs de Google ofrece interesantes posibilidades para el desarrollador de aplicaciones Javascript. Acompáñanos en un paseo virtual por el mundo de la mano de GMaps y Alberto Planas. En nuestro artículo sobre audiostreams veremos
XFCE 4.2 Xfce se ha ganado una reputación de sistema de ventanas compacto, rápido y vistoso. En nuestro próximo número averiguamos si su fama es bien merecida poniendo a prueba la última versión estable.
cómo capturar y grabar streams de radios que ofrecen sus emisiones a través de Internet. Linux dispone de múltiples y muy complejas opciones a la hora de elegir un motor de bases de datos, pero a veces sólo necesitamos algo sencillo. Tellico puede ser la solución.
ZEND STUDIO Revisamos el entorno de desarrollo integrado de los creadores de PHP y vemos cómo la nueva versión de esta herramienta puede acelerar la creación de sitios web que utilicen este lenguaje como motor.
A LA VENTA: OCTUBRE 2005 98
Número 09
WWW.LINUX- MAGAZINE.ES
¡Hazte con tus ejemplares atrasados! #1 • Número 1: Especial Redes - Servidores de correo TLS
MediaWiki - Konversation - DVD Fedora Core 3 ... • Número 2: Hardware Linux - PCs Silenciosos - Gestor de ventanas Twin - Backups con Konserve ... • Número 3: Seguridad para todos - Configuración iptables con Shorewall - Ruby Rails - Domótica ... • Número 4: Redes Wireless - Scribus - Radio USB Hackeando con Zaurus - DVD Mandrake 10.1 ... #2 • Número 5: Email seguro - Seguridad Wireless - Gimp con Python - Bluetooth - QEMU - QTCanvas - Scribus (II) • Número 6: Multimedia - MLDonkey - OpenOffice Juegos DOS con SCUMMVM y DOSBox - Scribus (III) • Número 7: Sistemas virtuales - Debianiza tu SuSe Coches teledirigidos - SoundJuicer - DVD SuSe 9.2
¡No esperes a que se agoten! #3 #7
#4
#5
#6
W W W. L I N U X - M A G A Z I N E . E S