Sie sind auf Seite 1von 83

EDITORIAL

Nos sentimos orgullosos de nuestros

ESA orígenes como publicación, que se


remonta a los primeros días de la
revolución Linux. Nuestra revista
hermana, la publicación alemana
Linux Magazine, fundada en 1994, fue

QUIMERA
la primera revista dedicada a Linux en
Europa. Desde aquellas tempranas
fechas hasta hoy, nuestra red y
experiencia han crecido y se han
expandido a la par que la comunidad
Linux a lo ancho y largo del mundo.
Como lector de Linux Magazine, te
hí va una bonita historia: Habí- mencionamos antes. Todo unes a una red de información

A ase una vez un inventor, un


inventor tan grande y famoso,
que, durante generaciones, se le adoró
comienza en 1895…
El ambicioso y brillante Edi-
son inven… borra eso…
dedicada a la distribución del
conocimiento y experiencia técnica.
No nos limitamos a informar sobre el
movimiento Linux y de Software Libre,
como el arquetipo de inventor de éxito, _coge prestada_ la idea del sino que somos parte integral de él.
un ejemplo de inteligencia, perseveran- kinetografo o, tal y como se le
cia y capacidad gestora. Fundó un empo- conoce hoy en día, la cámara de cine. A trial, de ideas o como quiera llamarse,
rio donde ideas nuevas surgían como pesar de que no fue el artífice original que se olvidó de que el invento era un
bombillas de cómic de su enorme (en (todo el mundo conoce la historia de los medio a un fin y no el fin en sí mismo.
más de un sentido) cabeza. Inventó hermanos Lumiere ¿no? – aunque tam- Fatal error: un par de malas estrategias
muchos aparatos fenomenales, mejoró poco fueron ellos los que inventaron la comerciales, juicios antitrust y aplicacio-
otros y “tomó prestado” algunos más. cámara de cine, pero esa es otra historia), nes de la ley Sherman más tarde, el con-
Thomas Alva Edison, porque de Edison Edison inmediatamente patentó y, a dife- sorcio de abusones fue obligado a des-
hablamos, fue sin duda uno de esos hom- rencia de los hermanos de Lyon, sí vio el membrarse, dañando de paso casi irre-
bres capaces de modificar él solito la tra- potencial filón de las imágenes en movi- versiblemente la industria del cine en la
yectoria de la historia y lo hizo a través miento (nadie dice que era estúpido). costa este de los Estados Unidos.
de la innovación tecnológica (o debería Rápidamente se alió (léase “chantajeó”) Resumiendo, la actitud depredadora
de decir “INNOVACIÓN tecnológica”, así a empresas que vislumbraban el mismo sobre las ideas que mantenía la MPPC no
con mayúsculas, para no confundirlo con filón que él para formar una suerte de sólo no trajo beneficios duraderos para
ese sucedáneo de concepto/muletilla que alianza de oligarcas que ejerciesen un sus miembros, sino que se llevó por
tanto prostituyen los políticos en sus dis- férreo control sobre la industria. delante en su derrumbe (al menos en la
cursos triunfalistas). Emprendedor y El grupo se llamó la Motions Picture zona geográfica sobre la que tenía
visionario más allá de cualquier Gates, Patents Company y se dedicó a, aparte influencia) una industria que podría
Jobs o Ellison, fue pionero en la aplica- de producir y distribuir películas, a per- haber generado riqueza para miles de
ción de I+D+I como modelo de nego- seguir inmisericordemente a los denomi- americanos, tal y como lo hace en Holly-
cio. nados independientes, productoras que wod hoy en día.
Sin embargo, también fue empresario se atrevieran a crear cine sin antes pasar A pesar de los enormes logros de Edi-
despiadado y un control freak de las por caja. A todos los efectos, Edison y son, su mala cabeza en este asunto
ideas, fuesen suyas o de otros. Ya que, sus lacayos se convirtieron, sin ser los queda como testimonio de que la protec-
por ejemplo, la bombilla eléctrica, cabe primeros ni, por desgracia, los últimos, ción para la explotación exclusivista de
recordar, no fue invento suyo, sino que en patent trolls de libro. las ideas para unos pocos no repercute
hasta 22 inventores llegaron a crear ver- Pero las restricciones combinan mal directamente en el beneficio de la socie-
siones del cacharro con anterioridad, con la creatividad y muchos indepen- dad. Es más, la posibilidad de que llegue
empezando por Sir Humphry Davy, que dientes decidieron migrar al oeste, a la a repercutir positivamente de manera
produjo la primera lámpara incandes- soleada California, donde un clima indirecta alguna vez es también alta-
cente en el año 1800 – ochenta años excepcional y la lejanía de las garras mente improbable y el exceso de celo
antes de que Edison lo reinventara… y extorsionadoras de Edison & Co. hacía puede hasta ser nocivo para los mismos
patentara. No hay nada de malo en ello: más llevadero y rentable el convertir guardianes del ingenio.
para que haya progreso, hay que poder movimiento en arte. Exacto: los abuelos Aplíquese la moraleja directamente allí
utilizar los inventos de otros. De hecho, de Paramount, Fox, United Artists y donde proceda. ■
Graham Bell tampoco inventó el telé- Metro Goldwyn Mayer, principales accio-
fono, ni Louis Pasteur descubrió la nistas de la RIAA (la SGAE made in USA)
vacuna contra la rabia. El libre trasiego hoy, esquivaron en su día la imposición
de ideas ha alimentado el desarrollo del canon de su época.
desde los inicios de la civilización. Mas, volvamos con Edison y su cama-
Pero hete que aquí, en su enfermiza rilla de litigantes compadres. Tan con-
obsesión por el control, es donde se ini- centrada estaba la MPPC en la protec- Paul C. Brown
cia la verdadera “bonita” historia que ción de su propiedad intelectual, indus- Director

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


DVD LINUX MAGAZINE

… Y en el DVD de Linux Magazine

FEDORA 10 :
32 Y 64 BITS
F
edora, heredera de la versión gra- Más Cosas para tu Fedora
tuita de Red Hat Linux, se ha con- Tal y como se menciona en el cuerpo del artículo, por razones legales, muchas distros no
vertido a lo largo de los años en pueden incluir software con licencias restrictivas o que infrinja patentes y, en este sen-
una de las más sólidas y recomendables tido, Fedora no es una excepción.
distribuciones de entre las mayoritarias. El tipo de software que se excluye suele ser codecs de vídeo y audio (necesarios para
En este número de Linux Magazine trae- reproducir películas o música en formatos propietarios, como .avi o .mp3), librerías de
mos lo último de la comunidad Fedora: descifrado de DVD (necesario para ver cualquier DVD comercial moderno) y plugins pro-
Fedora 10 Cambridge. pietarios (como el Flash).
Afortunadamente, la comunidad que surge alrededor de cada distro, de manera altruista
Novedades y sin ánimo de lucro, suele compensar estas carencias montando sus propios reposito-
El proceso de instalación es completa- rios, en sus propios servidores y poniendo a disposición de los demás el software fal-
mente gráfica, pudiéndose escoger los tante.
valores predeterminados que sugiere En el caso de Fedora, el repositorio independiente más completo es Livna, y podemos
Fedora en el caso de una instalación sobre incluirlo directamente durante el proceso de instalación (también recomendamos mar-
un equipo virgen. Durante el proceso car los repositorios Fedora 10 y Fedora 10 updates para poder disponer de todo el soft-
ware oficial de esta distro).
existe la opción de añadir repositorios a
los que vienen por defecto, por lo que En la pantalla de Agregación de Repositorios, pulsamos en “Agregar repositorios de
inmediatamente podemos aprovecharnos software adicional”. En el diálogo introducimos, en el cuadro de texto Nombre, “Livna”,
y en URL del Repositorio, http://livna-dl.reloumirrors.net/fedora/10/i386/ si nuestro sis-
del gran número de paquetes disponibles
tema es de 32 bits, o http://livna-dl.reloumirrors.net/fedora/10/x86_64/, si es de 64 bits.
en Internet, aparte de los incluidos en el
También podemos incluir estos repositorios utilizando los rpms que proporciona Livna y
DVD. Ver el cuadro Más Cosas para tu
que automatizan completamente el proceso. Nos bajamos los ficheros rpm de [2] y,
Fedora para más información.
como root, hacemos:
Fedora viene con Plymouth, un nuevo
# rpm -i livna-release-10.rpm
sistema de arranque gráfico. Es más atrac-
tivo y esconde los mensajes del arranque (Puede que el nombre del fichero rpm cambie según el sistema que se esté ejecutando).
(en caso de ser necesario, podemos seguir Inmediatamente dispondremos del repositorio configurado en nuestro sistema.

Figura 1: Pantalla de inicio de la instalación. Para más opciones se Figura 2: Durante la instalación podremos añadir nuevos repositorios
pulsa F1, F2 ó F3. a los existentes.

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


DVD LINUX MAGAZINE

ras, permitiendo una configuración de los


permisos más granular.

Multimedia
Entre los reproductores de medios
encontramos los sospechosos habi-
tuales: Totem, RhythmBox, K3B,
etc. en sus últimas versiones. Hay
que notar que no se incluyen de
manera predeterminada ni codecs
ni plugins sujetos a licencias res-
trictivas o que puedan violar
patentes de terceros. Sin
embargo, Fedora 10 incluye
Packagekit, que se activa cuando
un usuario intenta reproducir un
medio que requiera software no
soportado inicialmente. Con un par
de clics, el usuario puede instalar los
ficheros necesarios y disfrutar inmediata-
mente de sus películas y música. Ver cua-
dro Más Cosas para tu Fedora para apren-
der cómo añadir los repositorios requeri-
dos.
el proceso a través de los mensajes si pul- 3.0 y Firefox 3 se instalan de manera pre- Con todo, Fedora es una distro profesio-
samos Esc), que también es ahora más determinada. El sistema de mensajería ins- nal, completa y muy agradable de utilizar,
rápido gracias a la tecnología Readahead: tantánea de serie es ahora Empathy, aun- tanto en el entorno profesional como en el
con Readahead se leen todos los búfers de que se sigue incluyendo Pidgin para garan- doméstico. Su hincapié en la seguridad y
disco de antemano, lo que acorta de tizar la compatibilidad hacia atrás. estabilidad lo hacen especialmente indi-
manera sustancial el tiempo de arranque. El sistema ofrece un mejor soporte para cado para entornos corporativos.
El escritorio predeterminado es Gnome Webcams, habiéndose mejorado el driver ¡Pruébala! ■
2.24, pero si deseamos podemos escoger UVC, introducido por primera vez en
KDE 4.1.2, escritorio éste que trae la nueva Fedora 9. Con ello se consigue que se reco- RECURSOS
versión de Plasma que incluye mejoras de nozca sin problemas un mayor número de
[1] Página principal del proyecto Fedora:
estabilidad y más funcionalidades. cámaras, entre ellas todas las que lleven el
http://fedoraproject.org/
En el apartado de software para produc- logotipo de compatibilidad con Windows
[2] Página de inicio del proyecto de repo-
tividad tenemos disponible el nuevo GIMP, Vista.
sitorios Livna: http://rpm.livna.org/
versión 2.6, con sus cambios en interfaz y El sistema de seguridad de Fedora es
rlowiki/
soporte de espacios de color. OpenOffice SELinux, que presenta numerosas mejo-

Figura 3: El escritorio predeterminado es Gnome 2.24, que es sencillo Figura 4: … Aunque también podremos escoger el espectacular KDE
y funcional… 4.1.

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


INSEGURIDADES

Protegiendo nuestro sitio y a nuestros clientes

SEGURIDAD WEB
Aprendemos más sobre cómo proteger nuestro sitio web con NoScript, ModSecurity y Site Security Police.

POR KURT SEIFRIED

A
l igual que muchas otras áreas que seamos de la seguridad, pues siem- script por completo es una opción, aun-
relacionadas con la seguridad, la pre interactuaremos con servidores y que muchos sitios utilizan JavaScript
World Wide Web presenta dos clientes menos seguros. para presentar contenidos, formularios,
tipos de problemas muy diferentes con etc.
soluciones muy distintas. De una parte, JavaScript y NoScript Un método más grnaular se encuentra
la mayoría de nosotros usa un navegador Para el navegador web Firefox, más de disponible con el plugin NoScript de
web de manera habitual y deseamos evi- 196 avisos de seguridad, 62 listaban des- Firefox [1]. La opción por defecto es blo-
tar que nuestros clientes web ejecuten habilitar JavaScript como una solución quear la ejecución de JavaScript, y
código de un atacante que le permita provisional. Adicionalmente, las vulne- entonces podemos elegir si permitir que
hacerse con el control de nuestra rabilidades basadas en JavaScript tien- JavaScript se ejecute temporalmente o
máquina. Por otra parte están los servi- den a ser unas de las que permiten la bien permanentemente. O podemos
dores web, a los que no deseamos que se ejecución de código arbitrario, de modo marcar un sitio permanentemente como
vean comprometidos por ataques cons- que cualquier medida preventiva de de poca confianza para evitar cualquier
tantes (XSS, inyección SQL, etc.). Así seguridad que tenga relaciones con ellas JavaScript que se esté ejecutando desde
que ¿Cuál es la respuesta? Pues bien no tendrán un efecto significativo. aquel sitio (Figura 1).
existe una única respuesta. Necesitamos La seguridad de los clientes web con- El inconveniente principal de este
seguir una serie de pasos para proteger tra ataques es relativamente simple; sin plugin es que necesitamos prestar aten-
tanto a los clientes como a los servido- embargo, algunos sitios web no funcio- ción a la barra de información que apa-
res, ya que no importa lo escrupuloso nan adecuadamente. Deshabilitar Java- rece en la parte inferior de la pantalla
cuando está bloqueado JavaScript
(Figura 2) y decidir si permitirlo o no. Si
no lo permitimos, nos encontraremos,
como me pasa a mí, mirando fijamente
un sitio web preguntándonos por qué
está en su mayor parte blanco, o por
qué un formulario online no funciona
correctamente.
Adicionalmente, NoScript posee pro-
tección contra el scripting multi-sitio
básico: URLs con caracteres como “>”
en ellos generan un aviso y darán al
usuario la posibilidad de bloquear su
carga.

Asegurando el Servidor
Como administrador de servidores no
puedes forzar a tus clientes a asegurarse,
pero puedes proteger tu propio servidor
y aplicaciones basadas en web de ata-
ques. Protegiendo el servidor también
puedes evitar los clientes rotos o usua-
rios que hayan visitado sitios hostiles de
acciones de ataque que pudieran dañar
sus cuentas o de datos alojados en nues-
tro sitio, saboteando por ejemplo, un
ataque de scripting multisitio que inter-
actúa con la cuenta del usuario para
cambiar la contraseña de su cuenta en
nuestro sitio.

8 Número 4
45 WWW.LINUX- MAGAZINE.ES
INSEGURIDADES

sean examinadas en varios


estados del proceso: cuando
el encabezamiento de la peti-
ción se procesa primero,
cuando el cuerpo de la peti-
ción se procesa, cuando los
encabezamientos de la res-
puesta se crean, cuando el
cuerpo de la respuesta se pro-
cesa y en la fase de logging.
Otra ventaja de ModSecu-
rity es que soporta Perl-Com-
patible Regular Expressions
(PCRE), y las reglas que
Figura 1: NoScript bloquea a JavaScript de manera soporta también pueden pro- Figura 2: Una barra de información en la parte infe-
predeterminada y podemos seleccionar de una lista vocar gran variedad de accio- rior de la pantalla dice que JavaScript estaba blo-
de opciones lo que queremos ejecutar. nes, incluyendo el bloqueo de queado.
una petición o permitiéndola,
Apache ModSecurity dejando caer la conexión enviando un web, tales como Squid, que protejan a
Al igual que muchos proyectos de seguri- paquete FIN, o ejecutando un programa todos los clientes web que se encuentran
dad, ModSecurity comenzó como un externo. Por ejemplo, esto permite a los detrás de ellos de acciones potencial-
proyecto de código abierto, licenciado administradores del sitio filtrar caracteres mente inseguras en sitios que eligen
bajo GPL v2, cuyo objetivo era añadir como “<” y “>” de las peticiones (un soportar el estándar Site Security Policy.
una capa de seguridad al servidor web probable indicador de un ataque scripting
de Apache [2]. El proyecto parece haber multisitio) o buscar información personal Conclusión
sido comercializado con éxito; sin como cadenas de números de tarjetas de La seguridad web no tiene una única
embargo, como muchas aplicaciones de 12 dígitos entre las peticiones salientes solución. No importa lo duro que preten-
seguridad de código abierto, las versio- (por ejemplo, provocado por un ataque damos ser, los chicos malos o ejecutarán
nes libres aún se encuentran disponibles. de inyección SQL) y bloquear los datos servidores web hostiles o compromete-
El beneficio principal de ModSecurity que están siendo servidos al atacante. rán otros servidores web. En el lado
es que podemos usarlo para proporcio- Véase el cuadro “Regla de Ejemplo”. cliente, las cosas son básicamente un
nar seguridad a cualquier aplicación que Como podemos imaginar, toda esta desastre. Si ejecutas Linux, sin embargo,
esté ejecutándose en nuestro sistema. La potencia y flexibilidad conlleva un coste las posibilidades son bastantes bajas de
la otra cara de la moneda es que debe- de complejidad; sin embargo, esto se ha que te conviertas en un blanco y es bas-
mos poder insertar un módulo a medida aliviado porque un potente juego de tante probable que mantendrás tu soft-
en Apache, lo que significa que hemos reglas predeterminadas se han hecho ware actualizado, porque casi todas las
de tener el control sobre el servidor, y disponibles para que sean libres (licen- distribuciones actualizan automática-
tener bastante potencia de CPU para ciadas bajo la GPL v2), el cual puede mente por defecto, lo que te da ventaja
manejar el procesamiento adicional usarse como punto de entrada para la en el juego del ratón y el gato.
requerido por este módulo, lo cual puede mayoría de los sitios. Tapando los agujeros cuando son iden-
ser importante. El módulo ModSecurity tificados y aplicando medidas de seguri-
permite peticiones al servidor para que Site Security Policy dad adicionales, como NoScript y Mod-
Site Security Policy es un interesante Security, podemos mejorar las posibili-
Regla de Ejemplo método que aún se encuentra en estado dades de tener servidores y clientes
de desarrollo [3]. La idea es que un ser- “saludables”.
Un ejemplo simplista para detectar y
bloquear cualquier número de 12 dígi-
vidor web aloja un fichero que especifica A la larga, esto reduce el tiempo y la
tos en páginas web salientes: cómo debería interactuar un cliente con energía que debemos gastar en limpiezas
el servidor, previniendo, por tanto, inter- repetitivas, algo que todo el mundo
SecRule RESPONSE_BODY U
acciones inseguras tales como ataques desea, de todos modos. ■
“[0-9]{12}” \ U de scripting multisitio (XSS) o ataques
“phase:4,t:none,ctl:auditLogPa de suplantación de peticiones multisitio. RECURSOS
rtsU En el lado del cliente, hay o soporte
[1] Plugin NoScript para Firefox: http://
estándar integrado para este estándar, o noscript.net/
=+E,deny,log,auditlog,U
un plugin (disponible para Firefox) que
status:500,msg:U [2] ModSecurity para Apache:http://
permite al cliente descargar y analizar el
www.modsecurity.org/
‘a 12 digit number’U fichero de políticas antes de interactuar
[3] Site Security Policy: http://people.
,id:’1’,tag:U con el servidor web.
mozilla.com/~bsterne/
Un efecto lateral interesante a este
‘LEAKAGE/ERRORS’,severity:’1’” site-security-policy/
método es la posibilidad de tener proxies

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


NOTICIAS DEL KERNEL

NOTICIAS DEL
KERNEL
Estado del Driver HGA resultante pueda distribuirse legalmente mucha gente tenía opiniones muy diferen-
Framebuffer bajo su licencia), pero no cree que este tipo tes, con numerosas razones que las susten-
El driver HGA Framebuffer ha dejado de de cosas deban incluirse en el kernel. Está taban. En cuanto a qué podría pasar con los
mantenerse. Roland Kletzing confirmó que trabajando en crear una rama git separada parches de David Woodhouse, yo esperaría
el mantenedor oficial, Ferenc Bakonyi, no para todos ellos. algún tipo de compromiso. La eliminación
disponía de hardware relevante desde el Esto generó unas cuantas réplicas que del firmware es algo que prefieren los puris-
año 2001. Por tanto, la entrada en MAIN- disentían de esta política. La mayor parte de tas del software libre, y además también
TAINERS estaba completamente desactuali- la gente estaba a favor de aislar el firmware sería preferible por razones prácticas y lega-
zada y Roland ha posteado un parche para en una única ubicación, pero sacarlo fuera les. En ese caso, gente como David Miller
eliminarla. ■ de la rama parecía excesivo, debido a que podría perder la batalla: esperemos que esto
esto podía generar problemas en paquetes no les cause muchos inconvenientes. ■
¿Drivers de Cosecha de firmware y otros requerimientos que
Propia? algunos no querían enfrentar. Ayuda a la Compilación
Michael Buesch ha estado diseñando y La oposición más notable a la idea de Automática del Kernel
construyendo sus propios dispositivos hard- David la ofreció David S. Miller, que ya lle- Clifford Wolf ha escrito un nuevo objetivo
ware y preguntó recientemente si debía vaba un tiempo luchando contra ella, espe- de makefile, no2modconfig. Generalmente,
suministrar los drivers para ese hardware o cialmente en el caso del driver tg3, al que cuando configuramos nuestro kernel para
si simplemente debía mantenerlos como consideraba integrante necesario de la rama compilar, toda opción en la que tecleemos N
parches independientes. La respuesta principal. David Miller comentó que si dis- no se compilará. Con no2modconfig, estos
mayoritaria fue “¡envía los drivers!”. Apa- tribuciones como Debian querían evitar los elementos se compilan en módulos. Apa-
rentemente, en tanto en cuanto Michael (u datos binarios en el kernel, era cosa de ellos rentemente, esto es útil para autogenerar
otra persona) esté dispuesto a documentar escribir y mantener los parches necesarios kernels.
cómo se puede construir el hardware, los fuera de la rama. Resultó que Sam Ravnborg tenía algunos
drivers de ese hardware serán bienvenidos David Woodhouse respondió que él ya parches que hacían lo que Clifford quería,
en el kernel. Con este tipo de iniciativas, había tomado los pasos necesarios para de manera que usaban la configuración del
pronto veremos cómo aparece una gran asegurar que, incluso sin eliminar el firm- objetivo de compilación allmod existente
variedad de drivers para hardware especí- ware, sus cambios aún serían útiles, aun- con un archivo de configuración base pre-
fico. ■ que tenía la sensación de que sería mejor determinado. En respuesta al post de Clif-
sacarlos por completo. Llegados a este ford, Sam comentó que intentaría tener lista
Eliminar Firmware de la punto, los participantes derivaron sus dis- su propia solución a corto plazo para que
Rama del Kernel cusiones a aspectos técnicos de cómo debe- pudiera revisarse. ■
David Woodhouse quiere eliminar todo el ría implementarse esta idea. Sin embargo,
firmware de terceros fuera de la rama del no estaba claro si algunas de las ideas eran Escritura bajo CramFS,
kernel. David está a favor de permitir que el sugerencias reales o sólo cavilaciones SquashFS y Otros
kernel cargue elementos arbitrarios de acerca de si sería posible en caso de que la Arnd Bergmann añadió soporte para escri-
código firmware (siempre que el binario gente lo pidiese. Lo que estaba claro era que tura a CramFS… o algo parecido. Ahora el
usuario puede modificar los archivos en un
sistema en uso, aunque éstos no se escriben
La lista de correo del kernel de Linux comprende lo principal en disco: los cambios simplemente se man-
de las actividades de desarrollo de Linux. El volumen del
tienen en memoria, y un reinicio devuelve
tráfico es inmenso, alcanzándose a menudo los diez mil
al sistema a su estado original. Phillip Lou-
mensajes semanales. Mantenerse al día de todo lo que
gher comentó que está planeando imple-
sucede en el desarrollo del kernel es casi imposible para
una sola persona. mentar este tipo de solución para SquashFS.
Generalmente, los intentos anteriores impli-
Sin embargo, Zack Brown es uno de los pocos valientes que
lo intentan, y a partir de ahora podrá leerse lo último de las
caban el uso de UnionFS para revestir la ins-
discusiones y decisiones con respecto del kernel de Linux tancia TmpFS del sistema de archivos en
llevados de la mano de este experto. cuestión. Arnd señaló que UnionFS actual-
Zack ha publicado un resumen online semanal llamado
mente no es la mejor solución y que es pre-
“The Kernel Traffic Newsletter” durante cinco años. Linux ferible codificar la funcionalidad directa-
Magazine te trae ahora la quintaesencia de las actividades mente en CramFS, en lugar del complicado
del kernel de Linux del mayor especialista en el tema. UnionFS. Phillip añadió que el soporte de

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


NOTICIAS DEL KERNEL

sistemas de archivo apilable pertenecía en los cuales un apagón o problemas con la hardware o bien porque estaban acostum-
realidad a VFS, que actualmente no lo actualización podrían generar inconvenien- brados a trabajar con su equipo tal cual
soporta. tes a bastantes personas, por lo que no les estaba y no deseaban ningún tipo de cambio.
Mucha gente aconsejó usar (o al menos preocupaba actualizar a 2.6 y preferían man- Willy llevó a cabo su encuesta en parte
arreglar) UnionFS, generándose una discu- tener el último 2.4. Cerca del 20% de los para averiguar cómo incentivar a más gente
sión técnica acerca de cómo podría hacerse. encuestados usaban 2.4 para servidores de a que actualicen desde 2.4 de manera que
Arnd y Phillip comentaron que les gustaría aplicaciones específicas, que suelen ser ser- esta rama pudiese desaparecer en paz. La
comprometerse en caso de que UnionFS (o vidores “críticos”, en los cuales un apagón, recomendación principal de Willy hacia el
AUFS) pudiesen hacer lo que se necesita sin incluso para actualizar al kernel 2.4 más equipo de 2.6 es que elaboren una descrip-
un esfuerzo excesivo, pero la discusión fina- reciente, podría suponer un gran problema. ción clara de las diferencias funcionales
lizó sin conclusiones. Para los chicos del ker- Aproximadamente un 10% de las perso- entre 2.4 y 2.6, de modo que los usuarios no
nel, parece claro que el soporte de pseudo- nas que respondieron usaban 2.4 para rou- tengan que averiguar lo que no va a funcio-
escritura para CramFS y SquashFS (y posi- ters, cortafuegos y otras aplicaciones de nar por su cuenta. También recomendó des-
blemente ISO 9660 también) ayudaría a los redes. En estos casos, actualizar a 2.6 podría tacar que se puede regresar a 2.4 de manera
usuarios, y las funcionalidades podrían ser relativamente sencillo debido a los esca- sencilla en caso de que la actualización no
soportarse de una manera u otra. ■ sos requerimientos del sistema, pero los haya ido bien.
encuestados no estaban seguros de cómo Otra razón para realizar la encuesta fue
El Rumbo de 2.4 actualizar con éxito, por lo que simple- para hacer ajustes en el esquema de lanza-
Tras un largo paréntesis, Willy Tarreau ha mente se mantienen con lo que conocen. mientos del kernel 2.4 por parte de Willy. A
lanzado últimamente más versiones del ker- Otro 10% usaban 2.4 en productos de este respecto señaló: “efectuaré lanzamien-
nel 2.4 De igual manera, ha hecho algunos tipo sistemas embebidos. En este caso, sus- tos estables un poco más a menudo para
esfuerzos para recoger algunas estadísticas pender los sistemas para una actualización que los usuarios obtengan los arreglos de
acerca de quién usa el kernel y por qué no sería algo visible para el cliente y requeriría manera rápida, pero incrementaré progresi-
actualizan al kernel 2.6. Con sólo 22 res- cambios sustanciales en los procesos esta- vamente el intervalo entre lanzamientos
puestas, las cifras de Willy tienen un mar- blecidos por la empresa. mayores”. Continuó comentando que los
gen de error considerable, pero aún así son El resto de los encuestados, aproximada- lanzamientos mayores sólo se efectuarán
interesantes. Cerca de la mitad de los mente otro 10%, ejecutaban 2.4 en sus siste- con nuevas IDs de PCI, actualizaciones
encuestados señalaron que confiaban en mas personales, bien porque no querían importantes de drivers y soporte de compi-
2.4 para servidores de propósito general en intentar configurar un nuevo kernel para su lación, por ejemplo. ■

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


NOTICIAS

NOTICIAS
Acusaciones en Base Cero referencia a datos objetivos o fuentes En el artículo también se menciona
Pocas veces una noticia ha removido del estudio que menciona Frutos en un supuesto decremento de la crea-
a tantos portales de noticias y nave- sus declaraciones. ción de riqueza directamente en las
gantes de internet como la del estu- Todo lo anterior hace pensar que se autonomías, ya que se alega que el
dio de BSA y las polémicas declara- trata nuevamente de un informe software que no se compra no se
ciones de su presidente. encargado a consultoras “amigas” y crea, llegando a afirmar que en estas
En estas declaraciones, Luis Frutos que se basa en cifras aleatorias com- autonomías han llegado a perder 104
(presidente del Comité Español de putadas de manera interesada. Así millones de euros [5], como si el
BSA), acusa a una gran mayoría de vuelven a conseguir que los números beneficio que se genera con la venta
usuarios, mencionando expresa- justifiquen sus campañas de descré- de software propietario revirtiera en
mente a extremeños y andaluces, de dito contra el software libre. su totalidad en los habitantes de
cometer la ile- dichas comunidades.
galidad de usar La asociación Andalibre [6], la
software pirate- Asociación de Empresas de Software
ado. Y no con- Libre de Andalucía, ha denunciado
tento con acu- las declaraciones del señor Frutos
sar sin funda- con una esclarecedora nota de
mentos al 60% prensa [7] y promueve su propia
de la población campaña de “Legal y Rentable” que
andaluza y incide en la rentabilidad y la seguri-
extremeña, dad legal de informatizar una
declara que el empresa con software libre, en una
sistema opera- posición diametralmente opuesta a
tivo Linux es la de la BSA. ■
“una vía de
entrada para RECURSOS
software
[1] Declaraciones de Luis Frutos: http://
pirata” [1].
www.abcdesevilla.es/20081118/
También hace
andalucia-actualidad/
referencia a la
andalucia-comunidad-pirateria-infor
campaña que se
matica-200811181416.html
está empren-
diendo para [2] Metodologia del 2007: http://global.
que incluyan en bsa.org/idcglobalstudy2007/studies/
la polifacética methodology_globalstudy07.pdf
“educación para la ciudadanía” un Desde un punto de vista mercado- [3] Web de la BSA: http://w3.bsa.org/
tema en el que se hable de su parti- técnico, es perfectamente lógico: las espana/
cular visión de los derechos de autor. dos comunidades mencionadas en [4] Ahorro de costes en Andalucia:
En Linux Magazine nos ha sido sus declaraciones son (casualmente) http://www.softwarelibre.net/
imposible acceder a la fuente original en las que más inversión e implanta- category/andalucia
de la noticia (bien porque el estudio ción de software libre se ha realizado [5] Reducción en la creación de riqueza
no se halla disponible o bien porque en los últimos años, cosa que a una (según la BSA): http://www.
directamente no existe, no lo sabe- empresa que representa los intereses europapress.es/extremadura/
mos), sí habiendo conseguido encon- de los principales fabricantes de soft- noticia-extremadura-situa-segunda-r
trar la metodología del estudio que ware propietario no interesa dema- egion-pirateria-software-tasa-57-cien
se usó para elaborar el informe del siado. El software libre ha permitido to-bsa-20081119124239.html
año anterior, el del 2007 [2], algunas un ahorro de 180 millones de euros
[6] Web de Andalibre: http://www.
de cuyas premisas son, como poco, desde su implantación a la comuni-
andalibre.org/
bastante discutibles desde el punto dad autónoma andaluza [4], dinero
de vista estadístico. En la propia que han dejado de percibir los clien- [7] Andalibre denuncia las declara-
página web de la BSA [3] y a día de tes de la BSA. Con estos datos sobre ciones de Frutos: http://andalibre.
hoy no aparece ninguna noticia pos- la mesa se empieza a vislumbrar la org/prensa/
terior a mayo del 2008 ni ninguna razón de este ataque. 20081121-respuestaPirateriaBSA.pdf

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


Acceso Inteligente • PORTADA

Técnicas para gestionar la identidad de los usuarios en Linux

ACCESO
INTELIGENTE
Posiblemente la seguridad de las contraseñas no sea perfecta, pero la mayoría de las redes dependen de ella.

Este mes examinaremos algunas herramientas para una autenticación más versátil e inteligente.

POR JOE CASAD

ras años de constante innovación la integración con tecnologías propieta- y LDAP, y mostraremos cómo crear una

T de alta tecnología, la contraseña


se mantiene como una caracterís-
tica fundamental de la mayoría de las
rias. Nuestro siguiente artículo describe
cómo el servicio Windbind de Samba
permite a los clientes Linux participar en
solución de autenticación a medida en
Perl.
En el último artículo describiremos
redes. Diversas herramientas nos permi- entornos de Directorio Activo de Micro- cómo utilizar el servicio OpenID como
ten consolidarlas, cifrarlas, sanearlas y soft. un único sistema de autenticación para
sincronizarlas, pero a no ser que nuestra También revisaremos algunas opcio- múltiples cuentas web. Continúe leyendo
compañía invierta masivamente en tarje- nes para crear páginas protegidas para descubrir algunas técnicas estupen-
tas inteligentes o en cualquier otra tecno- mediante contraseña en sitios web. Vere- das para la gestión de identidades de
logía de la nueva era, tendremos que mos cómo el servidor Apache maneja la usuario en Linux. ■
ingresarla en algún sitio de tanto en autenticación, examinaremos alternati- ■
tanto. Este mes veremos algunas técni- vas para la autenticación basada en SQL
cas para permitir, asegurar y simplificar
la autenticación de usuarios en Linux.
Nuestro primer artículo examina algu-
nas herramientas para la autenticación
de usuarios con contraseñas de un solo
uso. Aprenderemos por qué muchas
organizaciones prefieren cambiar de
contraseña cada vez que se ingresa al
sistema. A continuación echaremos un
vistazo a OPIE y OTPW, un par de solu-
ciones de código abierto para autentica-
ción mediante contraseñas de un solo
uso.
Es probable que muchos usuarios de
Linux no hayan pensado nunca en
Microsoft, pero parte de nuestra misión
es ofrecer a nuestros lectores el conoci-
miento de las herramientas libres y de
fuentes abiertas que permitan fácilmente

EN PORTADA
Contraseña de usar y tirar . . . . . . . . . .18

Active Directory . . . . . . . . . . . . . . . . . .25

OpenID . . . . . . . . . . . . . . . . . . . . . . . . .31

Autenticación Web . . . . . . . . . . . . . . . .34

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


PORTADA • Contraseñas de Usar y Tirar

Autenticación segura con contraseñas de un solo uso

Nikolay Okhitin, Fotolia


USAR Y TIRAR
Una contraseña de un solo uso no compromete la seguridad si cae en manos equivocadas. Opie y OTPW lle-

van la seguridad de las contraseñas de un solo uso a Linux. POR UDO SEIDEL KARSTEN REICH

A
pesar del auge de la biometría, las Incluso si un atacante rastrea una con- mediante un método conocido por
contraseñas siguen siendo los traseña en ruta hacia el servidor de ambas partes.
medios de autenticación más autenticación, la contraseña será inútil.
populares. En ambientes hostiles, usua- Para que funcione una contraseña de un Técnicas
rios renegados intentan rastrearlas o cap- solo uso el cliente debe tener algún Los expertos en seguridad han desarro-
turarlas. Estos intentos pueden frustrarse medio para determinar qué contraseña llado varias técnicas para generar contra-
mediante las contraseñas de un solo uso. va a utilizar, y el servidor debe saber señas de un solo uso. Algunos métodos
Una contraseña de un solo uso se vuelve qué contraseña esperar. A continuación obtienen la nueva contraseña a partir de la
obsoleta después de ser usada. el cliente calcula una respuesta manipulación matemática de la contra-

Listado 1: Inicializando OPIE


01 # opiepasswd exit with no password. Then 16 Using MD5 to compute
02 Adding root: run opiepasswd without the -c responses. Enter new secret
parameter.
03 You need the response from an pass phrase: Again new secret
OTP generator. 11 Sorry, but you don’t seem to
pass phrase:
be on the console or a secure
04 New secret pass phrase:
terminal. 17
05 otp-md5 499 te3049
12 # opiepasswd -cf 18 ID root OTP key is 499 te5843
06 Response:
13 Adding root:
19 DANG TOOK HUNT GYM HICK PAW
07 ^C
14 Only use this method from the
08 # opiepasswd -c 20 # cat /etc/opiekeys
console; NEVER from remote.
09 Añadiendo root: If you are using telnet, 21 root 0499 te5843
10 Only use this method from the xterm, or a dial-in, type ^C 6f1dba738c197a64
console; NEVER from remote. If now or exit with no password.
Then run opiepasswd without 22 Feb 16,2008 05:42
you are using telnet, xterm,
or a dial-in, type ^C now or 15 the -c parameter.

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


PORTADA • Contraseñas de Usar y Tirar

seña anterior; o a partir de la manipula- como medida de seguridad. Si prefiere evi-


ción matemática de la hora actual. Otra tarse el esfuerzo y el gasto de los testigos
técnica, conocida como desafio-respuesta, hardware, también se puede utilizar una
comienza con el envío por parte del servi- solución basada únicamente en software.
dor de un número aleatorio al cliente. Los sistemas de contraseñas de un solo
Después éste calcula una respuesta utili- uso basados en software han existido
zando un proceso que es conocido por desde hace varios años y han sido consa-
ambas partes. grados en varios RFCs de Internet. El sis-
Por supuesto, un atacante que rastree tema S/Key , que fue desarrollado en 1995
un par de estos desafíos y las respuestas por Bellcore, está definido en el RFC 1760.
teóricamente podría descubrir el método. S/Key originalmente se basó en el cifrado
Esta técnica de criptoanálisis, que a MD4. Su sucesor, OTP, que está especifi-
menudo se llama texto conocido, ha sido cado en el RFC 2289, también puede usar
descrita en varias publicaciones científi- MD5 y hashes SHA.
cas. Pero si ambas partes aplican una fun-
ción de mezcla tras calcular la respuesta, OPIE Universal
a un rastreador le resultará mucho más Figura 1: El Digipass Pro 300 de Vasco se Un par de proyectos de fuentes abiertas,
difícil descubrir el valor original. El resul- basa en el enfoque desafío-respuesta. El conocidos como OPIE [3] y OTPW [4] pro-
tado es muy parecido a un número aleato- usuario teclea el desafío mediante el teclado porcionan herramientas para contraseñas
rio. del testigo y la respuesta aparece en el visor. de un solo uso para Linux. La implemen-
Es complicado realizar este tipo de cál-
culos de cabeza, de modo que los usua- electrónico llamado testigo, semejante a Listado 3: Login SSH con
rios emplean a menudo un dispositivo una calculadora de bolsillo. Las Figuras 1 OPIE
y 2 muestran ejemplos de algunos testigos 01 $ ssh
Listado 2: pam_opie.so populares. Otra opción es configurar un
root@rechner.example.com
teléfono móvil o una PDA con el software
01 ...
necesario para que funcionen como un 02 otp-md5 498 te5843 ext
02 auth sufficient pam_opie.so
testigo basado en hardware. 03 Respuesta:
03 # Se tiene que dejar esta
04 # cat /etc/opiekeys
línea si se está probando Soluciones Basadas en
OPIE: Software 05 root 0498 te5843
04 auth sufficient pam_unix.so Evidentemente, los testigos son relativa- 2b84befd37cacb9f

05 nullok try_first_pass
mente caros; además, a menudo la tecno- 06 Feb 16,2008 05:58
logía está patentada o bien los mecanis-
06 ... 07 #
mos internos no son totalmente revelados

Comprendiendo S/Key y OTP


Una contraseña de un solo uso consiste Al usuario que quiera autenticarse con- entrada como TUSK JOIN ROBE HUNK
en un servidor y un generador. Los usua- tra el servidor se le envía la semilla y la HAVE CARL en la representación de bit
rios están obligados a autenticarse con- cifra n-1 (Figura 4). El generador local interna.
tra el servidor, y el generador calcula la ayuda al usuario a calcular la contraseña
Con OTP se suministran la bases del
contraseña de un solo uso para este fin. de un solo uso. Este cálculo es básica-
cifrado, es sólo una cuestión de integrar
Las bases matemáticas son proporcio- mente el mismo que el que se realizó en
esta estructura con los distintos progra-
nadas por funciones de mezcla (hash) o el lado del servidor durante la inicializa-
mas de autenticación en Linux. Estos
algoritmos irreversibles: S/Keys utiliza ción, con la diferencia de que la mezcla
programas incluyen login y sudo, los
MD4 y OTP utiliza MD$, MD5 y SHA. El sólo se ejecuta n-1 veces.
gestores de sesión tales como xdm, kdm
algoritmo se asegura de que un atacante EL usuario envía el resultado al servidor,
y gdm, o servicios externos tales como
no pueda deducir la siguiente contra- el cual, tras mezclar la cadena de entrada
el daemon SSH o servidores FTP. Linux
seña con sólo conocer la anterior. una vez, más compara el resultado con
utiliza Pluggable Authentication Modu-
Los usuarios necesitan inicializar el sis- la contraseña de un solo uso almace-
les (PAM, [5]) para suministrar una inter-
tema OTP en el lado del servidor para nada. Si las dos mezclas coinciden, todo
está bien; el servidor almacena la OTP faz estandarizada.
elegir una contraseña. El servidor añade
semillas al azar, o definidas por el usua- que le han pasado, en lugar de la OTP Si se utilizan contraseñas de un solo uso
rio, a la cadena de la contraseña (Figura original y decrece n en uno. para la autenticación, será necesario
3) y mezcla la cadena resultante n veces Desde el punto de vista técnico, las con- añadir una línea a la sección auth de la
para generar la primera contraseña de traseñas manejadas por OTP son de 64 configuración PAM. La bandera de con-
un solo uso. Finalmente, el servidor bits. Sin embargo, los usuarios pueden trol necesario depende de la pila auth y
almacena el nombre del usuario, la introducirlas en el formato de palabras de cómo se desea que se comporte el
semilla, la cifra n y la OTP. cortas. Un programa convertirá una sistema.

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


PORTADA • Contraseñas de Usar y Tirar

espera una OTP. Para evitar el


Listado 4: Creando 3 OTPs con problema del huevo y la
Pluggable Authentication
opiekey gallina, los usuarios deben Modules (PAM)
01 # opieinfo declarar (mediante la opción PAM define cuatro categorías para el
-c) que están trabajando en proceso de autenticación: auth,
02 497 te5843
account, password, y session. La cate-
03 # opiekey -5 -n 3 `opieinfo` una consola segura (véase la
goría auth se ocupa de autenticación
línea 10 en el Listado 1).
04 Using the MD5 algorithm to compute en sí misma, mientras que password
Si la orden pilla al usuario
response. define cuándo y cómo puede cambiar
mintiendo, se negará a coo-
un usuario su contraseña. PAM utiliza
05 Reminder: Don’t use opiekey from telnet perar. Los usuarios que se
account para la gestión de acceso
or dial-in sessions. Sorry, but you tomen muy en serio la seguri- basada en la cuenta de usuario y ses-
don’t seem to be on the dad deben evitar la opción-f sion para manejar el entorno configu-
06 console or a secure terminal. (Línea 12), que hace caso rado.
07 Warning: Continuing could disclose your
omiso de la advertencia pos-
PAM tiene una selección de varios
secret passphrase to an attacker!
terior.
modelos en cada categoría y los orga-
Tras completar la inicializa- niza en una pila. Cada módulo está eti-
08 Enter secret pass phrase:
ción, se añade una entrada de quetado con una bandera de control.
09 495: MUSH ACT GRIM SEE MAID LIES usuario al archivo /etc/opie- Este enfoque permite al administrador
10 496: HAD FED WORD ROY STAB ACID keys. Este archivo también definir la manera en que PAN reacciona
11 497: IO INK RIG DAME RULE TUM
contiene la semilla (te5843 en al procesado satisfactorio o no satisfac-
este caso), la mezcla torio de un módulo. Existen las
12 #
(6f1dba738c197a64), la siguientes banderas: required, requi-
recién generada contraseña site, sufficient y optional. Si falla un
Listado 5: Deshabilitando OPIE para de un solo uso y la secuencia modulo marcado como required,
un Usuario numérica (499 en este ejem- requisite o sufficient, el proceso com-
plo ; línea 18). pleto de autenticación falla. Si el
01 user1@rechner$ opiepasswd -d
Para generar más tarde una módulo está marcado como requisite,
02 Updating user1:
contraseña de un solo uso PAM detiene el procesado de la pila de
03 Disable user1’s OTP access? (yes or no) inmediato.
válida, el usuario necesita su
yes
propia contraseña, la semilla Después de procesar satisfactoria-
04 ID user1 is disabled.
y la secuencia numérica. No mente un módulo marcado como
05 user1@rechner$ su - required, requisite u optional, la biblio-
hay necesidad de memorizar
06 Passwort: teca PAM continúa con el siguiente.
todo esto, excepto la contra-
07 # grep user1 /etc/opiekeys PAM considera que la categoría se ha
seña del usuario. Las otras
08 user1 0359 te2880 ***** Feb 16,2008 08:37 procesado satisfactoriamente si está
dos credenciales son suminis-
09 # marcada como sufficient
tradas y mostradas por el ser-
vidor.
tación en Linux del software líder OTP tiene capacidad OTP. Algunos servicios,
llega por cortesía del proyecto OPIE (One- Red Segura tales como el daemon SSH, seguirán nece-
Time Password in Everithing). El siguiente paso es integrar el mecanismo sitando alguna atención manual antes de
OPIE es fácilmente instalable desde los de autenticación con la pila PAM (véase el que comience a utilizar contraseñas de un
paquetes que existen para muchas distri- Listado 2). Los módulos pam_unix o solo uso. En el caso de SSH, se necesita la
buciones y fácilmente compilable desde el pam_unix2 hacen la mayoría del trabajo. siguiente línea en el archivo de
código fuente. La instalación añade capa- Estos módulos están etiquetados con una configuración del servidor
cidades OTP a los programas login, su y bandera de control sufficient, pero como /etc/sshd/sshd_config:
ftpd, así como la librería pam_opie.so, una se quiere sustituir la librería pam_unix.so
serie de herramientas y la configuración o pam_unix2.so con la librería ChallengeResponseAuthenticationU
/etc/opiekeys. pam_opie.so, se ha de modificar la yes
El primer paso es inicializar el sistema configuración de acuerdo a
OTP (véase el Listado 1). Los usuarios esto.
pueden gestionar este paso por sí mismos Debe tenerse en cuenta que
mediante el ingreso al sistema y ejecu- es posible configurar el sistema
tando la orden opiepasswd (Línea 1). A a fin de que, si por cualquier
primera vista el resultado puede parecer motivo OPIE falla, los usuarios
confuso (Línea 3); por omisión, la herra- puedan seguir utilizando sus
mienta asume que el usuario no ha ingre- contraseñas anteriores para
sado al sistema localmente en la consola. autenticarse. Figura 2: El Secur-ID-Token SID700 de RSA/EMC codi-
Dado que el tráfico de la red es a Una vez modificada la fica la hora del día actual en una clave interna. El visor
menudo rastreable e inseguro, opiepasswd configuración PAM, el sistema muestra un PIN diferente cada minuto.

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


Contraseñas de Usar y Tirar • PORTADA

El Listado 3 muestra un ingreso SSH utili- tanto, niega al usuario


zando OPIE. Tras una autenticación satis- la entrada al sistema
factoria, OPIE actualiza el archivo (Véase el Listado 5). El
/etc/opiekeys, añadiendo la nueva secuen- sistema sobreescribe la
cia numérica y la mezcla de la última con- mezcla de la contra-
traseña utilizada. seña con una serie de
asteriscos (*), aunque
Sembrando y Cosechando la secuencia numérica Figura 3: Al comenzar, el generador envía una contraseña al servi-
Los usuarios necesitan opiekey para gene- y la semilla permane- dor. El servidor mezcla la contraseña y la semilla para calcular la
rar contraseñas de un solo uso. El genera- cen visibles. primera contraseña de un solo uso.
dor del Listado 4 espera la contraseña del
usuario, la semilla y la secuencia numé- La Alternativa OTPW RIPEMD de todas las contraseñas de un
rica actual. Para ver esta información pue- La solución basada en software OTPW no solo uso (junto con un número) en el
den ejecutar opieinfo. OPIE también tiene utiliza el método especificado por el RFC archivo .otpw bajo el directorio home del
un mecanismo que genera OTPs en el 2289, sino que se basa en una versión de usuario. El programa sobrescribe las con-
caso de que el usuario no tenga un gene- 160 bits de la mezcla RIPEMD. OTPW traseñas utilizadas con guiones, lo que
rador. Además de opiekey, existen dispo- incluye una versión modificada del pro- impide su reutilización.
nibles otros generadores. El programa grama login (demologin) y un módulo El paquete OTPW es mucho más
Java JOTP [6] funcionará en un teléfono alternativo para la integración con la pila pequeño que OPIE; el código fuente sola-
móvil que tenga capacidad Java o en un PAM. Los usuarios tienen unas contrase- mente comprende 18 archivos. Un simple
sitio Web normal, aunque el sitio web ñas publicadas en forma de lista, similar a make creará los programas demologin y
debe ser digno de confianza. Los propieta- las listas TAN heredadas publicadas por otpw-gen, así como la librería PAM
rios de una Palm pueden ejecutar Palmkey los bancos. pam_otpw.so.
[7] o Pilotp [8], y los usuarios del escrito- Cuando se autentican, los usuarios Para los sistemas Linux con PAM,
rio pueden utilizar Optcalc [9]. teclean una cadena que comprende la OTPW sólo necesita el generador
La orden opiepasswd -d deshabilita una entrada de la lista y su propia contraseña. otpw-gen y el módulo pam_otpw. El usua-
entrada de usuario en /etc/opiekeys y, por El servidor OTPW almacena los hashes rio inicializa el sistema OTPW ejecutando
PORTADA • Contraseñas de Usar y Tirar

otpw-gen (Listado 6). Tras introducir una de OTPW con sistemas


contraseña, otpw-gen crea una lista de PAM se siguen los mis-
OTPs y muestra el resultado. mos pasos que con
El parámetro -p1 le indica a otpw-gen OPIE. Según la docu-
que la salida de las OTPs esté formada por mentación, añadir esta
una lista de palabras de cuatro letras, por entrada
ejemplo:
session optional
hare lane fyfe self lucy pam_otpw.so Figura 4: Durante la autenticación, el servidor presenta la semilla
y un contador. El usuario ejecuta un generador para calcular la
Borrando el archivo .otpw se deshabilita el la cual le dice a OTPW contraseña de un solo uso y la devuelve al servidor para que la
uso de las contraseñas de un solo uso para que indique cuántas valide.
la cuenta. OTPs quedan para
Es lógico imprimir la lista. Los usuarios ingresar al sistema. Esta orden no fun- Cuando un usuario intenta ingresar en
son responsables de hacer el seguimiento cionó en nuestro laboratorio. Los pasos el sistema, OTPW crea un enlace simbó-
de cuantas contraseñas de un solo uso para el daemon SSH son similares a los lico para .otpw.lock en el directorio home
conserven. dados para OPIE. del usuario. Si el usuario cancela el
Si se desea ahorrar papel, hay que veri- Los usuarios crean la contraseña de un intento de registro pulsando Ctrl+C, el
ficar el contenido de .otpw cuando se solo uso concatenando sus contraseñas de enlace simbólico se mantiene. El usuario
ingrese al sistema. Las contraseñas usadas usuario con las cadenas de la lista gene- está bloqueado mientras el vínculo existe,
están marcadas con -. Para la integración rada por optw-gen. ya que impide el uso de OTPW.
Además de esto, OTPW normalmente
Listado 6: Configurando OTPW no permite ingresos simultáneos al sis-
tema por razones de seguridad. Según la
01 # otpw-gen -h 5
documentación del programa, en este
02 Generating random seed ... caso el usuario entra una contraseña de
03 un solo uso extendida. La OTP extendida
04 If your paper password list is stolen, the thief should not gain comprende la contraseña del usuario y
access to your account with this information alone. Therefore, you tres cadenas de la lista. No hemos podido
need to memorize and enter below a prefix password. You will have to
comprobar este comportamiento en nues-
enter that each time directly before entering the one-time password
tro laboratorio.
Las contraseñas de un solo uso son úti-
(on the same line).
les en entornos inseguros con peligro de
05 rastreo de contraseñas. Las implementa-
06 When you log in, a 3-digit password number will be displayed. It ciones OPIE y OTPW se integran fácil-
identifies the one-time password on your list that you have to mente con las distribuciones Linux más
append to the prefix password. If another login to your account is populares gracias a PAM. ■
in progress at the same time, several password numbers may be shown
and all corresponding passwords have to be appended after the RECURSOS
prefix password. Best generate a new password list w en you have [1] Digipass 300 Pro: http://www.vasco.
used up half of the old one. com/
07 [2] RSA Secur ID: http://www.rsa.com/
08 Enter new prefix password: [3] Onetime Password In Everything
09 Reenter prefix password: (OPIE): http://www.inner.net/opie

10 [4] One-Time Password (OTPW): http://


www.cl.cam.ac.uk/~mgk25/otpw.
11 Creating ’~/.otpw’.
html
12 Generating new one-time passwords ... [5] Pluggable Authentication Modules
13 (PAM): http://www.kernel.org/pub/
14 OTPW list generated 2008-03-16 10:23 on testvm3.seidelnet.de linux/libs/pam/
[6] Java OTP Calculator (JOTP): http://
15
www.cs.umd.edu/~harry/jotp/
16 000 a7Sj rWoC 001 %URK VvmD 002 EoQa sgon 003 IQhJ kVMG 004 QsS%
[7] Palmkey: http://palmkey.sf.net
H=aU
[8] Generador Pilot OTP: http://www.
17
valdes.us/palm/pilOTP/
18 !!! REMEMBER: Enter the PREFIX PASSWORD first !!! [9] Calculador OTP y S/Key para X-Win-
19 # dow: http://killa.net/infosec/otpCalc/

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


Directorio Activo • PORTADA

Autenticación en Linux para Directorio Activo con Kerberos 5

DOMINANDO AL
CERBERO

Henryart, Fotolia
El sistema de Directorio Activo de Microsoft ofrece gestión centralizada de usuarios y un registro individuali-

zado. Si estamos dispuestos a realizar ciertos pasos manualmente, podemos aprovechar con Linux todo este

potencial. POR WALTER NEU

S
on muchas las empresas en las determinado número de componentes y ponen la funcionalidad de ingreso indivi-
que por fin Linux y Windows herramientas de libre distribución, pode- dualizado y la creación automatizada de
conviven en paz. Muy a menudo, mos integrar fácilmente nuestros siste- los directorios de los usuarios en el lado
en las redes heterogéneas predominan el mas Linux en la infraestructura de Direc- del cliente.
software de oficina de Windows y los torio Activo. El ejemplo de este artículo está basado
servidores al estilo Unix. El servicio de En este artículo suponemos que se dis- en el servicio Winbind del proyecto
Directorio Activo, que introdujo Micro- pone de un servidor de Directorio Activo Samba y en Kerberos 5 para la autentica-
soft con Windows 2000 Server, se suele que gestiona una estructura de dominio ción. Por supuesto, Kerberos no lo inven-
usar para la gestión centralizada de completa bajo Windows. Partiendo de taron los ingenieros de software de Red-
información de usuarios. aquí, mostraremos cómo configurar mond; Microsoft adoptó este método de
Linux suele hacer uso del típico sis- nuestros clientes Linux para autenti- autenticación del mundo Linux. Kerbe-
tema de /etc/passwd o de una solución carse, acceder y hacer uso de la infraes- ros fue desarrollado originalmente en el
distribuida tal como NIS o LDAP, pero si tructura del dominio. El plato fuerte de MIT (Massachusetts Institute of Techno-
estamos interesados en configurar un este menú sobre gestión y registro lo logy) en los años 80. Tanto el proyecto

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


PORTADA • Directorio Activo

Figura 1: Kerberos es un servicio de autenticación por red por tickets Figura 2: La autenticación en Kerberos es sofisticada a la vez que
basado en secretos compartidos. En la arquitectura de Kerberos flexible: un cliente envía una petición de TGS al KDC(1) y recibe un
todos los componentes pertenecen a la zona Kerberos. El corazón de ticket temporal(2). El ticket autoriza al cliente a pedir(3) más tickets,
la zona son la base de datos y el KDC (Key Distribution Center). Los esta vez para los servicios de red kerberizados(5), sin que sea nece-
componentes principales del KDC son el AS y el TGS. sario volver a introducir contraseñas.

libre Heimdal [1] como la aplicación de introducir la clave a la hora de recibir el usuario, la cifra, y guarda el hash en la
referencia del MIT [2] ofrecen un soporte TGT. base de datos principal. El programa de
completo para Kerberos 5. Shishi [3] es login, o el kinit, calcula la clave secreta a
otra implementación libre. ¡Sus Tickets, por Favor! partir de la contraseña introducida por el
El programa de login va pidiendo el TGT usuario y descifra el TGT. La contraseña
Secretos Bien Guardados a los clientes (ver Figura 2). Alternativa- nunca se transmite sin haber sido cifrada
Kerberos es un servicio de autenticación mente, el kinit puede realizar una peti- previamente.
por red basado en tickets que dependen ción después de que el usuario haya Cuando el usuario necesita acceder a
de secretos compartidos. El sistema ingresado. El AS busca en el Directorio un servicio kerberizado de una red, pre-
guarda un área, denominado zona, que Activo al principal que hace la petición. senta su TGT al TGS y pide un ticket para
puede incluir varios clientes y servicios. Cuando el AS encuentra al principal, el servicio en cuestión. El TGS le propor-
En este ejemplo, tanto los clientes envía un TGT. ciona el ticket en segundo plano. Ahora
como un número determinado de servi- Entonces el AS cifra el TGT con la que el cliente dispone de su ticket para el
cios, como el de archivos, se ejecutan clave del principal y devuelve el hash a servicio, puede hacer que el usuario
bajo Linux. Windows maneja los servi- la entidad que hace la petición. Si la enti- ingrese automáticamente en el servicio
cios de directorio y autenticación a tra- dad que hace la petición es un cliente, el solicitado sin que sea necesaria ninguna
vés del KDC (Key Distribution Center). KDC extrae la clave de la contraseña del contraseña.
El KDC es un componente central en Los tickets de Kerberos tienen un
Kerberos (Figura 1) que comprende el Listado 1: /etc/kr5b.conf tiempo de vida limitado. El problema del
AS (Servidor de Autenticación) y el TGS tiempo hace imprescindible la sincroni-
01 [libdefaults]
(Ticket Granting Server).028-034_ad- zación de la hora del sistema de todas las
pam 02 default_realm = máquinas de la zona. El servidor Kerbe-
Al inicio de cada sesión, cada miem- KDC.EJEMPLO.ORG ros se negará a proporcionar un ticket
bro (o el principal) de la zona demuestra 03 dns_lookup_realm = false inicial a cualquier máquina desincroni-
su autenticidad sólo una vez. Para zada en más de cinco minutos.
04 dns_lookup_kdc = false
hacerlo, el principal pide un TGT inicial Aunque podamos cambiar el tiempo
(Ticket Granting Ticket) al AS. Usará este 05 [realms] máximo a través del cliente Kerberos o el
ticket para las peticiones al TGS de los 06 KDC.EJEMPLO.ORG = { servidor de Directorio Activo, lo más
posteriores tickets de servicio. 07 kdc = w2k.kdc.ejemplo.org lógico es instalar un servidor de hora
Cuando en Kerberos hablamos de ti- central con el que sincronizar a los clien-
08 default_domain =
cket nos estamos refiriendo a una cre- tes.
dencial electrónica. Una vez el principal KDC.EJEMPLO.ORG Los clientes deben, además, ser capa-
ha recibido una credencial, se le garan- 09 } ces de resolver el nombre de DNS del
tiza el acceso a las aplicaciones “kerberi- 10 [domain_realm] servidor Kerberos. Si fuese necesario,
zadas” que requieran de una prueba de podríamos añadir una entrada en el ser-
11 .ejemplo.org =
identidad sin necesidad de introducir vidor de nombres central o simplemente
una clave. Los usuarios sólo tienen que KDC.EJEMPLO.ORG mantener el archivo estático /etc/hosts

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


Directorio Activo • PORTADA

de cada sistema implicado en el inter- sección [domain_realm] define el enlace Directorio Activo con la configuración
cambio. a nombre de dominio/zona en la librería necesaria para Winbind.
de Kerberos. Si queremos que la librería El parámetro security = ads de la línea
Instalación de Kerberos de Kerberos establezca una conexión con 5 indica a Winbind que no ha de buscar
Después de atender los requerimientos un host remoto, ésta necesitará conocer la contraseña en la base de datos local,
relacionados con el tiempo y la resolu- la zona en el que reside el host. Las sino que debe enviar la petición al con-
ción de nombres, ya podemos pasar a entradas que comienzan por un punto trolador de dominio del Directorio
instalar Kerberos en nuestros clientes asignan todos los hosts con el siguiente Activo. El controlador de dominio decide
Linux desde los paquetes de nuestra dis- sufijo a la zona especificada. Para asegu- entonces si la contraseña es legítima o
tribución. Para la versión del MIT en rar unas comunicaciones libres de pro- no.
debian instalaremos los paquetes krb5- blemas con el servidor Kerberos, es En caso de tener un controlador de
user y krb5-config desde los repositorios importante usar mayúsculas para los dominio de DA Windows 2003, tendre-
o, en caso de usar Fedora, instalaremos nombres de las zonas. mos que incluir clientschannel = no en
krb5-workstation y krb5-auth-dialog. Haciendo uso de esta configuración, la sección [global]. Antes de que el
Como alternativa, podríamos compilar podemos probar las comunicaciones con cliente se convierta en un miembro del
las fuentes proporcionadas por el MIT. el servidor kerberos. El comando kinit dominio, el administrador le dice (en la
Para configurar Kerberos, modifica- pide el TGT. Si no se especifica ningún línea 6) a qué zona de Kerberos perte-
mos el archivo /etc/kr5b.conf. El Listado parámetro más, el programa intenta nece el principal.
1 muestra una configuración mínima, afianzar un TGT para el principal con el
aunque funcional, del paquete del MIT; mismo nombre del usuario ingresado. Gestión Centralizada de
los clientes la necesitarán para estable- Para que esto ocurra, el usuario sólo Usuarios
cer una conexión con el servidor Kerbe- deberá introducir la contraseña una vez. Ser miembro de un dominio sólo elimina
ros. Las otras implementaciones de Ker- El programa kinit envía entonces una la necesidad, por parte del sistema
beros emplean más o menos la misma petición TGT sin cifrar al servidor de Linux, de gestionar las contraseñas, pero
sintaxis. autenticación; la petición contiene, entre
otras cosas, el nombre del principal. La Listado 3: smb.conf
Creación de Zonas respuesta enviada al cliente contiene el 01 [global]
La línea default_realm (zona predetermi- TGT cifrado, que kinit descifra para
02 ; Samba como miembro del
nada) de la sección [libdefaults] define almacenar localmente.
dominio
una zona llamada KDC.EJEMPLO.ORG La salida del comando klist del Listado
como el predeterminado para las aplica- 2 incluye los datos de validación del TGT 03 workgroup = kdc
ciones Kerberos. En caso de estar usando recién enviado. Si la salida del comando 04 password server =
varias zonas, podemos añadir otra expre- muestra el ticket, podemos suponer que srv.kdc.ejemplo.org
sión a la sección [realms] (zonas). La la configuración del ciente Linux está 05 security = ads
completa. Para eliminar el TGT de
06 realm = KDC.EJEMPLO.ORG
Listado 2: klist Mostrando prueba usamos kdestroy.
07 encrypt passwords = yes
los Tickets
01 $ klist
Pertenencia 08
El siguiente paso consiste en añadir el 09 ; no se es el maestro de la
02 Ticket cache:
cliente Linux como miembro del domi- red Windows
FILE:/tmp/krb5cc_1000
nio del Directorio Activo. Para ello nece-
03 Default principal: 10 local master = no
sitamos la versión 3.0.14a de Samba o
user@KDC.EJEMPLO.ORG posterior, y el paquete del programa 11 os level = 20
04 Winbind para la gestión centralizada de 12 domain master = no
usuarios en Windows y Linux. Winbind 13 preferred master = no
05 Valid starting Expires
hace uso de una implementación Unix
Service principal 14
de las llamadas RPC de Microsoft, los
06 03/17/08 11:10:27 03/17/08 15 ; Configuración de Winbind
módulos PAM (Pluggable Authentication
21:10 krbtgt/
Modules) y NSS (Name Service Switch) 16 winbind separator = +
KDC.EJEMPLO.ORG@KDC.EJEMPLO.O
para que los usuarios de clientes Linux 17 idmap gid = 10000-20000
RG puedan ingresar en el dominio Windows
07 renew until 03/18/08 18 idmap uid = 10000-20000
y trabajar como usuarios locales.
11:10 La configuración de Samba se realiza a 19 template shell =
08 través del archivo smb.conf, que normal- /bin/bash
mente se encuentra bajo el directorio 20 template homedir =
09 Kerberos 4 ticket cache:
/etc/samba/. En el Listado 3 mostramos /home/%D/%U
/tmp/tkt1000
una configuración completa a modo de 21 winbind enum users = yes
10 klist: You have no tickets ejemplo con la que implementamos un
cached 22 winbind enum groups = yes
servidor miembro de un dominio de

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


PORTADA • Directorio Activo

bres de usuario. Win- Directorio Activo. La transacción se com-


bind ofrece la opción pleta con el comando net ads, que es
winbind use default parte de la distribución de Samba (ver
domain = yes de la Figura 4). El usuario del dominio, que en
Figura 3: Debido a que el servidor de SSH identifica a más de una sección [global] del este caso es Administrador, debe estar
zona, el usuario wane000 necesita el prefijo de dominio ESDB. Los archivo de autorizado para añadir al dominio la
dos nombres van separados por el carácter +. configuración. Este máquina Linux. net nos insta a introdu-
parámetro le dice a cir la contraseña del usuario autorizado
no evita que tengamos que validar la Linux que haga uso de los nombres de y, en caso de ser la correcta, crea la
entrada de los usuarios. Los usuarios de usuario del Directorio Activo sin el domi- cuenta en el controlador del dominio. A
dominios son, en este momento, algo nio. En caso de no incluirlo tendremos partir de ese momento el cliente Linux
desconocido para el sistema. Los siste- que añadir un prefijo de nombre de ya es un miembro, en toda regla, de ese
mas operativos al estilo Unix necesitan el dominio a los usuarios del dominio ser- Directorio Activo.
demonio winbindd para asegurar la visi- vidos por Winbind (ver Figura 3). Para comprobar que la conexión con el
bilidad. El programa de la suite Samba En esta situación el sistema Linux es controlador de dominio funciona correc-
hace uso de NSS (Name Service Switch) incapaz de convertir los nombres de tamente, ejecutamos la herramienta de
para la resolución de las identidades de usuario y grupo de dominio a sus corres- diagnóstico wbinfo. Esta herramienta es
los usuarios de dominios y presentarlos pondientes PID (User Identification)y GID parte del paquete Winbind. El parámetro
a Linux como si fuesen credenciales (Group Identification). Aún así se trata de -u le dice al comando que liste todos los
locales. algo imprescindible, ya que Linux no usa usuarios del dominio:
Mientras se encuentra en ejecución nombres internamente, sino que usa UIDs
transfiere temporalmente todos los usua- y GIDs. Por ejemplo, el comando ls ana- KDC+wneu
rios y grupos del Directorio Activo al sis- liza el inodo de un archivo para averiguar KDC+mkreis [...]
tema Linux. Con esto se reduce sustan- el UID de su propietario y traduce este
cialmente la gestión de usuario. La valor a un nombre antes de mostrar la El dominio que estamos usando aquí se
configuración de Winbind se realiza a información por pantalla. llama KDC. El nombre de dominio va
través del archivo smb.conf, en la sec- Linux hace uso de una API universal, seguido por el símbolo configurado
ción [global] (líneas 15 a 20). NSS, para la correspondencia de nom- como separador de winbind, + en este
La instrucción workgroup = kdc de la bres. NSS busca en el archivo /etc/ caso, y por el nombre de usuario. Ahora
línea 3 es especial: Samba usa work- passwd o, suponiendo que se tenga car- Linux ya reconoce los nombres propor-
group para definir tanto un grupo de tra- gado el módulo necesario, hace una peti- cionados por el Directorio Activo, y pue-
bajo como un dominio. El programa ción al servidor de Directorio Activo. den ingresar en el sistema. Los grupos
decide en una fase posterior del proceso Esta posibilidad nos permite listar los definidos en el Directorio Activo se pue-
de configuración de qué se trata. El usuarios y grupos de la zona de un servi- den obtener mediante el comando
dominio de DA se almacena con sintaxis dor de DA como si se tratase de cuentas wbinfo -g:
de NT4; dicho de otra manera, si tene- de usuario locales. Para ello tenemos que
mos un dominio kdc.ejemplo.org, Samba añadir el servicio de nombres winbind a KDC+accounts
espera que como workgroup especifique- las bases de datos passwd y group al KDC+asp [...]
mos kdc. archivo de configuración central /etc/
El parámetro de la línea 6 se encarga nsswitch.conf: Para tener una vista general de todos
de la configuración de la zona; normal- los usuarios del dominio y las bases de
mente se trata de nombre de DNS del passwd: files winbind datos locales usamos getent passwd o
controlador del dominio, pero en mayús- group: files winbind getent group. La salida es similar al
culas – o sea, KDC.EJEMPLO.ORG en contenido de /etc/passwd y /etc/group.
este caso. Con estas líneas le decimos al servicio de Luego comprobamos si Linux es
nombres que comience por buscar en los capaz de identificar los nombres de
Separación archivos locales, como /etc/passwd, usuario y grupo de nuestro Directorio
El carácter que separa el dominio del antes de contactar con winbindd. Si ade- Activo: El hecho de que el administra-
nombre de usuario en Windows es la más estamos usando NIS, podemos dor del sistema Linux pueda definir
barra invertida \, que para la terminal poner compat en lugar de files. como nuevo propietario o grupo de un
tiene un significado especial. Para evitar Aún se nos queda algo por hacer si archivo del sistema de archivos local a
conflictos, el administrador debería defi- pretendemos que las cosas entre Linux y un usuario o grupo del Directorio
nir como separador en winbind, de el Servicio de Directorio Activo de Win- Activo, significa que todo va bien.
forma que no se trate de un metacarácter dows salgan bien, y es que la máquina Dependiendo del parámetro winbind
de la terminal, el signo de suma +, Linux ha de hacerse miembro del domi- use default domain de la configuración
como se muestra en la línea 16 del Lis- nio para que éste le envíe la información de Samba, root puede especificar el
tado 3. sobre sus grupos y usuarios. propietario como Dominio+Usuario y
Si sólo tenemos un dominio, no nece- El parámetro security = ads de la línea el grupo como Dominio+Grupo (Lis-
sitamos separar el dominio de los nom- 5 convierte a Samba en miembro del tado 4).

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


Directorio Activo • PORTADA

Configuración los usuarios son quienes dicen ser


Individualizada (líneas 2 y 3). PAM pide una contraseña
El módulo no sólo maneja el al usuario una sola vez y Kerberos com-
login basado en Kerberos, prueba las credenciales (línea 2). Si este
sino que hace de forma trans- paso finaliza correctamente, entonces
Figura 4: Para añadir a la máquina local como miembro del parente la petición del TGT al pam_krb5.so pide un TGT con un bit que
dominio estándar, el usuario del Controlador de Dominio Servidor de Autenticación. indica el permiso para ser direccionado,
(DC) necesita privilegios de administración. Después de Para que funcione hay que para usar el ticket con un sistema
introducir la contraseña, el DC añade el nuevo usuario al modificar varias configura- remoto.
dominio. ciones en el directorio /etc/ Si sale bien, el proceso de autentica-
pam.d/. ción considera que con pam_krb5.so
Unimos Kerberos y PAM Cada aplicación que requiere autenti- basta y termina por no procesar ningún
El siguiente truco consiste en la integra- cación y usa PAM necesita su propio módulo más.
ción de Kerberos, los usuarios de domi- archivo bajo /etc/pam.d/. Las distintas
nio del Directorio Activo y el meca- distribuciones tienden a organizar la Una Segunda Oportunidad
nismo de login de Linux. Formalmente, configuración de modos ligeramente Si la autenticación falla, PAM llama al
cada uno de estos servicios espera que diferentes, importando algunas archivos segundo módulo, pam_unix.so, para
los usuarios se identifiquen, y aplicar compartidos. Entre las líneas de estos comprobar si la cuenta de usuario existe
cada uno de ellos sus propios mecanis- archivos se incluyen el tipo, una bandera localmente (línea 3). Aunque PAM no
mos de autenticación y autorización de control, una ruta al módulo en cues- pueda llegar hasta el servidor de autenti-
para garantizar el acceso a los servicios tión y unos argumentos opcionales sepa- cación, aún puede ingresar root. El argu-
proporcionados. PAM (Pluggable rados por espacios en blanco (ver Lis- mento use_first_pass para el módulo
Authentication Modules) ofrece una tado 5). Fedora usa la herramienta auth- indica que el segundo método de auten-
interfaz unificada para dicha autentica- config, OpenSUSE emplea YaST para ticación reutiliza la contraseña introdu-
ción integrada [4]. manipular la configuración de PAM, cida por el usuario en lugar de volver a
Cambiar el método de autenticación mientras que los usuarios de Debian tie- pedirla. Gracias a nullok_secure no es
de PAM implica que también se tengan nen que arrancar su editor favorito y necesario definir ninguna contraseña en
que cambiar y servir ciertos módulos a modificar manualmente los archivos. el archivo passwd local. Aunque se
los que puedan tener acceso todos los pueda ingresar con una contraseña en
programas. Dicho de otro modo, PAM Sección a Sección blanco, sólo se podrá hacer desde las ter-
añade una capa de abstracción entre la Los archivos de configuración están divi- minales especificadas en /etc/securetty.
autenticación y los servicios reales sin didos en secciones para cada uno de los Después de que PAM haya terminado
que sea necesario modificar las aplica- cuatro tipos de módulos PAM: auth, de procesar los módulos de tipo auth,
ciones. Aplicaciones como servidores account, password y session. La sección pasa a ejecutar el siguiente include. El
FTP o Tel-net se conectan a un servicio auth define dos métodos de autentica- archivo common-account contiene dos
de autenticación llamando a unas fun- ción alternativos a fin de determinar si módulos, pam_krb5.so y pam_unix, y es
ciones de la librería de PAM disponibles
en forma de librerías compartidas. Listado 5: Configuraciones para PAM
Hay disponible una librería de módulo 01 # /etc/pam.d/common-auth
especial, que sirve para cambiar a Kerbe-
02 auth sufficient pam_krb5.so forwardable
ros el método de autenticación del login
a través de PAM. Los paquetes que con- 03 auth required pam_unix.so nullok_secure use_first_pass
tiene están disponibles en la mayoría de 04 auth required pam_deny.so
distribuciones más conocidas. El módulo
05
en sí se llama pam_krb5.so y reside nor-
malmente bajo /lib/security [5]. 06 # /etc/pam.d/common-account
07 account sufficient pam_krb5.so forwardable
Listado 4: Cambiando la 08 account required pam_unix.so
Propiedad 09
01 # ls -l foo.txt
10 # /etc/pam.d/common-session
02 -rw-r—r— 1 root root May 02
11 session sufficient pam_krb5.so
15:53 foo.txt
12 session required pam_unix.so
03 # chown KDC+wnew foo.txt
13
04 # chgrp KDC+asp foo.txt
05 # ls -l foo.txt 14 # /etc/pam.d/common-password

06 -rw-r—r— 1 KDC+wneu KDC+asp 15 password sufficient pam_krb5.so nullok obscure md5


May 02 15:53 foo.txt 16 password required pam_unix.so nullok obscure md5

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


PORTADA • Directorio Activo

nio. El administrador puede crear direc-


torios individuales para cada usuario o
automatizar el proceso llamando al
módulo pam_mkhomedir, que es tam-
bién parte de la distribución de PAM y se
configura en la sección session:

# /etc/pam.d/common-session
session required U
pam_mkhomedir.so silent U
skel=/etc/skel/ umask=0022
session sufficient pam_krb5.so
session required pam_unix.so

Con esta configuración le decimos al


módulo que cree dinámicamente los
directorios de inicio que no existan. El
argumento silent suprime los mensajes
provocados por la copia del directorio
skel. El último argumento le dice a PAM
que defina 0022 como umask predeter-
minada para los permisos de archivos y
directorios. Con esto, los programas que
Figura 5: GDM (Gnome Display Manager) muestra tanto los usuarios locales como los del se ejecuten en la sesión podrán crear
Directorio Activo como posibles candidatos para el login. directorios con los permisos rwxr-xr-x y
archivos con rw-r—r—.
responsable de gestionar el acceso al sis- encarga de una tarea muy importante: Como alternativa a los directorios loca-
tema. elimina los tickets de los usuarios les en clientes kerberizados, podemos
El servicio account de PAM comprueba cuando éstos abandonan la sesión. usar directorios de inicio de un servidor
la contraseña del usuario para ver si aún Después de completar la de archivos central. Podemos hacerlo
es válida o si el acceso por parte del configuración, cualquier programa con con un módulo de PAM, pam_mount.so.
usuario al sistema tiene algún tipo de capacidad de PAM puede usar PAM También podemos hacer que se ejecute
restricción en cuanto a tiempo, uso de para acceder al Directorio Activo. Por cualquier comando que queramos tras el
recursos o localización. ejemplo, GDM (GNU Display Manager) login añadiéndolo a los scripts de inicio
Si el usuario existe y tiene permiso ofrece tanto cuentas de usuario locales de /etc/profile.
para ingresar, PAM pasa a la siguiente como de dominio, como candidatos
lista de módulos, definida en el archivo para el login, e inicia la sesión solici- Totalmente Integrado
common-password. Estos módulos ofre- tada tras la autenticación con el servi- Son varios los pasos a realizar para que
cen al usuario la posibilidad de cambiar dor Kerberos (Figura 5). sea posible automatizar el ingreso al
su contraseña. A diferencia del proceso Como colofón, los usuarios del Directorio Activo y la configuración de
normal en Linux, que sólo permite al Directorio Activo necesitan un directo- los directorios de inicio en máquinas
usuario cambiar su propia contraseña, el rio de inicio. Si NSS no proporciona Linux, pero con Kerberos, NSS, PAM y
módulo de Kerberos otorga a cualquier detalles sobre dicho directorio, o si Samba, este proyecto de integración nos
usuario el poder para cambiar la contra- éste no existe, Linux impedirá el permitirá conservar la amistad con nues-
seña de cualquier otro usuario. No obs- acceso al usuario (a pesar de haberse tros vecinos de Redmond. ■
tante, para poder hacerlo, el usuario autenticado correctamente) o bien le
debe conocer previamente la contraseña enviará al directorio raíz, ya que los RECURSOS
actual de la cuenta que pretende cam- entornos de escritorio (como por ejem- [1] Heimdal Kerberos: http://www.h5l.
biar. plo KDE) necesitan leer y escribir org
determinados archivos que simple-
Gestión de Sesiones mente no existen.
[2] MIT Kerberos: http://web.mit.edu/
kerberos/
Finalmente, PAM llama a los módulos
configurados en common-session. El /home, Dulce /home [3] Shishi Kerberos: http://josefsson.org/
tipo session es el responsable del resto Los directorios de inicio se configuran en shishi/
de actuaciones relacionadas con la la línea 20 del archivo smb.conf mos- [4] PAM para Linux: http://ftp.kernel.org/
autenticación. Los pasos restantes van trado en el Listado 3: template homedir pub/linux/libs/pam/
desde configurar variables hasta mon- = /home/%D/%U. Samba reemplaza
[5] Pam-krb5: http://www.eyrie.org/
tar directorios. Desde el punto de vista %D por el nombre corto del dominio y
~eagle/software/pam-krb5/
de este servicio PAM, pam_krb5 se %U por el nombre del usuario del domi-

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


OpenID • PORTADA

Gestión de identidades para la web mediante OpenID

IDENTIDADES
OpenID nos ofrece un estándar abierto para la gestión del acceso a método más abierto. Pero después de un
desarrollo activo de siete años, Liberty
sitios web protegidos. POR NILS MAGNUS Alliance aún no ha llegado a ser aceptada
globalmente por considerarse mastodón-

N
o todo el mundo ve la web 2.0 desplace y acceda desde distintas localiza- tica. El proyecto OpenID, bajo el auspicio
como la panacea. Uno de los pro- ciones. de la OpenID Foundation [3], está basado
blemas tiene que ver con la canti- en una funcionalidad más simple que
dad de sitios web protegidos por contra- El Método de la Comunidad puede integrarse fácilmente en los siste-
seña. Blogs personales, comunidades vir- Las soluciones para la gestión de identida- mas de autenticación online.
tuales (desde Xing a Facebook), o incluso des proporcionan una respuesta más apro- Cuando elegimos la alternativa Open-
sitios dedicados a la gestión de gastos o piada y flexible para simplificar el proceso ID, dejamos de identificarnos mediante
planes de vacaciones, se basan en aplica- de login web. Estas herramientas suelen un nombre de usuario y una contraseña,
ciones web con cuentas de usuario priva- confiar en terceros. Algunos gigantes ofre- y pasamos a hacerlo mediante un URI
das. Esta enorme cantidad de contraseñas cen soluciones de login de terceros com- (Uniform Resource Identificator) visuali-
y diálogos de login hace que muchos probadas a partir de una sola fuente. El zable en un navegador web. El URI puede
usuarios se pierdan. Algunos navegadores sistema Passport de Microsoft se creó de consistir en una dirección web ofrecida
disponen de herramientas para la gestión acuerdo a este principio. Ahora Microsoft por un servicio OpenID, como http://
de contraseñas. También existen otras promociona Passport bajo el nombre Win- nilsmagnus.myopenid.com para Myope-
alternativas (como KDE wallet) que pue- dows Live ID [1]. Pero son muchos los nid [4]. El tipo de identidad no importa,
den resultarnos útiles a la hora de trabajar usuarios reticentes a depender de aplica- mientras el navegador pueda acceder a la
con un dispositivo único, local y físico. ciones propietarias como ésta. página. La página necesita añadir una eti-
Pero el paradigma de la web 2.0 contem- Pronto surgió una alternativa, llamada queta que apunte al proveedor del servi-
pla la posibilidad de que un usuario se Liberty Alliance Project [2], que ofrecía un cio:

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


PORTADA • OpenID

OpenID, toma la parte del URI Este método se conoce también como
correspondiente al host. User-Centric Identity Management,
El consumidor (la wiki de debido a que cada usuario puede defi-
Amarok, en este caso) le pre- nir, de forma individualizada, qué infor-
gunta al proveedor el nombre mación debe proporcionar el proveedor
asociado al URI. Para hacerlo, se a los consumidores que la soliciten.
le redirige al sitio web del provee- Ciertos proveedores de identidad ofre-
dor, que revela quién ha reali- cen identidades de forma gratuita. Es el
zado la petición. El usuario con- usuario quien debe decidir en qué provee-
firma entonces la petición intro- dor debe confiar. A diferencia del método
duciendo una contraseña. El pro- centralizado empleado por Passport, hay
veedor redirige al navegador de una colección descentralizada de provee-
vuelta al sitio del consumidor, dores de OpenID compitiendo los unos
Figura 1: La wiki de Amarok nos permite ingresar con lo que el usuario queda iden- con los otros para ofrecer sus servicios. El
mediante OpenID. tificado. usuario puede incluso crear su propio pro-
Una de las prácticas funciones veedor.
<link rel=”openid.server” href=U de OpenID son los distintos atributos que Quien esté interesado en desarrollar una
“http://www.myopenid.com/U podemos asociar a una identidad en un solución propia puede usar los paquetes
server” /> proveedor. Por ejemplo, podemos guardar de código abierto disponibles para lengua-
<link rel=”openid.delegate”U nuestro nombre completo, nuestro idioma jes de programación como Perl, PHP,
href= “http://U favorito o nuestra fecha de nacimiento Ruby, Python o Java [7].
nilsmagnus.myopenid.com/” /> (ver Figura 2). Un
usuario, cuando
El servidor del lado del proveedor especi- recibe una petición
fica la primera relación; el segundo replan- de un consumidor,
tea el nombre de la identidad. Normal- puede especificar
mente, el proveedor instalará una página a cuáles son los
fin de hacer disponible esta información datos que deberían
para los sitios web que pidan información mostrarse a dicho
sobre el login. Un usuario podría también consumidor y qué
incluir los detalles en una página de inicio datos debería reser-
o en un blog. En ese caso, nuestra propia var.
dirección nos podría servir de OpenID. Este proceso de
aprobación es
El Acceso importante para Figura 2: El proveedor especifica los detalles que pretende enviar al
Las aplicaciones con soporte para OpenID prevenir el uso consumidor.
muestran un campo de login para OpenID, inadecuado de un
además de la página de login tradicional. parámetro crítico, como un PIN para una En Cuanto a la Seguridad
Por ejemplo, la Figura 1 muestra la auten- cuenta bancaria, que efectivamente pode- Habrá quien se pregunte cómo de seguro
ticación OpenID para la wiki de Amarok. mos guardar con nuestro ID. Algunos pro- es OpenID si cualquiera puede hacer de
Cuando un usuario introduce el ID veedores permiten al usuario la creación proveedor. ¿Puede un atacante falsear o
basado en URI, la aplicación web, cono- de varios perfiles, cada uno de ellos con secuestrar una identidad? Esto nos
cida como consumidor en el idioma de una serie de atributos propios. recuerda a un asunto de seguridad bien
conocido: Si podemos manipular un sitio
Gestión de Identidades y Federation web, podemos redirigir a la gente a nues-
OpenID no es el único proyecto para la gestión de identidades. Feder ID [9], por ejem-
tro proveedor de identidades o escribir
plo, es un proyecto de código abierto proveniente de Francia. Uno de sus colabo-
uno.
radores, Clément Oudot, señalaba en una entrevista reciente en Linux Magazine la
Dicho de otro modo, la seguridad está
importancia de las identidades digitales en el acceso a recursos web.
en manos de quienes ejecutan el sitio.
Considerando la calidad del código de
Según Oudot, muchos usuarios tienen una identidad para cada sitio web. Esto supone
muchos sitios escritos en lenguajes de
un problema para las grandes empresas y organizaciones, ya que los usuarios han de
scripting tradicionales, puede que sea
memorizar muchas contraseñas. Feder ID proporciona herramientas para la sin-
algo a tener en cuenta, pero no un argu-
cronización de repositorios de identidades. Estos atributos no sólo están disponibles
mento convincente en contra de Open-
para una única organización local, sino que pueden ser compartidos por varios socios.
ID.
Las herramientas Feder ID son de código abierto y cumplen con la IETF (Internet Engi- La segunda pregunta es más delicada:
neering Task Force), la OASIS (Organization for the Advancement of Structured Infor- ¿Puede un hacker interceptar las comuni-
mation Standards) y los estándares de la Liberty Alliance para la gestión de identi- caciones entre el consumidor y el provee-
dades. dor de identidades para guardar las sesio-

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


OpenID • PORTADA

sesiones controlando su
Tabla 1: Proveedores Identidad estado con protocolos que no RECURSOS
Aplicaciones Web poseen dicho control nativa- [1] Passport de Microsoft: http://www.
Proveedor OpenID mente, como ocurre con http, passport.net
AOL http://openid.aol.com/Screenname la base de OpenID. El hecho [2] Liberty Alliance Project: http://www.
blogger http://Blogname.blogspot.com de que varias aplicaciones projectliberty.org
Flickr http://www.flickr.com/photos/Username web hayan sido comprometi- [3] Proyecto OpenID: http://openid.net
Livedoor http://profile.livedoor.com/Username das es un claro indicador de [4] Myopenid (proveedor): http://
Livejournal http://Username.livejournal.com los peligros que nos acechan, myopenid.com
Technorati http://technorati.com/people/technorati/ suponiendo que nos fiamos
Username [5] Extensión Mediawiki para OpenID:
de los resultados de las http://www.mediawiki.org/wiki/
Wordpress http://Username.wordpress.com
encuestas [8]. Extension:OpenID
Yahoo http://openid.yahoo.com
[6] Soporte de Drupal para OpenID:
Práctico y Abierto http://drupal.org/project/openid
nes? Después de todo, el proveedor envía OpenID es un paso más en la dirección
[7] Librerías de Código Abierto para
un mensaje de confirmación en caso de correcta hacia la gestión de identidades.
OpenID: http://wiki.openid.net/
una autenticación satisfactoria. Un ata- Debido a que OpenID implementa un
Libraries
cante podría presentar como credenciales único login, resulta muy adecuado para
para un nuevo login una sesión previa- todo aquel usuario que no quiera recordar [8] “Protegiendo a Clientes y Comer-
ciantes”, Whitepaper, Secure Com-
mente guardada. De todas formas, pode- un gran número de contraseñas. La capa-
puting: http://www.
mos evitarlo habilitando OpenID SSL/TLS cidad de gestión de atributos es mucho
securecomputing.com/webform.
para securizar la conexión y añadir un más potente de lo que pueda parecer en
cfm?id=289&ref=pci
grado de seguridad a cada petición. Con un primer momento.
este método conseguimos que las respues- El número de sitios web que usan Ope- [9] Feder ID: http://federid.objectweb.
org
tas sean válidas una sola vez, evitando nID continúa creciendo exponencial-
que se puedan reciclar fácilmente. mente, aunque algunas aplicaciones real-
A pesar de todo, no es buena idea mente grandes tienen que demostrar toda- racionales y conceptuales en cuanto a
subestimar la complejidad de la gestión de vía que cumplen todos los requisitos ope- confiabilidad y disponibilidad. ■

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


PORTADA • Autenticación Web

Dotamos de autenticación a nuestros sitios web

PROTECCIÓN DE
PÁGINA
Apache ofrece diferentes opciones para proteger mediante contraseña determinadas áreas de un sitio web.

POR FRANK WILES

S
i se quiere ofrecer un login en nuestras páginas sin necesidad de prueba si el usuario está autorizado
determinadas páginas web de aplicaciones propietarias adicionales. para visualizar el recurso solicitado a
acceso restringido, no es nece- En este artículo describimos algunas través de un proceso que comprende
saria una cuenta en MySpace, ni tam- de las técnicas que nos permitirán pro- tres fases. En la fase de Acceso se veri-
poco un enorme sitio web corporativo. teger nuestras páginas web mediante fica si la dirección IP que solicita el
Apache proporciona varias alternati- contraseña. recurso está autorizada para acceder
vas para la autenticación de usua- El servidor web Apa- al mismo. En la fase de Autenticación
rios. Aunque para poder dis- che com- se comprueba que el nombre de usua-
poner de ellas haya que rio proporcionado concuerda con la
hacer varias configura- contraseña asociada al usuario. La
ciones extra, podemos fase de Autorización suele usarse para
proteger fácilmente facilitar la administración creando
grupos de usuarios. Veremos cómo se
puede ampliar cualquiera de estas
fases con algo de código de cosecha
propia.
A menos que se trate de una cone-
xión a través de SSL, con cualquiera de
estos métodos se enviarán las contra-
señas sin cifrar. Recomendamos enca-
recidamente usar SSL en cada una de
las páginas que requiera autenticación.
Para los ejemplos de este artículo
hemos usado Apache 2.2.8. En versio-
nes anteriores, algunas de estas
opciones podrían no estar disponi-
bles, o podría variar ligeramente
la configuración.

Autenticación
mediante Archivos
La autenticación mediante archivos, a
la que en ocasiones nos referimos
Utemov, Fotolia

como Basic Auth o htpasswd auth, es


la técnica más común a la hora de
añadir un login en Apache. Por ejem-
plo, si queremos proteger todas las
páginas de administración de nuestro
sitio web, podemos invocar la autenti-
cación mediante archivos añadiendo
el siguiente código al archivo de
configuración de nuestro Apache:

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


Autenticación Web • PORTADA

de/contraseñas
Listado 1: Restricción del Acceso del Usuario AuthBasicProvider file
01 <Location /> 07
Require valid-user
02 AuthType Basic 08 <Location /admin>
09 Require user Manuel Ramón
</FilesMatch>
03 Authname ”Mi Sitio”
04 AuthBasicProvider file 10 </Location>
05 AuthUserFile 11 Además de permitir el acceso a todos
/ruta/al/archivo/de/contraseña 12 <Location /contenidos> los usuarios incluidos en el archivo de
s 13 Require valid-user contraseñas, podemos restringir el
06 </Location> 14 </Location>
acceso a determinados usuarios.
La configuración del Listado 1 con-
<Location /admin> indica a Apache que debe autorizar a cede el acceso a Manuel y Ramón a la
AuthType Basic cualquier usuario válido que aparezca sección /admin mediante la entrada
AuthName ”Páginas deU en el archivo. Require user, seguida del listado de
Administración” Apache viene acompañado con un usuarios separados por espacios. Ade-
AuthUserFile programa llamado htpasswd que nos más, cualquier usuario correctamente
/ruta/al/archivo/U asiste en la creación y actualización de autenticado podrá acceder a /conteni-
de/contraseñas archivos de contraseñas. Primero crea- dos.
AuthBasicProvider file mos el archivo con: Otra funcionalidad útil es la de per-
Require valid-user mitir el acceso a grupos específicos en
</Location> htpasswd -c U lugar de a usuarios individuales. Para
/ruta/al/archivo/de/U hacerlo crearemos un archivo de gru-
La ubicación del archivo de contraseñas <usuario> pos. En el Listado 2 se muestra el
configuración de Apache varía en los ejemplo anterior, esta vez usando gru-
distintos sistemas. En los sistemas Red Después de que se haya creado, si que- pos. El formato del archivo de grupos
Hat/Fedora se encuentra en /etc/httpd/ remos añadir nuevos usuarios o cam- es muy simple:
conf/httpd.conf, mientras que en biar sus contraseñas, usamos el mismo
Debian está en /etc/apache2/ comando htpasswd, sólo que esta vez <nombre del grupo>:
apache2.conf. sin el parámetro -c. Para eliminar un <usuario1>U
En caso de usar Apache 2.0.x, ten- usuario podemos editar a mano el ... <usuarioN>
dremos que eliminar la directiva Auth- archivo mediante un editor de textos
BasicProvider. Después de definir normal o usar el comando htpasswd En nuestro ejemplo, el contenido del
AuthType como Basic, nombramos este con el parámetro -D. archivo sería:
área de modo que los usuarios sepan Además, podemos usar este método
dónde están ingresando. Además, (y otros métodos que veremos más admin: Manuel Ramón
debemos informar a Apache del sitio adelante) con directivas como <Direc-
donde ha de buscar la contraseña para tory>, <DirectoryMatch>, <Loca- Podemos crear de este modo tantos
este área. El último paso lo realizamos tionMatch> o <FilesMatch>. Por grupos como queramos uno por línea.
mediante la directiva Require, que ejemplo, podríamos solicitar una con- El uso de grupos es una forma estu-
traseña para visualizar cualquier penda de reducir el tiempo necesario
Listado 2: Trabajando con archivo .gif de nuestro sitio web con: para el mantenimiento y de simplificar
Grupos las configuraciones, haciéndolas más
<FilesMatch ”\.gif$”> fáciles de leer y comprender.
01 <Location />
02 AuthType Basic AuthType Basic Nótese la importancia de que nues-
03 AuthName ”Mi Sitio” AuthName ”Para las imágenesU tros archivos de contraseñas y grupos
04 AuthBasicProvider file hace falta contraseña” no se encuentren dentro del
05 AuthUserFile DocumentRoot de Apache; de no ser
AuthUserFile/ruta/al/archivo/ /ruta/al/archivo/U así, cualquiera podría descargarlos.
de/contraseñas
06
AuthGroupFile/ruta/al/archivo Listado 3: Autenticación mediante SQL
/de/grupos 01 DBDriver pgsql 09 AuthBasicProvider dbd
07 </Location> 02 DBDParams ”host=localhost 10 Require valid-user
08 03 nombredb=foro usuario=apache
09 <Location /admin> 11
04 password=secreto”
10 Require group admin 12 AuthDBDUserPWQuery ”SELECT
05
11 </Location>
06 <Location 13 password FROM usuarios WHERE
12 /solo_usuarios_del_foro> usuario = %s”
13 <Location /contenidos> 07 AuthType Basic
14 Require valid-user 14 </Location>
08 AuthName ”Sólo Usuarios
15 </Location> del Foro”

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


PORTADA • Autenticación Web

Autenticación con Base de y extraiga la información relativa a las pueda funcionar con nuestra base de
Datos SQL contraseñas. El software deberá alma- datos SQL, de forma que saque de ahí
Quizá nuestro sitio ya esté usando cenar las suyas con el mismo tipo de las contraseñas de los usuarios. En el
algún software que requiera contra- hash que lo hace Apache, en este Listado 3 se muestra una
seña, algún foro por ejemplo, y que, caso, la función crypt(). Además, ten- configuración aplicable al caso de una
una vez creados los usuarios, decida- dremos que activar dos módulos en base de datos PostgreSQL. En primer
mos añadir otra sección a la que sólo Apache: mod_dbd.so y lugar debemos definir el controlador
puedan acceder los usuarios registra- mod_authn_dbd, para lo cual añadi- de la base de datos, que en este caso
dos. mos estas líneas al archivo de será pgsql. Para las bases de datos
Tener que volver a registrar todos configuración de Apache: MySQL, el controlador se llama mysql.
nuestros usuarios en algún tipo de Apache incluye soporte para bases de
autenticación mediante archivos LoadModule dbd_module U datos Oracle, SQLite2 y SQLite3.
(como la descrita anteriormente) modules/mod_dbd.so Tras definir el controlador, debemos
podría convertirse en una verdadera LoadModule authn_dbd_module U pasarle ciertos parámetros relativos a
pesadilla, con dos sitios distintos en modules/mod_authn_dbd.so la conexión con la base de datos. En el
los que añadir y modificar usuarios. Es caso de MySQL o PostgreSQL, hemos
más, algunos usuarios podrían acabar El segundo parámetro de cada línea es de pasarle la máquina, el nombre de la
teniendo nombres o contraseñas dis- una ruta relativa o absoluta al módulo; base de datos, el usuario y la contra-
tintas para según qué parte del sitio el valor exacto podría variar según el seña.
web. sistema, dependiendo de la distribu- Las líneas siguientes deberían resul-
Si nuestro foro hace uso de una base ción que estemos usando o de cómo tarnos familiares en este punto; la
de datos SQL, guardando allí las con- hayamos compilado Apache. única diferencia es que ahora configu-
traseñas, podemos configurar Apache Después de cargar los módulos ramos AuthBasicProvider de manera
para que acceda a dicha base de datos debemos configurar Apache para que que use el módulo dbd. Lo último es

Listado 4: ¡No se Trabaja los Fines de Semana!


01 package AutenDepart; 29 # Comprobar si es fin de 50 SELECT password FROM
02 semana usuarios WHERE usuario = ? AND
03 use strict; 30 my $day_of_week = 51 current_time
(localtime(time))[6]; BETWEEN shift_begin AND
04 use warnings; shift_end });
31 if( $day_of_week == 0 or
05 $day_of_week == 6 ) { 52
06 use Apache2::Access (); 32 return 53 $sth->execute( $user );
07 use Apache2::RequestUtil (); Apache2::Const::HTTP_UNAUTHORI 54 my $db_password =
ZED; $sth->fetchrow;
08 use Apache2::Const -compile
=> qw(OK HTTP_UNAUTHORIZED 33 } 55 $sth->finish;
AUTH_REQUIRED); 34 56
09 35 # Tomar nombre de 57 # Nos aseguramos de
10 use DBI; usuario y contraseña encontrar una contraseña para
11 use Digest::MD5 qw( md5_hex 36 my ($rc, $password) = el usuario.
); $r->get_basic_auth_pw(); 58 # Si no lo encontramos
12 37 my $user = $r->user; es que no existe
13 sub handler { 38 59 if( !$db_password ) {
14 my $r = shift; 39 unless ( $user and 60
$password ) { $r->note_basic_auth_failure;
15
40 61 return(
16 # Ver si se trata de la $r->note_basic_auth_failure; Apache2::Const::AUTH_REQUIRED
petición inicial o no );
41 return(
17 # Si no lo es, sólo hay Apache2::Const::AUTH_REQUIRED 62 }
que resetear el nombre );
63
18 # de usuario 42 }
64 # Comprobamos que la
19 if( !$r->is_initial_req 43 contraseña sea correcta
) {
44 # Conectamos a la base 65 if( md5_hex( $password )
20 de datos y empezamos a ne $db_passwd ) {
21 if( defined $r->prev comparar
66
) { 45 # guardamos las $r->note_basic_auth_failure;
22 $r->user( contraseñas como sumas MD5
67 return(
$r->prev->user ); 46 my $dbhv = Apache2::Const::AUTH_REQUIRED
23 } DBI->connect(‘dbi:Pg:nobmredb= );
admin’, ’apache’, ’secreto’)
24 68 }
47 or die ”No es
25 return posible conectar a la base de 69
Apache2::Const::OK; datos: $!”; 70 return(
26 48 Apache2::Const::OK );
27 } 49 my $sth = $dbh->prepare( 71
28 qq{ 72 }

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


Autenticación Web • PORTADA

configurar la petición que obtendrá la Autenticación En primer lugar comprobamos si se


verdadera contraseña del usuario. El Personalizada trata de la petición inicial o si por el
motivo de que haya que indicar a Apa- Apache es un sistema muy extensible contrario es algún tipo de redirección
che el modo en el que ha de sacar las y tan flexible que puede usarse para interna. Si no es la petición inicial, es
contraseñas de la base de datos, es cosas distintas de http. Podemos escri- que el sistema ya ha autenticado la
que cada base de datos puede tener bir módulos para ampliarlo. Los pode- petición e ignora la información.
diferentes nombres de tabla y de mos escribir en C, como los expuestos Luego comprobamos que el día
columna. en este artículo, aunque el lenguaje C actual no cae en fin de semana. Si es
lleva mucho tiempo y es laborioso Sábado o Domingo, simplemente
Autenticación mediante para muchos administradores web sin impide el paso a todo el mundo. Lo
LDAP experiencia como desarrolladores de siguiente que hace el script es tomar el
Otro de los módulos más populares software que no están familiarizados nombre y la contraseña del usuario.
de autenticación es con él. Si el nombre de usuario y la contra-
mod_authnz_ldap, que nos permite Gracias a módulos como mod_perl o seña no están disponibles, el script
autenticar nuestro sitio web en un mod_python podemos escribir nues- ordena al navegador que vuelva a
servidor LDAP. La autenticación tros propios módulos en otros lengua- mostrar el valor de retorno
LDAP puede resultar muy útil en jes versátiles. AUTH_REQUIRED.
entornos corporativos, en los que un Apache ofrece una gran flexibilidad Lo siguiente que debe hacer es
servidor LDAP central se puede en cuanto a la gestión de acceso a con- conectar a la base de datos y buscar la
encargar de todas las autenticaciones tenidos, pero adolece de algo básico: contraseña del usuario. La petición
que necesite la compañía. no tiene constancia del tiempo. Para presupone que los tiempos de inicio y
Activamos el módulo LDAP de Apa- ilustrar la forma de personalizar la de fin del departamento del usuario se
che con autenticación de Apache, supongamos encuentran en la tabla usuarios.
que nuestra empresa tiene dos depar- Si el usuario no existe o trata de
LoadModule authnz_ldap_module tamentos y que queremos asegurarnos ingresar fuera del horario de su depar-
U de que los empleados del primero sólo tamento, la petición no devuelve nin-
modules/mod_authnz_ldap.so pueden acceder en horario laboral a gún dato. En producción, probable-
las páginas o las aplicaciones. Primero mente deseemos decirle al usuario la
Para decirle a nuestro servidor Apache activamos mod_perl con: razón por la cual no puede conectar
que autentifique a los usuarios para que no siga intentándolo.
mediante LDAP, hay que definir la LoadModule perl_module # Finalmente, compara la suma MD5
URL: modules/mod_perl.so de la contraseña con la que hay en la
base de datos.
<Location /contenidos> Con mod_perl podemos escribir un Si la prueba falla, se le vuelve a solici-
AuthLDAPURL U módulo Perl y sustituir una fase deter- tar a la contraseña. Si es correcta,
“ldap://ldap1.empresa.com/ou=U minada del ciclo de vida de Apache. devuelve la constante OK, que indica a
Gente, o=Empresa” En nuestro ejemplo, el módulo com- Apache que el usuario está autenticado.
Require valid-user para nombres de usuario y contrase- Ahora que ya sabemos que el código
</Location> ñas, pero también comprueba que los funciona, lo siguiente es hacer que
empleados tengan autorización para Apache lo use. Lo podemos hacer sus-
Además, podemos definir servidores trabajar en el momento de la petición tituyendo la fase de autenticación por
LDAP redundantes para prevenir erro- (Listado 4). Además, impide el acceso nuestro código:
res simplemente añadiendo otro servi- a todo aquel que intente trabajar en
dor a la URL: Sábado o Domingo. <Location /admin>
El código lo podemos dejar en cual- AuthType Basic
<Location /contenidos>U quier ruta incluida en el @INC de Perl, AuthName ”Páginas deU
AuthLDAPURL ”ldap://ldap1.U nombrando al archivo Administración”
empresa.com AutenDepart.pm. Si lo queremos situar PerlAuthenHandler AutenDepart
ldap2.empresa.com/U en otro sitio, debemos colocarlo en el Require valid-user
ou= Gente, o=Empresa” archivo de configuración de Apache: </Location>
Require valid-user
</Location> <Perl>
use lib qw( /ruta/al/U Conclusión
Los módulos LDAP ofrecen varias directorio/con/el/módulo ); Estos ejemplos nos muestran algunas
opciones. Asignando al usuario cier- </Perl> formas de proteger nuestras páginas
tos atributos LDAP, podemos incluir web configurando Apache adecuada-
información sobre grupos y restringir Después de cargar los módulos mente. Para conocer más opciones,
el acceso en una variedad de situacio- mod_perl, DBI y las librerías MD5, el recomendamos la visita al sitio web de
nes. Listado 4 define el manejador. Apache (http://httpd.apache.org). ■

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


EVALUACIÓN • OpenOffice.org 3.0

Un primer vistazo a OpenOffice.org 3.0

Su
rflifes
,F
UNA OFICINA

oto
lia
NUEVA
Las versiones previas de OpenOffice.org no decepcionaron a nadie, así Formatos Soportados
De forma similar a las versiones previas de
que hay grandes esperanzas puestas en la reciente versión 3.0 de una OpenOffice.org, la última versión utiliza el
formato ODF como formato por defecto.
de las más importantes aplicaciones de código abierto que existen. Sin embargo, OpenOffice.org 3.0 utiliza la
nueva versión 1.2 de ODF, que incluye un
Vamos a echarle un vistazo a las bondades que según dicen ofrece esta
poderoso lenguaje para fórmulas así como
nueva versión. POR DIMITRI POPOV un sofisticado modelo de metadatos
basado en los estándares RDF y OWL de
W3C. El cambio a ODF 1.2 implica que
Mantener las Apariencias

S
i desea probar la última versión otras versiones más antiguas de esta suite
beta de OpenOffice.org 3.0 o si no Lo primero que notaremos cuando se eje- presenten problemas a la hora de manejar
desea esperar hasta que su distribu- cute OpenOffice.org 3.0 es que ya no vol- los documentos creados con
ción favorita de Linux incorpore la versión verá a aparecer una pantalla gris comple- OpenOffice.org 3.0. Sin embargo, puede
final, puede instalarse la nueva versión de tamente vacía; por el contrario, aparecerá indicarse a OpenOffice.org 3.0 que guarde
esta suite usted mismo. Las buenas noti- una nueva pantalla de bienvenida, lla- los documentos en ODF 1.0 por defecto,
cias son que no interferirá con la instala- mada Start Center, que le permitirá crear estableciéndose así una solución temporal.
ción actual de su OpenOffice.org 2.x.x, así de forma rápida nuevos documentos, abrir Con respecto a los formatos soportados,
que podrá tener ambas versiones al mismo archivos existentes y navegar por las plan- la nueva versión de OpenOffice.org incluye
tiempo. tillas y los repositorios de extensiones. un filtro para importar los documentos de
Otro elemento que llama la atención es Microsoft Office 2007. Esto permitirá ahora
Comenzamos la estética: OpenOffice.org 3.0 viene con abrir los documentos .docx, .xlsx y .pptx en
Para comenzar, debe descargarse OpenOf- una nueva serie de iconos por defecto OpenOffice.org, aunque no puedan sal-
fice.org [1]. Si se tiene Ubuntu, hay que cuyo tema se denomina Galaxy. El cambio varse los de Writer, Calc e Impress en el
obtener la versión deb del programa. Tras no es totalmente radical, pero proporciona formato de Microsoft Office 2007.
la descarga del paquete será necesario des- una interfaz gráfica nueva más refres-
comprimirlo y ejecutar un terminal. Utili- cante. Sin embargo, puede ocurrir que no Writer, Calc e Impress
zando el comando dpkg -i instalaremos los se vea la nueva interfaz gráfica, ya que La funcionalidad Notas en las versiones
ficheros .deb en la carpeta DEBS: muchos proveedores de distribuciones previas de OpenOffice.org eran inadecua-
Linux añaden temas propios que se ajus- das y muy poco amigables. Las notas en
sudo dpkg -i DEBS/*.deb tan al aspecto general de sus distribucio- línea en un documento de texto se mostra-
nes. En la mayoría de los casos se puede ban como pequeños rectángulos amarillos,
Y eso es todo. Con el comando que sigue cambiar al tema Galaxy por medio de que eran difíciles de utilizar y se perdían
podremos ejecutar OpenOffice.org 3.0: Herramientas | Opciones | OpenOffice.org | con facilidad.
Ver y seleccionando el tema Galaxy del Si usted utiliza notas para comentar y
/opt/openoffice.org3/U menú desplegable Estilo y tamaño del colaborar con documentos Writer, le agra-
program/soffice icono. dará saber que OpenOffice.org 3.0 viene

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


OpenOffice.org 3.0 • EVALUACIÓN

Figura 1: OpenOffice.org 3.0 viene con una nueva presentación inicial. Figura 2: Nueva funcionalidad Notas.

con un sistema de notas totalmente redise- zarse una barra de desplazamiento que se compartida. Si dos usuarios modifican la
ñado (Figura 2). Las Notas se muestran encuentra en la barra de herramientas de la misma celda, el sistema muestra el cuadro
ahora en un lado del documento, y cada parte inferior para ampliar y reducir el de diálogos de resolución de conflictos,
una posee una flecha que apunta al punto documento así como cambiar entre los dis- proporcionando de esta forma diferentes
exacto de inserción en el texto. Las notas tintos modos de visualización. Esta funcio- opciones a la hora de solventarlo.
creadas por los distintos usuarios se mues- nalidad supone una forma más eficaz de El módulo para representar gráficas de
tran con colores diferentes, y cada una ver y recorrer documentos extensos que la esta nueva versión de OpenOffice.org per-
contiene su fecha y hora de creación así opción de Vista Previa que proporcionaba mite la representación de errores y ecuacio-
como el nombre del usuario que la aña- la versión 2.x.x (Figura 4). El programa de nes de regresión. Ahora es posible dibujar
dió. De esta forma se facilita su uso, con- hojas de cálculo Calc también incorpora los errores basándose en rangos de error
virtiéndose en una herramienta eficiente unas cuantas funcionalidades nuevas proporcionados en celdas de la hoja de cál-
para utilizarla en los documentos colabo- (Figura 5). La más notable es el compo- culo. Además, pueden mostrarse ecuacio-
rativos. nente Solver, diseñado para problemas de nes de regresión así como coeficientes de
OpenOffice.org 2.4 presentó la posibili- optimización. El valor óptimo de una celda correlación.
dad de aplicar diferentes idiomas a los dis- particular se calcula en base a restricciones La aplicación de presentaciones Impress
tintos segmentos del texto de un docu- proporcionadas en otras celdas. viene ahora con soporte nativo de tablas
mento de forma sencilla, una funcionali- Otra funcionalidad también novedosa (y (Figura 6). En las versiones anteriores se
dad fundamental cuando se trabaja con menos esotérica) es la posibilidad de com- podían insertar tablas sólo como objetos
documentos multilingües. OpenOffice.org partir las hojas de cálculo con otros usua- Calc incrustados, con lo que se complicaba
3.0 añade una pequeña pero importante rios. En la versión actual de el uso y era limitado.
mejora a esta funcionalidad. Los dicciona- OpenOffice.org, cuando un usuario abre un La nueva versión de Impress estrena el
rios ortográficos se tratan en documento de Writer, Calc o Impress, el soporte nativo de tablas, y la aplicación
OpenOffice.org 3.0 como extensiones, y el sistema lo bloquea, de modo que el resto suministra todas las herramientas esencia-
comando Herramientas | Idioma | Más dic- de usuarios no pueden modificarlo. La fun- les para manipular y darle formato a las
cionarios en línea abre el repositorio de cionalidad Compartir en Calc proporciona tablas. Cuando se inserta una tabla por
extensiones que contienen los diccionarios. a otros usuarios el acceso al documento y medio del comando Insertar | Tabla, se
Una vez aquí, pueden descargarse los dic- establece un mecanismo simple de resolu- puede utilizar la barra de herramientas de
cionarios que se deseen e instalarlos utili- ción de conflictos. Cuando se activa utili- las Tablas para añadir o eliminar filas y
zando el Gestor de Extensiones. zando el comando Herramientas | Compar- columnas, unir y dividir celdas y ajustar las
El módulo Gestor de Extensiones tam- tir documento, los otros usuarios pueden propiedades de la tabla. La pestaña Diseño
bién ha sido mejorado para facilitar su abrir y editar la hoja
uso. El nuevo gestor ofrece un resumen de cálculo compar-
mejorado de las extensiones instaladas y tida. Los cambios
muestra información detallada de las dis- realizados a la hoja
tintas extensiones (información incluida de cálculo se mez-
en el interior de las extensiones por los clan cuando los
desarrolladores de las mismas). Los desa- usuarios la guardan.
rrolladores de extensiones también apre- Cuando se realiza
ciarán la capacidad de integrar la ayuda de esta operación, el sis-
la extensión en el módulo de Ayuda en tema notifica la
línea. modificación a los
La aplicación Writer también viene con usuarios y las resalta
otra pequeña mejora muy útil: puede utili- en la hoja de cálculo Figura 3: Gestor de Extensiones rediseñado.

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


EVALUACIÓN • OpenOffice.org 3.0

Figura 4: Vista preliminar en OpenOffice.org. Figura 5: Calc viene ahora con el componente Solver.

de Tabla en el panel Tareas también ofrece Aunque PDF Import realiza un buen tra- Aunque la idea de extender la funcionali-
varios estilos de tablas predefinidos que se bajo abriendo los ficheros PDF, no reem- dad por medio de extensiones tiene bas-
pueden utilizar para maquillar el aspecto plazará a los editores de PDF dedicados tante sentido (después de todo, Firefox lo
final de la tabla. debido a sus importantes limitaciones. Por lleva haciendo desde hace años) presenta
ejemplo, la extensión importa cada línea de ciertos inconvenientes. Por ejemplo, tras
Extensiones texto del fichero PDF como un bloque de instalar la versión 3.0, habrá que seguir
Con una arquitectura robusta de extensio- texto independiente. Esto implica que no se descargando diversas extensiones para
nes en su sitio, la integración de funcionali- puede copiar un fragmento de texto y añadir algunas de las más interesantes y
dades directamente en OpenOffice.org pegarlo como texto en un documento Wri- útiles, y algunos dirían esenciales, funcio-
dejará de ser la única forma de añadirle ter, lo que limita la posibilidad de extraer nalidades del programa. También, algunos
funcionalidad a la suite, como muestra la texto de los ficheros PDF. También, a la usuarios podrían encontrar raro el hecho
extensión Sun Report Builder [2] (Diseña- hora de exportar el fichero editado como de que la función para exportar un docu-
dor de Informes de Sun). En vez de rem- PDF no se preservan los marcadores exis- mento en formato PDF se encuentre incor-
plazar el sistema de informes obsoleto de tentes en el fichero PDF original. Por ello, porada en OpenOffice.org, pero si se desea
OpenOffice.org Base, Sun creó un nuevo PDF Import es útil cuando se necesite reali- importar un fichero PDF, se tendrá que ins-
motor de informes como una extensión. zar un cambio ligero, pero no reemplazará talar un componente adicional.
Esta tendencia ha continuado con OpenOf- a los editores PDF dedicados. Es decir, hay
fice.org 3.0, en la que ciertas “funcionalida- que tener claro que la extensión PDF Conclusión
des” nuevas han salido como extensiones Import no ha sido diseñada como una Uno de los mayores rasgos del proyecto
separadas. Los ejemplos más notables son herramienta para la edición completa de OpenOffice.org ha sido siempre su cons-
las extensiones Sun PDF Import [3] y Sun ficheros PDF. tante mejora y su conservadora tendencia
Presenter Console [4]. Tal y como sugieren Ahora las presentaciones creadas con a la hora de añadir funcionalidades nue-
sus respectivos nombres, la primera per- Impress son más fáciles de realizar gracias vas; la próxima versión de esta productiva
mite importar ficheros PDF en OpenOf- a la extensión Sun Presenter Console. Esta suite no es una excepción. OpenOffice.org
fice.org, mientras que la segunda propor- extensión permite que el usuario pueda ver 3.0 no va a ser una versión revolucionaria,
ciona un mayor control sobre las presenta- la presentación, las notas y el tiempo. Esta pero va a aportar bastantes mejoras y
ciones. Sun PDF Import es toda una nove- información sólo estará disponible para el unas cuantas funcionalidades nuevas que
dad para aquellos usuarios que necesiten ponente, mientras que la audiencia sólo harán que muchos usuarios deseen actua-
una herramienta ligera para editar y verá el pase de la misma. lizarse. ■
comentar documentos
PDF. La extensión per- RECURSOS
mite que pueda impor-
[1] Descarga de la versión beta de Open-
tarse un fichero PDF en
Office.org 3.0: download.openoffice.
la aplicación Draw y uti- org/3.0beta/
lizar todas las herramien-
[2] Diseñador de Informes de Sun: exten-
tas disponibles para
sions.services.openoffice.org/project/
modificar y comentar el reportdesign
documento. Luego se
[3] Sun PDF Import: extensions.services.
puede guardar de nuevo
openoffice.org/project/pdfimport
el fichero modificado en
[4] Sun Presenter Console: extensions.
formato PDF utilizando
services.openoffice.org/project/
el comando Archivo |
presenter-screen
Exportar como PDF. Figura 6: Impress posee soporte nativo de tablas.

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


Top Ten • EVALUACIÓN

Benice, Fotolia

Las diez mejores herramientas Top

COMPETIDORES DE
ALTURA
La famosa utilidad de administración de Unix conocida como Top tiene muchos imitadores. Vamos a echarle

un vistazo a las mejores herramientas Top. POR MARKUS FEILNER Y SASCHA SPREITZER

P
icos de carga, problemas de E/S y la ayuda del jurado de Linux Magazine, están utilizando la mayoría de los recur-
comportamientos inexplicables hemos probado docenas de estos progra- sos, organizando los resultados por el
del sistema son las dificultades mas y ahora orgullosamente presenta- uso de la memoria pixmap (Figura 1). La
que día a día tienen que afrontar los mos a los 10 mejores. herramienta se basa en la extensión de
administradores. ¿Por qué está la base Las herramientas top de esta categoría, recursos X [2] para obtener la informa-
de datos utilizando tanta memoria de con una sola excepción, tienen algo en ción de los clientes conectados al servi-
intercambio? ¿Por qué se descarga la común: muestran los recursos utilizados dor X. Las funciones XResQueryClients,
batería del portátil tan rápidamente? La por los servicios o los servidores en una XResQueryClientResources y XresQuery-
clásica herramienta de la línea de sintaxis similar al clásico programa Top ClientPixmapBytes proporcionan los
comandos Top es la utilizada para diag- de Unix. El ranking que mostramos aquí datos que Xrestop utiliza para generar
nosticar este tipo de comportamientos. está basado en cómo es de útil la herra- una vista al estilo Top.
Top fue la primera en una larga serie mienta a la hora de resolver problemas. Xrestop fue originalmente diseñado
de herramientas encargadas de monitori- para la comunidad X.org para ayudar a
zar los recursos del sistema. Ahora 10: Xrestop los desarrolladores a localizar los aguje-
diversos imitadores compiten por llamar Xrestop [1] muestra a los usuarios de ros de memoria y de rendimiento en el
la atención de los administradores. Con X11 qué programas clientes de las X servidor X, pero con el paso del tiempo

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


EVALUACIÓN • Top Ten

ha ganado popularidad como una herra- red de una inter-


mienta para el día a día del administra- faz, ordenándolos
dor. Los administradores actualmente por fecha, host,
utilizan a menudo Xrestop para localizar protocolo u otras
los consumidores indeseados de recur- opciones. Los dia-
sos. Aunque puede localizarse un fallo o gramas basados en
un cuelgue de las aplicaciones X Win- RRD les permiten
dow fácilmente, habrá que utilizar otra ver de un solo vis-
herramienta para “matar” al culpable. tazo los posibles
Como Xrestop sólo ayuda a localizar los problemas. Figura 1: Xrestop muestra el uso de la memoria pixmap de las aplica-
problemas con las aplicaciones X, pero Aunque no hay ciones X11. La captura de pantalla fue tomada con Ksnapshot, motivo
no ofrece muchas opciones, esta herra- que personalizar por el cual Ksnapshot se encuentra a la cabeza de la lista.
mienta sólo ha alcanzado el puesto Ntop antes de
número 10 de nuestra lista. comenzar, la información que recolecta web y la cantidad de información que
es volátil y desaparece completamente si recolecta, Ntop se queda en el puesto
9: Ntop se reinicia. Para solucionar este inconve- número nueve.
Ntop [3] es una herramienta de monito- niente hay que utilizar Ntop junto con
rización instantánea bastante popular una base de datos, aunque esta solución 8: ApacheTop
que proporciona a los administradores implica una configuración más compleja. ApacheTop [5] es una herramienta que
un resumen de las tarjetas de red, su Hasta hace poco, Ntop también incluía ofrece información del acceso actual al
tasa de transferencia y todas sus cone- la herramienta de la línea de comandos servidor web Apache, las páginas que
xiones. La cantidad de información que Intop, que muestra un listado tipo Top Apache sirve, el número de accesos por
Ntop recolecta y presenta por medio de continuamente actualizado de las cone- segundo y muchas otras estadísticas
una bonita interfaz web garantiza su xiones de red actuales. La herramienta más. La aplicación encuentra la informa-
puesto en esta lista. La Figura 2 muestra Intop, sin embargo, ha desaparecido en ción necesaria en los ficheros access_log
algunas estadísticas obtenidas con Ntop. las versiones recientes de Ntop. De de Apache (Figura 3).
La herramienta presenta a los admi- acuerdo con el desarrollador Luca Deri, Algunas opciones cambian la aparien-
nistradores detalles de las conexiones de la próxima versión de Ntop incluirá Pa- cia de las consultas: -q mantiene las
cket Shell (Pksh [4]), que es más “query strings” utilizadas por los scripts
Tabla 1: Atajos de Teclado exhaustiva. Pero hasta que salga, Ntop PHP, -l fuerza las minúsculas y -s
de Ptop no ofrece ningún cliente para la línea de número define el número de secciones
comandos. numéricas en la URL. Finalmente, -r
Q Muestra la consulta de una entrada
PID. Por ello, a pesar de su gran cantidad resuelve los nombres de los hosts con
E El plan de la consulta para el PID. de características, su excelente interfaz sus respectivas direcciones IP.
Las funciones PostgreSQL EXPLAIN y
EXPLAIN_ANALYZE se utilizan para
esto (Figura 4).
L Muestra los bloqueos.
R Muestra las estadísticas.
X Muestra los datos de los
índices.

Tabla 2: Atajos de Teclado


de Dnstop
S Muestra la fuente de la consulta.
D El destino; es decir, el servidor DNS
utilizado.
T Muestra una lista de tipos de con-
sultas DNS enviadas por la máquina.
O Los códigos de operación. Bajo cir
cunstancias normales sólo se verán
aquí las líneas con los tipos de con-
sultas.
1,2,3 Permite a los administradores exten
der la vista de la lista del servidor a
los nombres de dominio de primer,
segundo y tercer nivel, respectiva-
mente.
Ctrl+R Reinicia el contador. Figura 2: ¿A qué hora está más ocupado el servidor VPN? Ntop responde a esta cuestión y a
Crtl+X Se sale del programa. otras muchas más con su bonito interfaz web.

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


Top Ten • EVALUACIÓN

trador que haya la consulta junto con el dominio de


trabajado con Pos- segundo nivel del destino, con el volu-
tgreSQL estará men y el porcentaje de todo el tráfico
interesado en esta DNS. Con la opción # se optienen los
herramienta, ya mismos resultados, pero con los nom-
que Ptop propor- bres de dominio de tercer nivel (Figura
ciona un resumen 6).
de todos los proce- Si se utiliza Dnstop en un router, tam-
sos de la base de bién se podrán detectar los túneles DNS
Figura 3: Investigando un servidor web con ApacheTop: Un usuario datos, al mismo no deseados. Un cliente de una red local
está actualmente accediendo a SquirrelMail. tiempo que mues- que intercambie grandes volúmenes de
tra las sentencias datos por medio de un servidor DNS
Un administrador web puede utilizar SQL que se están procesando actual- será descubierto de forma inmediata.
la línea de comandos para indicarle a mente. Pero eso no es todo: Ptop tam-
ApacheTop cuanto tiempo debe mante- bién ofrece detalles de los bloqueos y 5: Iftop
ner las estadísticas antes de actualizarlas estadísticas de las tablas individuales y Las especialidades de Iftop [9] son las
y borrarlas. Para ello pueden definirse los índices (Figura 5). instantáneas y los resúmenes de todas
un número de accesos (-H accesos) o Para ejecutar Ptop hay que teclear las conexiones de red activas. Como Top,
especificar un valor en segundos (-T pg_top -d base_de_datos -U usuario -W ordena las conexiones por actividad y
segundos), así como establecer el retardo contraseña. El comando lleva al usuario ofrece un conjunto repleto de acciones
entre dos actualizaciones (-d segundos). a una consola interactiva, donde se mientras está en acción (véase la Figura
La herramienta pierde algunos puntos, encuentran disponibles una serie de ata- 7).
ya que es bastante antigua y no se ha jos de teclado (Tabla 1). Los administradores pueden presionar
mejorado desde 2005. A pesar de los Ptop está disponible para Linux, BSD H para ver la ayuda en línea y configurar
inconvenientes, los administradores que y Mac OS. Para ver más capturas de pan- la vista. Las tasas de transferencia no
han instalado Fam y Portmap en sus ser- talla y detalles, visítese la web [7]. sólo se muestran como cifras, sino que
vidores web encontrarán que ApacheTop también pueden observarse en una grá-
es una herramienta fundamental para 6: Dnstop fica de barras. Iftop ajusta la escala al
realizar análisis prácticos en vivo, junto Dnstop [8] utiliza la librería Pcap para margen superior de la pantalla para
con otras muchas aplicaciones en uso en filtrar todas las consultas DNS de una reflejar la cantidad de ancho de banda
un entorno productivo. interfaz de red de un ordenador y mos- utilizado.
Desafortunadamente, las opciones trarlas. El comando dnstop Diversas opciones permiten a los
están restringidas a utilizarse desde la dispositivo_red -t -s proporciona una lista usuarios desactivar la resolución de
línea de comandos, lo que hace que sea configurable de consultas DNS al estilo nombres de DNS, ocultar los orígenes,
difícil que ApacheTop mantenga su Top. La Tabla 2 muestra algunos accesos ocultar los destinos y ordenar por varias
puesto frente a otros de sus competido- directos de Dnstop. columnas. En el margen inferior de la
res. Cuando se introduce un signo de inte- pantalla se puede ver la media y la suma
rrogación, ?, Dnstop muestra la ayuda en acumulada de los valores del dispositivo
7: Ptop línea integrada. Al mismo tiempo, Ethernet clasificados por la entrada y la
En este listado aparecen dos herramien- Dnstop presenta dos vistas combinadas salida.
tas para bases de datos. En el puesto que ofrece a los usuarios varios fragmen- Las opciones de filtrado son realmente
número siete se encuentra Ptop [6] tos de información simultáneamente. Si interesantes para los administradores, y
(véase la Figura 4). Cualquier adminis- se introduce @ se muestra el origen de se pueden introducir tanto en modo

Figura 4: Ptop muestra detalles sobre los bloqueos y estadísticas de


las tablas y los índices individuales. Ptop proporcionará el esquema Figura 5: La opción R de Ptop muestra estadísticas, incluyendo
de consultas para cualquier consulta que se encuentre activa, detalles como el número de lecturas y escrituras secuenciales de las
poniendo E de EXPLAIN. tablas PostgreSQL.

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


EVALUACIÓN • Top Ten

puerto -d Pulsando S se cambia el intervalo de


base_de_datos. Los refresco y T conmuta a la vista de los
parámetros pueden hilos. Si toda esta cantidad de teclas le
también almacenarse resultan difíciles de memorizar, se puede
en un fichero de obtener un listado completo de las mis-
configuración: Si se mas con: ?. Pero eso no es todo, ya que
ejecuta sin ninguna Mytop también soporta opciones de fil-
opción, la herramienta trado.
busca en ~/.mytop. Se Para ver los hilos con conexiones de
Figura 6: Introduciendo “#” en Dnstop el administrador obtendrá utilizan signos de una base de datos específica, hay que
un resumen de las consultas al DNS realizadas por un ordenador. igualdad para separar presionar D. H filtra por un nombre de
los parámetros de sus host específico, U localiza a un usuario
nombres: y F reinicia todos los filtros.
Mytop es un monitor de estado per-
user=sspreitzer fecto para las bases de datos MySQL.
host=192.168.0.222
pass=miclavesecreta 3: PowerTop
Debido al popular incremento de los
Con el uso de atajos de dispositivos móviles, no nos sorprende
teclado se puede cam- que PowerTop de Lesswatts [12]
biar al modo interac- atraiga continuamente a una gran
Figura 7: Iftop muestra el proceso de una conexión y distribuye el tivo. C conmuta entre comunidad de usuarios. Aunque la
tráfico de la red entre diagramas de barra individuales. El los comandos nuevos y herramienta sólo funciona con CPUs de
resumen se muestra en los márgenes superior e inferior de la el contador de senten- Intel y con distribuciones recientes, es
pantalla. cias. extremadamente útil si necesita opti-
Los recursos se iden- mizar el hardware y el software de su
interactivo (después de introducir iftop -f tifican fácilmente con una E; esto le indica portátil para una larga duración de la
opciones) o presionando la tecla F. Por a la herramienta que descubra la senten- batería.
ejemplo, -f icmp muestra los paquetes cia MySQL tras el hilo seleccionado. Lo mejor de PowerTop es que no sólo
ICMP solamente. El estilo familiar a H sirve para mostrar u ocultar la línea identifica los devoradores de energía,
Tcpdump puede invertirse haciendo una de encabezamiento de la pantalla. Pul- sino que también incluye una base de
selección. Por ejemplo: not port ssh. sando Shift + I permite obtener un datos completa de problemas conoci-
La opción -F le indica a Iftop que filtre informe completo del estado del motor dos y sus soluciones. Incluso averigua
automáticamente los hosts individuales, Inno DB, K finaliza un hilo y P hace una el consumo actual de energía de los
o redes completas, dejando sólo los que pausa. O cambia el orden de clasifica- procesadores móviles más populares.
se ajusten a la máscara de red seleccio- ción y R (de Reiniciar) envía una senten- La batalla por las últimas reservas de
nada: iftop -F 192.168.0.0/24 es un ejem- cia FLUSH STATUS al servidor. energía es fascinante. De acuerdo con la
plo de red local. Para mayor información
sobre las diversas opciones, consúltense
las páginas man en línea [10].

4: Mytop
La segunda herramienta para las bases
de datos es Mytop [11], que está escrita
en Perl y muestra información de las dos
sentencias estándar de MySQL, SHOW
PROCESSLIST y SHOW STATUS a interva-
los periódicos.
Mytop es muy adaptable, listando
información como el número de senten-
cias SELECT, INSERT, UPDATE y
DELETE perdidas. Una cabecera en la
parte superior de la pantalla muestra la
eficiencia de los índices de las claves,
junto con la entrada y salida por
segundo.
La mejor solución consiste en ejecutar
Mytop introduciendo mytop -u usuario
-p contraseña -h nombre_de_host -P Figura 8: La lista de procesos de Atop es detallada pero interactiva.

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


Top Ten • EVALUACIÓN

La versión 3.7, o la Beta 3.8 de unix-


top, se encuentra disponible para su des-
carga en [15]. Pero ¿quién necesita des-
cargarla cuando su distribución favorita
ya incluye la herramienta e incluso la
instala en las instalaciones mínimas?
Los administradores estarán familiari-
zados con diversos conmutadores,
opciones y parámetros. La página man
llena varias pantallas, de nuevo gracias a
la cantidad de sistemas operativos que
Top soporta.

Conclusión
Figura 9: No hay mejor herramienta que Htop a la hora de modificar el nivel Nice de todos los Cualquier libro de Linux o Unix que
procesos de Apache. Los administradores pueden pulsar F6 para ordenar, la barra espaciadora cubra la administración de sistemas pro-
para seleccionar y F6 o F7 para modificar las prioridades de las entradas. porciona al menos unas cuantas páginas
sobre la herramienta Top. El programa
página web del proyecto, PowerTop ciones múltiples, los cambios de priori- Top original sigue siendo hoy día el
puede incluso doblar la vida de la bate- dades son más sencillos y rápidos con número uno, pero el ganador no debería
ría. Debido a que la herramienta sólo Htop que con el resto de las otras herra- conformarse: otros competidores, algu-
está disponible para las CPUs de Intel y mientas del sistema. nos especializados y otros simplemente
el último kernel (2.6.22 o posterior), La información que Atop proporciona clones modernos del original, se están
sólo se queda en el tercer puesto de este es más útil para los administradores acercando al liderato. Htop, por ejemplo,
ranking a pesar de todas sus maravillo- avanzados que deseen investigar deta- le puede quitar el puesto. ■
sas características. lles minuciosos de los diferentes proce-
sos. RECURSOS
2: Atop y Htop En la vista estándar, Atop suministra
[1] Xrestop: http://www.freedesktop.org/
El puesto número dos lo tienen dos clo- información avanzada del uso de la
wiki/Software/xrestop
nes de Top, Atop [13] y Htop [14]. Como memoria (M), la planificación (S), pará-
[2] Librería de extensiones de recursos
ambas herramientas son muy parecidas, metros de la línea de comandos (C) y
X: http://linux.die.net/man/3/xres
comparten este puesto. Las ventajas que diversos detalles de los procesos (V).
[3] Ntop: http://www.ntop.org
aporta Atop, y el programa Atopsar que Un kernel especialmente parcheado
viene con el paquete, consisten en mos- permite mostrar de forma adicional el [4] Pksh: http://pksh.tecsiel.it
trar una vista detallada de los procesos uso del disco (D) y de la red (N). Gra- [5] ApacheTop: http://spork.qfe3.net/
monitorizados (Figura 8). cias a Atopsar, los administradores apachetop/
Por otro lado, Htop ofrece un resu- incluso pueden acceder a los datos [6] Ptop: http://ptop.projects.postgresql.
men sensible y su capacidad a la hora Sysstat de los últimos días o semanas, org
de permitir a los administradores actuar suponiendo que se ejecute el servicio [7] Capturas de pantalla Ptop: http://ptop.
sobre los procesos directamente. Por Sar en el sistema. projects.postgresql.org/screenshots
ejemplo, el programa ordena la lista de [8] Dnstop: http://dns.
procesos por nombre o por PID usando Aún el Número 1: Top measurement-factory.com/tools/
sólo un par de atajos de teclado, y A pesar de todas las ventajas de los pro- dnstop
puede asignar una prioridad Nice dife- gramas mostrados en este listado, el [9] Iftop: http:// www.ex-parrot.com/
rente para todos los procesos de Apache favorito del jurado de Linux Magazine ~pdw/iftop
(Figura 9). es la clásica y legendaria herramienta [10] Manual de Iftop: http://www.fifi.org/
También es interesante que todos los de Unix, Top, de William LeFebvre y cgi-bin/man2html/usr/share/man/
controles sean auto explicativos: la inter- otros. man8/iftop.8.gz
faz de Htop es una mezcla entre Mid- Top se encuentra instalado en todos [11] Mytop: http://jeremy.zawodny.com/
night Commander y Top. Un menú con los sistemas, está bien documentado y mysql/mytop
las funciones más importantes se proporciona más o menos los mismos [12] PowerTop de Lesswatts.org: http://
encuentra disponible en el margen infe- controles y comportamiento en cual- www.lesswatts.org/projects/
rior de la pantalla: F6 sirve para ordenar quier sistema Unix, BSD, Linux, muchos powertop
(el administrador puede utilizar una sistemas empotrados y Mac OS X. La [13] Atop: http://www.atcomputing.nl/
especie de menú desplegable para selec- herramienta, que desde 1984 ha sido Tools/atop
cionar la columna), F7 reduce y F8 fundamental para los administradores, [14] Htop: http://htop.sourceforge.net
incrementa la prioridad Nice de un pro- funciona en grandes sistemas, estacio-
[15] Top: http://sourceforge.net/projects/
grama. Como el usuario puede presionar nes de trabajo, ordenadores personales y
unixtop
la barra espaciadora para realizar selec- clusters.

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


PRÁCTICO • Wine

Ejecutar programas de Windows en Linux con Wine

VINO DE
IMPORTACIÓN

Shanna Korby, Fotolia


Los usuarios que se mudan de Windows a Linux pierden a menudo sus juegos y aplicaciones favoritas. ¿No

sería factible poder ejecutar en el sistema operativo libre Linux las aplicaciones Windows? Es el momento de

saborear un poco de Wine. POR TIM SCHÜRMANN

M
uchos de los que migran a todo el mundo contribuyen al proyecto tivo de Redmond, y las ventanas se com-
Linux pierden juegos y progra- Wine. portan como si pertenecieran a un pro-
mas gráficos tales como Corel- grama nativo de Linux.
DRAW o productos como Adobe Photo- ¿Qué Hay en el Nombre? Pero un intérprete sólo es tan bueno
shop. La única solución es instalar Win- Para ejecutar programas de Windows como bueno sea su conocimiento de la
dows en paralelo con Linux, o probar sobre Linux, Wine utiliza un truco bas- lengua, y ahí reside el problema: Debido a
Wine, que engaña a las aplicaciones tante complejo: Se sienta entre la aplica- que Microsoft se negó hasta hace poco a
haciéndoles creer que se están ejecu- ción de Windows y Linux como si fuera revelar detalles de su sistema operativo,
tando en un sistema Windows. un traductor simultáneo. Si la aplicación los desarrolladores de Wine se vieron obli-
La historia de Wine se remonta al año de Windows dice: “Dibuja un botón”, gados a adoptar un enfoque de prueba y
1993. En ese momento, Sun estaba desa- Wine pasa esta orden directamente a error. Esto implicó mucho trabajo arduo, y
rrollando una pequeña herramienta para Linux. Al contrario que VirtualBox o teniendo en cuenta el monstruoso tamaño
ejecutar aplicaciones de Windows en VMware, Wine no emula un PC completo del sistema operativo al que se enfrentan,
Solaris, su propio sistema operativo, sin y, por tanto, no es un verdadero emulador. esto se parece mucho a un trabajo de
la necesidad de una licencia de Windows Esto explica también el nombre de Wine, Sísifo. Por si fuera poco, algunos fabrican-
o de otro tipo de interacción. Este soft- que son las siglas de “Wine Is Not an tes de software utilizan algunos trucos de
ware inspiró a Bob Amstadt y Eric Emulator”. La manera de actuar de Wine programación muy feos, y para hablar a
Youngdale a desarrollar algo similar para tiene una serie de ventajas. La principal es estas aplicaciones cuando se ejecutan en
Linux. Un tiempo después se lanzó la pri- que no necesita una costosa licencia de Linux, Wine necesita conocer estos trucos.
mera versión de Wine. Hoy en día, más Windows. Los programas se ejecutarán Lamentablemente, la mayoría de los pro-
de 300 programadores voluntarios de casi tan rápido como en el sistema opera- veedores de software mantienen este tipo

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


Wine • PRÁCTICO

ción de búsqueda se puede encontrar la


aplicación en la base de datos.
Si se inspecciona CorelDRAW, se obtiene
la página se muestra en la Figura 1, donde
se encuentran las calificaciones de las dis-
tintas versiones, mostrando cómo se ha
comportado el programa en las pruebas
realizadas por los usuarios de Wine. La
calificación de Platino sólo se concede si
un programa se ejecuta sobre Wine sin
errores y sin reducción de su funcionali-
dad. Un par de versiones antiguas de
CorelDRAW han conseguido el estatus
Gold, la versión X4 rechaza cooperar por
completo (Garbage). Adobe Photoshop
CS2 funcionará más o menos como sus
fabricantes pretendían, mientras que la
versión CS3 sólo ha llegado a Bronze. La
cosa es aún peor en el caso de Adobe Illus-
trator. Como regla general, a mayor anti-
güedad de un programa, más posibilida-
Figura 1: La base de datos de Wine lista numerosas aplicaciones que funcionan en Wine; por des para conseguir que funcione.
ejemplo, el paquete gráfico CorelDRAW.
Destrozo
de información guardada en un cajón con Preparación Pulsando sobre la versión de un pro-
siete candados. Antes de arrancar el gestor de paquetes grama indica exactamente cuál es el pro-
A pesar de los años de trabajo transcu- para lanzarse a instalar Wine, es posible blema. Aparece una nueva ventana
rridos, Wine aún está oficialmente en que quiera echar un vistazo a la base de donde se detalla qué es lo que hace y qué
fase de desarrollo, y la mayor parte de la datos de aplicaciones que hay en el sitio no hace como se espera. Además, los
tarea se está realizando en las áreas de principal de Wine [1]. Esta base de datos informes de los usuarios que aparecen en
multimedia, vídeo y gráficos 3D. Dicho resume el nivel de apoyo a diversos progra- la parte inferior y los consejos para con-
esto, Wine soporta por ahora DirectX 8 y mas de Windows: si se ejecuta o no sobre vencer al programa para que colabore
9 bastante bien. Los desarrolladores Wine y, en caso afirmativo, cómo de bien pueden ser muy útiles . Los pasos nece-
comenzaron a trabajar en la décima se comporta. Para acceder a la base de sarios para ello, algunos de los cuales son
encarnación de esta crítica interfaz de datos se va a la página principal de Wine, y muy complejos, no deben intentarse a
gráficos para juegos el año pasado. Otra en el menú WineHQ se pulsa a la izquierda menos que se sea un usuario experto de
limitación es que Wine sólo puede mane- sobre AppDB. En el área AppDB, se selec- Linux. En algunos casos, los programas
jar las aplicaciones de Windows de 32 ciona Browse Apps. Después, hay que des- se niegan a trabajar simplemente porque
bits, aunque el apoyo del software de 64 plazarse a través de la lista desplegable eti-
bits está previsto para algún momento en quetada como Category hasta encontrar la
el futuro. categoría y la aplicación en que se este
Wine tiene otra desventaja: sólo puede interesado y pulsar sobre Update filter. Por
manejar aplicaciones de Windows, no ejemplo CorelDRAW y PhotoShop se ocul-
puede revivir hardware con controladores tan bajo Multimedia | Graphics | Graphics
exclusivos de Windows. Editing. Alternativamente, usando la fun-

Instalar Wine 1.0 en openSUSE


Muchas de las principales distribuciones pués se marca Repositorios Comunidad,
continúan trabajando con las antiguas se va a la pantalla Siguiente para selec-
versiones de Wine, Kubuntu incluye la cionar openSUSE BuildService - Wine
0.9.59, openSUSE 11.0 utiliza la 0.9.64 y CVS Packages, y se pulsa en Aceptar. A
openSUSE 10.3 y 10.2 la 0.9.44 y 0.9.24, continuación YaST revisará la lista de
respectivamente. Revise la documenta- paquetes de la nueva fuente. Si aparece
ción de su distribución para obtener una ventana Importar Clave Pública
más ayuda en la instalación. Para insta- GnuPGP, se elige Importar. Si es nece-
lar una nueva versión de Wine en open- sario, se cierra la ventana actual (Finali-
SUSE, se selecciona Software | Reposi- zar), y ya se puede ir a Software |
torios de Software en YaST para open- Adminsitración de Software para insta- Figura 2: Esta ventana muestra los ajustes
SUSE 11.0 y se pulsa en Añadir. Des- lar Wine 1.0
actuales de Wine.

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


PRÁCTICO • Wine

Figura 3: El archivo de instalación del paquetizador WinRAR. Figura 5: Instalando WinRAR en openSUSE 11.0.

no está Internet Explorer; por ejemplo, necesita es un disco de instalación para Preparaciones
Lexware, un software de contabilidad instalar dicha aplicación de Windows. Wine no se integra con el menú de inicio
basado en Internet Explorer para algunas Obviamente, es preciso una licencia válida de openSUSE. Para iniciar Wine se pulsa
operaciones. para la aplicación de Windows, aunque Alt + F2 y se teclea winecfg en el cuadro
Si la aplicación que se busca aparece en Wine sea gratuito. de texto, pulsándose, dependiendo del
la base de datos como rota, hay que verifi- escritorio que se utilice, Launch o Run.
car la fecha de la prueba (en Test Results). Instalación Después Winecfg creará un directorio
Si la prueba es de hace algún tiempo, Wine está incluido en las principales dis- oculto llamado .wine bajo el directorio
puede que ya funcione, aunque habrá que tribuciones, en caso contrario puede recu- home. EL software utiliza este directorio
experimentar para averiguarlo. Wine con- perarse fácilmente de un repositorio. Si para guardar información básica, tal como
tinúa madurando, y es posible que esa prefiere instalarse la versión más reciente se ve en la Figura 2. Por el momento no se
aplicación ya funcione. Por esta razón, siga los pasos del cuadro “Instalar Wine ha de modificar nada aquí, solamente se
tiene sentido habilitar en la distribución la 1.0 en openSUSE”. ha de pulsar Cancel para cerrar la herra-
actualización automática, que instala cual- En openSUSE 10.2, 10.3, y 11.0, se lanza mienta.
quier actualización de Wine que se lance. YaST y se selecciona Software Manage-
Si esto no funciona, al menos se ha de ment en el cuadro de diálogo Software. Instalando un Programa
intentar instalar la versión más reciente, la Después se teclea Wine en el cuadro de Windows
1.0, tal como se describe en el cuadro “Ins- búsqueda y se pulsa en Search. En la lista Para realizar una prueba de funciona-
talar Wine 1.0 en openSUSE”. de resultados del lado derecho, se marca la miento de Wine se descarga el paquetiza-
Una vez que se haya elegido la aplica- entrada Wine, confirmándose la selección dor WinRAR [2], abriéndose después el
ción de Windows, que probablemente se haciendo clic en Apply (o Accept en open- gestor de archivos de la distribución. En el
ejecute sobre Wine, lo siguiente que se SUSE 11.0). gestor de archivos buscamos el instalador

Figura 4: En openSUSE aparece esta ventana cuando se


pulsa sobre un programa Windows. Figura 6: La aplicación de Windows WinRAR funcionando en openSUSE.

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


Wine • PRÁCTICO

de la aplicación Windows: Normalmente instalando en


se llama setup.exe o autorun.exe. En el la unidad C: en
caso de WinRAR, el nombre es un poco un subdirecto-
críptico: wrar371.exe (Figura 3). Simple- rio oculto
mente hay que pulsar con el ratón. En debajo del
openSUSE puede verse la ventana que se directorio
muestra en la Figura 4. Se teclea wine en el home. Para
cuadro de texto y se pulsa OK. mostrar los
Wine pasa a segundo plano y lanza el archivos ocul-
programa de Windows. Solamente hay que tos, View |
seguir los pasos normales para instalarlo. Show Hidden
Se comentará sobre el tema de las letras de Files en Kon-
unidad Windows en la siguiente sección, queror o Dol-
pero por el momento, hay que confirmar el phin. Se cam- Figura 8: Wine proporciona una elegante aproximación a la desinstalación
directorio de instalación predeterminado bia al directorio de programas Windows.
sugerido por la aplicación (Figura 5). Si el .wine bajo el
instalador pide que se reinicie Windows, directorio home. Un nivel por debajo de winecfg, luego hay que visitar la pestaña
se pulsa Alt + F2, se escribe wineboot y se éste aparece el subdirectorio drive_c, y por Drives (Figura 7). La lista en la parte supe-
hace clic en Run. Esto le indica a Wine que debajo de éste Program Files y Windows. rior muestra el directorio Linux al que está
simule un reinicio de Windows. La figura 6 El primero contiene la aplicación que se mapeado a cada letra. Normalmente C:
muestra el aspecto de un programa de acaba de instalar. Para WinRAR, se hace está mapeado a .wine/drive_c, y Z: per-
Windows funcionando en Wine. Si Wine clic en WinRAR.exe en la carpeta Win- mite a las aplicaciones Windows acceder a
no logra poner en marcha el programa de RAR. En openSUSE, también se debe todo el árbol de directorios, porque está
Windows, se debe consultar el cuadro teclear wine. mapeado al directorio raíz. Aquí se pueden
“Muerto como un Dodo”. Add mapeos definiendo nuevas letras de
Si el programa de instalación crea una o Jungla de Directorios unidades virtuales y tecleando la Path a la
varias entradas en el menú de inicio, algu- Al contrario que Windows, Linux no uti- que debe apuntar.
nas distribuciones las colocan debajo de liza letras para las unidades, así que no le
Wine. Si es así, se pueden utilizar como un queda más remedio que dar un rodeo: VistaXP 98
buen método para poner en marcha el pro- Cada letra de unidad se mapea a un direc- Algunos programas de Windows necesitan
grama de Windows. Sin embargo, con torio Linux. Aunque un programa Win- las características de una versión especí-
openSUSE habrá que buscar en el disco los dows ejecutándose en Wine piensa que fica de Windows. La pestaña Applications
programas de Windows que se instalen. está guardando sus datos en C:, los está puede ayudar a conseguir esto. Se puede
escribiendo en un subdirectorio llamado definir la versión de Windows que Wine
Dime tu Nombre .wine/drive_c bajo el directorio home. El emula individualmente para cada aplica-
Por omisión, Wine almacena cualquier centro de control de Wine muestra qué ción. Para hacerlo, se pulsa Add applica-
programa de Windows que cree que está letra está mapeada a cada directorio. En el tion y se busca el ejecutable de la aplica-
lanzador rápido (Alt+F2) se teclea ción (en .wine/drive_c).

Más Muerto que un Dodo


Si un programa de Windows no funciona que se necesita (en el caso de de Win-
cuando se pulsa sobre él, un poco de RAR, será /programs/ other/ winrar). Una
atención puede mostrar la razón. Se vez allí, se teclea
comienza abriendo una ventana de ter- wine file
minal. En Kubuntu, se selecciona el ele-
sustituyendo file por el nombre de la
mento System | Terminals | Konsole del
aplicación a ejecutar, por ejemplo,
menú. Después se teclea
setup.exe. Hay que asegurarse que se
cd directory respeta la ortografía exacta; escribir
donde directory representa la ruta com- exactamente las mayúsculas y minúscu-
pleta al programa de instalación. Si el las es vital. Para indicarle a Wine que eje-
archivo setup.exe está en un DVD, se cute la aplicación Windows, se pulsa
puede acceder a éste mediante Enter otra vez. Si se observa alguna difi-
/media/path. La línea de órdenes se pare- cultad al lanzar el programa, verificar la
cerá a algo como esto: ventana del terminal para comprobar los
cd /media/DVD_name errores – no se debe cerrar la ventana del
terminal ni el programa Windows que se
Se reemplaza DVD_name con la entrada
ejecuta en él. Si el programa Windows
Figura 7: La pestaña Tab permite mapear los correspondiente en el directorio media y
se bloquea, se puede intentar lanzarlo de
directorios Linux a las letras de unidad. se recorre el árbol de directorios hasta
nuevo.
encontrar el que contiene el archivo .exe

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


PRÁCTICO • Wine

se selecciona el software que se desea eli-


minar y se hace clic en Uninstall.

Conclusiones
Desafortunadamente, Wine no es la pana-
cea, y la mayoría de los principales progra-
mas siguen negándose a cooperar. Los
mejores candidatos son los juegos (ver
Figuras 9 y 10), pero puede que no haya
nada que hacer con los paquetes más
populares de contabilidad, CorelDRAW, la
última versión de Photoshop o iTunes, por
ejemplo.
Una mejor alternativa podría ser la de
buscar un programa Linux que proporcione
una funcionalidad similar. En el caso de
Photoshop, ¿por qué no intentar GIMP o
Krita? Y OpenOffice ha sido durante mucho
tiempo más que suficiente para sustituir
Microsoft Office. Si se comprueba la lista de
paquetes del gestor de paquetes de una dis-
tribución Linux, probablemente se sor-
Figura 9: Algunos juegos Windows, como Adventure Runaway,… prenda por el número de programas com-
parables, o incluso programas de caracterís-
Después, se pulsa Open, se selecciona la podría pensar que sería suficiente con ticas superiores, que ofrece Linux. ■
aplicación de la lista,y a continuación se borrar el directorio correspondiente que se
selecciona la versión de Windows reque- encuentra bajo .wine/drive_c/Program Aplicaciones Descarriladas
rida en la lista desplegable Windows Ver- Files.
La licencia MIT de Wine ofrece a los
sion. La configuración de Default Settings No se debe hacer esto, ya que Wine
usuarios muchos privilegios, un hecho
es válida para todas las aplicaciones Win- sigue manteniendo la aplicación como ins-
que ha ayudado a TransGaming a gene-
dows, a menos que se defina una excep- talada. En vez de esto, se debe ejecutar el rar enormes beneficios. TransGaming
ción. Uninstaller específico de Wine. Para lanzar solamente cogió el paquete, añadió
el desinstalador, se pulsa Alt+F2 en open- funcionalidades DirectX, necesarias
Recogiendo la Basura SUSE y se escribe uninstaller. Después, se para los juegos, y comenzaron a vender
Para deshacerse de una aplicación de Win- pulsa Run (o Launch) y se debe ver la ven- los resultados como Cedega [3] (ante-
dows que se ha instalado en Linux, se tana de la Figura 8. Al llegar a este punto, riormente WineX). Los desarrolladores
de Wine no estaban muy contentos con
esto y, por tanto, cambiara en marzo de
2002 los términos de la licencia a la
LGPL. La LGPL se asegura de que pueda
seguir utilizándose Wine con fines
comerciales, aunque los cambios y adi-
ciones deberán ser devueltos al pro-
yecto. CodeWeavers es ejemplar en este
sentido, la empresa agrupó Wine con
sus propios componentes comerciales
para crear el paquete CrossOver [4],
mientras promueve activamente el
desarrollo continuo de Wine.

RECURSOS
[1] Página principal del proyecto Wine:
http://www.winehq.org/
[2] Página principal del paquetador Win-
RAR: http://www.rarsoft.com/
[3] Sitio web de Cedega: http://www.
transgaming.com/
[4] CrossOver para Linux: http://www.
Figura 10: …funcionarán en Linux gracias a Wine. codeweavers.com/products/cxlinux/

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


Wicd • PRÁCTICO

Spectral-Design, Fotolia
Accede a la red sencillamente con Wicd

¡CONECTADO!
Los usuarios de portátiles cambian de red sin parar. Wicd gestiona distintos perfiles de conexión con rapidez

y eficacia. POR JAN RÄHM

L
os guerreros de la carretera y [1] ofrece una alternativa: Un redu- desarrollado como alternativa al ges-
los usuarios que usan sus por- cido gestor de red que ofrece una tor de red de Ubuntu, aunque se ha
tátiles cambiando constante- interfaz de usuario con todo lo nece- extendido la implementación a otras
mente de entorno utilizan frecuente- sario para configurar redes wifi y distribuciones. Funciona bien con
mente el gestor de red del sistema. cableadas. interfaces alternativas tales como
Lamentablemente, los gestores de red El programa basado en Python actúa XFCE, IceWM, o Fluxbox. Gracias a su
no son el tipo de software que se como un interfaz de usuario para pequeño consumo de memoria y
maneja con rapidez y facilidad. Wicd varios guiones. Originalmente fue ciclos de CPU se siente como en casa
PRÁCTICO • Wicd

en portátiles antiguos, menos poten- Para abrir el dia-


tes. Al mismo tiempo, Wicd admite logo de
un amplio rango de tarjetas de red [2] configuración, una
y distintos tipos de cifrado. vez que el pro-
Instalar Wicd no debería ser dema- grama esté funcio-
siado difícil, incluso para los usuarios nando, sólo hay
menos experimentados. La herra- que pulsar sobre el
mienta se adapta bien en cualquier icono de Wicd que
entorno GTK+ y la mayoría de las se encuentra en la
distribuciones proporcionan una. bandeja del sis-
Incluso si no se encuentra Wicd en el tema (Fig. 1). El
repositorio, es muy fácil añadirlo e gestor de red mos-
instalarlo. trará la red cable-
Los usuarios de Ubuntu descubrirán ada y una lista con
un directorio de paquetes adicional las redes inalám-
para versiones “Dapper” de “Hardy”. bricas que sean
Para añadir el repositorio se lanza el visibles, indicando
gestor de paquetes Synaptic, en el si están cifradas y
menú Sistema, y se elige la fuerza de la
Configuración | Repositorios | Soft- señal. La linea de
ware de terceros | Añadir; después se estado, en la parte
añade la línea deb http://apt.wicd.net de abajo de la ven-
Version extras, sustituyendo Version tana, muestra el Figura 1: Después de lanzarlo, Wicd ofrece una clara visión de con-
por el apodo correspondiente, por estado actual de la junto de la información clave.
ejemplo feisty para Ubuntu 7.04. Tras red. Ahora puede
recargar los repositorios, se localizará conectarse el ordenador a la red. Wicd Aún existen dos configuraciones
fácilmente Wicd mediante una bús- pregunta por un perfil para la cone- WLAN que se esconden bajo el ele-
queda y se instalará en un momento. xión cableada. Se introduce un nom- mento Network del menú: una es para
En Debian es prácticamente el mismo bre para el perfil en el cuadro de diá- especificar el ESSID de una red oculta
método. logo y se pulsa Add para crearlo. Esto y la otra permite crear una red ad hoc
Los usuarios de Arch Linux encon- habilita el Connect azul, sobre el que con tan sólo un par de golpes de ratón.
trarán paquetes de Wicd precompila- se puede pinchar para indicarle al
dos en los repositorios Extra y Tes- ordenador que utilice DHCP y acceda Conclusiones
ting. Para instalar el gestor de red a la red. Wicd es un pulcro y simple gestor de
solamente hay que teclear la orden Wicd tiene una opción Advanced red que funcionará en la mayoría de
pacman -Sy wicd. Los seguidores de settings para los detalles de la los sistemas. Su sencilla y auto-expli-
Slackware pueden descargar el pro- configuración. Aquí se puede configu- cativa configuración no representa
grama del repositorio slacky.eu [3]; rar una dirección IP estática y elegir el ningún obstáculo, incluso para los
tras descargarlo sólo hay que ejecutar nombre del servidor. También pode- usuarios más inexpertos.
installpkg Wicd-Version.tgz para colo- mos especificar opcionalmente Guio- Por otra parte, Wicd ofrece a los
car la herramienta en su sistema. Los nes, que Wicd llamará antes o des- usuarios experimentados una plétora
usuarios de Fedora encontrarán un pués de establecer la conexión. Si se de ajustes, resultando una alternativa
HOWTO en el wiki de Wicd [4]. Los estuviera usando el mismo servidor ideal frente a gestores de red más
paquetes con el código fuente están DNS para todas las conexiones, se complejos. ■
disponibles desde SourceForge [5]. puede configurar en Settings en la
Para que Wicd se cargue automáti- caja de herramientas de Wicd. Wicd RECURSOS
camente cada vez que se inicia el sis- ofrece opciones de configuración
[1] Wicd: http://wicd.net
tema hay que añadir una llamada a completas en este menú, desde elegir
/opt/wicd/tray.py entre la información el driver para la tarjeta wifi, hasta el [2] Hardware probado: http://wicd.
sourceforge.net/wiki/doku.
de arranque. En función del sistema, ajuste del perfil.
php?id=testing
el itinerario puede cambiar. Para Si es necesario, Wicd conectará el
Ubuntu se selecciona Sistema | Prefe- ordenador a una WLAN que haya [3] Paquetes para Slackware 12.0: http://
repository.slacky.eu/slackware-12.0/
rencias | Sesiones | Añadir para identificado. Esto se consigue pul-
network/wicd/
incluir Wicd a la lista de programas sando en Connect. Para redes cifradas,
del inicio. Los usuarios de Fluxbox esto implica que previamente se ha [4] Wicd en Fedora 7: http://wicd.net/wiki/
doku.php?id=fedora
simplemente deben abrir ~/.flux- introducido la clave de red en Advan-
box/startup en un editor y añadir la ced settings. Wicd recuerda la contra- [5] Wicd en SourceForge: https://
orden, seguida de &, delante de exec seña para evitar tener que hacerlo la sourceforge.net/project/showfiles.
php?group_id=194573
/usr/X11R6/bin/fluxbox. próxima vez.

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


OpenWrt • PRÁCTICO

Hackeo de routers domésticos con OpenWrt

TOMA DE CONTROL

Aprenda cómo tomar el control de su router doméstico con OpenWrt.

POR THOMAS LEICHTERNSTERN

E
l proyecto OpenWrt se denomina a si torizar tráfico podemos compilar herra- Por supuesto, hackear un router domés-
mismo como “una distribución Linux mientas de seguridad, como Snort y tico no es precisamente una actividad propia
para dispositivos empotrados”. Más tcpdump. De igual modo, podemos configu- para un novato. OpenWrt proporciona toda
allá de esta sencilla definición, OpenWrt [1] rar logs a medida, scripts o alertas. OpenWrtuna variedad de funcionalidades potentes e
es un marco de trabajo para crear firmware a también puede hacer que ahorremos bas- interesantes, pero necesitamos estar dispues-
medida que podemos instalar en dispositi- tante dinero si adaptamos un router de bajo tos a experimentar.
vos como routers domésticos y cortafuegos. coste, como el WRT54GL, para que realice A pesar de que OpenWrt implementa
Existen diferentes versiones de OpenWrt funciones propias de una herramienta varios mecanismos de seguridad para ayu-
disponibles para toda una gama de dispositi- mucho más cara. darnos a restaurar el sistema, el uso del soft-
vos, incluyendo los afamados routers/corta- ware OpenWrt puede alterar el dis-
fuegos Linksys WRT54GL [2], una solución positivo de manera que sea imposi-
SOHO de bajo coste que probablemente ble volver a la configuración origi-
reconocerá por haberlos visto en tiendas de nal.
ordenadores (véase la Figura 1). Instalar software de terceros en
dispositivos como un router
¿Por qué a Medida? doméstico generalmente anula la
El firmware preinstalado que incluyen dis- garantía.
positivos como el WRT54GL está orientado OpenWrt está disponible para un
a una fácil configuración estándar para todo buen número de modelos de router,
tipo de entornos. Esta solución por defecto incluyendo dispositivos de los fabri-
es aceptable para un uso estándar, pero está cantes Linksys, Netgear, Allnet o
lejos de explotar el verdadero potencial del Asus. El sistema OpenWrt se
dispositivo. diseñó originalmente para operar
OpenWrt nos permite adaptar el software Figura 1: El Linksys WRT54GL es un router/cortafue- desde la línea de comandos, aun-
a nuestras propias necesidades. Para moni- gos SOHO bastante extendido. que el reciente frontend X-Wrt [3]

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


PRÁCTICO • OpenWrt

proporciona una interfaz gráfica de usuario


para la configuración del router. Debido a
que X-Wrt no está completamente soportado
en la versión más reciente de OpenWrt
(denominada “Kamikaze”), tiene más sen-
tido usar la versión anterior (“White Rus-
sian”) si tenemos pensado usar el frontend
X-Wrt. X-Wrt está disponible para su des-
carga bien como sistema operativo con inter-
faz gráfica o como interfaz gráfica Web para
varios modelos de router [4].
Para reemplazar el software original del
router WRT54GL por OpenWrt y X-Wrt, abri-
mos la interfaz Web (la dirección por defecto
es http://192.168.1.1), tecleamos admin
como nombre de usuario y contraseña, y
pulsamos sobre Administration | Firmware
Upgrade (véase la Figura 2). A continuación
pulsamos sobre el icono de carpeta junto al
cuadro de entrada y seleccionamos el
archivo imagen con el explorador de archi-
vos. Para iniciar el proceso, pulsamos el Figura 2: Desde la ventana de configuración Firmware Upgrade del software original podemos
botón Upgrade. subir la imagen de OpenWrt a nuestro router e instalar la actualización.
Nótese que la conexión de red debe estar
habilitada mientras estamos instalando la Connection Type (véase la Figura 3). En la una petición (Connect on Demand) o si
imagen. Para evitar daños irreparables en el Redial Policy, especificamos si el router mar- mantendrá viva la conexión (Keep Alive).
dispositivo no debemos hacer este paso vía cará la conexión a Internet cuando reciba Añadimos la información de acceso para
WLAN. Tras un minuto aproximadamente
aparece la interfaz gráfica de X-Wrt sin nin-
guna otra intervención. El nuevo sistema
operativo asimila los archivos de
configuración originales.

Comenzamos
Para preparar el sistema para su uso, en pri-
mer lugar debemos configurar la red.
OpenWrt es sólo una instalación base. Las
ubicaciones, módulos add-on y las actualiza-
ciones se descargan desde Internet. Debe-
mos tener en cuenta el siguiente detalle cada
vez que cambiamos la configuración del rou-
ter: para aplicar los cambios, debemos pul-
sar previamente el botón Save Changes, y
luego pulsar sobre el enlace Apply. Sólo
entonces el sistema guarda los cambios.
Si pulsamos Network en el menú superior
llegamos a un submenú donde podemos
seleccionar la primera entrada, WAN-LAN,
para afrontar la configuración básica.
Para utilizar el router para conectarnos a
Internet mediante ADSL o módem conven-
cional, seleccionamos PPPoE como nuestro

Alternativas
Otros proyectos el software libre, como
FreeWRT [5] y DD-WRT [6], también
ofrecen firmware alternativo de terceros Figura 3: Para conectarnos a Internet, OpenWrt necesita un modelo DSL. Configuramos los
para dispositivos empotrados. detalles en la configuración WAN-LAN.

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


OpenWrt • PRÁCTICO

nuestra cuenta con el proveedor en los cam- La sección System | Packages (véase la WLAN
pos Username y Password. Nótese que el Figura 4) muestra una lista de cientos de Las exhaustivas opciones de configuración
router no soporta POTS ni RDSI. paquetes disponibles, que podemos instalar WLAN, que sobrepasan ampliamente el
con sólo pulsar el botón Install junto a la des- firmware original, es la parte más interesante
Actualizaciones y Módulos cripción del paquete. para muchos usuarios. Para acceder a la
Add-on Desafortunadamente, la mayoría de estos configuración básica pulsamos sobre Net-
Para actualizar el software del router a la paquetes carecen de una interfaz gráfica de work | Wireless, donde podemos especificar
última versión, seleccionamos Info en el usuario, y la configuración requiere acudir a el modo de operación para la red inalám-
menú, y a continuación pulsamos el botón la consola (véase el cuadro titulado “Línea de brica. Las opciones incluyen Client, Ad Hoc y
Check For Webif Update. Si marcamos la casi- Comandos”). Además de mostrar los paque- Access Point. Esta última es la opción por
lla correspondiente a Include daily builds tes instalados y disponibles, la página Web defecto, que es la elección adecuada para la
when checking for update to webif, el actuali- también ofrece un sistema de administración mayor parte de los escenarios posibles.
zador verificará diariamente las versiones, de paquetes similar a DPKG y soporta la Cuando iniciamos un cliente WLAN,
que podrían tener algún bug. Para instalar la administración de repositorios. Además de difunde en primer lugar un mensaje para
actualización, pulsamos Install Webif. todo esto, con Install Package from URL descubrir puntos de acceso disponibles. Si
Como se mencionó anteriormente, podemos instalar paquetes desde una URL. configuramos ESSID Broadcast a Hide hace-
OpenWrt es simplemente una instalación mos invisible a nuestro router para el resto
base que podemos personalizar mediante la Extensión SSL del mundo.
instalación de programas añadidos. Este Si tenemos que administrar OpenWrt en un OpenWrt también nos proporciona varias
método permite a los desarrolladores mante- entorno LAN no confiable, es aconsejable opciones de cifrado para protegerlos frente a
ner el sistema básico con un tamaño muy instalar la extensión SSL, a la cual podemos usos no autorizados. Se recomienda expresa-
pequeño, lo que es una buena idea, debido a acceder a través de System. Para instalarla, mente habilitarlos. Las opciones que tene-
que un dispositivo como el WRT54GL tiene pulsamos sobre el botón Install Matrix Tun- mos incluyen cifrado WEP de 48 y 128 bits y
sólo 2.112 KB de memoria flash, lo cual nel. Debido a las restricciones de memoria, WPA versión 1 ó 2, que es mucho más
limita el número de herramientas que pode- deberíamos planificar cuidadosamente qué segura. Para usar WPA, debemos instalar
mos instalar. Para consultar el estado de la paquetes necesitamos antes de instalarlos. software añadido mediante la opción Install
memoria pulsamos sobre Status. El valor En caso contrario, podemos quedarnos sin NAS Package.
solicitado es el espacio libre de /dev/ memoria suficiente para instalar extensiones Se accede a las configuraciones avanzadas
mtdblock/4. críticas en un paso posterior. de WLAN vía Advanced Wireless. La opción
Para algunos elementos del menú, como
UPnP o SNMP, los programas correspondien-
tes no están instalados por defecto.
Para descargar los programas pulsamos
sobre Install en la sección del repositorio en
línea correspondiente y continuamos con la
instalación. X-Wrt tiene un cuadro de
configuración para todos los programas que
instalemos de esta manera, y que se habilita
automáticamente al completar la instala-
ción.

Línea de Comandos
OpenWrt soporta una detallada configu-
ración a través de la consola, a la que
podemos acceder vía SSH. Usamos root
como nombre de usuario con la con-
traseña de administrador que hayamos
fijado. Gracias a BusyBox podemos
acceder a casi todas las herramientas
del sistema habituales de Linux.
El ligero administrador de paquetes
ipkg, basado en dpkg de Debian, está
disponible para instalar y desinstalar
paquetes. El comando ipkg install pack-
age_name instala el paquete especifi-
cado y resuelve automáticamente las
dependencias. ipkg update y ipkg
upgrade actualizan nuestro sistema a la Figura 4: OpenWrt tiene un administrador de paquetes al estilo dpkg que resuelve automática-
última versión. mente las dependencias de los programas que vayamos a instalar.

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


PRÁCTICO • OpenWrt

Restrict access (MAC address) nos permite fil- Refreshing, pararemos la actualización y se Reset
trar el acceso al router especificando direc- mostrará un menú desplegable junto a los Si no conseguimos comunicarnos con el
ciones MAC. Si el router y el cliente están nombres de los procesos. router de la manera habitual, nuestra última
bastante alejados, podemos modificar la Desde este menú desplegable podemos opción puede ser presionar el botón de
potencia de salida en el apartado Transmit matar procesos de manera individual Reset. Pulsamos el botón de Reset situado
Power (mw). mediante el envío de las señales SIGHUP, en la parte trasera del dispositivo durante 30
SIGKILL o SIGTERM. Status | Wireless mues- segundos. A continuación lo mantenemos
Análisis tra los clientes WLAN conectados y también pulsado mientras desconectamos la
OpenWrt nos ofrece muchas más opciones actúa como un escáner para descubrir otros corriente, y durante otros 20 segundos tras
de tipo estadístico que el software original, y dispositivos WLAN. Por el momento, el dis- haberlo desconectado. Una vez volvamos a
esto nos puede ayudar a analizar diferentes positivo carece de una función para desco- conectar la corriente, los LED DMZ debe-
eventos que puedan ocurrir en el dispositivo. nectar clientes. rían encenderse para indicarnos que el rou-
El enlace Graphs del menú superior nos con- Si pulsamos sobre Log se abrirá una ven- ter ha entrado en modo mantenimiento y
duce al motor de estadísticas y a la gráfica de tana de configuración del registro del sistema que las configuraciones han sido resetea-
carga de red (véase la Figura 5). El software que nos permite escribir archivos de log en das.
actualiza los datos cada segundo, ofrecién- un equipo externo (servidor de log). El sub-
donos una visión en tiempo real del estado menú también nos permite acceder a los logs Restaurar
de salud del dispositivo. del sistema y del kernel, y al protocolo del Para restaurar el software original, en primer
Si pulsamos sobre el enlace Status se cortafuegos. Las opciones de filtrado están lugar descargamos el archivo de imagen del
abrirá un supuesto en el cual podemos solici- limitadas a la búsqueda por palabras clave. fabricante desde [7]. A continuación vamos
tar diferentes parámetros del sistema, a System | Upgrade en la interfaz gráfica y
comenzando por los módulos cargados, los Copias de Seguridad pulsamos sobre Find… junto a Firmware
clientes conectados, y el estado actual de la OpenWrt es un sistema que invita a los file:. Desde el explorador de archivos, selec-
red. Esta pantalla nos ofrece un resumen usuarios a experimentar. Para asegurarnos cionamos la imagen que hemos descargado
detallado de casi todas las métricas de los de que podemos restaurar un sistema si ocu- y pulsamos sobre Open. Por último, pulsa-
sistemas críticos. La opción Processes nos rre un desastre, existen diferentes métodos mos en Upgrade para reinstalar el firmware
muestra una lista con todos los procesos acti- para hacer copias de seguridad de los archi- original.
vos, que se refrescan en intervalos de 20 vos y las particiones, que están disponibles
segundos. Si pulsamos sobre Stop bajo la opción System | Backup & Restore. Conclusiones
OpenWrt amplía considerablemente las
capacidades del router WRT54GL en compa-
ración con el software original. El sistema
básico incluye un conjunto enorme de fun-
cionalidades, que además pueden ampliarse
con la instalación de módulos, por ejemplo
para UPnP o QoS (Quality of Service).
Si no es usted un usuario experimentado,
debería evitar instalar el software. Debido al
enorme número de opciones, el riesgo de
acabar con una configuración defectuosa es
considerable.
Además de todo esto, la interfaz de admi-
nistración web en ocasiones no es precisa-
mente intuitiva. Varias funciones están
escondidas tras enlaces confusos o son sólo
accesibles dando algún que otro rodeo. ■

RECURSOS
[1] OpenWrt: http://openwrt.org
[2] Linksys: http://www.linksys.com
[3] X-Wrt: http://x-wrt.org
[4] Descarga del firmware X-Wrt: http://
x-wrt.org/install.html
[5] FreeWRT: http://freewrt.org
[6] DD-WRT: http://www.dd-wrt.com
[7] Firmware del Linksys WRT: http://
Figura 5: Análisis gráfico de varios parámetros, como carga del procesador y tráfico de red, en
tinyurl.com/4utmuy
tiempo real.

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


DESARROLLO • Python

Aprovechando los mejores recursos de .NET gracias a IronPython

YO, TEXTO
Las buenas librerías son un bien escaso, y en el software libre lo son aún más. En este artículo veremos cómo

hacer uso de iTextSharp, una de las mejores librerías para generación de documentos PDF, a través de Iron-
Python. POR JOSÉ MARÍA RUÍZ

E
xisten pocas librerías realmente rías binarias C, aunque la plataforma .NET y podemos usarla para cargar los denomina-
potentes en software libre para el tra- Mono pueden hacerlo; para ver más infor- dos Assemblies de .NET (librerías .NET), y
tamiento de PDFs. A pesar de ser mación sobre cómo cargar librerías de una vez cargados podemos importar sus
algo desconocida, iText [1] se emplea en CPython ver Recurso [3]. librerías como si de Python. En el Listado 1
gran cantidad de proyectos de software Como ya hemos dicho, podemos asignar podemos ver un ejemplo práctico que mues-
cerrado, y es vista por muchos como la variables, crear clases, funciones… es tra cómo hacer esto.
mejor librería libre disponible para este Python al fin y al cabo. En particular, la ver- Mono nos provee de la mayoría de las
menester. También se ha adaptado la librería sión 1.1 de IronPython (sobre la que he librerías de .NET. Como vemos en el ejem-
a .NET, dándole el nombre iTextSharp [2]. escrito este artículo) es compatible con plo, sólo tenemos que emplear la función
Por tanto, iText está disponible en las dos Python 2.4 . Una de las diferencias con clr.AddReference() para cargar el assembly
grandes plataformas informáticas del CPython es que no se puede salir del intér- System.dll, que posee toda la funcionalidad
momento: Java y .NET. prete tan alegremente. IronPython fue dise- básica de .NET . En el caso de tener que car-
¿Puede Python aprovecharse de esta cir- ñado para Windows, en el que no existe el gar un assembly que tengamos físicamente
cunstancia? Gracias a IronPython podemos concepto de Control-C o Control-D que tanto en el mismo directorio que nuestro programa
trabajar con librerías .NET a través de Mono. se usa en Unix para salir de un intérprete. (cosa que haremos en este artículo) sólo
Vamos a ver cómo podemos sacarle partido Para poder salir del intérprete debemos man- tenemos que emplear la función clr.AddRefe-
a iText sin dejar de usar nuestro lenguaje darlo a background con la combinación de renceToFile() con el nombre del fichero.
favorito. teclas Control-z y recuperarlo con el
comando fg. En ese momento el intérprete Hola Mundo, desde iText
Recordando IronPython finalizará su ejecución. Metamos las manos en la masa, vamos a
Una vez tengamos IronPython instalado En general no nos encontraremos nada generar el equivalente al «Hola Mundo» pero
podemos arrancar un intérprete mediante el extraño en IronPython en comparación con en PDF. Para ello, y como acabamos de decir,
script que normalmente instala el paquete Python. La gran diferencia radica en la capa- necesitaremos un assembly (librería con
que hemos instalado o mediante Mono: cidad de IronPython de interactuar con la extensión dll de .NET), que guardaremos en
plataforma .NET. Para ello se emplea una el mismo directorio en el que trabajemos.
$ mono ipy.exe librería especial y exclusiva de IronPython: .Net posee algunas decisiones de diseño real-
IronPython 1.0 (1.0) on .NETU clr. Una vez hayamos importado esta librería mente acertadas, y una de ellas es la de
2.0.50727.42
Copyright (c) MicrosoftU Listado 1: Ejemplo de Uso de IronPython
Corporation. All rightsU
01 # -*- coding: utf-8 -*- Size
reserved.
02 import clr 08
>>>
03 09 form = Form( Text=”Hola
04 Mundo”, Size=Size(200, 200))
A pesar de que es Microsoft quien está
clr.AddReference(“System.Windo 10 botón = Button(Text=”¡ Púlsame
esponsorizando el desarrollo de IronPython,
ws.Forms”) !”)
éste posee una licencia libre (estilo BSD).
05 11
IronPython pretende ser igual a Python,
clr.AddReference(“System.Drawi 12 def onClick(event, handler):
podemos ejecutar la mayoría de las senten-
ng”) 13 print “Hola mundo”
cias a las que estamos acostumbrados. La
06 from System.Windows.Forms 14
mayor limitación está en las llamadas libre-
import Application, Button, 15 botón.Click += onClick
rías C que Python posee en su sistema de
Form 16 form.Controls.Add(botón)
módulos. IronPython se ejecuta sobre .NET,
07 from System.Drawing import 17 Application.Run(form)
lo que le limita, ya que no puede cargar libre-

58 Número 43
45 WWW.LINUX- MAGAZINE.ES
Python • DESARROLLO

hacer que los assemblies sean directamente


accesibles al estar en el mismo directorio que
Listado 2: «Hola Mundo» con iText
el programa que los usa. Basta soltar un 01 # -*- coding: utf-8 -*- 11 def prueba ():
puñado de ficheros dll en nuestro directorio 02 12 document =
para tener acceso a una gran cantidad de 03 import clr Document(PageSize.A4)
librerías. 04 clr.AddReference(“System”) 13
La librería iTextSharp no es más que un 05 PdfWriter.GetInstance(document
assembly llamado itextsharp.dll. Lo encon- clr.AddReferenceToFile(“itexts ,
traremos dentro de fichero zip que podemos harp.dll”) FileStream(“listado-2.pdf”,Fil
descargar en el Recurso [4]. Sólo tenemos 06 eMode.Create))
que copiarlo en el directorio en el que ejecu- 07 from System.IO import 14 document.Open()
temos nuestro programa Python. FileStream,FileMode 15 document.Add( Paragraph(“Hola
En el Listado 2 aparece el código que 08 from iTextSharp.text import * mundo”) )
vamos a examinar. Empleamos tanto
09 from iTextSharp.text.pdf 16 document.Close()
clr.AddReference() como clr.AddReferenceTo-
import * 17
File() para cargar los assemblies necesarios.
10 18 prueba()
Una vez hecho esto importamos las librerías
de .Net que necesitamos. Trabajaremos con
las clases Document y FileStream. La primera componen el PDF. Para ello debemos crear que ejecutemos el método Open() de Docu-
representa un documento PDF y es la base nuevos elementos y añadirlos mediante el ment. No podemos asignar cualquier ele-
de todo nuestro trabajo con iText, mientras método Add() de Document. Add() admite mento a estos atributos, debemos emplear
que la segunda nos permite trabajar con muchos tipos de objetos como parámetro, en objetos de la clase HeaderFooter que, una vez
ficheros como si estuviésemos en .NET. iTextSharp casi todos los elementos se com- más, se comporta como Paragraph. Podemos
Podemos conseguir información, libre, sobre portan de forma parecida, haciéndolos inter- verlo en el Listado [3].
.NET en la documentación de Mono que cambiables. Emplearemos el Listado 3, que
podemos encontrar en el Recurso [5]. genera la Figura 2, en la que podemos ver Elementos Chunks,
La función Prueba() hace todo el trabajo. todos los elementos en funcionamiento. Phrases, Paragraphs…
Primero creamos un documento PDF con El encargado, pues, de controlar todo el El objeto más sencillo y simple es Chunk.
tamaño de página A4 (el estándar en comportamiento es Document. Si queremos Representa un trozo de texto con algún tipo
Europa). La clase PdfWriter nos permite aso- crear una nueva página debemos emplear su de formato:
ciar al documento un fichero que empleare- método NewPage().
mos para guardarlo. Para ello abrimos una El API de iTextSharp difiere en muchos texto = Chunk(“Hola mundo”)
conexión con la clase FileStream(), a la que puntos del de iText, al fin y al cabo C# y Java documento.Add(texto)
indicamos tanto el nombre del fichero como se parecen, pero tienen sus diferencias. Por
el modo de acceso (en este caso queremos desgracia no he encontrado el API de iText- El formato se asigna a través de una fuente.
crear el fichero, FileMode.Create). Tenemos Sharp en la web, pero existe una solución. Las fuentes se crean empleando una factoría,
un documento listo para ser usado, por lo Mono nos provee de una herramienta indis- una clase que hace de constructor para otras
que pasamos a abrirlo mediante Open(). pensable: mdoc. Con ella podemos extraer la clases, llamada FontFactory. Para ello utiliza-
Mediante la clase Paragraph generamos un documentación de un assembly sin proble- remos el método GetFont(), al que pasamos
párrafo que añadimos al documento, y por mas. Para ello debemos ejecutar los siguien- la fuente, el tamaño, el formato y el color. El
último lo cerramos con el método Close(). tes comandos: formato se compone de distintos valores de
Ahora sólo tenemos que ejecutar nuestro la clase Font, como por ejemplo Font.HELVE-
programa : > mdoc updateU TICA o TIMES_ROMAN. Es posible emplear
itextsharp.dll -out:xml 3 tipos de fuentes:
$ mono ipy.exe holamundo.py > mdoc export-htmlU • Type 1, que emplean la tecnología de PS.
-out:html xml
Podemos ver el, nada espectacular, resultado
en la Figura 1, un fichero PDF con las pala- El resultado de estos comandos (pueden tar-
bras «Hola mundo» en él. Realmente sencillo dar un poco en ejecutarse, en particular el
¿verdad ? iText es mucho más potente. En las segundo) es un directorio llamado html,
siguientes secciones creamos un documento donde podremos encontrar en ese formato la
mucho más elaborado, con imágenes, tablas, documentación básica sobre iTextSharp.
número de página…
Headers Footers
La Clase Document iTextSharp trabaja de forma explícita con las
Ya hemos visto cómo crear un documento, cabeceras y pies de página. La clase Docu-
escribir algo y cerrarlo guadardándolo. El ment posee dos atributos, Header y Footer,
objeto Document es el encargado de gestio- que nos permiten definir tanto la cabecera Figura 1: El obligatorio «Hola Mundo» creado
nar la disposición del resto de elementos que como el pie. Tenemos que hacerlo antes de en un PDF.

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


DESARROLLO • Python

• Type 3, que emplean la tecnología de mirando la documentación de la clase mientras que las fuentes TrueType son las
dibujo de PDF. iTextSharp.text.Font. Las fuentes Type 3 más usadas en el escritorio KDE o en
• TrueType, que podemos instalar. nos permiten definir nuevas fuentes dibu- OpenOffice. Lo más sencillo es emplear las
Las fuentes Type 1 vienen de serie con jándolas, lo que es bastante complicado, fuentes Type 1, pero hay muchas más
iText, y podemos encontrar sus nombres aunque se utiliza en situaciones especiales, fuentes TrueType, entre las que se encuen-

Listado 3: Demostración de iTextSharp


01 #-*- coding: utf-8 -*- 27 documento.Open() 58 documento.Add(lista)
02 import clr 28 59
03 clr.AddReference(“System”) 29 imagen = 60 tabla = Table(4,4);
04 Image.GetInstance(“/home/josem 61 tabla.AutoFillEmptyCells =
clr.AddReference(“System.Drawi aria/tux.png”) True;
ng”) 30 imagen.Alignment = 62 tabla.BorderWidth = 1;
05 Image.RIGHT_ALIGN | 63 tabla.BorderColor = Color(0,
clr.AddReferenceToFile(“itexts Image.TEXTWRAP 0, 255);
harp.dll”) 31 imagen.ScalePercent(70) 64 tabla.Padding = 5;
06 32 documento.Add(imagen) 65 tabla.Spacing = 5;
07 import System 33 66
08 import System.Drawing 34 trozo = Chunk(“Hola Mundo”, tabla.DefaultCellBackgroundCol
09 from System.IO import FontFactory.GetFont(FontFactor or = Color(203,203,203)
FileStream,FileMode y.HELVETICA, 12)) 67
10 from iTextSharp.text import * 35 frase = Phrase(“Esto es una 68 pierde = Cell(“pierde”)
11 from iTextSharp.text.pdf frase y contiene: (“) 69 pierde.BackgroundColor =
import * 36 frase.Add(trozo) Color(255,0,0)
12 from iTextSharp.text.html 37 frase.Add(“)”) 70 gana = Cell(“gana”)
import * 38 71 gana.BackgroundColor =
13 from iTextSharp.text.rtf 39 azul = Color(0, 0, 255) Color(0,255,0)
import * 40 72
14 41 fuenteEnlace = 73 # Rellenamos las celdas de la
15 def Genera(): FontFactory.GetFont(FontFactor tabla
16 print “Generando gráfico” y.HELVETICA, 12, 74
17 documento = 42 Font.UNDERLINE, azul) 75 for nombre,x,y in
Document(PageSize.A4) 43 [(“Piedra”,1,0),(“Papel”,2,0),
18 44 enlace = Anchor(“Linux (“Tijera”,3,0),
PdfWriter.GetInstance(document Magazine”, fuenteEnlace); (“Piedra”,0,1),(“Papel”,0,2),(
o, FileStream(“listado-3.pdf”, 45 enlace.Reference = “Tijera”,0,3),
FileMode.Create)) “http://www.linux-magazine.es” (“-”,1,1),(“-”,2,2),(“-”,3,3)]
19 ; :
HtmlWriter.GetInstance(documen 46 enlace.Name = “Linux 76 celda = Cell(nombre)
to, Magazine”; 77 celda.HorizontalAlignment =
FileStream(“listado-3.html”, 47 Cell.ALIGN_CENTER
FileMode.Create)) 48 párrafo = Paragraph( 78 celda.VerticalAlignment =
20 Phrase(“Esto es un párrafo y Cell.ALIGN_MIDDLE
RtfWriter2.GetInstance(documen contiene «”)) 79 tabla.AddCell(celda
to, 49 párrafo.Add(frase) ,System.Drawing.Point(x,y))
FileStream(“listado-3.rtf”, 50 párrafo.Add(“» desde “) 80
FileMode.Create)) 51 párrafo.Add(enlace) 81 for resultado,x,y in
21 52 documento.Add(párrafo) [(pierde,1,2),(pierde,2,3),(pi
22 pie = 53 párrafo = Paragraph(“Razones erde,3,1),
HeaderFooter(Phrase(“Página: para comprar Linux Magazine:”) (gana,1,3),(gana,2,1),(gana,3,
“), True) 54 2)]:
23 pie.Border = 55 lista = List(List.ORDERED, 82 tabla.AddCell(resultado,
Rectangle.NO_BORDER; List.NUMERICAL , 20); System.Drawing.Point(x,y))
24 documento.Footer = pie 56 lista.Add( ListItem(“Es la 83
25 documento.Header = mejor revista”)); 84 documento.Add(tabla)
HeaderFooter(Phrase(“Linux 57 lista.Add( ListItem(“La 85
Magazine”),True) sección de Python es 86 documento.Close()
26 genial”)); 87 88 Genera()

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


Python • DESARROLLO

tra la (al menos para mí) odiosa Comic tenedor de objetos ListItem, que se compor-
Sans. tan de forma muy parecida al elemento Para-
En un sistema Linux podemos encontrar graph, puede contener una cadena de texto,
las fuentes TrueType del sistema en un Chunk o un Phrase. Podemos ver un List
/usr/lib/X11/fonts/TTF/. Sólo tenemos que en acción en el Listado 3.
traernos una de ellas al directorio en el que
estamos trabajando y generar en nuestro Tablas
programa la fuente iText mediante las Las tablas son uno de los elementos estrella
siguientes sentencias: de iText debido a la sencillez con las que
podemos manejarlas.
bf=pdf.BaseFont.CreateFontU Las tablas se generan empleando la clase Figura 2: Tablas, gráficos y texto en nuestro
(“/home/josemaria/fuente.ttf”,U Table, que acepta como parámetro el PDF de ejemplo.
BaseFont.CP1252,U número de columnas que tendrá la tabla. En
BaseFont.EMBEDDED); el elemento Table es donde más se nota que Office o Word), XML y HTML. La genera-
fuente = Font(bf, 12); Bruno empleó como ejemplo las tablas de ción de documentos en estos formatos es
HTML, y funciona exactamente igual. De aún experimental en iTextSharp, y es muy
Empleamos la factoría hecho, hasta los parámetros se llaman igual. probable que el resultado no se parezca
iTextSharp.txt.pdf.BaseFont.CreateFont() Tenemos filas y columnas, y podemos alterar demasiado al que obtenemos generando
para cargar la fuente. Acepta tres parámetros: su tamaño mediante los parámetros Row- PDF. Aún así, la exportación a HTML es la
la ruta de la fuente, el encoding, que será Span y Colspan como si estuviésemos en que mejor funciona. En el Listado [3] se
siempre CP1252 (el que se empleaba en los HTML, incluso tenemos parámetros como generan 3 ficheros (PDF, RTF y HTML) a la
IBM PC), y un último parámetro en el que Padding. vez, sólo tenemos que indicarle a iTextS-
indicamos que queremos empotrar la fuente Debemos crear un elemento Table, confi- harp en qué formatos queremos que genere
en el documento. Este último parámetro nos gurarlo e ir añadiendo celdas una a una. Las documentos.
permite distribuir el documento sin necesi- celdas son elementos de la clase Cell que, de
dad de que la persona que lo recibe posea la nuevo, se comporta de forma muy parecida Conclusión
fuente TrueType que hemos empleado. a Paragraph. En el Listado [3] aparece una No hemos podido ver ni un 20% de todo lo
Resumiendo, un Chunk nos permite dar tabla que hace uso de algunos de los pará- que ofrece iText, simplemente debemos
formato a un texto, pero nada más. Para com- metros que nos permiten configurarla. comprobar la documentación del API para
poner textos complejos necesitamos las cla- ver cómo iText se extiende mucho más allá
ses Phrase y Paragraph. ¿Qué podemos hacer Imágenes de la simple disposición de texto e imágenes.
si queremos emplear en un mismo texto dis- La clase Image es la encargada de gestionar- Posee clases para cifrar los PDF, para generar
tintos formatos? Debemos crear distintos las en iText. En otras librerías es necesario código de barras o empotrar Javascript.
Chunks y componerlos dentro de una Phrase cargar los distintos tipos de imágenes emple- Incluso nos permite, dentro de unos límites,
mediante su método Add(). ¿Y si queremos ando clases espaciales para cada formato, cargar un fichero PDF y extraer su texto y
componer varias frases? Pues, siguiendo el pero en iText simplemente necesitamos la componentes.
razonamiento de iText, debemos agruparlas ruta de la imagen. Image puede cargar imá- Espero que el esfuerzo anónimo de perso-
en un Paragraph (un párrafo) mediante su genes en los formatos JPEG, PNG, GIF o nas como Bruno siga trayéndonos al soft-
método Add() . Por tanto, podemos estructu- WMF. En el caso del Listado [3] cargamos ware libre librerías de tanta calidad como
rar nuestro texto en Chunks, Phrases y Para- una imagen en formato PNG. iText. ■
graphs. Aún así, tanto Phrase como Para- Un hecho curioso de iText es que es el ele-
graph admiten texto y un formato prescin- mento que cargamos en un documento es RECURSOS
diendo de otras estructuras si queremos, lo que le indica al documento dónde debe
[1] Página de inicio de iText: http://
que nos da mayor flexibilidad al no tener que situarse. Es decir, debemos indicarle a iTextS- www.lowagie.com/iText/
emplear Chunk si no es necesario. harp.Text.Image cómo queremos que se ali-
[2] Página de inicio de iText Sharp:
iText nos permite crear listas de elementos nee mediante el atributo Alignment, y eso
http://itextsharp.sourceforge.net/
de la misma forma que nos lo permite hacemos en el Listado [3]. También podría-
[3] Cómo cargar librerías de CPython:
HTML. Se crean con la clase List, y podemos mos haber indicado que se situase en una
http://www.voidspace.org.uk/
seleccionar si queremos que sean numéricas posición absoluta mediante el método Set- ironpython/cpython_extensions.
o no mediante el primer argumento de su AbsolutentPosition(). shtml
constructor, que puede tomar los valores
[4] Zona de descarga de Text Sharp:
List.ORDERED o List.UNORDERED. Acepta RTF, HTML http://sourceforge.net/projects/
dos parámetros más, aunque no son obliga- Aunque el desarrollo de iTextSharp sigue de itextsharp/
torios: el segundo parámetro nos permite cerca el de iText, aún no ha conseguido
[5] Mono Documentation Library: http://
indicar si queremos que en lugar de números soportar completamente todas las opciones www.go-mono.com/docs/
se empleen letras para numerar los items de que ofrece iText. La librería iText permite
[6] Listados de este artículo: http://
la lista, el tercero indica el margen que se generar no sólo ficheros PDF, sino también
www.linux-magazine.es/Magazine/
dejará entre el texto y la viñeta o número que RTF (Rich Text Format, formato estándar Downloads/45/Python
identifica a la linea en la lista. List es un con- soportado por editores de texto como Open-

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


DESARROLLO • Perl: Amtrack

Vasiliy Yakob
Un script Perl que vigila precios de Amazon

chu, Fotolia
CAZA
GANGAS
Si eres un caza gangas es probable que te guste este script Perl que monitoriza la evolución de los precios en

Amazon y nos alerta si los baja súbitamente en productos por los que nos hemos interesado.

POR MICHAEL SCHILLI

¿
Debería comprar esa cámara digi- 1, para encontrar los productos que activar el flag -a , pero tenga en cuenta
tal a la que he echado el ojo quiere el usuario. Un cronjob llama al que probablemente se mostrará un mon-
recientemente? ¿O debería esperar script a intervalos periódicos. Cada vez tón de información si ha estado monitori-
a que bajara un poco de precio? Estas que el script conecta con el servicio Web zando precios desde hace tiempo y ha
preguntas son difíciles de contestar, pero de Amazon, consulta los precios de los vigilado diferentes productos.
un vistazo a la evolución de los precios artículos señalados y los guarda en una Cuando se ejecuta sin ninguna opción
en los meses anteriores puede indicarnos base de datos SQLite local. en línea de comandos, amtrack realiza
qué camino pueden tomar esos precios. Si el precio de un producto cae, el su trabajo mediante los atajos definidos
script envía un correo electrónico con la en el archivo de configuración ~/
Historial de Precios URL del producto y el precio a la direc- .amtrack-rc y actualiza la base de datos
Si Amazon ofreciese un historial de pre- ción configurada en la línea 79 . Lo único con los últimos precios.
cios para sus productos, de manera simi- que le resta por hacer al caza gangas es
lar a la evolución del precio de las accio- pulsar la URL en el cliente de correo, Lista de Deseados
nes en las páginas de finanzas, los clien- echarle otro vistazo al producto en el El archivo de configuración tiene dos
tes podrían disgustarse al descubrir que navegador, y en su caso, cazarlo al columnas. La primera contiene el
han desaprovechado oportunidades. O vuelo.
podrían llegar a la conclusión de que los Debido a que los precios se
precios van a seguir cayendo y esperar guardan de forma local en una
un momento mejor para comprar. La base de datos, el script puede
famosa tienda online no ofrece este ser- solicitar y mostrar información
vicio, así que tendremos que desarro- del histórico al momento. Una
llarlo nosotros mismos. llamada a amtrack -l devuelve
los últimos precios de todos los
Precios a la Vista productos monitorizados (véase
El script que vamos a ver, amtrack, par- la Figura 2). Si estamos intere-
sea un archivo de configuración sados en el contenido completo Figura 1: El archivo de configuración ~/.amtrack-rc lista
~/.amtrack-rc, parecido al de la Figura de la base de datos podemos los productos especificados y sus números ASIN.

62 Número 43
45 WWW.LINUX- MAGAZINE.ES
Perl: Amtrack • DESARROLLO

zon::Re-quest::ASIN con pará- La llamada get_interpolated() de la


metros que incluyen el caché recupera el valor de una fecha
número ASIN de un producto. concreta desde la base de datos (la fecha
Tras hacer esto, controla las actual en el script) y una clave específica
comunicaciones con la página (el ASIN de un producto). El script
web de Amazon y devuelve un guarda esto en la variable $last_price, y
objeto de clase Net::Ama- entonces actualiza la base de datos con
Figura 2: Cuando se llama con la opción -l, el script zon::Response::ASIN. La pro- el último valor de la página Web de
amtrack lista los precios actuales de todos los productos piedad is_success() del objeto Amazon. Tras hacer esto, recupera el
que está vigilando. nos indica si la petición ha precio actual desde la base de datos nue-
tenido éxito. En este caso, el vamente y la compara con $last_price.
método properties() devuelve Por contra, el método values()
un único objeto de clase devuelve una lista de parejas de valores
Net::Amazon::Property que que coinciden con la clave especificada.
contiene el producto coinci- Cada pareja es una referencia a un array
dente, incluida una descrip- que contiene la fecha como un objeto
ción del producto, puntuación DateTime y el precio.
de los clientes, URL a las imá-
Figura 3: La base de datos SQLite también puede consul- genes, y mucho más, inclu- Do What I Mean
tarse con el cliente en línea de comandos sqlite3. yendo precio. Amazon ofrece Si el precio actual de un producto bajo
diferentes opciones de bús- supervisión es menor que el último pre-
número ASIN del producto en cuestión, queda (por autor por ejemplo), por lo cio guardado en la base de datos, el
con una breve descripción a su derecha, que properties() también puede devolver script genera un correo electrónico en la
separado por uno o varios espacios en múltiples entradas. El método OurPrice() línea 78 (Figura 4). A pesar de que
blanco. Esto no tiene ninguna influencia de una propiedad devuelve el precio muchos módulos de CPAN pueden
en la base de datos, pero hace que la actual de un producto en formato $X.XX, enviar correos electrónicos, Mail::DWIM
alerta por correo electrónico sea más £X.XX (para Reino Unido) o EUR X,XX (Do What I Mean) es uno de los más
fácil de leer. (para otras ubicaciones europeas: ver sencillos: exporta la función mail(), que
Las líneas de comentario comienzan más abajo). acepta un destinatario, una línea de
con el símbolo de almohadillas (#), y el asunto, y el cuerpo de texto del correo
script las ignora, al igual que ignora los Caché del Histórico electrónico como parámetros. Configura
espacios en blanco. La función El script también se apoya en el módulo valores por efecto con sentido para el
config_read() (Listado 1, líneas 91-111) Cache::Historical de CPAN, que no sólo resto de parámetros, como el remitente o
carga la configuración y devuelve dos guarda información bajo un índice pri- el trasporte del correo electrónico (en
referencias: una al array ordenado @con- mario, como cualquier caché normal, este caso, el usuario activo más el domi-
fig, y la otra al hash %config . El array sino que también inserta una fecha que nio configurado y el demonio activo
contiene parejas de ASIN y valores de usa como índice secundario. El script Sendmail). En cuanto a otros mecanis-
texto, mientras que el hash mapea direc- guarda los precios de los pro-
tamente las ASINs a los textos para ductos, con el ASIN como
poder buscarlas rápidamente. índice primario, y guarda la
información recuperada en la
Oportunidades caché. Tras el escenario,
El módulo Net::Amazon de CPAN pro- Cache::Historical se apoya en
porciona una interfaz orientada a objetos una base de datos SQLite
al web service (basado en RESR) de basada en archivo, listada por
Amazon. Si introducimos el número el módulo como requeri- Figura 4: Llegada de un correo electrónico que anuncia
ASIN del producto, el módulo contacta miento, y que también instala que el precio del robot aspiradora Roomba [4] ha bajado
con Amazon y recupera el precio. gracias a la cobertura de 10$.
Cuando comenzó, Amazon sólo ven- CPAN. El parámetro sqlite_file
día libros, que podían ser identificados del constructor new() fija el
de manera unívoca por sus números nombre del archivo
ISBN. A medida que el catálogo de pro- ~/.amzn-tracker-sqlite en el
ductos creció, añadió el número ASIN, cual se deposita la base de
que tiene una estructura similar pero datos. Si así lo queremos,
también incluye letras, y de esta manera podemos consultar la base de
es capaz de direccionar muchos más pro- datos SQLite con el programa
ductos. cliente sqlite3 para ver la
El método request() de la clase información, como muestra la
Net::Amazon acepta un objeto Net::Ama- Figura 3. Figura 5: Configuración de Log4perl para el script.

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


DESARROLLO • Perl: Amtrack

mos de transporte de correo electrónico, configuración, incluso si se le llama que cron, que inició el script, envíe un
también soporta SMTP especificando el desde un directorio diferente (por ejem- correo electrónico al administrador.
host. Estos valores por efecto se fijan plo, bin/amtrack o amtrack desde el Se define un único usuario registrado
como parámetros en el archivo local directorio de usuario), el módulo Find- para la categoría main (es decir, para el
.maildwim. Para más detalles acerca de Bin nos ayuda a exportar la variable $Bin programa principal). Net::Amazon tam-
esto, sólo tiene que leer la página man como directorio donde se encuentra el bién permite Log4perl, y otra entrada en
Mail::DWIM. script, asegurando de esta manera que el archivo de configuración mostrará
El correo electrónico también contiene $Bin/amtrack.l4p representa la ruta rápidamente los detalles de las comuni-
la URL del producto, que se consigue absoluta a la configuración de Log4perl. caciones con el servidor Web de Amazon
añadiendo /dp/$asin a la URL base de la La configuración de Log4perl no es por pantalla. El usuario main controla
página web de Amazon. precisamente sencilla. Después de todo, dos appenders: Logfile y Screen. Para
queremos que el script escriba sus activi- asegurarnos de que Screen sólo recibe
Logueo Profesional dades normales en el archivo de log mensajes con prioridad ERROR superior,
Para mantener al usuario al corriente de (Figura 6) y muestre los errores en la la línea
lo que está haciendo el script se usa consola.
Log4perl para registrar sus actividades. Se llama a un cronjob a intervalos log4perl.appender.Screen.U
El archivo amtrack.l4p, inicializado por regulares para añadir información en el Threshold = ERROR
Log4perl, se guarda en el mismo directo- archivo de registro (por defecto), pero se
rio que el script (Figura 5). Para permitir enviarán los errores (como una conexión configura este umbral en la definición
al script que encuentre el archivo de fallida de red) a STDERR, y esto provoca del appender.

Listado 1: amtrack
001 #!/usr/bin/perl -w 030 060
002 use strict; 031 if($opts{l} or $opts{a}) { 061 for my $line (@$config) {
003 use Getopt::Std; 032 for my $key (sort keys 062
004 use Net::Amazon; %$txt_by_asin) { 063 my($asin, $txt) = @$line;
005 use 033 my $txt = 064 my $now =
Net::Amazon::Request::ASIN; $txt_by_asin->{$key}; DateTime->now();
006 use Log::Log4perl qw(:easy); 034 for my $val 065
007 use Cache::Historical 0.02; ($cache->values( $key )) { 066 my $last_price =
008 use DateTime; 035 my($dt, $price) = fix_price($cache->
009 use Mail::DWIM qw(mail); @$val; 067
010 use FindBin qw($Bin); 036 print “$dt $txt get_interpolated($now,
011 $price\n”; $asin));
012 my ($home) = glob “~”; 037 last if $opts{l}; 068
013 my $amzn_rc = 038 } 069 track($asin, $txt,
“$home/.amtrack-rc”; 039 } $cache);
014 040 } else { 070
015 041 update($config); 071 my $price_now =
Log::Log4perl->init(“$Bin/amt 042 } fix_price($cache->
rack.l4p”); 043 072
016 044 #################### get_interpolated($now,
017 my $cache = 045 sub fix_price { $asin));
Cache::Historical->new( 046 #################### 073
018 sqlite_file => 047 my($price) = @_; 074 if(defined $last_price
019 “$home/.amtrack-sqlite” 048 and
020 ); 049 if(defined $price) { 075 defined $price_now) {
021 050 $price =~ s/[^\d]//g; 076
022 my $UA = Net::Amazon->new( 051 $price =~ 077 if( $price_now <
023 token => s/..$/.$&/g; $last_price) {
‘YOUR_AMZN_TOKEN’, 052 } 078 mail(
024 # locale => ‘uk’, 053 return $price; 079 to =>
025 ); 054 } ‘foo@bar.com’,
026 055 080 subject =>
027 my($config, $txt_by_asin) = 056 #################### “[amtrack] “ .
config_read(); 057 sub update { 081 “$txt cheaper
028 058 #################### ($price_now < “ .
029 getopts(“al”, \my %opts); 059 my($config) = @_; 082 “$last_price)”,

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


DESARROLLO • Perl: Amtrack

Listado 1: amtrack (Continuación)


083 text => “URL: “ 103 chomp; Net::Amazon::Request::ASIN->n
. 104 my($asin, $txt) = ew(
084 split ‘ ‘, $_, 2; 122 asin => $asin);
“http://amazon.com/dp/$asin”, 105 push @config, [$asin, 123
085 ); $txt]; 124 my $resp =
086 } 106 $config{ $asin } = $UA->request($req);
087 } $txt; 125
088 } 107 } 126 if($resp->is_success()) {
089 } 108 close AMZNRC; 127 my($prop) =
090 109 $resp->properties();
091 #################### 110 return \@config, 128 my $price =
092 sub config_read { \%config; $prop->OurPrice();
093 #################### 111 } 129 INFO “Tracking $asin “,
094 112 130 “($txt): $price”;
095 my @config = (); 113 #################### 131
096 my %config = (); 114 sub track { $cache->set(DateTime->now(),
097 115 #################### 132 $asin,
098 open AMZNRC, “$amzn_rc” 116 my($asin, $txt, $cache) = $price) if $price;
or @_; 133 } else {
099 die “Cannot open 117 134 ERROR “Can’t fetch asin
$amzn_rc”; 118 INFO “Tracking asin $asin”; $asin: “,
100 while(<AMZNRC>) { 119 135 $resp->message();
101 s/#.*//; 120 my $req = 136 }
102 next if /^\s*$/; 121 137 }

En caso de que queramos aprender plemente tenemos que descomentar que el script mantiene las condiciones de
más acerca del entorno de trabajo locale => ‘uk’ en la línea 24. uso de Amazon, e impone limites si el
Log4perl, podemos visitar la página Web Para otros países europeos, los precios usuario recupera precios a intervalos
de Log4perl [2], que tiene una documen- debería mostrarse en formato EUR X,XX, muy cortos.
tación exhaustiva y una FAQ con confi- pero la función fix_price los convierte a
guraciones frecuentes a modo de ejem- un formato en punto flotante adecuado, Mejoras
plo. que podemos comparar con el uso de Para mejorar el script podríamos asignar
operaciones matemáticas. un límite para cada precio en el archivo
No sin Mi Token Como las cifras en Estados Unidos usan, de configuración e indicar al script que
Amazon requiere un token para los para el punto flotante, tanto un punto no nos notifique a menos que el precio
scripts que estén trabajando con su web como comas para separar los miles, baje por debajo de este valor. Otra apli-
service. El token está a libre disposición fix_price() simplemente desecha todo lo cación podría ser dibujar un gráfico de
de cualquiera que se registre y acepte que no es un dígito e inserta el punto deci- los cambios en el precio en un período
las condiciones [3]. Tras recibirlo, sólo mal delante de los últimos dos dígitos. de tiempo. Los módulos RRDTool::OO o
tenemos que remplazar Imager::Plot de CPAN serían perfectos
YOU_AMZN_TOKEN de la línea 23 con Instalación para este propósito. ■
el token correcto. Un shell de CPAN instala los módulos de
El script funcionará con la página CPAN especificados al comienzo del RECURSOS
Web de Estados Unidos o con la de script, y resuelve inmediatamente todas
[1] Listados de este artículo: http://
cualquier otro país, como puede ser la p las dependencias al mismo tiempo.
www.linux-magazine.es/Magazine/
del Reino Unido. Para esta última, sim- Una entrada crontab con el formato
Downloads/45
[2] Log4perl homepage: http://
23 0 * * *
log4perl.com
/path/to/amtrack
[3] Los tokens de Amazon Web Servi-
ces están disponibles en: http://
llama al script una vez al día,
www.amazon.com/soap
23 minutos después de media-
[4] El robot aspirador Roomba: http://
noche. Esto debería ser más
www.amazon.com/
que suficiente para mantener-
iRobot-Roomba-Intelligent-Floorva
Figura 6: Fragmento del archivo de log tras una ejecución nos al día. El módulo c-Robotic/dp/B00008439Y
exitosa del script. Net::Amazon se asegura de

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


La Columna de Charly • ADMINISTRACIÓN

El Día a Día del Administrador de Sistemas: Autenticación de Paquetes Individuales

EXPERIENCIA CON
CLAVES
Normalmente, la técnica del gol-

peo de puertos está abierta a ata-

cantes que utilizan la fuerza bruta

o algún sniffer. Enviar un paquete

cifrado con la petición de acceso

al servidor es más seguro y

moderno. Aprenda más sobre

Firewall Knock Operator, también

conocido como Fwknop.

E
l golpeo de puertos convencional, Figura 1: El cliente llama a la puerta del puerto 22 permitiéndole el paso porque tiene la clave
que expliqué el mes pasado [1], le correcta.
protege contra atacantes que esca-
nean de forma rutinaria redes enteras bus- mentación SPA que funciona muy bien es contesta fwknopd a un golpeo del cliente.
cando cualquier oportunidad. Un cracker Firewall Knock Operator, o Fwknop [2]. La clave secreta que el cliente utiliza para
que se tome su tiempo y registre la comu- Además de las herramientas de compi- identificarse se almacena aquí. La línea
nicación puede identificar señales de gol- lación, la instalación requiere Perl, el SOURCE puede utilizarse para restringir
peo, ya que las secuencias se repiten. paquete libpcap-dev y el módulo redes desde las que el servicio acepta gol-
En teoría, podría considerarse el uso de Net::Pcap. Tras la instalación de todos peos. Para configurar el puerto que el sis-
listas de señales de golpeo de un sólo uso estos recursos, se instala Fwknop, que es tema abre para golpeos con éxito (por
que quedan obsoletas tras utilizarse. Des- una gozada gracias al instalador basado ejemplo, tcp/22 para SSH) puede utilizar
afortunadamente, es muy complejo. Ade- en Perl. OPEN_PORTS. La Figura 1 muestra un
más, si el administrador no es muy crea- intento con éxito. El cliente fwknop recoge
tivo, un atacante podría intentar con Encontrando el Picaporte la clave de su propio
secuencias conocidas de golpeo (puerto Fwknop se compone del servidor /etc/fwknop/access.conf.
7000, 8000, 9000, …) para conseguir el fwknopd y del cliente fwknop. El servidor Si la conexión SSH no se abre lo bas-
acceso. puede configurarse editando dos ficheros tante rápido, FW_ACCESS_TIMEOUT se
Una posible solución puede ser la bajo /etc/fwknop/; fwknop.conf contiene dispara en el servidor. Este tiempo nor-
Autenticación de Paquetes Individuales la configuración básica. Inicialmente malmente está establecido en 30 segun-
(SPA). El sistema de golpeo envía un sólo necesitará cambiar un par de parámetros, dos, pero yo lo suelo doblar ¡Nunca le
paquete conteniendo las credenciales de que están etiquetados con __CHAN- meta prisa a un administrador en su tra-
autenticación cifradas, normalmente una GEME__. bajo! ■
frase de paso, y el cliente responde Los demás parámetros que se pueden
abriendo un puerto específico. Una imple- utilizar aquí vienen ya por defecto. Nótese RECURSOS
que necesitará sincronizar el tiempo entre
[1] “Knock-Knock” por Charly Kühnast,
SYSADMIN el servidor y el cliente, ya que si la dife-
Linux Magazine, edición en caste-
rencia es muy grande, fwknopd ignorará
KSplice . . . . . . . . . . . . . . . . . . . . . . . .68 llano, Nº 44.
el golpeo del cliente.
Cómo actualizar el kernel sin tener que [2] Fwknop: http://www.cipherdyne.org/
Las entradas en
reiniciar la máquina. fwknop/
/etc/fwknopd/access.conf definen cómo

WWW.LINUX-MAGAZINE.ES Número 45 67
ADMINISTRACIÓN • Ksplice

Anjapepunkt, photocae.com
Modificación del kernel en ejecución con Ksplice

PEDAZO A PEDAZO
A veces el tiempo total de funcionamiento de una máquina es tan los parches son muy simples. El ochenta
por ciento constaba de menos de quince
importante como lo puedan ser las actualizaciones. Pero, ¿no hay que líneas de código, de las cuales más de la
mitad era de poco más de una línea. Los
reiniciar cada vez que se aplican parches al kernel? Con Ksplice problemas suelen estar causados por un
simple error a la hora de procesar los ele-
podemos aplicarlos mientras estamos usando ese kernel. mentos de un array (“off-by-one errors”).
Los bugs de este tipo son muy fáciles de
POR NILS MAGNUS
arreglar. Por ejemplo, el Listado 1 muestra
un parche para la llamada al sistema

A
pocos administradores les entu- media un bug en el kernel cada tres sema- prctl(), que soluciona la vulnerabilidad
siasma la idea de instalar un nas. El modelo de desarrollo libre tiene la explicada en CVE-2006-2451. El problema,
nuevo kernel, por lo que la mayo- peculiaridad de que continuamente apare- para el que hay exploit, se soluciona con
ría de distribuciones ofrecen un gestor de cen nuevos parches. una sola línea de código.
paquetes y algunas herramientas de insta- Jeffrey Brian Arnold, del MIT (Massa- Arnold desarrolló el paquete Ksplice [2]
lación que simplifican la tarea. Después de chusetts Institute of Technology), demostró con la idea de parchear un kernel en eje-
cargar e instalar el nuevo kernel, y de con una encuesta [1] que la mayoría de cución, directamente, sin necesidad de rei-
registrarlo en el cargador de arranque, el
reinicio no debería tomar más de un par Listado 1: Parche para CVE-2006-2451
de minutos. Pero es que dos minutos de
01 diff —git a/kernel/sys.c b/kernel/sys.c
ausencia resulta que son demasiado para
02
algunas aplicaciones.
03 —- a/kernel/sys.c
Si gestionamos sistemas para procesa-
04 +++ b/kernel/sys.c
miento matemático, como los usados para
05 @@ -1991,7 +1991,7 @@ asmlinkage long sys_prctl(int option,
simulaciones en climatología, o sistemas
unsigned
gestores de un gran número de conexiones
06 long arg2, unsigned long arg3,
de red, como servidorees telefónicos o
07 case PR_SET_DUMPABLE:
tiendas en línea, probablemente preferire-
08 - if (arg2 < 0 || arg2 > 2) {
mos evitar tener que reiniciar.
09 + if (arg2 < 0 || arg2 > 1) {
Por otro lado, el administrador es tam-
10 error = -EINVAL;
bién el responsable de la seguridad de los
11 break;
sistemas que gestiona. Las encuestas reve-
12 }
lan que los desarrolladores encuentran de

68 Número 45 WWW.LINUX-MAGAZINE.ES
Ksplice • ADMINISTRACIÓN

Figura 1: Para preparar los cambios que se aplicarán al kernel en ejecución, Ksplice crea dos árboles de kernel (Fase 1), encuentra las diferencias
a nivel de código de los objetos (Fase 2), los optimiza (Fase 3) y reúne para crear un nuevo módulo (Fase 4).

niciar. El programa sólo necesita el código el programa llama a stop_machine_run(), suposiciones erróneas con respecto al ker-
fuente del kernel, sus datos de deteniendo la ejecución del hilo, ya que nel en ejecución. Ksplice hace uso de una
configuración y la tabla de símbolos. Lo esta función crea un proceso de alta priori- sólida lógica a la hora de analizar la tabla
mejor de todo es que ni siquiera tenemos dad por cada CPU. El módulo de Ksplice de símbolos, que en muchas distribucio-
que preparar el sistema para usar Ksplice. comprueba entonces si el candidato al nes se guarda en el archivo /boot/
El programa es capaz de modificar cual- cambio contiene algún hilo. En caso de ser Symbol.map. Además de todo esto, com-
quier kernel a partir de la versión 2.6.8. así, el módulo espera un rato y luego pila ambos kernels con varias opciones
Las distribuciones Linux suelen propor- vuelve a intentarlo. Este método no es que asignan un segmento de texto ELF
cionar el código fuente del kernel, pero si efectivo con algunas funciones como el distinto a cada función para facilitar la
lo hemos compilado nosotros mismos, lo programador de tareas, puesto que siem- identificación de los saltos relativos modi-
tendremos en /usr/src. Los archivos config pre está ocupado haciendo algo. En esos ficados.
y System.map suelen ubicarse en /boot. casos, Ksplice deja de insitir, pero si no, Debido a que Ksplice maneja el código
Ksplice necesita además, obviamente, un instala las direcciones de salto. A partir de como las cajas negras, no puede detectar
parche o un archivo (o varios) ya modifi- ahora, el kernel Linux ejecutará la versión cambios en estructuras de datos. Por
cado. El programa compila dos nuevos parcheada de estas funciones. ejemplo, si con un parche se añaden nue-
kernels: pre representa una versión del sis- vos atributos a una estructura de datos
tema actual, mientras que post designa el Valores Internos dada, o si se cambia su diseño, pueden
kernel resultante tras aplicar los cambios. Ksplice tiene que encontrar las funciones producirse sorpresas. Los saltos suelen
adecuadas y las direcciones de vectores en tomar punteros a funciones, pero no hay
Encuentra las Diferencias código reubicable. El programa es capaz garantía de que Ksplice pueda realizar,
Después de compilar los dos nuevos ker- de detectar cambios en direcciones de según el caso, operaciones aritméticas
nels, Ksplice busca diferencias en el salto relativas donde la función en sí complejas con punteros o hacer correcta-
código objeto (ver Figura 1). Si Ksplice misma no se ve afectada por ninguna mente las conversiones de tipos.
analizase el código directamente, tendría modificación, gracias al nuevo tamaño de
que emular cada una de las decisiones del la función parcheada. El kernel normal- Fuera de los Límites
compilador, algo muy complicado para la mente introduce al inicio las funciones En la documentación, el autor enfatiza
tarea que nos atañe. Por este motivo, implementadas en C. Por contra, en el que diseñó la herramienta principalmente
Ksplice hace uso de la librería GNU BFD caso de tratarse de código ensamblador, el para la aplicación de pequeños parches de
[3] para buscar funciones en el código programa tiene que buscar el vector. seguridad, y que es responsabilidad del
objeto que hayan cambiado en el nuevo Si el programa usase un compilador administrador leer, comprender y evaluar
kernel. Ksplice guarda entonces el nuevo diferente para el kernel pre, se darían el parche antes de aplicarlo. Dicho de otro
código en módulos e inserta saltos al prin-
cipio de las funciones originales, que
apuntarán ahora a las nuevas versiones.
Cuando el administrador activa los cam-
bios, Ksplice carga dos módulos en el sis-
tema en ejecución, realizando así las
modificaciones (ver Figura 2).
Uno de los momentos críticos se da en
el instante en el que Ksplice ya puede ins-
talar los saltos. Los problemas empiezan
cuando hay un hilo del kernel usando una Figura 2: Para activar las nuevas funciones, Ksplice intenta introducir saltos al comienzo de
de las funciones que hay que reemplazar. la función antigua. El programa detiene antes los procesos y se asegura de que el código no
Para evitar que se produzca esta situación, usa hilos.

WWW.LINUX-MAGAZINE.ES Número 45 69
ADMINISTRACIÓN • Ksplice

El programa está for- punto de modo que se puedan ver deter-


mado por cuatro scripts minadas estructuras de datos que de otra
en Perl que llaman a forma nos costaría ver, Ksplice nos ofrece
varias herramientas para un método simple de inyectarlas en el sis-
el análisis de código tema en ejecución. Aún así, este método
objeto escritas en C. no sirve de mucha ayuda con aplicaciones
kslice-create sólo necesita muy complejas, para las que los módulos
los detalles del parche y de carga dinámica, los Kprobes, o System-
la ruta al directorio que tap son mucho más adecuados.
contiene las fuentes del
Figura 3: Para preparar Ksplice, el administrador ejecuta el kernel. Una funcionali- ¿Método Patentado?
comando ksplice-create desde el directorio que contiene las dad bastante práctica es Algunos desarrolladores han señalado que
fuentes del kernel y especifica el tipo de parche. Ksplice compila la de que el administra- Microsoft envió una aplicación patentada
entonces los kernels antiguo y nuevo y aplica los cambios a tra- dor pueda especificar un a la USPO (US Patent Office) en Diciembre
vés de un módulo de actualización. cambio mediante un de 2002 titulada “Parcheado de funciones
archivo diff, con el pará- cargadas en un sistema informático en eje-
modo, hace falta bastante experiencia con metro —patch, o especificar mediante el cución”. La USPO rechazó la aplicación y
el kernel para usar con seguridad esta parámetro —diffext el archivo sobre el que Microsoft apeló, enviando después unas
herramienta; de no tenerla, podrían ocu- ya se han aplicado los cambios. pocas aplicaciones más, entre las que se
rrir cosas mucho peores que el pequeño El programa necesita un subdirectorio encontraba una para “Parcheado Efi-
retardo producido por el tener que reini- ksplice en el árbol del kernel, donde el ciente” (referencia 20050257208 de la
ciar la máquina. administrador depositará tanto la USPO).
Ksplice no puede realizar cambios configuración del kernel como la tabla de Como respuesta, media docena de desa-
semánticos sobre kernels en ejecución, y símbolos (ver Figura 3). rrolladores publicaron en varios foros que
puesto que la mayoría de los cambios Dependiendo del tipo de sistema que se esta tecnología era ya de dominio público
entre un kernel publicado y el siguiente esté usando, la primera fase puede tardar en varias plataformas, desde PDP-11 hasta
añaden alguna nueva funcionalidad, el un poco, debido a que Ksplice necesita PCs de última tecnología, mucho antes de
deseo del administrador de medir en años compilar dos kernels completos: uno en que se solicitase la patente de la aplica-
el tiempo de ejecución del sistema pasa de ksplice/pre y el otro en ksplice/post. Des- ción.
ser una mera quimera. pués de hacerlo, el programa busca las
diferencias y combina los resultados, cre- Un Asistente Útil
En Producción ando dos módulos para el kernel. Ksplice integra ciertos mecanismos inge-
La actual versión, 0.9.4, se encuentra dis- El parche se aplica con ksplice-apply. El niosos para el soporte de actualizaciones
ponible en forma de tarball con binarios programa carga primero un módulo res- del kernel a nivel binario. A pesar de la
precompilados, o de archivo con el código ponsable de la gestión de los saltos, que facilidad con que se puede modificar
fuente, licenciado bajo GPLv2. En el permanecerá en espera hasta el momento código y analizar vectores, el administra-
momento de escribir este artículo no hay oportuno. LLegado el momento, Ksplice dor debe comprobar cada una de las situa-
paquetes precompilados para ninguna dis- carga los cambios en el kernel, los ejecuta ciones en las que podría ser útil la herra-
tribución. Si compilamos la herramienta y se elimina a sí mismo para ahorrar mienta. Ksplice resulta útil con casos sen-
desde las fuentes, necesitaremos también memoria. cillos, pero no puede pretender ser la solu-
la librería BFD, que podemos obtener en ción para fallos de hardware en situacio-
Debian y sus derivados (como Ubuntu) Gestión de Parches nes en las que se requiere una alta dispo-
con el siguiente comando: Ksplice también puede modificar un ker- nibilidad del sistema. ■
nel ya parcheado. Para ello, los parches de
sudo aptitude install U la primera fase deben residir en el árbol de RECURSOS
binutils-dev código pre. Luego ksplice-create y ksplice- [1] “Ksplice: Un Sistema Automático de
apply tienen constancia de los saltos que Actualizaciones de Seguridad del
Los desarrolladores más prominentes, ya existen y hacen las correspondientes Kernel Linux sin Reiniciar”, por Jef-
entre los que se incluye Andi Kleen, pro- modificaciones. El mismo mecanismo es frey Brian Arnold, MIT (Massachu-
ponen la inclusión de Ksplice en el kernel el que hace posible deshacer cambios con setts Institute of Technology) http://
oficial en forma de extensión. Kleen ksplice-undo, ya que el sistema conoce las web.mit.edu/ksplice/doc/ksplice.pdf
piensa que para el proyecto supondría un direcciones de los vectores. Para mostrar [2] Descarga e instalación de Ksplice:
soporte permanente que llevaría, a largo todos los cambios realizados por Ksplice http://web.mit.edu/ksplice/
plazo, al desarrollo de un compilador empleamos ksplice-view. [3] GNU binutils y librería BFD: http://
incremental [4]. Se eliminaría la necesi- Jeffrey Brian Arnold nos enseña en su sourceware.org/binutils/
dad, por parte de los desarrolladores, de sitio web otra posible aplicación potencial [4] Anuncio y discusión en la lista de
recompilar completamente el kernel cada de la herramienta: la depuración de un correo del Kernel Linux: http://thread.
vez que se pruebe o modifique un par- kernel en ejecución. Si sólo queremos aña- gmane.org/gmane.linux.kernel/
che. dir un par de llamadas printk() en algún 669951

70 Número 45 WWW.LINUX-MAGAZINE.ES
LINUX USER • Fotoxx

Manipulación de imágenes con Fotoxx

Sajola, photocase.com
LUCES Y SOMBRAS
El programa de manipulación de imágenes Fotoxx ofrece lo más destacado, como HDR y funciones de todo

tipo, aunque donde hay luces también hay sombras. POR THOMAS PELKMANN

E
l programa de manipulación de diferentes de las que presentan las GUIs que se mueven, el grado de frustración
imágenes libre Fotoxx ofrece la más populares. puede variar. A pesar de ello, el visor de
colección habitual de funciones Fotoxx es una buena elección como imágenes es importante para un flujo de
para la mejora y edición de fotos digita- visor de imágenes y como aplicación para procesos intuitivo. También es desafortu-
les, pero también herramientas para seguirle la pista a nuestras fotos digitales. nado que el botón Open no ofrezca a los
manipulación de fotos high-dynamic Para ver una perspectiva de nuestra colec- usuarios una vista previa: o conocemos el
range (HDR) e imágenes panorámicas. ción de fotos en cualquier carpeta pulsa- nombre de las imágenes o tendremos que
Los paquetes precompilados se encuen- mos Folder. Cuando se trata de coleccio- adivinar cuál queremos.
tran disponibles para unas cuantas dis- nes grandes, Fotoxx se bloquea o res-
tros y el desarrollador nos dirige a ellos; ponde lentamente. También carece de Retoque y Mejora
en el sitio web de Fotoxx, el programador, algunas funcionalidades útiles, como el La barra de icono de la izquierda suminis-
cuando se enfrentó con el gran número modo presentación o la capacidad para tra herramientas de edición de imágenes.
de sistemas de empaquetado [1], simple- clasificar imágenes por categorías. A los La mayoría de ellas son autoexplicativas,
mente declaró “Me rindo”. Sin embargo, usuarios se les deja la tarea de navegar como Crop, Redeye, Rotate, y abren diálo-
con un par de pasos manuales podemos imágenes individuales, debiendo pulsar gos adicionales que muestran los paráme-
instalar Fotoxx desde el código fuente dos veces sobre una para abrirla y editarla tros más importantes con un clic de ratón.
(véase el cuadro “Instalación de (Figura 1). El método de abrir deslizadores y vistas
Fotoxx”). Desafortunadamente, Fotoxx no posee previas en ventanas separadas indepen-
Cuando se arranca por primera vez, una barra de desplazamiento, lo que dientes del programa principal obliga a
Fotoxx aparece con una interfaz sorpren- resulta una molestia si las imágenes no los usuarios a cambiar una y otra vez
dentemente sencilla: un extenso espacio caben en la ventana. La única opción es entre ventanas para mover lo que se nece-
vacío, enmarcado por una barra de ico- reducir la escala de la previsualizaciones sita al primer plano.
nos horizontal para las funciones de o navegar fila a fila o página por página Sin embargo, el programa ofrece una
archivo principales y una barra vertical por las imágenes. Como el programa apa- buena selección de opciones de calibra-
para las herramientas del programa, muy rentemente recarga las imágenes cada vez ción. Por ejemplo, podemos establecer el

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


Fotoxx • LINUX USER

brillo en adjust usando no menos de Las imágenes HDR se caracteri-


nueve barras de desplazamiento para las zan por sus extremos entre gamas
áreas individuales. Los botones próximos de puntos de oscuridad y luminosi-
a las barras de desplazamiento soportan dad. El ojo humano puede detectar
automatización; por ejemplo, + - sube las hasta 100.000 gradientes diferentes,
barras de desplazamiento para regiones mientras que una cámara digital
oscuras mientras los baja para las ilumina- sólo puede manejar unos 1.000
das. En cambio, - + - simplemente eleva valores de contraste. Las pantallas
los valores de rango medio. Como no normales incluso hacen un trabajo
existe descripción de esta función, debere- peor, ofreciendo 256 escalas distin-
mos confiar en nuestro propio juicio. tas. El auténtico HDR no se encuen-
En la mayoría de los casos, esta estrafa- tra aún disponible a precio del con-
laria manera de hacer las cosas que tiene sumidor, y las imágenes que pare-
Fotoxx es irritante. Por ejemplo, la fun- cen ser fotos HDR son de hecho
ción Crop coloca el diálogo justo encima imágenes que aproximan esta idea
de la imagen antes de permitir que pulses con un incremento del alcance diná-
con el botón izquierdo del ratón y arras- mico (DRI).
tres para seleccionar un área. El cuadro DRI [2] es un método que utiliza Figura 2: Fotoxx calcula cómo se complementan los
crop se aparece automáticamente y puede múltiples exposiciones de la misma contrastes en las fotos entre sí.
redimensionarse arrastrando el ratón, imagen para crear una foto simple.
aunque no puede ni moverse ni redibu- Casi cualquier cámara digital puede hacer luego HDR para añadir una segunda ima-
jarse, lo que que no es ni intuitivo ni esto: véase “Exposure Bracketing” o gen. El programa calcula entonces cómo
innovador. Podemos encontrar ejemplos “Grupo de Exposición” en el manual de se complementan entre sí los contrastes
de mala usabilidad en casi cualquier fun- usuario del cámara. en las imágenes; dependiendo de la reso-
ción de Fotoxx. Así, para rotar una ima- La creación de imágenes DRI manual- lución, esto puede llevar unos dos minu-
gen debemos introducir un ángulo en mente es complicado, ya que necesitamos tos. A continuación, Fotoxx abre una ven-
Rotate. Además, el programa carece de copiar el contraste mejor de cada imagen tana llamada pesos de imágenes HDR, en
atajos de teclado de cualquier tipo. y aplicarlo a la nueva imagen. Afortuna- la que podemos usar las barras de despla-
damente, existen aplicaciones especiales zamiento o botones para configurar la
Bricolaje HDR/DRI que suministran un método automatizado
Si esto fuera todo cuanto tuviera que ofre- para realizar esta tarea. Instalación de Fotoxx
cer Fotoxx, no merecería la pena. Pero En Fotoxx, pulsamos Open o seleccio-
Primero descargamos el archivo tar de
posee dos funciones especiales sobresa- namos la primera imagen en un grupo de
Fotoxx al directorio que elijamos (-
lientes: HDR e imágenes panorámicas. exposición en el visor Folder, y pulsamos >DVD), a continuación arrancamos una
consola e introducimos los siguientes
comandos:
$ tar -xzf fotox.35.tar.gz
$ cd fotox
$ ./ubuild
Si necesitamos satisfacer alguna depen-
dencia, el script build se quejará de
componentes faltantes. Instalamos lo
que falte y luego repetimos el comando
./ubuild. Después de que build se com-
plete, el programa se instala por defecto
en /home/user/fotox.
La instalación configura un icono de
escritorio llamado fotox, que podemos
usar para iniciar el programa. Sin
embargo, no crea una entrada de menú.
Cuando arrancamos Fotoxx por primera
vez, crea un fichero con datos de
configuración críticos. Este fichero
puede modificarse más tarde a través
del menú Param.. El fichero de
configuración en sí, .fotox/parameters,
está localizado en nuestro directorio de
inicio. Para modificar la configuración,
podemos usar cualquier editor.
Figura 1: Navegar por imágenes individuales puede resultar tedioso.

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


LINUX USER • Fotoxx

proporción entre la imagen aña-


dida y la original. Para aplicar las
opciones pulsamos Apply, y luego
repetimos los pasos con las imáge-
nes que quedan en el grupo de
exposición. Una vez lo hayamos
hecho, veremos una imagen más
intensa que la original (Figuras 2 y
3).
Juzgando por los resultados, Figura 4: Crea perspectivas panorámicas cosiendo fotos.
Fotoxx realiza un trabajo de crea-
ción de imágenes HDR decente, aunque Para comenzar, mantenemos pulsado el Enderezar las Líneas
lo que realmente hace con ellas es un botón izquierdo del ratón y movemos la Fotoxx incluye la capacidad de endere-
secreto del desarrollador. La superposi- imagen que hemos añadido aproximada- zar las líneas inclinadas, por ejemplo,
ción de imágenes es la mitad de la histo- mente hacia la imagen original. Si necesi- cuando tomamos una foto y los bordes
ria. La otra mitad es el llamado mapeado tamos girar la segunda imagen en relación de la imagen no son paralelos a la geo-
de tonos [3], que consiste en la compre- con la original, cogemos su borde dere- metría de la cámara, como los de un
sión de rangos dinámicos sobre-propor- cho. O podemos usar las teclas de flecha edificio. Para eliminar efectos indesea-
cionados en las imágenes de salida para para mover la imagen que estamos aña- bles como estos pulsamos unbend y
permitir que un monitor las presente o se diendo a la posición correcta milímetro a luego experimentamos con los valores
impriman en papel. Programas tales milímetro. Ahora establecemos el valor para vertical unbend y horizontal
como el plugin de exposición combinada para Lens mm y Lens bow para coser las unbend. Fotoxx no proporciona una
de GIMP [4] posee herramientas separa- dos imágenes de la mejor manera posible. vista previa en tiempo real. En su lugar,
das para ello que permiten al usuario ver Lens mm es para la longitud focal y Lens debemos aplicar (Apply) las opciones a
estas opciones. Fotoxx prescinde de todo bow para distorsiones de barril o alfiler. la imagen primero y luego hacer cam-
ello. Pulsando Find le decimos al programa bios antes de pulsar Finish para aplicar
que encuentre automáticamente los mejo- los cambios a la imagen permanente-
Panorama res valores de distorsión. Luego podemos mente.
Evidentemente, existen otros programas pulsar Next para coser las imágenes. La
diseñados a medida para crear imágenes imagen destella momentáneamente Conclusiones
panorámicas anchas, incluyendo Hugin. durante la unión, pudiendo mezclar y Si me hubiera limitado a usar las fun-
A pesar de ello, Fotoxx ofrece una función emparejar valores de brillo y tono. Una cionalidades especiales del programa,
que trabaja de forma parecida a la herra- vez lo hayamos hecho, pulsamos Apply y Ftoxx habría salido bien librado: las
mienta HDR. Primero seleccionamos una Finish para completar la costura, repi- funcionalidades HDR y panorámica fun-
imagen como la base para la foto panorá- tiendo luego el proceso con las otras par- cionan perfectamente, aunque los usua-
mica, luego pulsamos Pano. para añadir tes. Coser imágenes individuales es una rios probablemente apreciarían una
más fotos a la original (véase la Figura 4). función que funciona bien, con unos mayor transparencia en el proceso. Des-
También podemos configurar parámetros resultados más que utilizables, sin afortunadamente, las funciones básicas
para el cosido lo que permite resultados embargo, tiene sentido seleccionar Crop de Fotoxx son espartanas y los controles
finales más fluídos. para arreglar los bordes. inusuales son totalmente molestos. Y lo
que es peor, el programa podría ser más
rápido. Si deseas retocar imágenes, qué-
date con GIMP, pero si quieres experi-
mentar con HDR y con imágenes pano-
rámicas, échale un vistazo a Fotoxx. ■

RECURSOS
[1] Fotoxx: http://www.kornelix.com/
fotoxx
[2] Artículo de la Wikipedia sobre DRI:
http://en.wikipedia.org/wiki/
High_dynamic_range_imaging
[3] Artículo de la Wikipedia sobre mape-
ado de tono: httP://en.wikipedia.org/
wiki/Tone_Mapping
[4] Plugin de exposición combinada de
GIMP: http://turtle.as.arizona.edu/
jdsmith/exposure_blend.php
Figura 3: Fotoxx realiza un buen trabajo en la creación de imágenes HDR.

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


BeeDiff • LINUX USER

Comparación de ficheros con BeeDiff

DIFERENCIAS

Eric Isselée, Fotolia


BeeDiff compara dos ficheros y muestra rápidamente las diferencias en En nuestro sistema Ubuntu 8.04 de
laboratorio con el escritorio Gnome,
una práctica interfaz GUI de escritorio. POR FLORIAN EFFENBERGER BeeDiff necesitó el paquete libqtgui4, lo
que conllevó algunas dependencias
más.

L
os programadores a menudo tra- siones actuales de Ubuntu y Debian, Además, el arranque inicial dura más
bajan con parches que contienen aunque sí se encuentra incluido en de lo esperado. Sin embargo, una vez
las diferencias entre dos ficheros. openSUSE. en marcha, la ventana del programa
Linux siempre tuvo herramientas basa- Si no podemos encontrar a BeeDiff en (Figura 1) es limpia y ordenada, con
das en texto para comparar ficheros, el repositorio de nuestra distribución, dos cuadros de texto, una barra de ico-
como la clásica utilidad de Unix diff. siempre podemos descargar un binario nos y una línea de estado que contiene
BeeDiff es una herramienta de compara- del sitio web [2]. En la línea de coman- cuatro contadores.
ción con la ventaja de lo gráfico: Pode- dos, escribimos tar xvfz
mos comparar archivos desde una beediff_1.7_i586.tar.gz o ejecutamos Configuración
cómoda interfaz de escritorio, apare- nuestro administrador de archivos para La interfaz BeeDiff es bastante auto-
ciendo los cambios resaltados en color. desempaquetar el directorio beediff con explicativa. Si fuera necesario, System |
los ficheros. Para arrancar el programa Configure nos lleva hasta las opciones
Instalación introducimos beediff en la línea de básicas (Figura 2), incluyendo distin-
BeeDiff [1] no se encuentra disponible comandos. ción entre mayúsculas/minúsculas,
como paquete precompilado en las ver-

Alternativas a BeeDiff
Como la comparación de ficheros es
parte del trajín diario de los desa-
rrolladores, muchos programas con
ámbitos funcionales variados pueden
comparar archivos. Los puristas
preferirán herramientas de la línea de
comandos como diff. Si también usa
Windows a Mac OS X para trabajar con
ficheros, es preferible la GUI tkdiff [3] a
BeeDiff. KDiff3 [4], Meld [5] o Diffuse [6]
poseen más funciones que BeeDiff. La
mayoría de los editores y paquetes
ofimáticos ofrecen ahora funcionali-
dades similares.
Figura 1: BeeDiff es limpia y ordenada.

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


LINUX USER • BeeDiff

solapas, espacios y líneas en blanco, y


la fuente y el color de la fuente para
cambios. En la mayoría de los casos, los
valores predeterminados deben estar
bien.

Comparación de Ficheros
Para comparar ficheros los abrimos pul-
sando el botón … situado encima de las
ventanas de texto. Lo normal es cargar
el fichero original en la ventana de la
parte izquierda y el fichero con el que
queremos compararlo en la parte dere-
cha. La herramienta enumera automáti-
camente las líneas, aunque podemos
deshabilitarlo en System | Numeration.
La Figura 3 muestra una comparación
entre dos ficheros de texto. La ventana
de texto de la parte izquierda contiene el
fichero original, test1.txt, mientras que
la de la derecha posee una versión modi-
ficada denominada test2.txt. La barra de
estado nos dice que hay un total de 26
diferencias, incluyendo 9 cambios, 8 Figura 3: BeeDiff comparando dos archivos de texto.
adiciones y 9 supresiones. Los destaca-
dos rojos indican las líneas de supresio- directamente en BeeDiff. La función dar el archivo pulsando sobre el icono
nes, las verdes, cambios dentro de una Operations | Remove all from left o de disquete.
línea, y las azules, las líneas insertadas. Remove all from right elimina las líneas
Los cambios a palabras individuales se insertadas y las borradas (líneas con Conclusiones
destacan en amarillo. fondo rojo a azul) de los archivos de la BeeDiff es útil para comparar dos ficheros
izquierda o de la derecha, respectiva- y visualizar los cambios. Aunque dise-
Sincronización de Cambios mente. ñado originalmente para programadores,
Si deseamos sincronizar la diferencia Las líneas marcadas en verde contie- BeeDiff también es útil a otros usuarios.
entre dos ficheros, podemos hacerlo nen pasajes de texto confusos para Bee- La capacidad de aceptar o de deshacer-
Diff, porque el software es incapaz nos individualmente de los cambios es
de identificar los detalles de los práctico, y el hecho de que ambas venta-
cambios. nas estén sincronizadas muestra que los
En lugar de deshacer simple- desarrolladores han considerado el uso de
mente los cambios, podemos su producción. A BeeDiff aún le falta una
seleccionar Operations | Merge all función para recomparar ficheros pul-
to left o Merge all to right. La fun- sando un botón después de hacer los
ción intenta incorporar los cam- cambios. Si necesitamos comparar docu-
bios a un archivo en el otro mentos más complejos, probablemente la
archivo, aunque típicamente se mejor opción sea una suite ofimática que
necesitan algunas ediciones a soporte control de versiones y rastreo de
mano. cambios. ■

Cambios Aceptados a RECURSOS


Mano
[1] BeeDiff: http://www.beesoft.org/
BeeDiff también nos ofrece la
beediff.html
opción de confirmar o de deshacer-
nos manualmente de cada cambio. [2] Descarga de BeeDiff: http://www.
El icono de flecha que sigue a cada beesoft.org/download_beediff.html
posición de texto añadida aplica la [3] tkdiff: http://sourceforge.net/projects/
modificación al otro fichero, y una tkdiff/
X a continuación de cada línea [4] KDiff3: http://kdiff3.sourceforge.net
insertada o borrada elimina la
[5] Meld: http://meld.sourceforge.net
Figura 2: La combinación de colores y la fuente se línea completa. Tras completar
modifican en el diálogo de configuración. nuestros cambios podemos guar- [6] Diffuse: http://diffuse.sourceforge.net

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


Workspace: Marcas OpenOffice • LINUX USER

Cómo marcar cualquier cosa en OpenOffice.org

VUELVA VD. MAÑANA


Aprendemos cómo marcar documentos OpenOffice.org con la extensión Bookmarks Menu o a crear nuestra

propia herramienta de marcado. POR DMITRI POPOV

Asistente

¿
No sería mejor que OpenOffice.org trucos, los cuales la hacen una ingeniosa
tuviera una funcionalidad de mar- herramienta de gran ayuda. Si no estamos familiarizados con Book-
cado? Con algo así podríamos mar- Al igual que ocurre con la mayoría de las marks Menu, la manera más fácil de añadir
car nuestros documentos favoritos y acce- extensiones de OpenOffice.org, instalar una marca es a través del asistente, que
der a ellos con un par de clics de ratón en Bookmarks Menu no es particularmente podemos iniciar pulsando el botón Wizard.
vez de tener que buscar a través de los dificultoso. Descargamos la última versión Cuando lo ejecutamos notaremos que
directorios de nuestro disco duro. de la extensión, luego, usando el adminis- nos permite marcar no solamente docu-
Aunque podemos acceder previamente a trador de Extensiones en OpenOffice.org mentos, sino también directorios e incluso
ficheros abiertos a través del menú Archivo (Herramientas | Administrador de Exten- comandos y aplicaciones (véase la Figura
| Documentos Recientes, esta funcionalidad siones) instalamos el paquete .oxt descar- 2). Para crear una marca para una aplica-
también se encuentra demasiado limitada gado.
como para ser muy útil. Afortunadamente, Tras instalar Bookmarks Menu
tenemos al menos dos maneras de resolver debemos reiniciar OpenOffice y
este problema: Podemos usar la extensión habilitar la extensión. Para ello
Bookmarks Menu (Figura 1) o crear nues- seleccionamos Herramientas | Com-
tra propia herramienta de marcado usando plementos y pulsamos en el botón
OpenOffice.org Basic. Activar. Esto añade el menú a la
barra de herramientas principal y
Extensión Bookmarks Menu abre el diálogo Edit Bookmarks
Tal y como su nombre sugiere, la extensión Menu, desde el que podemos añadir
Bookmarks Menu [1] nos permite marcar marcas y configurar elementos del
documentos, y además aplicar otros pocos menú. Figura 1: La extensión Bookmarks Menu.

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


LINUX USER • Workspace: Marcas OpenOffice

ción o un comando, seleccionamos la Creando un


opción Execute command y pulsamos el Administrador de
botón >>. En la ventana siguiente espe- Marcas Paso a Paso
cificamos el comando deseado y un argu- A pesar de que Bookmarks Menu
mento adicional. Por ejemplo, si desea- posee unas cuantas funcionalidades
mos marcar el navegador de Firefox, bien pensadas, esto no debería dete-
introducimos firefox en el campo ade- nernos si queremos crear nuestra
cuado. propia solución de marcado. En
Adicionalmente podemos especificar nuestra sección de bricolage creare-
una URL como un argumento de entrada mos un administrador de marcas Figura 2: Con el asistente podemos añadir rápida-
(por ejemplo, http://en.wikipedia.org/wiki/ que se ajuste a nuestras necesidades mente una marca.
Main_Page). De esta manera la marca abre específicas. Además, esto nos brinda una
el navegador Firefox que le lleva luego buena oportunidad para aprender un par lista y pulsando el botón Abrir. Para
hasta la página de Wikipedia. de trucos de OpenOffice.org Basic. hacerlo fácil, el administrador de marcas
Introducimos un nombre descriptivo de En este ejemplo explicaré cómo crear maneja solamente documentos de procesa-
la marca en el campo Label y pulsamos una marca que usa dos macros. La macro miento de palabras (.odt y .doc) y los abre
>>. En la ventana siguiente, pulsamos el BookmarkDocument (véase el Listado 1) en OpenOffice.org Writer, aunque pode-
botón Test para asegurarnos de que la nos permite coger el documento que dese- mos ajustarlos para incluirlos fácilmente
marca especificada funciona adecuada- amos marcar y guardar su nombre y ruta en otros formatos.
mente, y luego pulsamos OK. Ahora ya en la base de datos de OpenOffice.org Base. Antes de comenzar a trabajar con las
podemos arrancar Firefox eligiendo la La macro OpenBookmarks (véase el Lis- macros debemos crear una base de datos
marca recién creada desde el menú Book- tado 2) muestra una lista de los documen- que contenga la tabla “ficheros” y dos
mark. tos marcados, pudiéndose abrir el docu- campos de texto: NombreFichero y Ruta-
En lugar de usar el asistente podemos mento que deseemos seleccionándolo de la Fichero. A continuación guardamos la
pulsar el botón New en el diálogo Edit
Bookmark Menu, el cual nos da acceso a Listado 1: Macro BookmarkDocument
funcionalidades más avanzadas, como la
01 Sub BookmarkDocument()
capacidad de marcar macros. Esto hace de
Bookmark Menu una alternativa mucho 02 FilePicker=createUnoService(“com.sun.star.ui.dialogs.FilePicker”)
mejor para el acceso a macros que la fun- 03 With FilePicker
cionalidad Herramientas | Personalizar del 04 .appendFilter(“ODF Text Document”, “*.odt;”)
propio OpenOffice.org.
05 .appendFilter(“Microsoft Word 97/2000/XP”, “*.doc;”)
Para marcar una macro seleccionamos
Edit Bookmark desde el menú Bookmark y 06 .CurrentFilter = “ODF Text Document”
pulsamos el botón New. Luego damos un 07 End With
nombre a la marca, seleccionamos Macro 08 FilePicker.execute
de la lista desplegable Type, pulsamos el
09 FilePath()=FilePicker.Files
botón Open, y elegimos la macro que dese-
amos. Para guardar la nueva marca pulsa- 10 DispDir=FilePicker.DisplayDirectory
mos OK, y ya lo tenemos. 11 If GetGUIType=1 Then
La ventana Edit Bookmarks Menu posee 12 FileName = Right(FilePath(0),Len(FilePath(0))-Len(DispDir))
también unas cuantas herramientas que
13 Else
pueden ayudarnos a mantener nuestras
solapas en nuestros bookmarks. Con el 14 FileName = Right(FilePath(0),Len(FilePath(0))-Len(DispDir & “/”))
botón Sub Menu es posible agrupar nues- 15 End If
tras marcas en submenus, mientras que el 16 DBContext=createUnoService(“com.sun.star.sdb.DatabaseContext”)
botón Separator nos permite insertar una
17 DataSource=DBContext.getByName(“BookmarkDB”)
línea divisoria entre las marcas. El botón
Menu suministra los comandos Import Set- 18 ConnectToDatabase=DataSource.GetConnection (“”,””)
tings y Export Settings. Como se habrá 19 SQLQuery=”INSERT INTO “”files”” “ + “(“”FileName””, “”FilePath””)
podido adivinar, la última nos permite VALUES “_
exportar nuestras configuraciones y mar- 20 + “(‘“ + FileName + “‘,’” + ConvertToURL(FilePath(0)) + “‘)”
cas, así que podremos importarlas luego a
21 SQLStatement=Database.createStatement
la extensión Bookmarks Menu de otra
máquina. 22 Result=SQLStatement.executeQuery (SQLQuery)
Si poseemos muchas marcas y deseamos 23 Database.close
usarlas en distintas instalaciones de Open- 24 Database.dispose()
Office.org, esta funcionalidad puede llega a
25 End Sub
ser realmente práctica.

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


Workspace: Marcas OpenOffice • LINUX USER

base de datos como un fichero Book- servicio FilePicker que puede hacer mucho Después de que el usuario haya seleccio-
markDB.odb y lo registramos como una trabajo pesado por nosotros. Este servicio nado un fichero, la macro extrae su nom-
fuente de datos en OpenOffice.org. presenta un diálogo que permite al usuario bre. Para hacerlo usa la propiedad Display/
Para hacer esto último, arrancamos seleccionar un documento. Para iniciar y Directory y obtiene la ruta del fichero y las
OpenOffice.org y elegimos Herramientas | ejecutar el servicio sólo necesitamos dos rutinas de cadena Right y Len para extraer
Opciones. Seguidamente seleccionamos líneas de código: el nombre del fichero de la ruta.
OpenOffice.org Base | Bases de datos y A continuación la macro establece una
pulsamos el botón Nuevo. Luego seleccio- FilePicker=createUnoServiceU conexión a la base de datos BookmarkDB e
namos la base de datos BookmarkDB.odb (“com.sun.star.ui.dialogs.U inserta el nombre del fichero obtenido y la
y damos a la nueva conexión el nombre FilePicker”) ruta en los campos apropiados de la tabla
de “BookmarkDB”. Después pulsamos FilePicker.execute files con la instrucción INSERT INTO SQL.
Aceptar dos veces y creamos un diálogo La macro OpenDocument comienza
llamado BookmarkDialog (que consta de Debido a que el administrador de marcas estableciendo la conexión a la base de
un cuadro desplegable y de un botón sólo maneja documentos de procesador de datos BookmarkDB y usa una consulta
Aceptar), y habremos acabado. textos, es buena idea añadirle un filtro de SQL para conseguir todas los registros
manera que el usuario no pueda seleccio- (marcas) de la tabla de ficheros. Luego la
Macro BookmarkDocument nar ficheros en otros formatos, que es exac- macro llama al diálogo BookmarkDialog y
Lo siguiente es la macro BookmarkDocu- tamente lo que hace el bloque de código puebla el cuadro desplegable con los nom-
ment. OpenOffice.org Basic viene con el With ... End With. bres de los ficheros.
Cuando el usuario selecciona un fichero
Listado 2: Macro OpenBookmarks de la lista y pulsa el botón Abrir, la macro
01 Sub OpenBookmarks()
utiliza el nombre del fichero como una
parte de su consulta siguiente para encon-
02 DBContext=createUnoService(“com.sun.star.sdb.DatabaseContext”)
trar la grabación apropiada:
03 DataSource=DBContext.getByName(“BookmarkDB”)
04 ConnectToDatabase=DataSource.GetConnection (“”,””) SQLQuery=”SELECT “”FilePath”” U
FROM “”files”” WHERE U
05 SQLResult=createUnoService(“com.sun.star.sdb.RowSet”)
“”FileName””=” U
06 SQLQuery=”SELECT “”FileName”” FROM “”files”””
& “‘“ & CurrentItemName &”’”
07 SQLResult.activeConnection = Database
08 SQLResult.Command = SQLQuery Finalmente, la macro pasa la ruta del
fichero obtenido a la instrucción Shell, que
09 SQLResult.execute
abre con OpenOffice.org Writer.
10 exitOK=com.sun.star.ui.dialogs.ExecutableDialogResults.OK
11 OpenDialog(“BookmarkDialog”) Una Última Palabra
12 Dialog=CreateUnoDialog(TheDialog) Una ventaja importante de este administra-
dor de marcas hecho en casa es que pode-
13 DialogField=Dialog.GetControl(“ListBox1”)
mos ajustarlo de cualquier manera que
14 While SQLResult.next
deseemos. Por ejemplo, podemos añadir
15 ListBoxItem = SQLResult.getString(1) un cuadro de diálogo de entrada a la macro
16 DialogField.additem(ListBoxItem, DialogField.ItemCount) BookmarkDocument que nos solicite que
introduzcamos etiquetas para el docu-
17 Wend
mento seleccionado. Luego podemos
18 If Dialog.Execute=exitOK Then
modificar la macro OpenDocument para
19 CurrentItemName=DialogField.SelectedItem que presente solamente marcas que coinci-
20 End If dan con una etiqueta específica.
Con unas cuantas personalizaciones
21 SQLQuery=”SELECT “”FilePath”” FROM “”files”” WHERE “”FileName””=” &
simples, el administrador de marcas puede
“‘“ & CurrentItemName &”’”
usarse para iniciar aplicaciones. En otras
22 SQLResult=Database.createStatement() palabras, con el administrador de marcas
23 QueryResult=SQLResult.executeQuery(SQLQuery) básico en su lugar, no existen virtualmente
24 QueryResult.next límites a lo que podemos hacer con él. ■
25 FileToOpen=QueryResult.getString(1)
RECURSOS
26 Shell(“swriter”,1, FileToOpen)
[1] Extensión Bookmarks Menu de
27 Database.close
OpenOffice.org: extensions.services.
28 Database.dispose() openoffice.org/project/
29 End Sub bookmarksmenu

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


LINUX USER • Educación : Mindstorms

Los robots con Linux invaden el aula

TORMENTAS
MENTALES 50% juguete de montaje, 50% kit de robótica, 100% juguete

educativo. Así podríamos resumir lo que viene en la caja del

Lego Mindstorms… con el aliciente añadido de que, además, es

muy divertido. POR PAUL C. BROWN utilizand Squeak

L
o malo de Lo más irónico de todo el asunto es que el $ wget http:U
muchos de los sistema operativo del Mindstorms es soft- //downloads.sourceforge.netU
juegos educati- ware libre. No sólo eso, sino que Lego pro- /bricxcc/nbc-1.0.1.b35.tgz
vos, es que la mayoría porciona kits de desarrollo tanto para soft- $ tar zxvf nbc-1.0.1.b35.tgz
están diseñados por ware como el hardware NXT, todo disponi- $ cp nxt/nbc /home/U
profesionales del sec- ble en [1]. directorio-personal/bin/
tor que tienen una Así que, trabajar con Mindstorms bajo
deformación profe- Linux no es tan sencillo como insertar el CD … donde /home/nuestro-directorio-personal/
sional que les impide y esperar que aparezcan los programas con bin/ se encontraba en nuestro PATH. El pro-
pensar fuera del aula. sus colorines. Más bien todo lo contrario: es ceso anterior fue muy similar para t2n.
Así, muchas propuestas una experiencia mucho más hardcore que
de ideas, juegos y soft- requiere de editores de texto, compiladores Cómo se Hace
ware que vemos en la y la línea de comandos… todo lo cual lo Los pasos necesarios para crear un pro-
redacción, no tienen hace mucho más divertido e instructivo. grama y ejecutarlo en el robot son los
una aplicación práctica La lista de la compra de los programas siguientes: escribir el programa en nuestro
para el mundo real, son necesarios comprende: editor, compilarlo con nbc, transferirlo al
trillados y, lo peor de • un editor de textos, nosotros escogimos ladrillo NXT con t2n y ejecutarlo seleccio-
todo, son aburri- kate, aunque vi, emacs, gedit… cualquiera nándolo de los ficheros ejecutables disponi-
dos… Ninguna vale; bles.
de estas cosas • el compilador nbc (NXT Byte Compiler) Como muestra, un botón: el Listado 1,
se pueden decir [1], que compila código de alto nivel a versión ligeramente modificada de un ejem-
del Lego Mind- algo que entiende el “ladrillo” NXT. plo extraído del excelente tutorial de Daniele
storms. • el programa de transferencia t2n (Transfer Benedettelli [4], hace que el robot circule
to NXT) [2]. El sistema de archivos del dibujando un cuadrado. Una vez escrito, lo
Soporte Linux ladrillo NXT no es algo muy común y no guardamos como cuadrado.nxc (incluir la
No conseguimos hacer fun- puede simplemente montarse como se extensión .nxc es importante) y, desde una
cionar el software que venía con el haría con un pendrive o similar. De todas línea de comandos, escribimos:
kit bajo Linux de ninguna manera. Ya está- las soluciones existentes que probamos,
bamos preparados para utilizar el CD como ésta es la que mejor funciona y la más
posavasos desde el principio, pero, que ni sencilla.
siquiera funcionara la instalación fue una Por tanto, de los tres programas, uno ya
sorpresa particularmente desagradable. debería estar instalado en nuestros sistema, y
Pero no es tan grave, ya que, según algunos de los otros dos, ninguno necesita de compli-
sitios de aficionados, el sistema de progra- cadas instalaciones ni configuraciones. Se
mación visual y con ladrillos pronto se bajan de sus respectivos sitios web, se des-
vuelve impracticable y confuso a medida comprimen, se les cambian los permisos
que crece la complejidad de los programas. para que sean ejecutables (de ser necesario),
Aún así, cero puntos para Lego en ésta área se copian a algún directorio para aplicacio-
para un juguete que, por lo demás, es exce- nes, y listo. Por ejemplo, para tener el compi- Figura 1: Nuestro robot NXT-Logo con el
lente. lador nbc globalmente disponible hicimos… rotulador subido.

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


Educación : Mindstorms • LINUX USER

$ nbc cuadrado.nxc U tágonos, hexágonos o una estrella de n pun-


-O=cuadrado.rxe tas. Pregunta: Después de lo anterior ¿será
más fácil o más difícil de enseñar a los esco-
Una vez hecho esto, transferimos el pro- lares el concepto de ángulo y cómo se
grama al ladrillo, conectándolo con el cable miden?
USB a nuestro ordenador y escribiendo: Sin embargo, las ruedas del Mindstorms
patinan sobre superficies muy lisas y hacen
$ t2n -put cuadrado.rxe que el progreso sea irregular sobre superfi-
cies rugosas. Éste es un problema común
Para hacer funcionar el programa, desco- para todas las máquinas con capacidad de
nectamos el robot del ordenador y pulsa- movilidad… incluyendo el cuerpo humano.
mos el botón naranja del ladrillo NXT; con Para superar los accidentes del entorno, las Figura 2: El mismo robot con el rotulador
los botones de flechas, buscamos el icono máquinas necesitan ajustarse y corregir sus bajado y listo para dibujar.
My Files y pulsamos el botón naranja para movimientos. Para evaluar el tipo y canti-
validar nuestra selección. Buscamos el dad de corrección requerida, tiran de sus plo, que un robot de dos ruedas mantenga
icono Software Files y, de nuevo, pulsamos sentidos. el equilibrio a lo Segway).
el botón naranja para introducirnos en el Aquí es donde la cosa se empieza a poner Los sensores, usados aisladamente o com-
directorio de los programas. Buscamos interesante. binados, permiten crear un robot que sigue
nuestro programa con las teclas de flechas y una línea negra trazada en el suelo, un
y pulsamos una vez más la tecla naranja. Sentidos y Sensibilidades coche automático que aparca cuando
EL NXT nos mostrará tres iconos: una pape- El kit de Lego Minstorms, aparte de piezas encuentra un hueco o un artefacto mecánico
lera, que, de seleccionarse, eliminaría nues- de construcción, engranajes y motores, que resuelve el cubo de Rubik [5].
tro programa del NXT; un sobre, que sirve viene de serie con cuatro sensores que le
para enviar nuestro programa a otro robot permiten reaccionar ante el entorno Conclusiones
por medio de Bluetooth; y, por fin, un icono El sensor de tacto, el más sencillo, detecta Mindstorms es un juguete con un potencial
etiquetado con la palabra “Run” que nos cuándo está siendo pulsado. Puede utili- didáctico inmenso. Permite enseñar de una
permite ejecutar el programa. zarse, por ejemplo, para que el robot sepa el manera práctica y divertida conceptos mate-
momento en el que ha chocado con algún máticos, físicos, de diseño e ingeniería, e
Qué Enseña obstáculo. El sensor de ultrasonidos, por incluso biológicos, si mucho se me apura;
La aplicación más obvia es la de ver el robot otro lado, permite que el robot detecte obs- amén de temas directamente relacionados
como una puesta al día de la tortuga mecá- táculos a distancia, de manera similar a los con la asignatura de informática.
nica de Logo. Podemos dotarlo de un rotu- murciélagos. El detector de luz puede dis- A casi 300 euros, no es el recurso educa-
lador (ver Figuras 1 y 2), ponerlo sobre un tinguir intensidades de luz y colores. El sen- tivo más barato que se puede comprar por
papel y escribirle un programa que le per- sor sónico detecta sonidos y su intensidad. ahí, pero debido a su calidad y versatilidad,
mite circular, dibujando alguna forma geo- Existen más sensores que se pueden es un aparato en el que vale la pena invertir.
métrica… Aún si esto ya se hacía hace comprar separadamente. Especialmente Por ello volveremos a visitarlo desde las
años, ¡imaginémonos el impacto en un interesantes son el sensor brújula, que sirve páginas de Linux Magazine en el futuro. ■
grupo de alumnos de primaria! Después de para que el robot sepa su orientación sobre
que el profesor muestra el programa que un plano horizontal; y el sensor giroscó-
dibuja un cuadrado, los alumnos podrían pico, que permite que el robot sepa su
RECURSOS
escribir otros que dibujasen triángulos, pen- orientación vertical (permitiendo, por ejem- [1] NXTreme, todo lo relacionado con la
tecnología tras el lego Mindstorms:
http://mindstorms.lego.com/
Listado 1: cuadrado.nxc
Overview/NXTreme.aspx
01 /* Los motores están durante 800 milisegundos */
[2] El compilador NBC para programas
conectadas a los puertos A y 10 OnFwd(OUT_AC, 75); escritos en NeXT Byte Code y en Not
C */
11 Wait (800); eXactly X: http://bricxcc.sourceforge.
02 net/nbc/
12
03 /* Rutina principal del [3] T2n, utilidad para cargar el programa
13 /* Pon en marcha atrás
programa */ en el NXT: http://www-verimag.imag.
el motor C durante 360
04 task main() milisegundos */ fr/~raymond/edu/lego/t2n/
05 { 14 OnRev(OUT_C, 75) [4] Tutorial de Not eXactly C: http://
bricxcc.sourceforge.net/nbc/nxcdoc/
06 /* Repite cuatro veces lo 15 Wait(360)
NXC_tutorial.pdf
que viene entre llaves */
16 } [5] Un Mindstorm que resuelve el cubo
07 repeat(4)
17 /* Apaga los motores */ de Rubik: http://www.videosift.com/
08 { video/
18 Off(OUT_AC);
09 /* Muevete hacia delante Tilted-Twister-LEGO-Mindstorm-Rubi
19 }
al 75% de su potencia ks-Cube-Solver

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


LINUX USER • GnomeDo

Arrancando programas y acciones con Gnome Do

LANZADERA
CENTRAL
Redrex, Fotolia

Información en la punta de tus dedos… que coincide con las acciones. Rhythmbox (ver Figura 2) , Amarok, o en
las bases de datos de Banshee, y contactos
Eso es lo que ofrece Gnome Do, mitad motor de búsqueda, mitad lan- en Evolution, Gmail, o el mensajero instan-
táneo Pidgin. Si se desea, podemos decirle
zador de aplicaciones, todo super-herramienta. a Gnome Do que configure una sesión de
chat con el contacto que escojamos en Pid-
POR CHRISTOPH LANGNER
gin. La herramienta también soporta ope-
raciones con ficheros y mucho más. Varios

D
ocumentos, aplicaciones, mensajes escribimos text se iniciará nuestro editor de plugins ofrecen a los usuarios un práctico
y marcas tienden a dispersarse por texto. Gnome Do basa sus sugerencias de método para extender las funcionalidades.
todo el sistema. Gnome Do [1] auto-completado en las entradas del menú
brinda a los usuarios un nuevo lanzador de inicio. Instalación
para Gnome y otros escritorios que no sólo Pero Gnome Do puede hacer más que Gnome Do es fácil de instalar. Los autores
encuentra información, sino que también arrancar programas: encontrará música en ofrecen paquetes binarios para distribucio-
desencadena acciones en base a los resul- nes populares (desde Arch a Ubuntu) junto
tados.
El flexible lanzador de aplicaciones
Gnome Do [1] es similar a la herramienta
de arranque Quicksilver [2] para Mac OS X.
Los usuarios pulsan un atajo de teclado
para desplegar una ventana en la que intro-
ducen el nombre del programa que necesi-
tan.
Como Gnome Do autocompleta la Figura 1: Gnome Do auto-completa la
entrada, con introducir una parte del nom- entrada. (Instantánea cortesía de David Figura 2: Gnome Do incluso encuentra nues-
bre es suficiente (Figura 1). Por ejemplo, si Siegel). tra música.

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


GnomeDo • LINUX USER

Para habilitar la composición escribimos Plugins


gconftool-2 -s —type bool La mejora de plugins es lo más notorio de
/apps/metacity/general/compositing_mana la versión 0.5 de Gnome Do [4]. Cada plu-
ger true. En Ubuntu esto significa que gin tiene una librería con una extensión de
Compiz falla al arrancar. Si deseamos usar fichero .dll, la cual es bastante sorpren-
Compiz, necesitamos deshabilitar la com- dente para los usuarios de Linux. Simple-
posición de Metacity sustituyendo en el mente dejamos el plugin en el directorio
comando true por false. .local/share/gnome-do/plugins bajo nuestro
La ventana principal tiene tres seccio- directorio de inicio y relanzamos el pro-
nes, dos de las cuales son visibles al arran- grama para permitirle detectar el plugin.
car la herramienta. Cuando introducimos Esto proporciona a los usuarios un método
una clave de búsqueda aparece una fácil para añadir determinadas funciones.
acción coincidente a la búsqueda en la Gnome Do 0.5 introduce una nueva ven-
segunda sección. Por ejemplo, si introdu- tana de preferencias y administrador de
cimos text, Gnome Do selecciona automá- plugins (Figura 3) que nos ayuda a nave-
ticamente Run para ejecutar un programa. gar, descargar, instalar y habilitar y desha-
Confirmamos luego la acción pulsando bilitar plugins desde dentro de la herra-
Figura 3: Funcionalidad de extensión de plu- Enter y arranca el editor de textos de mienta. Podemos encontrar información
gins de Gnome Do. Gnome. adicional disponible sobre plugins en una
El hecho de que Gnome Do usa los nom- página wiki, y podemos hacer configura-
con paquetes de código fuente y HOWTOs bres en el menú de inicio para identificar ciones específicas de plugins.
[3]. Distribuciones recientes, como Ubuntu aplicaciones causa un poco de confusión. Gnome Do buscará marcas Firefox o Epi-
8.04 “Hardy Heron”, lo incluyen en sus El binario del editor de texto de Gnome se phany y abrirá enlaces en nuestro navega-
repositorios. llama gedit. Si introducimos el nombre en dor, también buscará música en nuestro
Simplemente se ejecuta el administrador Gnome Do, el programa no encuentra una Rhythmbox, Amarok o base de datos Bans-
de paquetes y se instalan los paquetes coincidencia. Para andar sobre seguros, es hee y los añadirá a una lista de reproduc-
gnome-do, gome-do-plugin-rhythmbox y mejor usar nombres en los menús de apli- ción (véase la Figura 4). Además, también
gnome-do-plugins. caciones. podemos añadir contactos Pidgin o Evolu-
Una vez que hayamos acabado la insta- Si damos el nombre de un directorio o de tion al lanzador.
lación, Aplicaciones | Herramientas | un fichero en nuestro directorio de inicio y
GNOME Do nos lleva al lanzador del pro- pulsamos el tabulador para movernos al Contribuciones de la
grama. Lo primero que veremos será la área de acción, podemos luego pulsar la Comunidad
ventana de la aplicación. tecla de flecha hacia abajo para seleccionar Casi diariamente se lanzan nuevas versio-
Si pulsamos sobre el escritorio o realiza- otras acciones, como por ejemplo mover o nes de nuevos plugins. Gnome Do 0.5
mos otra acción, Gnome Do desaparece copiar. Tras seleccionar una acción aparece suministra una categoría de plugins de la
hasta el segundo plano. una tercera sección, pudiendo elegir un comunidad con plugins procedentes de dis-
Para traer la herramienta a un primer objetivo para la acción. tintos contribuyentes. Las nuevas contribu-
plano pulsamos un atajo de teclado, como Estos controles son típicos de Gnome ciones de la comunidad incluyen Skype,
por ejemplo, Windows + Barra espacia- Do: Comenzamos introduciendo una clave Twitter, Flickr y plugins del Calendar Goo-
dora. de búsqueda y pulsamos luego el tabula- gle, además de un plugin “WindowMana-
dor para movernos a la sección siguiente, ger” que nos permite organizar ventanas
Sesión donde pulsamos la tecla de flecha hacia en nuestro escritorio. Los desarrolladores
Para arrancar Gnome Do en segundo plano abajo para seleccionar una acción. que disfruten trabajando con Mono tam-
podemos añadir el programa a nuestra bién pueden consultar la documentación
sesión Gnome actual con la funcionalidad detallada para que les ayude a implemen-
de la administración de sesiones. tar sus propias ideas [5]. ■
Para añadir Gnome Do pulsamos Sis-
tema | Configuración | Sesiones y luego RECURSOS
Añadir. Introduciendo gnome-do —quiet le
[1] Gnome Do: http://do.davebsd.com/
decimos al programa que se inicie en
segundo plano. [2] Quicksilver: http://docs.blacktree.com/
quicksilver/what_is_quicksilver
Gnome Do no usa una ventana de apli-
cación tradicional. Suponiendo que nues- [3] Instalación: https://wiki.ubuntu.com/
tro administrador de ventanas soporta GnomeDo/Installation
compositing, Gnome Do aaprece sin marco [4] Plugins de Gnome Do: https://wiki.
y la ventana es transparente. Entre los Figura 4: Gnome Do busca la base de datos ubuntu.com/GnomeDo/Plugins
administradores de ventanas con esta de Rhythmbox por autores y albumes y [5] Desarrollo de plugins: https://wiki.
capacidad están Compiz o Metacity, que es ofrece acciones importantes al contexto ubuntu.com/GnomeDo/
el que usa Gnome 2.2. actual. BuildingPlugins

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


LINUX USER • Juegos

Software Libre armado y peligroso

WORMUX
En un mundo distinto con un sinfín de paisajes se libra una

guerra desde siempre. Nadie recuerda el motivo, si es que

alguna vez lo hubo. Simplemente las legiones combaten sin

cesar. Legiones de… simpáticas mascotas de aplicaciones de

software libre! ¡Es Wormux!

POR VICENTE CARRO

Metidos en Faena

A
unque es probable que la mayoría La diferencia más evidente está en los
de nuestros lectores lo sepan, propios personajes. Wormux nos permite En cada turno tenemos la opción de elegir
Wormux[1] es un clon de la saga elegir entre varias mascotas de proyectos uno y solo uno de los miembros de nues-
de juegos Worms, una exitosa serie de jue- de software libre que nos representarán tro equipo, moverlo por el escenario y/o
gos cuya jugabilidad venía determinada durante la partida. Además cada uno de disparar el arma usada. Pulsando el botón
por una mezcla entre el clásico Lemmings los miembros del equipo, aunque visual- derecho del ratón desplegaremos en pan-
y el legendario Scorched. mente iguales, estarán identificados con talla el menú con todas las armas disponi-
Sin embargo, a pesar de la edad que ya un nombre de alguna aplicación, subpro- bles. Cada arma puede tener un número
tiene este proyecto, Wormux ha conseguido yecto o término muy relacionado con máximo de usos y, aunque somos libres
el ideal de todo clon: superar al original. No nuestra elección. de usarlas cuando queramos, deberíamos
es que estemos ante un título perfecto, ni Así por ejemplo, si elegimos al equipo hacerlo con un mínimo de estrategia si
mucho menos, pero cumple con creces en Firefox, algunos de los posibles nombres queremos ganar de vez en cuando.
lo fundamental, la diversión, al tiempo que de sus miembros serán Mozilla Browser, El catálogo de armas va desde un sim-
muestra unos acabados que nos hacen sen- FireBird, FireMonger, Phoenix, etc. ple bate de baseball hasta un ataque aéreo
tirnos ante un juego comercial. La comunidad de jugadores se ha con- independiente, pasando por bazucas,
vertido en parte fundamental del juego y, escopetas, rifles, etc. También existen una
Una Idea Simple aparte de la evi-
La idea detrás de este título consiste en dente orientación
que nuestro equipo elimine a todos los del mismo al modo
enemigos en un escenario completamente online que luego
destruible. Para darle un toque más estra- veremos, práctica-
tégico, el juego se desarrolla por turnos, mente todo el juego
permitiéndonos un tiempo prudencial se puede personali-
para pensar la siguiente acción. Además, zar, pudiéndose
casi todos los disparos y explosiones irán compartir estos
perforando y deformando el escenario, cambios con nues-
creando grutas y escondrijos con alto tros conocidos. E
valor estratégico. incluso, si los cam-
bios lo merecen,
Marcando Diferencias nuestra personali-
Hasta aquí podríamos estar describiendo zación puede llegar
Worms, sin embargo Wormux ha sabido a convertirse en
perfilarse lo suficiente como para tener parte oficial del
entidad propia. juego. Figura 1: Así ha quedado nuestro nivel.

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


Juegos • LINUX USER

Figura 2: Nuestro nivel… tras sufrir una partida. Figura 3: Hay mapas de todo tipo. Y algunos muy buenos.

serie de “herramientas”, que si bien no Antes de empezar hay que saber que un favorito, Gimp, hemos creado un docu-
pueden hacer daño, sí que nos pueden nivel está compuesto por un fondo (usado mento nuevo de 1000x1000 píxels con el
servir para salir de una situación difícil únicamente como decoración) y el propio logotipo de nuestra revista, y nos hemos
(como el teletransportador) o para prepa- mapa (sobre el que se desarrolla la asegurado de que el fondo sea transpa-
rar una trampa (como el constructor ). acción). Opcionalmente puede haber tam- rente. Después lo hemos grabado con el
bién una serie de partículas entre el fondo nombre map.png y formato PNG.
Con Amigos Mejor y el mapa. A continuación creamos un nuevo
Sin duda, Wormux está pensado para Para nuestro mapa hemos decidido documento del mismo tamaño, y hemos
jugar con otras personas. Incluso en el crear una isla con el logotipo de Linux pintado un fondo a mano, aunque muy
menú principal, las dos opciones de Magazine. Desde nuestro editor gráfico simple, sin pretensiones. Esta imagen la
juego más importantes nos permiten
jugar en nuestra máquina con otro juga- Listado 1: config.xml
dor, o bien en internet, creando una par-
01 <?xml version=”1.0” file=”windparticle.png”>
tida o uniéndonos a una previamente cre-
encoding=”UTF-8”?> 19 <grid pos=”0,0”
ada.
Entonces, ¿no se puede jugar contra la 02 <!DOCTYPE resources SYSTEM size=”128,128” array=”1,1”/>
máquina? Sí, podemos jugar contra la “../map.dtd” []> 20 </image>
máquina… más o menos. Y es que por 03 <resources> 21 </sprite>
mucho que busquemos en el menú, no 04 <author> 22 <wind>
veremos ninguna opción para combatir
05 <name>LinuxMagazine</name> 23
contra la IA. Los desarrolladores, quizás
06 <nickname>LM</nickname> <nbr_sprite>10</nbr_sprite>
ligeramente avergonzados, lo han dejado
como una opción oculta. 07 <email></email> 24 <need_flip>0</need_flip>
Para poder jugar contra la IA tenemos 08 <country>Spain</country> 25 <mass>3.0</mass>
que editar el nombre de alguno de los 09 </author> 26
equipos de una partida normal y escribir <wind_factor>8.5</wind_factor>
10 <surface name=”sky”
AI-stupid. Cuando la comencemos, una
file=”sky.jpg” /> 27
muy modesta IA nos intentará poner las
11 <surface name=”map” <air_resist_factor>0.2</air_re
cosas difíciles.
file=”map.png” /> sist_factor>
Pero no nos engañemos, el gancho real
del juego es jugar online, con amigos. 12 <surface name=”preview” 28
Además, en este modo podemos comuni- file=”preview.jpg” /> <gravity_factor>0.2</gravity_f
carnos escribiendo mensajes (tras pulsar actor>
13 <name>LM</name>
la tecla t) si no disponemos de una apli- 29
14 <water>1</water>
cación de chat de audio externa. <rebounding>true</rebounding>
15 <nb_mine>7</nb_mine>
30
Creando un Nivel 16 <is_open>1</is_open> <rebound_factor>3.3</rebound_f
Para demostrar las opciones de personali- 17 <sprite actor>
zación de este título vamos a crear un name=”wind_particle”> 31 </wind>
nivel muy simple (que estará disponible
18 <image 32 </resources>
desde nuestra página web [3]).

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


LINUX USER • Juegos

falta crear un El rendimiento del juego es muy


archivo llamado correcto; en ningún momento lo hemos
config.xml que ten- visto rendir por debajo de las 30 imágenes
drá el contenido que por segundo, incluso en resoluciones muy
se ve en el Listado elevadas que pueden causar problemas
1. Se trata de un hasta en títulos 2D.
archivo genérico, y Si hay un aspecto que se nota más des-
en general sólo ten- atendido que los demás (aparte de la inte-
dremos que cambiar ligencia artificial) es el apartado sonoro.
los nombres de los 3 Las músicas escasean, y se pueden hacer
ficheros que hemos insoportables después de oírlas durante
creado si fuese varias horas. Los efectos de sonido tam-
necesario en otro bién son poco frecuentes, limitándose a
caso. Una vez guar- un par de explosiones, algunos disparos y
dado, lo metemos unas “voces” genéricas para los persona-
todo en una carpeta jes. Pero aunque este apartado peca y
Figura 4: El plantel de armas y herramientas es más que variado. y le ponemos el mucho de falta de variedad, la calidad de
nombre LM. lo que sí hay es innegable.
vamos a guardar con el nombre sky.jpg y Todo listo.
con formato JPG (con poca compresión). Conclusión
Como también queremos partículas de Instalando Nuevos Mapas Lo mejor de Wormux es sin duda la diver-
viento, creamos un nuevo documento, En la web del juego (y en otras páginas sión que nos ofrece jugando online con
esta vez de sólo 128x128 píxels, con colaboradoras) podremos encontrar más algunos amigos. Su desenfadada violen-
fondo transparente, y dibujamos en él las de un centenar de niveles. Para instalar cia nos enganchará durante horas, riéndo-
letras “LM”, ya que éstas van a ser las nuevos mapas, ya sean descargados de nos de nuestros conocidos cuando los
partículas de fondo. Ahora lo guardamos internet o creados por nosotros como el veamos volar por los aires. Además, Wor-
con el nombre windparticle.png y formato anterior, el procedimiento más fácil es mux cuenta con una gran comunidad, y
PNG. copiar la carpeta completa del nivel (que es uno de los proyectos más vivos que
En el selector de nivel, dentro del juego, incluye todos los ficheros) en la subcar- hemos visto últimamente a pesar de su
podemos ver una pequeña previsualiza- peta map de la carpeta de instalación de avanzada edad. Si no nos gusta jugar
ción de los niveles. Vamos a crear la previ- wormux. online, siempre podemos rellenar algún
sualización de nuestro nivel con un docu- En Ubuntu y derivados lo podremos momento de aburrimiento aplastando a la
mento nuevo de un tamaño fijo de hacer de la siguiente manera: IA del juego.
300x225 píxels (no funcionará con otro Absolutamente imperdonable no darle
tamaño). En este documento vamos a sudo cp -r ruta-a-carpeta/U una oportunidad a este icono de los juegos
hacer un montaje con sky.jpg y map.png carpeta /usr/share/games/U libres. ■
de manera que sea fácil identificar nuestro wormux/map/
nivel de un vistazo. Cuando esté listo lo Puntuación
guardamos como preview.jpg y formato Un Vistazo Técnico
Lo mejor
JPG. En la versión 0.82 de Wormux se pueden
Ya hemos terminado con la parte artís-
tica de la creación del nivel. Ahora sólo
apreciar unas animaciones más que bue-
nas de las mascotas, si bien el diseño grá-
• Software libre
• En castellano
7.5
fico en general es real- • Divertido y con buena comunidad
mente notable. Algunos Lo peor
mapas, dentro de su sim- • IA muy mejorable
plicidad obligada, podrían
• Pocos efectos de sonido
ser fondos de pantalla, y
es que tienen una calidad
artística pocas veces vista RECURSOS
en una producción de
[1] Página oficial de Wormux: http://
software libre gratuita.
wormux.org/wiki/es/index.php
También en esta versión
[2] Mapas extra: http://download.gna.
se han rediseñado los ico-
org/wormux/BonusMaps.tar.gz
nos, especialmente de las
[3] Foro de Wormux: http://wormux.
armas, dándoles un
org/forum/?/es/
aspecto mucho más pro-
fesional, que acaba por [4] Nuestro nivel: http://www.
linux-magazine.es/Magazine/
Figura 5: Desde el lejano oeste hasta el espacio. Podemos rematar un aspecto grá-
Downloads/wormux-nivel.tar.bz2
encontrar todo tipo de niveles creados por la comunidad. fico sobresaliente.

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


COMUNIDAD
COMUNIDAD ·· Konsultorio
Konsultorio

EL
KONSULTORIO
DE KLAUS
¿Es posible ejecutar Linux simultánea- namiento de una de las distribuciones que
mente en estos sistemas, ya sean normal o haya probado.
RAID? En caso afirmativo, supongo que ten- De igual manera, puede instalar Linux en
dré la opción de elegir en qué sistema ope- paralelo con Windows en el mismo ordena-
rativo arranco, ¿o tengo que instalar otro dor, aunque es algo arriesgado si nunca ha
disco duro? (Lo cual no es mucho problema reparticionado un disco duro anteriormente.
si es la solución recomendada). ¿Funcionan A continuación debería redimensionar las
los programas de Windows en Linux? Hago particiones Windows para hacer espacio sufi-
mucha edición de vídeo. ciente a la instalación GNU/Linux, comenzar
Klaus Knopper es el creador de
¿Cuáles son las alternativas para progra- la instalación desde el DVD, y seleccionar
Knoppix y co-fundador de la mas como Word/Powerpoint/Excel? ¿O fun- “mantener sistema operativo instalado”, lo
cionan en el entorno Linux? También me que también se denomina “arranque dual”.
LinuxTag Expo. En la actuali- gusta experimentar con el overclocking: ¿fun- Una vez que inicie su ordenador, se le mos-
cionan Pi, Memtest, Prime, etc. bajo Linux? trará un menú de arranque desde el que
dad trabaja como profesor, Mi objetivo es migrar completamente puede seleccionar el sistema operativo con el
desde Windows, pero me gustaría hacerlo que quiere trabajar en esa sesión.
programador y consultor. Si con cuidado y aprendiendo en el proceso. Aunque es posible ejecutar aplicaciones
Debido a que aún no está familiari- Windows (incluso juegos [1]) bajo Linux
tiene algún problema de zado con los sistemas Linux, podría usando Wine o sus derivados, las aplicacio-
empezar ejecutando una distribución Linux nes nativas de Linux pueden hacer práctica-
configuración, o simplemente
dentro de su sistema operativo actual con mente las mismas cosas.
quiere conocer mejor cómo un sistema de virtualización, como QEMU o Para la edición de vídeo recomiendo Kino
VM-ware, los cuales no hacen cambios en [2], que graba desde una cámara DV, per-
funciona Linux, no dude en su sistema más que añadir algunos archivos mite cortar y preparar escenas, y tiene una
para dos discos duros virtuales que conten- sección con magníficos efectos de vídeo y
escribir sus preguntas a: drán la instalación. etiquetado. Al trabajar sobre el disco, no
Por otro lado, sería más efectivo dedicar requiere mucha memoria, y puede crear for-
preguntas@linux-magazine.es uno de sus ordenadores a experimentar, eje- matos de salida para SVCD o DVD. Igual-
cutando primero algunas distros Live GNU/ mente, Cinelarra [3] es una completa solu-
Linux desde un CD o DVD, y hacer más ción para la edición de vídeo.
¿Migrar? tarde una instalación en disco duro una vez OpenOffice es la suite ofimática estándar
Actualmente no sé casi nada comience a sentirse cómodo con el funcio- que incluye procesador de textos, hoja de
acerca de Linux, salvo lo poco que
he leído. Estoy interesado en instalar
Ubuntu Linux como mi sistema operativo
principal.
Tengo diferentes equipos (portátiles,
equipos de escritorio,…) y todos ellos ejecu-
tan Windows XP en sus diferentes versiones
(por ejemplo, de 32 y 64 bits, instalación
Timo Keilhau, Fotolia

normal en disco duro y algunos en configu-


raciones RAID).

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

cálculo y aplicaciones de dibujo y presenta- rir archivos de vídeo. Los equipos son los
ciones, disponible para muchas plataformas siguientes:
y que está incluida en todas las distribucio- • Windows XP, P4 3.0, 2GB RAM, disco
nes que conozco. Además, el programa duro 500GB SATA, ethernet gigabit en
puede leer formatos viejos o propietarios de placa (cinco años de antigüedad). Trans-
otros programas. ferencia ftp a Linux es de más de 600
RAID, en sus diferentes niveles, también MB/s.
está soportado por Linux, tanto vía software • SUSE 10.3, C2Duo 2.66, 2GB
como mediante hardware. RAM, dos discos 500GB
Tenga cuidado, porque algunos controla- SATA en Raid 0, ethernet
dores que se venden como “RAID” son sólo gigabit dual en placa (sin
“Softraid” (es decir, necesitan drivers espe- configurar aún). Transfe-

Chris3d, Fotolia
ciales que en última instancia no hacen más rencia ftp a XP es 20 MB/s.
que lo que haría un RAID basado en soft- Al copiar cualquier cosa desde
ware). este equipo Linux a, por ejemplo,
Windows usa diferentes sistemas de una unidad USB (o incluso simplemente
archivo. Linux puede leer y escribir en duplicar un archivo) obtengo una velocidad
FAT32 y NTFS sin problemas, mientras que máxima de transferencia en torno a 20-28
Windows no puede acceder a los sistemas MB/s. Ambos ordenadores están conecta- conectividad, basta con volver a habilitar la
de archivo de Linux de manera directa. Sin dos a un switch gigabit, y obtengo estas lec- autonegociación.
embargo, existen algunos drivers para Win- turas desde el cuadro de transferencia de Para medir la velocidad de transferencia
dows que nos permiten copiar información KDE. de datos podemos usar la herramienta
desde ext2 o ReiserFS. No puedo explicar esta enorme diferencia “bing”:
Memtest, lm_sensors (para monitorizar la en la tasa de transferencia. Apreciaría cual-
temperatura de la placa y la CPU), cpuburn, quier ayuda que me pueda proporcionar. sudo bing U
stress, super pi y otras suites de pruebas Es complicado determinar qué local_machine_ip_address U
están disponibles para Linux. causa esa diferencia, debido a los remote_machine_ip_address
Asimismo, existen diferentes foros de dis- muchos componentes implicados: tarjetas
cusión acerca de Linux y el overclocking. de red y sus drivers, servidores ftp (¿en Esto envía información y mide la respuesta
Personalmente no me gusta demasiado, ya ambos lados?), programa cliente ftp, escri- hasta que presionemos Ctrl+C, y muestra a
que esto acorta el tiempo de vida del hard- torios con caché en disco… continuación las estadísticas acerca de la
ware. (Véase el mensaje de advertencia en Para realizar un benchmark más fiable, tasa de transferencia. Las cifras mostradas
la página Web de cpuburn [4]). recomendaría algunas herramientas en son la velocidad máxima que podemos con-
línea de comandos de Linux para descartar seguir con esta configuración de la tarjeta,
Disparidad ftp algún problema de configuración del escri- sin el overhead del protocolo de aplicación.
Estoy perplejo con un problema torio. Para medir la velocidad en ftp podemos
con el que me encuentro al transfe- En primer lugar hay que verificar la usar wget, que es también la herramienta
configuración de la tarjeta de red con más rápida para transferir datos vía http y
Listado 1: Configuración de ftp, y que también soporta transferencias
Tarjeta de Red sudo ethtool eth0 parciales de datos.
01 Settings for eth0: El comando:
02 Supported ports: [ TP MII ] que debería reportar algo como lo mostrado
03 Supported link modes: en el Listado 1. wget -c ftp://U
10baseT/Half 10baseT/Full En este Listado 1 se pueden apreciar los remote_machine_ip_addressU
04 100baseT/Half 100baseT/Full modos de transferencia de datos que están /filename
05 Supports auto-negotiation: soportados y que la tarjeta funciona en este
Yes caso a 10 MB/seg, a pesar de que es capaz descarga el archivo remoto al directorio
06 Advertised link modes: de hacerlo a 100 MB/seg. Esto puede local y muestra la velocidad de transferencia
10baseT/Half 10baseT/Full deberse a la autonegociación: el switch mientras la descarga está en proceso.
07 100baseT/Half 100baseT/Full puede determinar la velocidad que consi- Cuando vaya a copiar a disco (ha seña-
08 Advertised auto-negotiation: dere más fiable. Podemos deshabilitar la lado que, en general, la escritura en disco
Yes autonegociación y fijar la velocidad a 100 parece que va lenta en su sistema Linux),
09 Speed: 10Mb/s MB/seg con: por favor tenga en cuenta que Linux y Win-
10 Duplex: Half dows usan la caché de disco de maneras
11 Port: MII sudo ethtool -s diferentes.
12 PHYAD: 32 eth0 autoneg off speed 100 Al copiar pequeños archivos “parece”
13 Transceiver: internal que la información se escribe inmediata-
14 Auto-negotiation: on En su configuración, podría intentar la mente, cuando de hecho el archivo se
configuración speed 1000. En caso de perder cachea en memoria en primer lugar y se

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

escribe sólo si la caché de memoria es / dev/ hda: Timing cachedU Ahora tenemos dos distribuciones funcio-
lenta, el dispositivo no está montado reads: 572 MB in 2.00 secondsU nales, y podemos experimentar con nue-
(Linux) o “extraído con seguridad” (Win- = 285.80 MB/ sec TimingU vas versiones de una de ellas mientras
dows), o un programa fuerza un sync buffered disk reads: 138 MBU mantenemos la otra como una copia de
(escribir la información de caché a disco). in 3.04 seconds = 45.40 MB/ sec seguridad. Los dispositivos RAID 1 se
Al copiar información mayor que la RAM mantienen intactos en estos procedimien-
de su ordenador, debería comenzar com- Cuarenta y cinco MB/seg es un buen resul- tos. 9. Periódicamente, repetir los pasos 7 y
probando el rendimiento del disco en tado para un disco IDE con la DMA habili- 8 para realizar copias de seguridad.
bruto, posiblemente verá picos debido a tada, pero para un disco conectado vía USB Al fin y al cabo, RAID 1 es una buena
que la información se cachea primero en 2.0 a mi portátil, sólo consigo unos 12 MB/ solución para hacer mirroring de informa-
RAM y luego se escribe en disco de seg. ción, pero no tanto para programas del sis-
manera asíncrona. Escribir a un disco USB flash es muy tema.
A pesar de que 20-28 MB/seg puede pare- lento. De nuevo, sólo “parece” rápido al Aunque la configuración que propone
cer un resultado normal de transferencia a escribir pequeños archivos, antes de indicar para /boot y / tienen todo el sentido
disco con USB 2.0, es demasiado lento para al sistema operativo que desconecte el dis- cuando actualizamos frecuentemente el
un disco IDE o SATA moderno. Si la escri- positivo y por tanto envíe toda la informa- kernel (habiendo instalado varias distri-
tura en disco de su sistema principal es ción al chip. buciones en paralelo en los mismos dis-
lenta, debería verificar si la DMA está habili- Debido a que la transferencia por red cos y teniendo una copia de los archivos
tada con entre dos ordenadores generalmente de configuración raid disponibles en par-
parece muy rápida, cabe la posibilidad de ticiones separadas que no requieren un
sudo hdparm /dev/hda que el lado receptor simplemente sea lento kernel con raid habilitado o distro para
a la hora de confirmar tratos recibidos, o montar), tengo que disentir de su afirma-
lo cual debería mostrar unos resultados por alguna razón, que esté intentando ción acerca de que RAID 1 no es útil para
como los siguientes: resolver el nombre del host en direcciones hacer mirroring de programas y datos del
IP locales que no están presentes en el sistema.
/dev/hda: archivo host local (/etc/hosts). ¿Ha inten- El código de Linux MD incrementa balan-
multcount = 16 (on) tado subir archivos en ambas direcciones, ceado en lectura, de manera que cuando
IO_support = 1 (32-bit) o funciona el servidor ftp en una sola de tenemos dos discos separados en ranuras de
unmaskirq = 1 (on) las máquinas? controladoras diferentes, la tasa de transfe-
using_dma = 1 (on) rencia al leer archivos (especialmente con
keepsettings = 0 (off) Disco RAID sistemas con mucha carga y mucha activi-
readonly = 0 (off) Quisiera hacerle un comentario dad de disco) también será mayor, ya que la
readahead = 256 (on) acerca de su respuesta sobre RAID lectura de archivos puede paralelizarse en
geometry = 19457/255/63, U en Linux del número 43. los diferentes discos.
sectors = 312581808, start = 0 En un sistema de rápido desarrollo como Cuando el proceso de lectura aguarda en
Linux, no es aconsejable instalar RAID 1 la escritura en un disco hasta completar la
El using_dma = 1 es relevante, ya que para la partición /. Cada vez que cambia- transferencia física de información, puede
indica que el disco puede transferir informa- mos nuestra distribución o actualizamos el transmitir información al segundo disco.
ción a una aplicación sin mucha interacción sistema, nos enfrentamos al peligro de Esto no dobla exactamente la tasa de trans-
desde la CPU, lo que puede significar una reformatear la partición /. ¡Y esto significa ferencia, pero hace que los programas car-
mejora de la velocidad en un factor de 5 o que podemos perder información RAID 1 guen sensiblemente más rápido.
incluso más. Algunos controladores IDE en las listas de dispositivo! La escritura en disco, por otro lado, es
(defectuosos) en placas generalmente anti- En lugar de esto, recomiendo hacer más lenta con RAID 1 por diversos moti-
guas no soportan DMA, pero para el resto lo lo siguiente: 1. Tener dos dispositi- vos. También, en teoría, con la metainfor-
podemos habilitar con: vos /boot de 1 MB en dos discos diferentes. mación RAID/EVM actual, el kernel debe-
2. Reservar equitativamente dos dispositi- ría ser capaz de ensamblar un array a par-
sudo hdparm -d1 /dev/hda vos / de 12 MB. 3. Usar el resto de espacio tir de la información guardada dentro de
en disco para RAID 1 (o EVM). 4. Hacer la particiones RAID por cuenta propia, aun-
si su ordenador se bloquea tras este instalación en una partición /boot y /. 5. que es más sencillo guardar una copia de
comando, u ocurren otras cosas extrañas, Crear nuestros dispositivos RAID 1 con un raidtab o mdadm.conf en una partición no
probablemente se trate de un controlador punto de montaje al dispositivo /. 6. Arran- RAID. ■
que no soporta DMA y probablemente car el equipo con un disco Knoppix y mon-
necesite apretar el botón de reset. Una tar todos nuestros dispositivos /boot y / en RECURSOS
rápida prueba de rendimiento del disco en este sistema. 7. Hacer una copia de seguri-
[1] Wine HQ: http://www.winehq.org/
sólo lectura puede realizarse con dad de los dispositivos /boot y /. Podemos
usar simplemente sudo cp -a directorio_ori- [2] Kino: http://www.kinodv.org/
sudo hdparm -tT /dev/hda gen directorio_destino para este propósito. [3] Cinelerra: http://cinelerra.org/
8. Editar los archivos /boot/grub/menu.lst y [4] Cpuburn:http://pages.sbcglobal.net/
lo que muestra algo como: /etc/fstab para albergar los dispositivos. redelm/

90 Número 45 WWW.LINUX-MAGAZINE.ES
Linux Legal • COMUNIDAD

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

LINUX LEGAL
■ C uando una organización con una forma sea utilizado. Por ejemplo, si software de fuente abierta es un
patente (tradicional, no explícita- el “programa de software libre” es “territorio sin patentes”
mente de software) pretende publi- esencial para llevar a cabo la fun- Es difícil que lo que exprese una
car bajo la GPL, ¿qué tipo de diligen- ción reivindicada por la patente, licencia pueda cambiar el alcance
cia debida deberá utilizar con el fin estoy convencido que sería violar la jurídico de “obra derivada” desde
de garantizar que las patentes no licencia Affero . luego respecto a lo que prevé la ley
queden involuntariamente sin Cuando se usa el término de de propiedad intelectual. Pero eso
efecto? patente “tradicional” en este ámbito, tampoco lo pretende la GPL – con
Desde la Affero GPL, en cuanto a la parece que se nos quiere hacer olvi- esto entramos en la segunda parte
prestación de servicios del tipo dar que en la electrónica, este tipo de la pregunta – así, si “un programa
redistribución, ¿significa esto que el de invenciones pueden ser vindica- cliente puede ser el trabajo derivado
alcance de una obra derivada ya no das desde diferentes perspectivas y de un programa servidor y vice-
se limita a la memoria de un solo tipos, que incluyen aparatos, el versa”, entiendo que eso depende
ordenador, sino que ahora se extien- método, las reivindicaciones deno- menos de esa circunstancia concreta
den a la relación entre un cliente y minadas “means plus function” (servidor/cliente) o si la obra se
un servidor? La preocupación está (medios más función), y todos pue- encuentra o reside en memorias u
en que opera un software libre y den corresponder a determinados ordenadores distintos como que las
otro propietario. aspectos y componentes de un sis- obras sean expresiones derivadas en
tema de software. el sentido de los derechos de autor.
■ Afortunadamente, la normativa de No fue hasta la versión 3 de la GPL La licencia GPL Affero no traduce
patentes no es aún una ciencia exacta, que no se introdujeron obligaciones interoperabilidad con obra derivada.
especialmente para quienes aún creen explícitas a quienes accedían a En cualquier caso, la pregunta es
en el sistema de patentes en este código bajo GPL y detentaban paten- altamente intuitiva y prevee futuros
ámbito. Por eso advierto que más de tes. Así, la nueva versión de la GPL conflictos entre creaciones comple-
una conclusión razonable se puede obliga a que si usted tiene patentes jas propietarias sobre estructuras en
llegar a sacar ante una pregunta seme- que sean necesarias para el uso del línea de varios ordenadores y que
jante. Para mí, Patentes + Software = software, usted otorga, sin costo incluyan software bajo Affero. Creo
Total Inseguridad Jurídica. alguno, una licencia sobre estas que con el texto de esa licencia cabe
Determinar si una patente “tradi- patentes, incluido para cualquier concebir, aunque no es sencillo,
cional” se vería afectada en su vali- obra derivada. Los límites de esta estructuras complejas propietarias
dez o inoponibilidad en “un con- condición no han sido verificados que utilicen, entre otros, programas
texto Affero GPL” resulta cierta- ante un Juzgado todavía, pero está bajo GPL Affero. ■
mente complicado, y estoy seguro de claro que un titular de patentes que
que no hay una verdadera presun- usa GPL v3 no puede ignorar dónde EL AUTOR
ción con validez jurídica a este res- se mete y qué tipo de expectativas
Jose María
pecto. Es cierto, la compatibilidad legales está generando. Cuando
Lancho es abo-
del software de código abierto con alguien usa GPL, en lo último que gado, fundador
las patentes es una cuestión incó- piensa es en una infracción directa de la aso-
moda pero perpetuamente latente y de una patente relativa a alguien que ciación Legal
real. El sistema de protección legal se encuentra en la cadena de trans- Venture (http://
por medio de patentes coexiste con misión del código. www.
el copyright, y no sólo en Estados En el caso de la pregunta, usted legalventure.
Unidos y Japón, sino también en puede estar seguro de que si intenta com/), co-fun-
Europa, donde cabe el modelo de recuperar los daños causados por un dador del Observatorio de Neutralidad
patentamiento que expresa en su infractor de su patente, éste, al Tecnológica (http://neutralidad.es/) y
secretario en la directiva de Hispali-
pregunta, es una coexistencia menos, le alegará un stoppel, y por-
nux. Puedes hacerle llegar tus pregun-
impuesta por la legalidad. Un deter- que está utilizando un código de
tas a José Maria enviando un correo a
minado software puede violar o no fuente abierta, sí hay cuando menos jmcamelot@gmail.com
una patente dependiendo en qué una presunción ideológica de que el

WWW.LINUX-MAGAZINE.ES Número 45 91
COMUNIDAD · Blogs: La Perrera

Buscando al próximo Einstein

ENSEÑAME
EL CÓDIGO
La apertura del software libre estimula la innovación a través de genera-

ciones y husos horarios. POR JON ‘MADDOG’ HALL

P
robablemente siempre he sido tante factor en la mejora de sus conoci-
sutilmente consciente de las mientos informáticos. Con el software
habilidades de algunos programa- libre pocas personas te preguntarán tu
dores de software libre, por lo que no edad, tu sexo o tus preferencias sexuales,
debería sorprenderme de lo que son tu religión o cualquier otra cosa que no
capaces de hacer. Pero he de admitir que sea ¿Donde está el código? Los nuevos al programador. Como alguien que ha
continúan sorprendiéndome. programadores pueden llegar tan rápido trabajado tanto en el software cerrado
Por ejemplo, Nick vive a unas cuantas y tan lejos como ellos quieran mediante como en el software libre, agradezco
millas de mi casa y comenzó a progra- la lectura del código de otras personas, enormemente el hecho de que si quiero
mar a la edad de 9 años, hackeando el tanto el bueno como el malo, y aprender conocer a quien escribió un programa
núcleo de Linux a los 12 y escribiendo de él. particularmente bueno, y cómo se des-
controladores de dispositivos a los 15. A mediados de los 70 había un profe- envuelve esa persona en un entorno de
Fue administrador de sistemas junior de sor de una pequeña universidad que desarrollo, puedo buscar y seguir la lista
una pequeña universidad a los 19 y creía que el mejor método para enseñar de correo del proyecto. Esta estrategia
ayudó a que el FBI de los Estados Unidos a los programadores a escribir buen me permite localizar a un montón de
capturara a algunos crackers creando un código era mostrándoles el código de programadores realmente buenos que
“honeypot” cuando tenía 21. Después programadores realmente buenos. John están alcanzando la cumbre de su profe-
pasó a investigar, aunque oficialmente Lions llegó a comentar y anotar el listado sión.
nunca se graduó en la secundaría. completo de la Sexta Edición de Unix Este pensamiento me lleva a mi último
O aquel que a los 14 años comenzó su antes de que AT&T cambiara la licencia descubrimiento y a la inspiración de este
propia distribución y lanzó 20.000 copias con la Séptima Edición de Unix, que pro- artículo. Recientemente he sabido de un
antes de que sus padres averiguaran qué hibía el uso del código fuente con fines estudiante que está participando en lo
estaba haciendo. Cuando le preguntaron educativos. Afortunadamente para la que yo considero que es un trabajo de
por qué, no se lo contó, simplemente ciencia de la computación, unas cuantas graduado. Se expresa adecuadamente,
respondió: “Bueno, realmente no necesi- copias se “escaparon”, y esos dos volú- parece que tiene un amplio rango de
taba vuestra ayuda”. menes se convirtieron en los libros de intereses y vive en Rumania. La apertura
Un amigo de la familia al que no le iba ciencias de la computación más fotoco- del software libre me ha permitido
muy bien en secundaria, armado con piados de todos los tiempos. encontrarlo, y espero trabajar con él en
una copia de Running Linux y una de los Los programadores demostraban el el futuro tal como he trabajado, y conti-
primeros CDs de Linux, instaló Linux en tiempo que habían pasado en el campo núo haciéndolo, con los prodigiosos pro-
su sistema, configuró la red wifi de su de la computación en función de si eran gramadores que he mencionado antes.
casa (incluido el acceso Samba para los propietarios de la quinta generación de Sigo atento al próximo “Albert Einstein
sistemas de sus padres) y aprendió él la fotocopia del libro de Lion o tan sólo de la ciencia de la computación”, y no
solo a programar en C. También creó el de la décima generación. soy tan chovinista como para creer que
primer club de ordenadores en su insti- Con el software propietario puedes ver ese genio tendría que llegar de los Esta-
tuto, salió de su concha, participó en el lo que un programa hace, pero no cómo dos Unidos, o si no educado aquí. Con
equipo de fútbol del instituto, más tarde lo hace. Debes confiar en que el progra- tantos problemas que resolver y sin sufi-
aprendió seguridad de ordenadores por mador haga las cosas bien cuando elige ciente gente para resolverlos, el próximo
sí mismo y ahora está haciendo un post- los algoritmos para el programa. Sin “Albert”, o “Alberta”, puede ser de Bra-
grado como estudiante. embargo, al enseñar cómo funciona el sil, China, Rumania o incluso de Helsinki
software , directamente creas un curso en Finlandia.
La Fuente de aprendizaje. Lo que sí sé es que la apertura del soft-
Todos estos hackers acreditan acceso Y en el software libre no sólo te mues- ware libre nos ayudará a encontrar la
visual al código fuente como un impor- tran el código, también puedes conocer próxima generación de expertos. ■

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

ABRIENDO
VENTANAS

L
inux está ganando una cuota de mercado cada
vez mayor en el terreno TI, aunque Windows no
va a desaparecer de la noche a la mañana.
Hasta que eso no ocurra, las redes de sistemas hete-
rogéneos son el pan nuestro de cada día para usuarios,
desarrolladores y administradores de sistemas, y hacer
que todas las máquinas hablen entre sí puede ser todo
un reto.
El mes que viene miramos de cerca todo lo que
implica integrar dos sistemas tan dispares de la manera
más armoniosa posible. Aprenderemos a montar un
servidor de Protocolo de Escritorio Remoto (PER), cómo
funciona el Universal Plug and Play, a integrar servido-
res Linux en clusters Active Directory, y lo que tiene que
dar de sí el proyecto Moonlight de Mono – la versión
libre de la infraestructura multimedia Silverlight de
Microsoft.
El próximo mes, encuentra paz y armonía en Linux
Magazine.

Detección de Hardware Google Web Toolkit


En los malos viejos tiempos se suponía que los pioneros de Podemos perder horas, días y semanas intentando crear apli-
Linux debían instalar cada componente de hardware en el caciones JavaScript que funcionen correctamente con todo
sistema manualmente y, si eras Alan Cox, también se espe- tipo de Navegador, implementación de CSS y motor de rende-
raba que escribieras el driver. rizado HTML, pero es muy probable que sólo acabemos frus-
Todo eso ha cambiado con Udev, HAL y D-Bus. Pero… ¿cómo trados.
funciona todo lo referente a la detección en caliente de hard- ¡Google Web Toolkit al rescate! Con GWT escribimos las
ware en Linux? Y, más aún, ¿cómo podemos explotarlo y per- aplicaciones en Java, y el código resultante se compila a
sonalizarlo? La respuesta: en el número 46 de Linux Maga- JavaScript altamente optimizado. Dan Frost, director técnico
zine. de 3ev, nos explicará cómo funciona.

A LA VENTA: FEBRERO 2009


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

Das könnte Ihnen auch gefallen