Sei sulla pagina 1di 152

1.

Introduccin a LINUX
1.1.Historia de Linux y MINIX

LINUX naci como un producto de Linus Torvalds, inspirado en el MINIX, el


sistema operativo desarrollado por Andrew S. Tanenbaum en su obra "Sistemas
Operativos: Diseo e Implementacin". Libro en el cual, tras un estudio general sobre
los servicios que debe proporcionar un sistema operativo y algunas formas de
proporcionar stos, introduce su propia implementacin del UNIX en forma de cdigo
fuente en lenguaje C y ensamblador, adems de las instrucciones necesarias para
poder instalar y mejorar el mismo.

La primera versin de LINUX, enumerada como 0.01 contena solo los rudimentos
del ncleo y funcionaba sobre una mquina con el MINIX instalado, esto es, para
compilar y jugar con LINUX era necesario tener instalado el MINIX de Tanembaum.

El 5 de Octubre de 1991, Linus anunci su primera versin 'oficial', la 0.02 con esta
versin ya se poda ejecutar el bash (GNU Bourne Shell) y el gcc (GNU C compiler).
Despus de la versin 0.03, Linus cambi este nmero por 0.10 y tras las aportaciones
de un grupo inicial de usuarios se increment de nuevo la denominacin a 0.95,
reflejando la clara voluntad de poder anunciar en breve una versin 'oficial' (con la
denominacin 1.0).
En Diciembre de 1993 el ncleo estaba en su versin 0.99 pH I. En la actualidad la
ltima versin estable es al 2.0.30 aunque existe ya la versin de desarrollo 2.1.

La enumeracin de las versiones de LINUX implica a tre nmeros separados por


puntos, el primero de ellos es la versin del sistema operativo es el que distingue unas
versiones de otras cuando las diferencias son importantes. El segundo nmero indica
el nivel en que se encuentra dicha versin. Si es un nmero impar quiere decir que es
una versin de desarrollo con lo cual se nos avisa de que ciertos componentes del
ncleo estn en fase de prueba, si es par se considera una versin estable. El ltimo
nmero identifica el nmero de revisin para dicha versin del sistema operativo,
suele ser debido a la correccin de pequeos problemas o al aadir algunos detalles
que anteriormente no se contemplaba con lo cual no implica un cambio muy grande
en el ncleo. Como ejemplo sirva la versin de LINUX con la que ha sido
desarrollado este trabajo, la ltima estable hasta hace poco tiempo, su nmero es
1.2.13, esto es, la versin 1 en su nivel 2 (estable) y la revisin nmero 13 de la
misma en ste caso fue la ltima.

Hay que sealar que LINUX no sera lo que es sin la aportacin de la Free Software
Foundation y todo el software desarrollado bajo el soporte de esta asociacin as
como la distribucin del UNIX de Berkley (BSD), tanto en programas transportados
como en programas diseados para este que forman parte de algunas distribuciones
del LINUX.

1.2.Minix

MINIX es un sistema operativo de tipo UNIX, preparado para funcionar sobre un PC


80806 y dotado de una funcionalidad limitada.

Su autor es Andrew Tanenbaum, un conocido profesor universitario de informtica,


que lo dise para ensear sistemas operativos en una asignatura semestral.

A principios de los 90, su libro sobre sistemas operativos "Operating Systems: Design
and Implementation", en el que se inclua una versin impresa de MINIX, era
utilizado en las facultades de todo el mundo. El grupo de noticias de MINIX tena
40000 suscriptores, que pedan continuamente nuevas prestaciones para el software,
que Tanenbaum rechazaba porque quera mantenerlo lo suficientemente pequeo
como para poder seguir enseando con l.

1.3.Distribuciones

En s, Linux es slo el ncleo del sistema operativo, pero necesita aplicaciones y


programas para hacer algo. Muchos han sido portados a Linux, otros han sido creados
especficamente para Linux, todos ellos se encuentran en Internet dispuestos a que
cualquiera los baje y los instale en su sistema.

Como esto es una ardua tarea no tardan en surgir compaas dedicadas a reunir todos
esos programas facilitando la tarea de crear un sistema Linux funcional. En la
actualidad existe un sinnmero de estas compaas pero solo se mencionarn las mas
importantes dentro del contexto mundial.

Algunas de las distribuciones ms difundidas son:

Slackware
Debian
SuSE
Caldera
Mandrake
Red Hat Fedora

Slackware
Una de las primeras distribuciones que surge fue Slackware
(http://www.slackware.com), diseada por Patrick Volkerding a partir de SLS Linux .
Esta tuvo una gran aceptacin al principio hasta llegar a ser la distribucin mas
popular del mercado. Actualmente ha perdido terreno a favor de distribuciones mas
modernas, siendo relegada a aplicaciones especializadas.

Una de las debilidades de Slackware se encuentra en el sistema de instalacin de


paquetes, el cual no tiene control de versiones ni dependencias. Las nuevas
distribuciones han implementado y adoptado dos sistemas de instalacin de archivos
RPM (RedHat Package Manager) y DEB (Debian Package Manager). Cada programa
distribuido de esta forma es un archivo comprimido, que se identifica por la extensin
rpm o deb y proporciona una descripcin de lo que contiene, la versin del programa,
su ubicacin en el sistema, validez de la firma electrnica y las dependencias con
otros programas o libreras; por ejemplo, un determinado paquete puede necesitar de
otro para su correcto funcionamiento, por lo que se dice que es dependiente del otro.
De esta forma se garantiza el xito del proceso de instalacin de una aplicacin y la
estabilidad a largo plazo del sistema.

Debian
Debian (http://www.debian.org) es una distribucin bastante popular que no est
desarrollada por ninguna compaa comercial sino que es fruto del trabajo de diversos
voluntarios en toda la comunidad de Internet. Es, por lo tanto, una distribucin
completamente gratis, sin restriccin de licencias en donde todo el software es
GNU/GPL y no incluye software comercial. Adems es bastante completa y estable
gracias a su sistema de instalacin de paquetes DEB. Sin embargo, tal vez sea algo
dficil para alguien que empieza por primera vez con Linux. Esto no quiere decir que
si es la primera vez que se va a instalar Linux y se tiene una Debian a mano vaya a ser
casi imposible instalarla. Es importante mencionar que Debian tambin ofrece una
versin de su distribucin basado en otro kernel diferente a Linux: GNU Hurd.

SuSE
SuSE (http://www.suse.de) es una distribucin de una compaa alemana la cual
combina el sistema de paquetes de Red Hat (RPM) con una organizacin derivada de
Slackware. Esta distribucin es la mas popular en Europa y tiene un gran soporte para
diferentes lenguas incluido el Espaol. Es una de las ms fciles de instalar y
configurar, adems viene con una gran cantidad de paquetes: 1300 en la versin 6.2 lo
que implica una instalacin completa de alrededor de 5.3 Gbytes en disco duro.

Caldera

Una compaa norteamericana llamada Caldera (http://www.calderasystems.com) ha


creado su propia distribucin llamada OpenLinux, basada tambin en el sistema de
paquetes de Red Hat, con un sistema de instalacin muy amigable llamada Lizard
(Linux Wizard). Es una distribucin pensada para entornos comerciales, la cual
incluye paquetes comerciales como las aplicaciones de oficina Aplixware y Corel
WordPerfect. Esta compaa ostenta asociaciones con empresas tan importantes como
Novell e IBM.

Mandrake
Mandrake (http://www.linux-mandrake.com) surge originalmente como un clon de
Red Hat el cual incorporaba las bondades del ambiente integrado KDE con la
estabilidad e instalacin de Red Hat. Hoy en da es considerada una de las
distribuciones mas vendidas en el mundo, ganando varios premios como el Mejor
producto Linux del ao 1999 por la revista Linux World.

Red Hat

Red Hat (http://www.redhat.com) es la distribucin mas popular del mercado hoy en


da, siendo emulada por muchas otras. Muy sencilla de instalar, excelente auto-
deteccin de dispositivos, instalador grfico (6.1) y un excelente conjunto de
aplicaciones comerciales en su distribucin oficial.

Esta gua se basar principalmente en la instalacin de Red Hat por ser la ms


difundida. Sin embargo, comprendiendo los conceptos del proceso de instalacin de
estas se pueden aplicar a cualquier otra distribucin.
2. Instalacin de Linux.
2.1.Obtencin de Linux

Linux es posible obtenerlo directamente desde Internet en forma de archivos


comprimidos, as como la solicitud de CDs que lo contengan listo para instalar.

Algunos de los enlaces importantes son :

http://www.suse.com/index_us.html (SuSe)

http://www.mandrakelinux.com/es/ (Mandrake)

http://www.debian.org/ (Debian)

http://fedora.redhat.com/ (RedHat Fedora)

http://www.slackware.com/ (Slackware)

http://www.ubuntu.es.org (Ubuntu)

2.2.Requerimientos HW, plataformas soportadas


2.2.1.Componentes

Esta seccin est dedicada a describir el hardware del PC segn el punto de vista de
Linux. Este punto de vista est heredado de la filosofa Unix, en la que todo son
archivos, incluidos los dispositivos de hardware. Por lo tanto, Linux virtualiza el
acceso a los dispositivos por medio de archivos que suelen estar en el directorio /dev
(por device: dispositivo). Se muestra un resumen de dispositivos en la tabla 1.1.

Discos duros

Dentro de un PC pueden haber normalmente hasta cuatro discos IDE en total (dos por
canal), cada disco duro tiene un nombre en Linux en funcin de como se haya
instalado. Si el disco duro est funcionando en el primer canal como maestro se
llamar /dev/hda (hard drive a), y si es esclavo /dev/hdb. En caso de que estemos en
el segundo canal IDE los nombres correspondientes sern /dev/hdc y /dev/hdd.

Es posible que sea un poco confuso todo esto y que no se tenga idea de donde se
encuentra el disco duro. En ese caso es bueno tener en cuenta que casi todos los
computadores vienen de fbrica con un solo disco duro que siempre es el /dev/hda.

Un caso a notar son los lectores de cdrom y otros dispositivos ATAPI como las
unidades ZIP o LS-120, normalmente funcionan conectados como un disco duro ms.
Por lo que el nombre ser igual que si fuese un disco duro, en la mayor parte de los
sistemas /dev/hdb.

Si el disco es SCSI entonces el esquema de nombres es parecido, pasando a ser en


este caso /dev/sda, /dev/sdb,..., (SCSI disk a, b, ...)

Unidades de disquete

Las unidades de disquete en Linux se llaman /dev/fd0 y /dev/fd1 (floppy disk 0),
correspondiendo cada nombre a las unidades A: y B: en DOS. Actualmente, los
computadores nuevos con una nica unidad por lo que slo se podr utilizar /dev/fd0.
Puertos de serie

Los dos dispositivos mas comunes que se conectan a los puertos de serie suelen ser
ratones y mdems. En Linux existen dos maneras de nombrar a los puertos serie, en la
primera se llama al COM1 /dev/cua0 y al COM2 /dev/cua1. La segunda manera es
/dev/ttyS0 y /dev/ttyS1. Si es posible, se prefiere utilizar la segunda manera porque la
primera est llamada a desaparecer.

Existe un problema con los puertos serie en el hardware del PC y que puede provocar
problemas desconcertantes. Aun cuando existen cuatro puertos seriales por diseo,
solo existen dos interrupciones asignadas para este servicio. Este problema es
independiente del sistema operativo e implica que en general1.5 no se puede utilizar a
la vez /dev/ttyS0 y /dev/ttyS2, ni tampoco /dev/ttyS1 y /dev/ttyS3 (COM1 con COM3 y
COM2 con COM4 en DOS, respectivamente).

Por lo general aquellos que tengan un ratn conectado a un puerto de serie lo tendrn
en /dev/ttyS0 y su mdem deber estar instalado en el /dev/ttyS1 o /dev/ttyS3. Si el
ratn es tipo PS/2 entonces estar conectado en un dispositivo especial llamado
/dev/psaux y no usar ningn puerto serial.

Puertos Paralelos

Los uso ms habituales para un puerto paralelo en el PC son la conexin a la


impresora y el uso de dispositivos paralelos como unidades de CDROM o ZIP
externas. El primer puerto paralelo, donde se suele conectar la impresora, se llama
bajo Linux /dev/lp0 (line printer 0).

Tipo de dispositivo Nombre en Linux


Unidad maestra primer canal IDE /dev/hda
Primera particin primaria /dev/hda1
Segunda particin primaria /dev/hda2
Tercera particin primaria /dev/hda3
Cuarta particin primaria /dev/hda4
Primera particin lgica /dev/hda5
Segunda particin lgica /dev/hda6
... ...
Unidad esclava primer canal IDE /dev/hdb
Unidad maestra segundo canal IDE /dev/hdc
Unidad esclava segundo canal IDE /dev/hdd
Primer disco SCSI /dev/sda
Primera particin primaria /dev/sda1
Segunda particin primaria /dev/sda2
... ...
Segundo disco SCSI /dev/sdb
Tercer disco SCSI /dev/sdc
... ...
Primera unidad lectora de disquetes (A:) /dev/fd0
Segunda unidad lectora de disquetes (B:) /dev/fd1

Primer puerto serie (com1) /dev/ttyS0 o /dev/cua0


Segundo puerto serie (com2) /dev/ttyS1 o /dev/cua1
Tercer puerto serie (com3) /dev/ttyS2 o /dev/cua2
Cuarto puerto serie (com4) /dev/ttyS3 o /dev/cua3
Puerto para ratn tipo PS/2 /dev/psaux
Primer puerto paralelo /dev/lp1 (kernel 2.2.x /dev/lp0)
Segundo puerto paralelo /dev/lp2 (kernel 2.2.x /dev/lp1)

2.3. Datos necesarios sobre HW.


Los datos de hardware necesarios para realizar la instalacin del Sistema Operativo
Linux son los siguientes:
Memoria principal
Tamao y tipo del disco duro
Tipo de interfaz de red
Tipo de interfaz de video
Impresora
Tipo de interfaz USB
Otro tipo de interfaz

2.4.Planteamiento de las Particiones

Los discos duros pueden ser divididos en compartimentos independientes entre s.


Estos compartimentos son llamados particiones y es el esquema que se seguir para
repartir el disco duro entre DOS o Windows y Linux.

El nmero de particiones primarias de un disco duro est limitado a cuatro, aunque


una particin primaria puede ser subparticionada en mas particiones lgicas por el
sistema operativo que la use. La informacin de como est particionado un disco
duro: su tamao y tipo de particin es guardada al principio del mismo, y es un
estndar que siguen todos los sistemas operativos. Suponiendo que se tienen cuatro
particiones primarias en /dev/hda, estas sern denominadas por Linux /dev/hda1,
/dev/hda2, /dev/hda3 y /dev/hda4. Las particiones lgicas que crea a partir de una
primaria-extendida se denominarn a partir de /dev/hda5 en adelante

Existe un primer sector en el disco duro que no pertenece a ninguna particin llamado
MBR (Master Boot Record) y contiene un pequeo programa de inicio que es el
primero en ejecutarse. l es el encargado de iniciar el sistema operativo: Windows y
DOS ponen ah el suyo. Este se cambiar por el de Linux, que se llama LILO (LInux
LOader), y que permitir escoger el sistema operativo con el que deseamos arrancar.

Esquema general de divisin del disco duro en particiones fig_particiones


width=10cmimages/particiones.eps

Linux necesita al menos una particin para poder funcionar. Aunque lo mnimo
aconsejable es tener dos particiones: una dedicada a Linux para su sistema de archivos
y otra de tamao menor dedicada a la memoria de intercambio denominada swap. La
memoria de intercambio permite funcionar con ms memoria RAM (Random Access
Memory) de la que en realidad se tiene, por ejemplo es posible tener 8 Mbytes de
RAM y 20 de swap por lo que el sistema parecer tener en realidad 28 Mbytes. Por
supuesto el disco duro es mucho ms lento que la RAM, por lo que sigue siendo
bueno tener mucha RAM. La recomendacin general es tener el doble de la memoria
RAM, en swap hasta el limite de 128 Mbytes: mximo tamao de una particin de
swap. Si se necesita mas memoria de intercambio se deben crear varias particiones de
swap.

Linux es capaz de distribuir su sistema de archivos entre varias particiones, esto tiene
una clara ventaja, si una particin falla el resto de los datos correspondientes a otras
particiones sigue intacto. Aunque una instalacin casera y por primera vez ser
suficiente con tener todo el sistema de archivos en una sola particin.

FIPS

Linux necesita sus propias particiones, y si ya se tiene instalado DOS/Windows es


necesario quitar un trozo de su particin. Esto normalmente significa destruir la
particin actual y volver a crear unas nuevas, perdiendo todos los datos que pudiese
contener. Sin embargo existen varios programas que nos permite reparticionar sin
perder los datos. Con las diferentes distribuciones de Linux viene una utilidad de libre
distribucin llamada FIPS. Esta suele estar en el el cdrom en el directorio
D:DOSUTILS.

Para utilizar FIPS se debe seguir una serie de pasos:

1. Copiar los datos importantes.

Reparticionar un disco es una operacin delicada en la que un error puede representar


la perdida de datos, por ello es recomendable copiar todos los datos importantes antes
de hacer nada. De todas formas, aunque no se vaya a instalar Linux ni se vaya a
reparticionar el disco duro, es conveniente tener siempre una copia de seguridad de
los datos importantes, los problemas nunca avisan.

2. Leer la documentacin de FIPS.

Es importante leer la documentacin de FIPS, existen muchos aspectos y detalles


correspondiente a particularidades del hardware que se deben tener en cuenta.

3. Defragmentar el disco duro.

Para poder dividir la particin eficientemente es necesario que todos los datos estn al
principio de la misma. Sino, es posible que incluso no se pueda hacer. Para
defragmentar se puede usar la utilidad defrag de DOS/Windows.

4. Crear un disco de arranque.


Se debe crear un disquete de arranque del sistema operativo y copiar a l los archivos
FIPS.EXE, RESTORRB.EXE y ERRORS.TXT. Tambin se debe copiar FDISK.EXE, si
se encuentra en DOS seguramente esta en C:DOS y si esta en Windows se halla en
C:WINDOWSCOMMAND. Para crear un disquete de arranque se utiliza la orden
FORMAT A: /s

5. Arrancar con el disquete.

Inserte el disquete en la unidad A: y encienda el computador. El computador deber


ejecutar el sistema operativo contenido en sta. A continuacin se inicia FIPS. Este
mostrar informacin diversa y por ltimo te dar la opcin de dividir la particin en
DOS, ajustando el tamao con las teclas de los cursores, a la izquierda y la derecha.

Un tamao orientativo para Linux puede ser de unos 800 Mbytes, aunque todo
depender del tamao lo que se piense instalar y del espacio libre en el disco duro.

Una vez se haya terminado con FIPS, est habr dividido la particin de
DOS/Windows en dos particiones. El espacio de la segunda particin es el que se
dedicar a Linux.

6. Borrar la nueva particin.

Es necesario borrar la nueva particin creada para dejar su espacio disponible para
Linux. Esto se har ejecutando FDISK y seleccionando la opcin 3 (Eliminar
particin o unidad lgica DOS) y posteriormente seleccionando la opcin 1 (Eliminar
particin primaria DOS). Cuidado con la particin que se vaya a eliminar, recuerde
que es la segunda particin.

Mas adelante, durante la instalacin de Linux se utilizar este espacio disponible para
crear las particiones que necesita Linux.

2.5. Arranque de distintos sistemas operativos (LILO, GRUB)

LILO.

Todas las particiones primarias y extendidas comienzan con lo que se llama sector de
arranque. El IPL por defecto, nicamente pasa el control al sector de arranque de la
particin marcada con el flag de activo, tambin llamado flag de arranque. Como se
puede suponer, slo debera haber una particin con el flag de activo marcado. De
esta manera se controla la particin de arranque.

En el sector de arranque se encuentra otro programa que es el encargado de arrancar


el OS. En el caso de Linux, este programa es Lilo.

Podemos usar otros gestores de arranque principal, en lugar del de por defecto, que
incorporen diversas funcionalidades como mens, colores, usuarios, claves u otras
opciones. Algunos gestores de arranque comerciales son el System Commander de V
Communications, el BootMagic de PowerQuest, o el BootStar, pero no son gratis.
Otro gestor que s es gratis es el Ranish Partition Manager.

Lilo no slo puede arrancar Linux, sino que tambin puede arrancar otros OS.
Adems, no ha de instalarse necesariamente en el sector de arranque de una particin,
sino que puede instalarse en el MBR, es decir, en el IPL, convirtindose en el gestor
de arranque principal.
Lilo tambin puede instalarse en el sector de arranque de una particin extendida, lo
cual viene muy bien si tenemos Linux instalado en una unidad lgica y queremos usar
otro gestor de arranque principal que no sea Lilo.

Instalacin de Lilo

Para instalar Lilo hay que crear primero el archivo de configuracin /etc/lilo.conf y
despus ejecutar como superusuario el comando:

lilo

Hay programas como el linuxconf, que permiten crear el archivo de configuracin de


Lilo, pero la verdad es que una vez que se conoce el formato de este archivo, es ms
fcil, seguro, rpido y potente crearlo uno mismo a mano.

Antes de instalar Lilo, podemos hacer una copia de seguridad de la zona que vamos
a sobreescribir. Por ejemplo, para hacer una copia del MBR del primer disco IDE,
ejecutamos el comando:

dd if=/dev/hda of=<archivo> bs=512 count=1

Para restaurar el IPL salvado slo tenemos que ejecutar el comando:

dd if=&ltarchivo> of=/dev/hda bs=446 count=1

Tambin podemos instalar el IPL por defecto, desde MS-DOS, con el comando:

fdisk /mbr

Despus de cargarse Lilo en el arranque, mira si se encuentra activo BloqMay o


BloqDesp, o si se ha pulsado Control, Alt o Shift, en cuyo caso muestra el boot
prompt, desde el que se puede elegir el OS que se quiere arrancar. Para ms
informacin sobre este tema, vase el BootPrompt-HowTo.

Estructura general del archivo de configuracin

Como se ve en la figura, hay una primera parte de opciones globales y despus


tantas secciones como sistemas operativos queramos arrancar. Cada opcin ocupar
una lnea en el archivo de configuracin. Se consideran comentarios y por tanto se
ignoran, todo lo que hay a partir del carcter # hasta el final de la lnea actual.

Opciones globales
boot=<device>
Lugar donde instalar Lilo. Por defecto se toma la particin donde est el actual
sistema de archivos raz de Linux.
linear
Usar direcciones lineales en lugar de 3D. Necesario en discos SCSI.
message=<file>
Imprime el archivo indicado al cargar Lilo. Este archivo debe ocupar menos de 65535
bytes. El carcter 0xff hace que se borre la pantalla.
timeout=<tsecs>
Dcimas de segundo que espera Lilo la pulsacin de una tecla antes de arrancar un
OS. Por defecto se espera indefinidamente.
prompt
Fuerza la aparicin del prompt de Lilo.
default=<name>
OS de arranque por defecto.

GRUB

GRUB es el Gran Gestor de Arranque Unificado de GNU (GNU GRand


Unified Bootloader), un proyecto que intenta solucionar todos los
problemas de arranque de una vez por todas.

Una de las caractersticas ms interesantes es que no tienes que


instalar una particin nueva o un ncleo nuevo, puedes cambiar todos
los parmetros en el arranque usando la Consola GRUB, ya que conoce
los sistemas de ficheros.

Empecemos a trabajar:

1. - Descarga: ftp://alpha.gnu.org/pub/gnu/grub/grub-0.92.tar.gz

Descarga:http://linuxfromscratch.org/~gerard/grub-0.91-vga16.patch
Esto aade el soporte para un dibujo de fondo en grub, si lo

2. - Extrae: tar -xvzf grub-0.92.tar.gz

3. - Instala:
./configure --prefix=/usr # lee INSTALL para saber ms opciones
make
make install

mkdir /boot/grub
cp /usr/share/grub/i386-pc/stage1 /boot/grub
cp /usr/share/grub/i386-pc/stage2 /boot/grub
Y, si quieres, copia tambin uno de los ficheros stage1.5.

4. - Iniciando Grub:
Ahora hay dos formas de continuar, puedes iniciar la Consola
GRUB usando /usr/sbin/grub o utilizando un disco de arranque:
cd /boot/grub
cat stage1 stage2 >/dev/fd0 # Asegrate de tener un disco vaco en
la disquetera!
Reinicia!

5. - Configuracin:
Ahora tienes que definir tu configuracin:
Primero, GRUB quiere saber en qu particin est instalado. GRUB
nombra a las particiones como sigue:
(hd<NmBios>,<NmParticin>) esto es, /dev/hda es (hd0),

/dev/hda1 (hd0,0), /dev/hdb2 (hd1,1)...


(Espero que hayas cogido la clave ;) - si no, lee man grub
o info grub)

Si no sabes la particin, puedes intentar con


find /boot/grub/stage1
en la Consola GRUB.
Ahora di a GRUB dnde est instalado:
root (hd0,1) # Esta es mi configuracin (/dev/hda2)

E instlalo en el Registro Maestro de Arranque (MBR)


setup (hd0)

Si quieres, puedes reiniciar ahora, y con


kernel (hd0,1)/boot/bzImage root=/dev/hda2
iniciar tu sistema.

Existe la posibilidad de "ensear" a GRUB sobre el sistema de


ficheros, de esa forma, GRUB no necesita un mapa de bloques para el
fichero stage2 y es, entonces, ms robusto contra cambios en el
sistema de ficheros. Esto se consigue con los ficheros stage1.5:
despus de hacer
root (hd0,1)
escribe
embed /boot/grub/reiserfs_stage1_5 (hd0)
# o
e2fs_stage1_5
y anota el nmero de sectores
ahora escribe
setup (hd0)
o
install/boot/grub/stage1(hd0)
(hd0)1+<nmero_sectores_que_devolvi_embed> p
/boot/grub/stage2 /boot/grub/menu.lst

6. - Instalando un Men de Arranque:


Simplemente crea un fichero menu.lst en el directorio
/boot/grub. Puedes poner all la mayora de los comandos
de la Consola GRUB! (Lee info grub)

Como referencia, aqu esta es una configuracin (para Linux SuSe):


# Fichero /boot/grub/menu.lst - Definicin del Men de Arranque

# Arrancar por defecto la Entrada 0


default 0
timeout 10

# para hacerlo ms bonito ;)


color green/black light-green/black

# Si has aplicado el parche Pixmap, puedes definir un dibujo como


fondo aqu
# La bonita imagen de LFS se puede encontrar en
# http://linuxfromscratch.org/~gerard/lfslogos/lfs-grub-splash.xpm
splashimage (hd0,1)/boot/grub/lfs-grub-splash.xpm

#Teclado alemn
setkey y z
setkey z y
setkey Y Z
setkey Z Y
setkey equal parenright
setkey parenright parenleft
setkey parenleft asterisk
setkey doublequote at
setkey plus bracketright
setkey minus slash
setkey slash ampersand
setkey ampersand percent
setkey percent caret
setkey underscore question
setkey question underscore
setkey semicolon less
setkey less numbersign
setkey numbersign backslash
setkey colon greater
setkey greater bar
setkey asterisk braceright

#Linux Estndar
title LFS-Linux 2.4
kernel (hd0,1)/boot/bzImage root=/dev/hda2

#Linux Antiguo
title Antiguo Suse Linux 6.4
kernel (hd1,0)/bzImage root=/dev/hdb2

#Windows 98
title Windows 98
chainloader (hd0,0)+1

#instala grub
title (Re)Instala grub
root (hd0,1)
embed /boot/grub/reiserfs_stage1_5
install /boot/grub/stage1 (hd0) (hd0)1+19 p /boot/grub/stage2
/boot/grub/menu.lst

.
3. Comandos bsicos.
3.1. Terminales virtuales, login, cambio contrasea

Los terminales virtuales son las distintas sesiones (normalmente 6) que se arrancan en
Linux en modo consola y a las que puedes conmutar con ALT-Fn, o con CTRL-ALT-Fn
si ests bajo X-Window.

Las siguientes lneas de /etc/inittab son las encargadas de arrancar los terminales
virtuales:
1:2345:respawn:/sbin/mingetty tty1
2:2345:respawn:/sbin/mingetty tty2
3:2345:respawn:/sbin/mingetty tty3
4:2345:respawn:/sbin/mingetty tty4
5:2345:respawn:/sbin/mingetty tty5
6:2345:respawn:/sbin/mingetty tty5

Eliminando esas lneas o aadiendo parecidas, aumentars o disminuirs,


respectivamente, el nmero de terminales virtuales.
Recuerda que al arrancar las X y conmutar a modo consola (a otro terminal virtual),
puedes volver a las X accediendo al terminal virtual 7 (ALT-F7), por lo que no es
conveniente que asignes el terminal virtual nmero 7 en /etc/inittab. En caso de
asignarlo, tendras que volver a las X con el siguiente terminal virtual libre, en el
ejemplo, con ALT-F8.

Un Terminal virtual, al ser presentado al usuario, debe invocar inmediatamente una


entrada de usuario, compuesta de un nombre_usuario y de una contrasea.

Login : _

Password :_

Si es necesario ejecutar instalaciones, creacin o modificacin de usuarios o


alteraciones de cualquier ndole a los parmetros del sistema, el usuario de login debe
ser root con su correspondiente password.

Si accede con otro nombre de usuario, tendr permisos y restricciones de acuerdo a lo


que supervisor le haya asignado.

Las contraseas slo pueden ser cambiados por los supervisores.

Para cambiar contrasea, debe acceder a algn intrprete de comandos y ejecutar el


comando passwd.

3.2. Intrprete de comados (bash, tcsh, ksh).

3.2.1. Concepto de shell. Tipos de shell.

Qu es un shell?

Lo que ocurre internamente en tu computador cuando este ejecuta una accin, tal
como, leer un archivo, grabar un documento, acceder al CD-Rom o ejecutar un
programa, es un proceso bastante complicado y que requiere una serie de acciones por
parte de tu sistema operativo. Por si esto no es suficiente, necesitamos tambin, una
manera de poder comunicarnos con nuestro sistema operativo para decirle que es lo
que queremos hacer. Es aqui donde un intrprete de comandos (shell) hace su trabajo.
Un shell o intrprete de comandos es el proceso encargado de traducir los comandos
que los usuarios introducen, a instrucciones que el sistema operativo entiende. Es el
programa que se encuentra entre el sistema operativo y el usuario ,el cual nos hace la
vida mas fcil.

Todo usuario que quiera profundizar en un sistema Unix/linux tendr ms tarde


temprano que familiarizarse con el shell de su sistema, el cual se convertir en una
herramienta imprescindible en la administracin diaria del sistema, tanto por su
potencia como versatilidad.

La shell

Como dije en el punto anterior, la shell es el intrprete de rdenes de un sistema Unix.


No hay que confundir la shell con el sistema operativo. El sistema operativo es el
ncleo y la shell es un interfaz que nos proporciona utilidades de trabajo y permite
establecer una relacin con el ncleo. Es decir, la shell reconoce una serie de rdenes,
las interpreta y lanza los procesos necesarios para su realizacin.

Hay diversos tipos de shells, cada una con sus caractersticas. Podemos citar:

Bourne shell (sh)


Korn shell (ksh)
Shell C (csh)
Bourne again shell (bash)

Para desarrollar los contenidos que vienen a continuacin voy a utilizar siempre las
shell bash, y algn comentario ocasional con las diferencias con otras shell.

Metacaracteres de la shell

Existen ciertos caracteres que tienen un significado propio para la shell. La shell sabe
interpretarlos para modificar algunos comportamientos. Estos caracteres son:

equivale a cualquier
equivale a cualquier cadena de
* cadena de texto en un ?
texto en un nombre de archivo
nombre de archivo
evala una condicin evala una condicin lgica
[] [! ]
lgica negativa
Tubera, utiliza la salida
Protege el siguiente
de la orden de la
| \ metacarcter para que la shell
izquierda, como entrada
no lo interprete
de la orden a la derecha
Extrae el contenido de una
Ejecuta un proceso en variable. Para usar el contenido
& $
segundo plano de una variable tenemos que
ponerle delante un $
redirige la salida
redirige la salida estndar,
estndar, creando un
> >> creando un archivo nuevo o
archivo nuevo borrando
aadiendo al existente
el existente
2> 2>> redirige la salida de errores,
creando un archivo nuevo o
aadiendo al existente
Redirige la entrada
< () Agrupacin de rdenes.
estndar
&& Y lgico entre rdenes || O lgico entre rdenes

Si en alguna ocasin nos interesa usar alguno de estos caracteres como literal, es
decir, que la shell no lo interprete como carcter especial es necesario que est
precedido (protegido) por el carcter de escape \ (barra invertida).

Entrada y salida estndares y de errores

Un sistema Unix dispone de tres vas o canales para comunicarse con el exterior de
forma estndar.

Una de ellas, la entrada estndar, se utiliza para introducir datos en la shell; de forma
predeterminada est asociada al teclado.

La salida estndar, se utiliza para mostrar informacin y de forma predeterminada est


asociada al monitor (consola). La salida estndar es donde vuelca la informacin de
salida la ejecucin de una orden.

Por ltimo existe un canal dedicado a mostrar la salida de errores, que de forma
predeterminada est asociado a la salida estndar. Cuando la ejecucin de una orden
falla por cualquier motivo, el sistema lo notifica a travs de esta canal. Normalmente,
como el canal va asociado a la salida estndar, los errores aparecen en panaalla.

En mltiples ocasiones nos puede interesar redirigir alguna de estas salidas a otro
canal; para realizar esto disponemos de los metacaracteres :

redirige la entrada estndar. Podemos utilizar este metacarcter cuando


queramos sustituir una serie de entradas por teclado por el contenido de un
<
archivo. Unix trata exactamente igual el teclado que si fuera un archivo, l
ve una serie de caracteres terminados en un retorno de carro.
redirige la salida estndar. Si esta redireccin es a un archivo, lo crea nuevo
> en caso de que no exista, y si existe elimina su contenido previo. Un
descuido con la redireccin no puede hacer perder un archivo fcilmente
redirige la salida estndar. Si esta redireccin es a un archivo, y el archivo
>> existe la aade al final de ste, y si no existe lo crea. Utilizando esta
redireccin podremos aadir fcilmente una lnea a un archivo.
redirige la salida de errores. Si esta redireccin es a un archivo, lo crea
2>
nuevo en caso de que no exista, y si existe elimina su contenido previo.
redirige la salida de errores. Si esta redireccin es a un archivo, y el archivo
2>>
existe la aade al final de ste, y si no existe lo crea.

3.3. Archivos y directorios

Organizacin del almacenamiento en disco


El almacenamiento en disco se organiza en dos elementos bsicos, el archivo y el
directorio. Intuitivamente la organizacin lgica de los archivos y directorios en disco
es similar a las hojas y ramas en un rbol. A cada hoja slo se puede llegar siguiendo
una serie de ramas y cada rama puede contener hojas y ms ramas. En nuestro caso,
las ramas sern los directorios y las hojas los archivos.

Hablando con ms propiedad, un archivo es un conjunto de datos en disco asociado a


un i-nodo. El sistema operativo identifica a un archivo por su nmero de i-nodo. En el
i-nodo se especifican entre otras cosas los permisos, el propietario y la distribucin de
los datos del archivo sobre el disco.

Un directorio es un archivo especial donde se asocia un nombre a un nmero de i-


nodo. Esto produce la sensacin de que el directorio contiene archivos y otros
directorios. Esta organizacin nos permite que podamos asignar varios nombres a un
mismo conjunto de datos en disco.

En ocasiones puede suceder que cambiemos el nombre de un archivo y otro proceso


que lo tuviera abierto y escribiendo en l, lo siga haciendo ya que el cambio de
nombre no afecta al i-nodo en s.

En el captulo de administracin del sistema de archivos se trata todo esto con ms


profundidad.

rbol de directorios

Los sistemas Unix se organizan en un nico rbol de directorios. Existe un directorio


principal, denominado raz (/) dentro del cual aparecen el resto de directorios que
tenga el sistema.

Esto quiere decir que los distintos discos no aparecen como tales discos
independientes en es sistema, sino que aparecen como un directorio ms y esto lo
podemos organizar de acuerdo con nuestros intereses. Cuando hablbamos del
sistema de archivos decamos que intuitivamente se poda ver cada sistema de
archivos como un rbo con archivos y directoriasl, pues ahora cada sistema de
archivos se integra en el rbol de directorio como una rama ms. Los disspositivos
extraibles se integran como ramas que se pueden poner o quitar.

En el siguiente ejemplo podemos observar una forma de organizar un sistema Linux

$ mount
/dev/hdb1 on / type ext3 (rw)
none on /proc type proc (rw)
/dev/hdb3 on /usr type ext3 (rw)
/dev/hdb4 on /opt type ext3 (rw)
/dev/hda5 on /tmp type ext3 (rw)
/dev/hda6 on /usr/src type ext3 (rw)

/dev/hda7 on /usr/local type ext3 (rw)

Rutas de acceso a archivos y directorios Nombres de archivos y directorios

El nombre de un archivo o directorio est formado por letras, nmeros y otros


caracteres, salvo el carcter / que se utiliza como separador en una lista de directorios.
Debemos evitar los metacaracteres de la shell en los nombres de archivos. En caso
necesario, si el nombre tiene del archivo tiene un metacarcter o espacio en blanco,
ser necesario proteger el nombre completo del archivo con comillas (") o el
metacarcter concreto, incluido el espacio en blanco, con el carcter "\". El espacio es
necesario protegerlo porque si no se hace la shell lo toma como final del nombre.

Por ejemplo, seran nombres vlidos de archivos:

archivo-datos.txt
"archivo de datos.txt"
archivo\ de\ datos.txt
archivo_copia\(1\).txt

No seran nombres de archivos vlidos:

archivo>datos.txt
archivo de datos.txt
archivo_copia(1).txt

Los sistemas unix no identifican ninguna extensin en los nombres de archivos, el


nombre de un archivo en ningn caso determina su funcionalidad, es decir, un
ejecutable no tiene por qu terminar en .exe, por ejemplo. Esto con respecto al sistema
operativo, pero s puede ocurrir que estemos utilzando un entorno grfico de escritorio
y este entorno s que pueda identificar ciertos nombres de archivos para aplicar unas
caractersticas, pero esta labor es del entorno de escritorio, no del sistema operativo.

Plantillas para nombres de archivos

Hay ocasiones en que nos interesa usar nombres de archivos que hagan referencia, no
a un archivo individual, sino a un conjunto de archivos. Para estos casos tenemos las
plantilla. Una plantilla se forma con caracteres normales y mediante los caracteres:

* equivale a cualquier cadena de caracteres. Por ejemplo ab* equivale a todos los
archivos que empiecen por ab.
? equivale a un carcter individual. Por ejemplo ab? equivale a los nombres de
archivos (o directorios) con tres caracteres y los dos primeros son ab.

Ruta de un archivo

Para indicar la ubicacin en disco de un archivo hay que indicar la lista de directorios
que contienen al archivo. Es decir, un archivo puede estar dentro de un directorio que
a su vez est dentro de otro y as varios. En esta lista, que denominaremos ruta de
acceso, cada directorio est separado del siguiente directorio por el signo / , y sin
dejar espacios en blanco. Por ejemplo:

/usr/bin/wc

hace referencia la archivo wc que est contenido en el directorio bin, que a su vez est
dentro del directorio usr, que est en el directorio raiz.

Para facilitar las cosas existen ciertos directorios especiales:

/ Es el directorio raz. El superior de todos.


. Es el directorio activo. En el que nos encontramos en un momento dado. El
directorio actual se puede cambiar con una simple orden que se ver con
posterioridad.
.. Es el directorio superior al que nos encontramos. El nico directorio que no tiene
directorio superior es el directorio raz.
Una ruta tiene que especificar de forma nica un elemento de sistema de archivos.
Ahora veremos como hay dos formas de expresar la ruta de un archivo, rutas
absolutas y rutas relativas.

Ruta absoluta

Una ruta absoluta es aquella que parte del directorio raz. Las rutas absolutas son
vlidas en cualquier caso. Si establecemos como ejemplo paralelo la direccin de la
vivienda, la direccin abosluta incluye la calle y el nmero de la vivienda, de forma
nica e independiente.

Ejemplo:

/home/usuario/.profile

Ruta relativa

Es una ruta que parte del directorio actual como origen. Esta ruta slo es vlida desde
un directorio actual concreto , es decir es relativa a un directorio. Si seguimos el
ejemplo que pusimos para la direccin de una vivienda, una ruta relativa es como si te
indicaran "dos casas ms all de cierta esquina". Observamos como la direccin "dos
casas ms all una cierta esquina" es slo vlida para una calle, y esa misma direccin
referida a otra calle sera otro inmueble distinto. Es decir la ruta relativa depende del
punto de partida.

../../.profile

3.4. Permisos, grupos y usuarios.

Propietarios y Permisos

Propiedad

Como vimos en la descripcin del sistema de ficheros, cada i-nodo guarda un espacio
para indicar los nmeros de usuario y grupo. Entonces cada i-nodo pertenece a un
usuario y a un grupo. Tambin el usuario que tenga el UID (nmero de identificacin)
descrito en la base de datos de usuario /etc/passwd que coincida con el del fichero
ser su propietario. Esto tambin es vlido para directorios.

Los propietarios, se utilizan como mecanismo de seguridad para poder asignar ciertas
propiedades en funcin del usuario, en particular los permisos.

Permisos

Cada i-nodo guarda un espacio para almacenar los permisos bajo los cuales se puede
acceder a un fichero. Los permisos se aplican al propietario, al grupo y al resto de los
usuarios. Unix dispone de tres permisos, lectura(r), escritura(w) y ejecucin(x). En
total tendremos nueve bits que indican los distintos permiso en el siguiente orden:
usuario, grupo, otros. Los permisos los podemos expresar en formato octal. Por
ejemplo el valor 751 indicar:

usuario 7 = 111 = rwx


grupo 5 = 101 = r-x
otros 1 = 001 = --x

De esta forma los permisos quedan rwxr-x--x

Hay que tener en cuenta que los permisos tienen distinto significado si se aplican a un
fichero o a un directorio.

Permiso de lectura Permite o evita que alguien pueda leer el contenido de un


fichero o de un directorio. En el directorio significa ver qu ficheros contiene.
Permiso de escritura En el caso de un fichero, el permiso de escritura permite
modificarlo o borrarlo. En el caso de un directorio este permiso da la posibilidad de
crear o borrar ficheros de un directorio.
Permiso de ejecucin En el caso de un fichero, permite que sea ejecutado por quien
tenga el permiso. En el caso de un directorio, el permiso de ejecuacin permite entrar
en l.

Grupos de usuarios

Los Grupos son una forma de otorgar una serie de privilegios a un conjunto de
usuarios, sin tener que asignrselos a cada uno en particular.

Los grupos quedan registrados en el archivo /etc/group

Hemos dicho que todo usuario tiene siempre un grupo principal al que pertenece. Hay
dos posibilidades para los usuarios normales: que todos tengan el mismo grupo
principal (generalmente users) o que cada usuario tenga un grupo principal especco
(casi siempre del mismo nombre que el usuario).
Esto responde a las necesidades de cada sistema. En el primer caso, los directorios de
trabajo de los usuarios suelen ser accesibles por el resto de usuarios (no es lo ms
comn); mientras que en el caso de que cada usuario tenga un grupo principal, lo
normal es que los directorios de trabajo de cada usuario sean slo accesibles por ese
usuario (que s es lo ms comn).

Para mantener los grupos se usan los comandos groupadd, groupdel y groupmod.

3.5. Procesos

Cuando el ncleo Linux inicia llega un momento en que se debe ejecutar el primer
programa, el cual se encarga de leer los scripts de inicio y dejar el sistema listo para el
login. Este primer proceso es el INIT y recibe el identificador de proceso (PID)
numero 1. De este proceso se desprenden varios procesos, algunos que se ejecutan
una sola vez (scripts de runlevel), otros que se ejecutan repetitivamente (getty/mgetty,
el programa que nos solicita login en cada terminal que definimos en /etc/inittab), etc,
etc.

Pero en resumen, mas alla de cuando, como y cuanto se ejecutan, cada vez se define
un nuevo PROCESO. La imagen de un proceso es el programa en cuestion. Ahora, se
necesita una forma de saber cuando un proceso muere. Excelente, se hace con
seniales, pero, a quien se le avisa? Al proceso que genero a dicho proceso "hijo". Las
funciones que ahora vamos a ver nos permiten: crear procesos, reemplazar imagenes
de procesos y administrar la muerte de procesos que nosotros (o, mejor dicho, nuestro
programa) han creado.

Los procesos tienen las siguientes propiedades:

Un nmero identificador (Process ID), que diferencia a cada proceso de los


dems en ejecucin.
Un PPID (Identificador del proceso padre) identificando al proceso que inici
este proceso.
Un ESTADO, habr momentos en los que un proceso seguir existiendo en el
sistema, pero no estar haciendo nada realmente. Puede estar esperando a que una
SEAL le sea enviada (sobre lo que trataremos ms tarde) para volverse activo, o a
nosotros como usuarios nos puede interesar detenerlo o pausarlo bajo determinadas
circunstancias. Los estados ms importanes son dormido (S), yen ejecucin (R).
Un DUEO, que generalmente es el usuario que lo ejecut, y entonces, el
proceso hereda los permisos del usuario frente a los archivos . Excepto para el usuario
root, los dems no pueden ejercer control sobre los procesos que no le pertenecen.
Una PRIORIDAD, que determina su importancia. Estas prioridades pueden ser
cambiadas.

Para conocer los procesos se debe ejecutar el comando ps e. Mostrar una lista
como la mostrada a continuacin:
shrek@pantano:~]$ ps
PID TTY STAT TIME COMMAND
172 p0 S 0:00 -bash
184 p0 R 0:00 ps
[shrek@pantano:~]$

Se estn ejecutando dos commandos : el bash que es el intrprete de comandos y el


mismo ps.
El comando ps tiene algunas opciones:
-e muestra todas las sesiones
-f full listing: da los nmeros del PID, del Ppid (padre), uso del procesador y tiempo
de comienzo.
-j da el PGID (nmero de grupo de los procesos - coincide normalmente con el padre
de todos ellos).

Para detener un proceso se debe utilizar el comando kill .

El formato es kill <n de seal> PID

Donde n de seal :

15 TERM o terminacin; cancela ordenadamente los recursos y termina.

1 es corte

2 es interrupcin

3 es quit

5 es hangup

9 es cancelar inmediatamente.

1.6. Redireccionamientos, tuberas.


El shell toma como entrada estndar el teclado y como salida estndar la pantalla del
Terminal aasociado al usuario.
Mediante el smbolo > podemos redireccionar la salida hacia cualquier otro
dispositivo (chero). De forma anloga mediante < redireccionamos la entrada
estndar. El redireccionamiento de salida a un chero supone la destruccin de ese
chero si ya existe. Si lo que se quiere es aadir informacin a un chero debemo
solamente no
realizar la redireccin utilizando >>. Cuando no interesa la salida de un archivo
podemos redireccionar la salida al dispositivo /dev/null (la informacin
redireccionada desaparece).
Es tambin posible redireccionar el dispositivo al que los programas enven sus
mensajes de error (por defecto es la pantalla del terminal). Esto se consigue mediante
2>.

Ejemplos:
cat <origen >destino. Se crea el chero destino como copia de origen.
cat noexiste 2>/dev/null. Se muestra por pantalla el contenido del archivo
coexiste ,pero los mensajes de error se desechan.
cat fichero2>error.log . Se muestra por pantalla el contenido del archivo fichero y
los errores quedan grabados en error.log.
Las tuberas o pipes se utilizan para secuencias procesos, es decir que el resultado de
un comando o proceso invocado, se redirecciona al siguiente. La tubera se indica con
el smbolo |.
Por ejemplo:
ls l $HOME | cat listado. Se almacena en el archive listado la salida del comando
ls (mostrar directorio).

Entrada y Salida

UNIX tiene un extenso manejo de entrada y salida, es una de las caractersticas


principales que nos permite combinar pequeas herramientas para lograr resultados
ms complejos.

La mayora de los comandos UNIX que nosotros utilizamos tienen una entrada
estndar, una salida estndar y una salida para errores estndar. Las denominamos
stdin, stdout y stderr respectivamente.

La entrada estndard por omisin es el teclado, mientras que la salida estndard y la


salida de errores son, por omisin, la pantalla.

Un comando genrico, lee datos de la entrada estndar, los procesa de alguna manera,
y luego emite el resultado por la salida estndar. En el caso de que durante el proceso
hubiera algn error, emitir una aviso de ese error por la salida de errores.

El Shell se encarga de relacionar estos tres, lo cual no impide que un determinado


programa maneje su entrada y su salida de una manera diferente.

El caracter > nos permite direccionar la salida estndar de un comando a un archivo.


De manera que ps ax > procesos guardar en el archivo procesos la salida del ps.

El caracter < nos permite direccionar la entrada estndar de un comando desde un


archivo. Por ejemplo, el comando mail nos sirve para mandar mensajes a otros
usuarios, si escribimos mail user < archivo mandar un mensaje con el contenido
del archivo al usuario user.
Usar un >> en lugar de un > nos permite direccionar la salida estndar a un archivo,
sin sobreescribirlo, sino que le agrega los datos que nosotros queramos al final. Si
ahora hacemos ps ax >> procesos tendremos el listado de procesos dos veces en un
mismo archivo.

2
Utilizar 2> nos permite redirigir la salida de errores a un archivo. Por ejemplo, si
ejecutamos ls archivo-feo 2> test, el error del ls, indicndonos que el archivo-
feo no existe se almacenar en test.

Para relacionar la salida estndard de un comando, con la entrada estndard de otro


comando, utilizamos el caracter |. Por ejemplo, podemos relacionar la salida de ls
con la entrada de wc. Haciendo ls | wc, la salida de este comando ser la cantidad de
lneas, palabras y caracteres que produjo ls.

Este comando recibe el nombre de pipe, que en ingls significa caera o tubera. Es
decir que es un comando que entuba la salida de un comando con la entrada de otro.

Es interesante observar lo que sucede cuando hacemos: ls > nuevo-archivo, esto


es, el archivo nuevo aparece dentro del listado que hace ls. Esto se debe a que el shell,
al hacer la relacin entre el archivo y el comando, crea el archivo, y luego llama al ls.

Adems es necesario tener en cuenta que un comando no puede utilizar como entrada
y salida un mismo archivo. Por ejemplo, al ejecutar cat archivo > archivo, el
intrprete de comandos nos indicar que esto no es posible.

3.7. Sustitucin de ordenes y alias.

Se puede sustituir la salida de una orden en la lnea de orden, de la misma forma que
se sustituyen las variables. Esto se logra con las comillas invertidas, `...`, colocando
entre ellas a la orden cuya salida se quiere sustituir en la lnea de orden.

Por ejemplo, si el archivo names contiene los nombres de camino de tres archivos de
texto:

$ cat names
/home/lgm/escritos/manual.txt
/sites/lgm/prc/files
/tmp/correo_abril

La orden siguiente editara cada uno de estos archivos:

$ vi `cat names`

Esta orden equivale a:

$ vi
/home/lgm/escritos/manual.txt
/sites/lgm/prc/files
/tmp/correo_abril
3.8. Expresiones regulares y otros filtros.

Una expresin regular es una plantilla formada por unos metacaracteres con
significado propio que se utiliza para especificar patrones regulares sobre cadenas de
texto. Como esta definicin no aclara mucho los conceptos vamos a intentar aclarar
ms las cosas con algunos ejemplos prcticos. Un ejemplo de algo parecido a un
expresin regular seran las plantillas para nombres de ficheros usando * y ?; en este
caso, *.txt expresara todos los ficheros cuyo nombre termina en .txt, pero una
expresin regular va mucho ms alla. Una expresin regular se puede construir, para
concordar con, por ejemplo, una direccin de correo electrnico, un nmero, una
fecha, una url, una etiqueta HTML, etc., es decir, cualquier cadena que cumpla unas
determinadas caractersticas de regularidad.

Existen distintas formas de aplicar expresiones regulares y puede que no todos los
programas las admitan en su totalidad. Ms adelante, en los ejemplos veremos ciertos
programas para ver qu podemos aplicar en cada caso y por qu se producen errores
de interpretacin. Podemos especificar la sintaxis, POSIX, tradicional o Unicode. Nos
vamos a centrar en la sintaxis POSIX, aunque tambin veremos a la vez algo de la
sintaxis tradicional. Aqu vamos a ver una visin general y completa de las
expresiones regulares.

Como pueden servir las expresiones regulares

Las expresiones regulares nos van a resultar de suma utilidad para realizar
operaciones sobre cadenas de caracteres, tanto de comprobacin como de edicin, con
una potencia imposible de obtener por lo sistemas tradicionales que proporcionan los
editores de texto.

Por ejemplo, si queremos encontrar en una pgina web todos los colores (bgcolor) de
las celdas (<td>)de una tabla tendramos la siguiente expresin:

/<td[^>]*?bgcolor=.?#([0-9a-fA-F]{6})[^>]*>/

Otro ejemplo, muy simple y mejorable, para verificar una direccin simple de correo
electrnico:

[A-z0-9_]+(EN)([A-z0-9]+\.[a-z]{2,4}

Construyendo expresiones regulares: ejemplos

-Sintaxis de fecha del tipo dd/mm/aa

En este ejemplo slo pretendemos comprobar que la sintaxis de la fecha es correcta,


es decir que estbien construida independientemente de que la fecha sea realmente
vlida.

En una primera aproximacin slo comprobaremos que tenemos seis dgitos


separados por "/".

/[0-9]{2}\/[0-9]{2}[0-9]{2}\/[0-9]{2}/
Usamos como separador de la expresin regular el carcter "/". Entonces los
caracteres "/" propios del formato de fecha tienen que ir protegidos mediante la
contrabarra ("\"). El resto de la expresin consiste en indicar que tenemos dos dgitos.

Esta expresin no verificar fechas del tipo 2/3/07, ya que segn la definicin
obligamos a tener dos dgitos por componente. Para mejorarla exigiremos que los
componentes correspondientes al dia y al mes puedan tener uno o dos dgitos:

/[0-9]{1,2}\/[0-9]{1,2}[0-9]{2}\/[0-9]{2}/

No obstante seguiran siendo valores de fecha aceptados 9/99/07. Para afinar un poco
ms la expresin tendramos que exigir que el mes no pudiera ser mayor que 12 y el
da no mayor que 31:

En el caso del mes pondramos

\/([1-9]|1[012])\/

es decir o tenenemos un solo dgito que va del 1 al 9 o tenemos dos, de forma que el
primer es un 1 fijo y el segundo puede ser 0, 1 2.

En el caso del da, y con una razonamiento similar pondramos:

\/([1-9]|[12][0-9]|3[01])\/

es decir el da es un solo dgito del 0 al 9, o dos dgitos donde el primero es 1 2 y el


segundo cualquiera entre el 0 y el 9 y por ltimo un dgito que puede ser 3 y seguido
de un 1 o un 2.

Ahora todo junto quedara como

/\/([1-9]|[12][0-9]|3[01])\/\/([1-9]|1[012])\/[0-9]{2}/

Es importante observar como el carcter "|" permite seleccionar alternativas de


concordancia.

Por ltimo, si quisiramos que tambin fuer vlida una fecha como 01/02/08, la
expresin quedara como:

/\/(0?[1-9]|[12][0-9]|3[01])\/\/(0?[1-9]|1[012])\/[0-9]{2}/

Es decir, aadiendo "0?" estamos diciendo que el "0" puede o no estar presente.

-Direccin de correo electrnico

Vamos a definit una expresin regular para comprobar una direccin de correo
electrnico:

En primer lugar definimos todo lo que hay a la izquierda de la (EN):

Ser una serie de caracteres alfanumricos, un posible carcter de separacin y otra


serie de caracteres alfanumricos opcional. Con esto se verifican valores como:
aaa

aaa-bbb

aaa.bbb

aaa_bbb

aaa_bbb_ccc

Esta primera parte quedara como:

([0-9a-zA-Z]+)([._-]([0-9a-zA-Z]+))*

A continuacin, despus del literal (EN) el nombre del dominio que se construye de
una forma similar al nombre del usuario y al que le aadimos un dominio de nivel
superior que consta de 2 a 4 caracteres.

La parte del dominio sera:

([0-9a-zA-Z]+)([._-]([0-9a-zA-Z]+))*[.]([0-9a-zA-Z]){2,4}

Ahora todo junto, y le aadimos el comienzo y fin de lnea:

"^([0-9a-zA-Z]+)([._-]([0-9a-zA-Z]+))*(EN)([0-9a-zA-Z]+)([._-]([0-9a-
zA-Z]+))*[.]([0-9a-zA-Z]){2,4}$"

Modos de bsqueda

Existen varios mtodos de bsqueda

/i evita la distincin entre maysculas y minsculas.

/s activa modo "lnea nica". En este modo los saltos de lneas verifican el punto.

/m activa modo "multilnea". En este modo los saltos de lneas verifican el $ y el


carcter siguiente el ^.

/g global, hace referencia a todas las apariciones de la expresin regular. Si se omite


slo hacemos referencia a la primera.

Ejemplos

Expresin para comprobar una direccin de correo electrnico:

"^([0-9a-zA-Z]+)([._-]([0-9a-zA-Z]+))*(EN)([0-9a-zA-Z]+)([._-]([0-9a-
zA-Z]+))*[.]([0-9a-zA-Z]){2}([0-9a-zA-Z])?$"

Expresin de un hiperenlace

"<a[ ]{1,}href=[\"']{0,}([a-zA-Z0-9/:~._#]{0,})[\"']{0,}[^>]
{0,}>([^<]{0,})</a>"

3.8. Editores de texto: vi y emacs.


Un editor de textos es una aplicacin que permite crear, modificar o eliminar parte o
todo un conjunto de caracteres de texto hacia/desde un archivo con un nombre
especfico.

Editor vi

Es un EDITOR, no un PROCESADOR DE TEXTOS. Est hecho para escribir y


modificar ficheros de texto sencillos, programas, etc. No permite justificar prrafos,
utilizar distintos tipos de letra, escribir a varias columnas, insertar grficos, etc. No
hay ningn programa de estas caractersticas que se proporcione con UNIX.
Normalmente, es necesario adquirirlos por separado.

El editor vi es el ms utilizado en ordenadores que utilizen el sistema operativo


UNIX. Los usuarios no informticos lo consideran demasidao complicado, sobre todo
acostumbrados a los editores del sistema operativo DOS. Por eso se tiende a
considerarlo muy atrasado, sin embargo es realmente potente. Su dificultad de manejo
se justifica por las caractersticas de los terminales que haba cuando fue diseado y
porque un objetivo primordial de su diseador fue que pudiera ser utilizado en casi
cualquier tipo de terminal por lo que no requiere el uso de teclas especiales, como las
de movimiento del cursor o las de funcin (aunque en la mayora de los terminales,
las teclas de flechas s se pueden utilizar, si se desea). Claro, esto es a costa de su
sencillez de manejo. Es ms sencillo para un usuario pulsar, por ejemplo, la tecla F10
para grabar el fichero que :w.

Comandos e introduccin de texto

Por tanto, queda claro que no se pueden usar las teclas de funcin. En el vi a muchas
funciones (como grabar fichero, borrar lneas, etc) se accede de dos formas posibles:

Usando la tecla Ctrl

Pulsar esa tecla (tambin llamada Control) junto con otra tecla alfabtica. Por
ejemplo, si dejo pulsada la tecla Ctrl mientras pulso f, avanzar una pgina en mi
documento. Hay que hacer notar que esto es posible porque todos los terminales
generan el mismo cdigo numrico al pulsar Ctrl junto con una letra, por tanto no
hay problema de incompatibilidad entre fabricantes,

Usando comandos compuestos de teclas normales

Estos ultimos requieren una explicacin. A base de utilizar slo comandos


compuestos por la tecla Ctrl y otra letra alfabtica, tengo slo 26 posibilidades (a...z)
ya que Ctrl-a genera el mismo cdigo que Ctrl-A (aqu no hay diferencia entre
minsculas y maysculas). Si no puedo usar las teclas de funcin ni otras especiales
(por incompatibilidad entre fabricantes), cmo puedo accder a las muchas funciones
que tiene el editor? Pues mediante teclas normales. Pero si me dicen que el smbolo $
significa ir al final de la lnea, esto no parece lgico, porque si pulso ese carcter,
aparecer en la pantalla tal como lo escribo.

Por eso el vi tiene dos modos de funcionamiento, entre los cuales el usuario debe
alternar continuamente durante una sesin de edicin:
Modo edicin

Todo lo que escribo, aparece en pantalla, como es habitual en todos los editores.

Modo comando
Lo que escribo estando en este modo (al cual se accede pulsando la tecla ESC, llamada
tambin escape), las teclas tienen un significado especial. Por ejemplo, $ mueve el
cursor hasta el final de la lnea, j lo mueve una lnea hacia abajo, :w graba el fichero,
:q es para salir del editor.

Del modo edicin se pasa al modo comando usando la tecla ESC. Del modo comando
se pasa al modo edicin con alguna de las siguientes teclas: i,I,a,A,o,O (y alguna
otra).

Hay que tener presente que al entrar en el editor vi, el modo inicial es el MODO
COMANDO.

Entrada al editor vi

Si estamos en un terminal trabajando con un ordenador central que funcione con el


sistema operativo UNIX (en cualquiera de sus muchas variantes), usaremos el
programa vi para editar un fichero con el siguiente comando:

vi fichero
Tras ejecutar ese comando, se borra la pantalla y, si el fichero ya exista previemente,
aparece su contenido. Si no exista, quedan todas las lneas de la pantalla vacas pero
con una tilde (~) al principio. Con esa tilde representa el vi las lneas que estn vacas.

Si no ocurre de esta forma y la pantalla queda desencajada, el problema puede estar


relacionado con la variable TERM. Vase Manejo de terminales en UNIX para saber
cmo solucionarlo.

Como dijimos antes, nada ms entrar en el vi, estamos en el MODO COMANDO.


Podemos usar aqu cualquiera de los comandos que veremos ms adelante aplicables
en este modo (y que estn resumidos al final de este documento). Si queremos escribir
algo en el fichero, iremos (en el modo comando) al lugar donde deseamos empezar a
escribir y pulsaremos una de las teclas que nos pasan al MODO EDICION. En ese
momento, todo lo que escribamos aparecer en la pantalla.

Una cosa que hay que tener en cuenta en el manejo del vi es que conviene estar el
mximo tiempo posible en el modo COMANDO, pues as las modificaciones no
deseadas en el texto son menores. En cuanto terminemos de escribir, debemos pulsar
ESC para ir al modo comando. Si queremos editar en otra parte del fichero, iremos a
esa parte en este modo y en ah pasaremos de nuevo al modo edicin.

Primeros comandos

Antes que nada, tendremos que empezar a escribir algo en un fichero. Si vamos a
llamar a este con el nombre primero, ejecutamos desde UNIX:

vi primero
Al pulsar la tecla INTRO aparece la pantalla vaca con una tilde al principio de cada
lnea. Estamos en modo comando, por lo que para comenzar a escribir hay que pasar
al modo edicin. La forma ms habitual de hacer esto es con el comando i. Al pulsar
esa letra, no ocurre nada, no vemos ningn cambio en la pantalla, pero el modo a
cambiado al de EDICION.

Comenzamos ahora a escribir y el texto va apareciendo en la pantalla. Si escribimos


ms letras de las que caben en el ancho de la misma (normalmente 80 caracteres),
continuarn por la lnea siguiente.
Si nos equivocamos en una letra, podemos usar la tecla de borrado (normalmente
tiene la inscripcin <- o Backspace) para eliminar la ltima letra escrita. Si seguimos
pulsando la tecla, borraremos las letras anteriores. Pero slo podemos borrar as las
ltimas que hayamos escrito. Si escribimos un texto, luego pasamos al modo
comando para hacer algo, y luego otra vez al modo edicin, la tecla de borrado no me
sirve para borrar lo que escrib antes. Habr que moverse al sitio donde quiero borrar
y usar el comando para ello. Algunos de los comandos que usaremos para estas
operaciones (todos ellos se utilizan en MODO COMANDO) son (atencin a la
diferencia entre maysculas y minsculas):

i Pasar a modo EDICION (ya se ha explicado)


h Desplaza el cursor una posicin a la izquierda
j Idem a la lnea inferior
k Idem a la lnea superior
l Idem una posicin a la derecha
^f Desplaza el cursor una pntalla hacia adelante (unas 24 lneas)
^b Idem hacia atrs
^g
Nos informa del nombre del fichero que estamos editando, del nmero de la
lnea en la que estamos, y del nmero total de lneas del fichero.
G Ir al final del fichero.
1G Ir al principio del fichero.
x Borra el carcter sobre el que est el cursor
dd Borra la lnea sobre la que est el cursor
^ Desplaza el cursor al principio de la lnea actual
$ Idem al final de la lnea
:w! Graba el fichero (y seguimos dentro del vi)
:q! Salir del editor, sin grabarlo previamente
:wq! Salir del editor, grabando previamente el fichero

En la mayora de terminales, se pueden usar las teclas de flechas en lugar de h, j, k, l.


Hay que aclarar dos cosas en esta lista:

En primer lugar, usaremos la nomenclatura ^f para indicar que se mantiene pulsada la


tecla Ctrl mientras pulsamos f.

En segundo lugar, el comando 1G es especial porque lleva un nmero al comienzo.


Cuando ocurre esto, se considera como si dijramos ejecuta el comando G con el
argumento 1. Casi todos los comandos pueden llevar un nmero delante. En el caso
del comando G, el nmero indica a qu lnea del fichero queremos ir. As, 1G significa
ir a la lnea 1, 20G es ir a la lnea 20. Una sla G indica ir a la ltima lnea.

En la mayora de los comandos, un nmero precediendo al comando significa ejecuta


n veces este comando. As, si dd significa borrar una lnea, 5dd significa borrar 5
lneas (la actual y las cuatro siguientes).

Los comandos que se ejecutan en modo comando no aparecen por pantalla, a


excepcin de los que empiezan por /,? o :
Otros comandos para pasar al modo edicin

Ya hemos mencionado que para entrar en el modo edicin se usa el comando i (de
insertar). Al pulsarlo, lo que escribamos se aade justo donde est el cursor. A veces,
debemos usar otro comando. Este es el caso de tener que aadir texto al final de una
lnea. Si tenemos una lnea tal como la siguiente:

En un lugar de la Mancha
Si nos desplazamos al final para aadir lo que falta, el cursor no pasar ms all de la
ltima a (nunca se puede mover el cursor despus del ltimo carcter de una lnea). Si
ahora pulsamos i y escribimos un texo, ste se insertar entra la h y la a. Lo que
queremos en este caso no es INSERTAR, sino AADIR. Para ello se usa el comando
a. Al introducirlo, el cursor -que estaba, recordemos, encima de la o- se sita despus
de esta letra, permitindonos escribir ah.

Otro caso que se puede presentar es la nedesidad de escribir texto ANTES de la


primera lnea. Cmo podemos hacerlo?. Si pulsamo i, insertamos texto en la lnea
actual. Se podra hacer lo siguiente:

Situar el cursor al principio de la primera lnea


Pulsar i para insertar
Pulsar INTRO para insertar una lnea en blanco
Pulsar ESC para pasar al modo comando
Pulsar k (o flecha arriba) para subir a la lnea anterior
Pulsar i para insertar

Ya hemos abierto una lnea y podemos escribir. Pulsando INTRO podemos abrir ms
lneas si queremos. Para evitar esa secuencia tan tediosa, hay otro comando significa
abrir una lnea antes de la que est el cursor y pasar en ella al modo edicin. Este
comando es O (o mayscula).

Un comando relacionado es o (o minscula) que significa abrir una lnea despus de


la actual y pasar en ella al modo edicin. La usaremos por ejemplo para aadi lneas
al final del fichero.

Resumimos los comandos para pasar al modo edicin (hay alguno ms pero estos son
los ms habituales):

i Insertar texo delante de donde est el cursor


a Aadir texto a continuacin de donde est el cursor
O Abrir una lnea antes de la actual y editar en ella
o Abrir una lnea despus de la actual y editar en ella

Practiquemos con un ejemplo. Tenemos el texto:

Con diez caones por banda,


No cruza el mar sino vuela,
un velero bergantn.
Evidentemente, falta el segundo verso. Si queremos escribirlo ahora, vamos a indicar
tres formas de hacerlo (suponemos que estamos en modo comando):
Forma 1

1. Ir a la primera lnea.
2. Ir al final de ella (con $ o pulsando l hasta llegar al final)
3. Pulsar a para aadir
4. Pulsar INTRO. Esto inserta un salto de lnea, o sea, una lnea nueva y deja el
cursor al principio de la misma. Ya podemos escribir

Forma 2

1. Ir a la primera lnea
2. Pulsa o. Esto inserta una lnea debajo y pone el cursor en ella. Ya podemos
escribir.

Forma 3

1. Ir a la segunda lnea
2. Pulsar O. Esto inserta una lnea encima de la actual y pone el cursor en ella.
Ya podemos escribir.

Borrar y copiar

En cualquier editor, las operaciones de borrado y copiado de texto son muy


importantes, pues se usan muy a menudo. Ya mencionamos en el apartado 3 algunos
comandos para borrar. Damos aqu una lista ms amplia:

x Borra el carcter sobre el que est el cursor.


dd Borra la lnea en la que est el cursor.
d$ Borra desde el cursor hasta el final de la lnea.
J
Une, al final de la lnea actual, la siguiente (borra la separacin entre
ambas).
:1,10d Borra las lneas 1 a la 10.
:10,$d Borra las lneas desde la nmero 10 hasta la ltima.
:,$d Borra las lneas comprendidas entre la actual y la ltima.

Para copiar texto de un sitio del fichero a otro, primero hay que marcar el texto que
vamos a copiar, luego ir al sitio donde queremos copiarlo, y dar la orden de copia.
Esta orden de copia es el comando p. Hay varia formas de marcar el texto que
queremos copiar. Por ejemplo:

Y Marca la lnea actual.


3Y Marca tres lneas (la actual y las dos siguientes).
:1,y Marca desde la primera lnea hasta la actual.
:,$y Marca desde la lnea actual hasta el final.

Por ejemplo, si tenemos el texto:

Con diez caones por banda,


viento an popa a toda vela.
No cruza el mar sino vuela,
un velero bergantin.
Queremos copiar las dos primeras lneas al final del texto. Para ello, situamos el
cursor en la primera lnea (se supone que estamos en modo comando; para
asegurarnos, no est de ms pulsa la tecla ESC) y usamos el comando 2Y (marcar dos
lneas). A continuacin, movemos el cursor hasta la ltima lnea y usamos el comando
p (este comando aade las lneas marcadas en la lnea SIGUIENTE a la que est el
cursor).
Si queremos copiar de la lnea actual slo lo que hay desde el cursor hasta el final,
marcamos eso con y$. Para marcar desde el principio de la lnea hasta el cursor: y^.
Luego vamos al sitio donde queramos pegarlo y usamos el comando p.

Rangos de lneas

En algunos comandos, como vimos por ejemplo en el caso de dd, podemos indicar el
rango de lneas en que hay que aplicarlo. Por ejemplo, 10dd significa borrar 10 lneas
(la actual y las 9 siguientes). Y si queremos borrar todas las lneas desde donde
estamos hasta el final del fichero? No es necesario contar cuntas son, pues podemos
hacer :,$d

El comando :d tambin sive para borrar lneas. A la mayora de los comandos que
comienzan por :,/,? podemos aplicar un rango de lneas a las que queremos aplicar el
comando. Ese rango puede ser o un nmero de lnea o un par de ellas separadas por
coma. Si dejamos una sin nmero, indica la lnea actual. Un signo $ indica la ltima
lnea. Ejemplos:

:1,d Borra desde la primera lnea hasta la actual


:1,$d Borra todo el fichero
:,$d Borra desde la lnea actual al final
:1,10d Borra las 10 primeras lneas

Puede haber un problema si queremos borrar un tango de lneas pero no sabemos


cules son sus nmeros. Para ello el vi tiene un comando que hace que todas las lneas
aparezcan en pantalla numeradas:

:set number
vi tiene unos cuantos comandos para activar y desactivar determinadas caractersticas.
Una lista exhaustiva se da al final de este manual. Si se desea usar siempre el vi con
las lneas numeradas, en vez de escribi siempre el comando, se puede aadir esa lnea
al fichero .exrc de nuestro directorio actual.

Hemos visto cmo referirnos a la primera lnea, a la ltima, la actual y a cualquier


lnea por su nmero. Tambin podemos indicar lneas por su posicin relativa a la
actual:

:,+5d Borrar la lnea actual y las cinco siguientes.


:-2,+2y Marca desde dos lneas antes de la actual hasta dos despus

Bsqueda y sustitucin

El editor vi es bastante potente en lo que se refiere a bsqueda y sustitucin de texto,


pues no se limita a palabras exactas, sino que puede tratar con patrones. Podemos
pedirle, por ejemplo, que busque las lneas que comienzan por un nmero, o las
palabras que tienen 7 caracteres, etc. La sintaxis de estos patrones es algo complicada,
pero no est de ms aprenderla si se va a trabajar frecuentemente con UNIX, pues
muchos otros programas utilizan una sintaxis muy semejante. Los comandos para
buscar son:

/ Buscar hacia adelante (desde el cursor hasta el final del fichero)


? Buscar hacia atrs (desde el cursor al principio del fichero)
Al usar cualquiera de estos comandos, aparece en la ltima lnea de la pantalla dicho
comando (sea / o ?) y el cursor a continuacin. Ah debemos introducir lo que
queremos buscar, e INTRO a continuacin. Si el texto o patrn es encontrado, el
cursor se posicionar en l. Pulsando sucesivamente / o ? seguidos de INTRO (es
decir, sin introducir texto de bsqueda), se localizar la siguiente (en caso de /) o
anterior (en caso de ?) ocurrencia del texto buscado.

La explicacin de los patrones de bsqueda est ms all de este texto (est explicada
en la pgina de manual UNIX del comando ed; se puede ver con la orden orden man
ed), pero debemos explicar algunas cosas. Por ejemplo, el patrn

^[0-9]:
buscar las lneas que comienzen (esto se indica con ^) por un dgito (indicado por
[0-9]) y luego el carcter :. otro ejemplo:
^.. ...$
Busca las lneas compuestas unicamente por dos caracteres, un espacio y 3 caracteres
ms. El carcter ^ indica el comienzo de lnea; el $ indica el final de lnea y el punto
un carcter cualquiera. As estamos indicando que entre el principio y el final slo
debe haber dos caracteres cualesquiera, un espacio y otros tres caracteres.

El problema que se plantea es cuando queremos buscar el texto

100$
Si lo buscamos con /100$, el signo $ se interpretar como fin de lnea. Nosotros no
queremos que sea as, sino buscar en el texto ese carcter. El mismo problema
tenemos con los signos que tienen un sentido especial (como ^,[,],.). Estos caracteres
deben ir con el signo [bsol ] delante para que se tomen literalmente, sin su sentido
especial. As para buscar 100$ sera:
/100\$
Esto se aplica a los siguientes caracteres:
^ $ . [ ] / \
Para SUSTITUIR texto, se usa el comando:
:s/texto a buscar/texto sustituto/
Al introducir :s, el cursor va a la ltima lneade la pantalla y ah escribimos el resto
del comando. Eso sustituir en la lnea actual el texto a buscar por texto sustituido. Si
queremos hacer esta operacin en todo el fichero, haremos:
:1,$s/texto a buscar/texto sustituto/
Vemos que entre el carcter :y la letra s podemos indicar el rango de lneas.

El comando s sustituye, como hemos dicho, un texto por otro, pero slo la primera
vez que aparezca el texto a buscar en cada lnea. Si queremos sustituir todas las veces
que aparezca, aadimos al final g:

:1,$s/texto a buscar/texto sustituto/g

Como ya hemos dicho, en la pgina del manual del comando ed se explica todo esto
en ms profundidad.

Otras posibilidades

Algunas de las muchas posibilidades adicionales que permite el vi, pero que no vamos
a detallar son:

Registros
Los registros son como zonas de memoria donde podemos guardar trozos de texto
para pegarlos en otros lugares. Ya vimos cmo hacer esto con los comandos Y, y y p,
pero slo con un trozo a la vez.

Marcar lugares del texto

Podemos marcar puntos determinados del texto y movernos de unos a otros de forma
sencilla.

Macros

Si hay secuencias de teclas que repetimos muy a menudo, podemos definir un


comando especial que realice todos ellos con slo dar ese comando.

Por ltimo, en la siguiente table mencionamos algunos comandos tiles (atencin a la


maysculas y minsculas, ya que al no ser comandos que se usan con la tecla Ctrl
esto es importante):
. Repite el ltimo comando.
u Deshacer el ltimo cambio (undo).
J Pega la lnea siguiente al final de la actual.
Si usamos este comando cuando el cursor est situado sobre alguno de
%
estos caracteres: (,{,[ o sus correspondiente cerrados, el cursor se va
hacia el lugar del documento donde est el que lo cierra (o abre). Esto
es muy interesante cuando se estn editando programas.
Abandonar el documento actual y cargar el otro fichero. Si no
:efichero hemos grabado el actual, no nos lo permitir a menos que usemos el
comando :e! fichero.
Carga el contenido del fichero en el lugar del documento actual
:rfichero
donde est el cursor.
:w Grabar el documento con el nombre fichero (que puede no coincidir
fichero con el nombre de que estamos editando).
:,$w
fichero Grabar desde la lnea actual hasta el final en el fichero.
Si hemos ejecutado el vi con varios nombres, por ejemplo: vi *.c,
:n
con este comando abandonamos el actual y pasamos a editar el
siguiente. Si no hemos grabado el actual no nos lo permitir a menos
que usemos :n!.
^l
Si aparecen mensajes por la pantalla o sta se queda desajustada, con
este comando la refrescamos.
Cambiar hasta el final de la lnea. Tras escribir este comando, todo lo
c$ que escribamos a continuacin hasta que pulsemos ESC sustituir a lo
que haba desde el cursor hasta el final de la lnea.
c^
Lo mismo pero sustituir a lo que hay desde el principio de la lnea
hasta el cursor.
cw Lo mismo pero sustituir a la palabra sobre la que est el cursor.
:!sh
Ejecutar una subshell donde podemos escribir comandos del sistema
operativo. Cuando la abandonemos (con exit) volvemos al vi.

Para terminar, admitir que a pesar de su potencia es difcil dominar todo lo que hemos
visto, y difcil es explicarlo, pero creo que se entiende facilmente la lgica de sus
comandos, y a veces aunque no se sepa qu comando existe para hacer algo, se puede
deducir. Por ejemplo, cmo marco la palabra actual y las tres siguientes para
pegarlas en otro lado? No es difcil pensar que ser el mismo comando para marcar
una palabra, yw repetida tres veces, por tanto: 3yw.

Editor emacs
El editor emacs es un editor muy popular. Existe para casi todas las plataformas
o arquitecturas de mquinas. Estas son algunas de las ventajas del emacs:

1. A diferencia con el vi, el editor emacs opera en un slo modo: los caracteres son
insertados en donde se ubica el cursor. los comandos van acompaados de Ctrl-X o
Esc. El editor emacs puede manejar mltiples ventanas, dividiendo lapantalla en
varias secciones, entre las cuales se puede realizar "corta-pega".
Se puede definir funciones o comandos especiales dentro del emacs.
2. Algunas versiones de emacs contienen mdulos auxiliares que ayudan en la edicin
de programas en LISP, C, Pascal, Fortran y otros lenguajes.

Convencin de comandos de emacs.

Empezamos por los comandos ms bsicos. La mayor parte de los comandos son
de la forma: ESC-caracter, es decir, la secuencia de ESCAPE y despus el caracter
indicado. Por ejemplo ^XS significa Ctrl-X seguido del caracter S.

Entrar y salir de emacs

Para iniciar la sesin de emacs, escriba:

emacs archivo

dnde archivo es el nombre del archivo que queremos crear (o modificar,si ya existe).

Para guardar el archivo y salir de emacs, se sigue la secuencia:

^X^S

(guarda los cambios)

^X^C

(Salir del editor)

En caso de no querer guardar los cambios y salir, solo se escribe el segundo


comando.

Situaciones de pnico en emacs.

Algunas veces, queremos cancelar algun comando por alguna razn para ello:

^G

(abortar comando)

Cancelar toda ejecucin de comandos.


Movimiento del cursor en emacs.

Presentamos una tabla de comandos para mover la posicin del cursor.

Esc <

Inicio del archivo.

Esc >

Final del archivo.

^N

siguiente rengln.

^P

Rengln anterior.

^A

Inicio de rengln.

^E

final del rengln.

^F

Caracter hacia adelante.

^B

Caracter hacia atras.

ESC f

Palabra hacia adelante.

^V

Siguiente pgina.

Ecs v

Pgina anterior.

^S

Buscar hacia adelante.

^R

Buscar hacia atras.

ESC x
goto-line Ir a rengln.

Los comandos de bsqueda, presentan el Prompt:

I-search:

y esperan a que el usuario escriba la informacin.

Marcar regiones de emacs.

El editor emacs, puede almacenar informacin o una marca de la posicin


donde se encuentra el cursor. Esto es util para delimitar regiones de texto
que se requieren copiar, mover o borrar. La regin comprende desde la marca
hasta la posicin final del cursor. Para poner la marca, se coloca el cursor
en la posicin deseada y se escribe ^BARRA ESPACIADORA despus se mueve el
cursor hasta donde ser el lmite de la regin.

Borrando en emacs.

Hay cuatro comandos bsicos para borrar palabras o caracteres.

^D

Borra el caracter sobre el cursor

DELETE

Borra el caracter anterior al cursor

ESC d

Borra la siguiente palabra

ESC DELETE

Borra la palabra anterior

Cortando y pegando

El editor emacs posee una memoria temporal, donde guarda momentneamente


la ltima informacin copiada con ESC w borrada con algunos de los comandos
de borrar lnea ^K o regin ^W. Estos son los comandos:

^K

Borra resto de la lnea frente al cursor.

^W

Borra regin desde la marca hasta la posicin del cursor.

ESC W

Copia la regin desde la marca hasta la posicin del cursor.


^Y

Regresa la informacin borrada o copiada en la posicin del cursor.

Reemplazos globales en emacs.

Hay una forma de reemplazar palabras usando el modo: ESC X query-replace


a lo que emacs responder con la serie de prompts: Query-replace: palabra vieja
with:nueva palabra donde el usuario proporciona la palabra vieja y la palabra
nueva por la que ser substituda. Despus el editor espera a que el usuario
enve algunos de los siguiente comandos:

BARRA ESPACIADORA

Reemplaza y sigue a la siguiente posicin.

n
No hace ningun reemplazo y sigue a la siguiente posicin.
.

Realiza el ultimo reemplazo y termina los reemplazos.

No realiza el ultimo cambio y termina los reemplazos.

Realiza todos los reemplazos, sin preguntar.

Manejo de archivos desde emacs.


^X ^R

Leer archivo.

^X ^S

Escribir o salvar archivo.

^X ^W

Escribe archivo con otro nombre.

^X ^I

Inserta archivo.

^X ^W

Visita archivo.
3.9. Programacin de shell scripts.

Si ya has practicado un poco con el shell bash, te habrs dado cuenta de que se
pueden hacer muchas cosas interesantes con l. Aunque hay veces, que para conseguir
determinado resultado necesitas introducir, por ejemplo, 3 o 4 comandos; o tenemos
que evaluar una condicin manualmente (por ejemplo, con ls comprobamos
manualmente si un archivo existe). Los scripts de shell nos dan la
posibilidad de automatizar series de comandos y evaluciones de condiciones.

Un script es como se llama a un archivo (o conjunto de archivos) que contiene


instrucciones (en nuestro caso comandos de bash), y que necesita de un programa
ayudante para ejecutarse (en nuestro caso la propia terminal bash ser el programa
ayudante). Un script tiene cierta similitud con un programa, pero existen diferencias.
Generalmente, los programas estn en lenguaje de mquina (la
mquina lo entiende directamente), mientras que los scripts son archivos que
contienen en formato texto los comandos o instrucciones que la aplicacin ayudante
ejecutar.

Nuestro primer script en bash


Ahora que has practicado con bash y con el editor vim, ya ests
preparado para crear tu primer script bash. Si recordamos, un script
era un archivo de texto plano con comandos; as que haz vi
miscript.sh y pon en l lo siguiente (lo explicaremos detenidamente
a continuacin):
#!/bin/bash
echo "Hola"
echo "Soy un script de shell."

Como ya sabemos, la extensin en los archivos en Linux no tiene


signicado til. Es por convenio general, por lo que a los scripts de
shell se les llama con la extensin ".sh" (de SHell). De este modo
identicaremos fcilmente nuestros scripts entre el resto de
archivos de un directorio.
Observemos la primera lnea: #!/bin/bash. Esta lnea es un tanto
especial, y es caracterstica de todos los scripts en Linux, no
solamente los de bash. Tras #! indicamos la ruta a la aplicacin
ayudante, la que interpretar los comandos del archivo. En nuestro
caso es bash, as que ponemos ah /bin/bash, que es la ruta hacia
la aplicacin bash. Como ms adelante tendrs tiempo de
descubrir, hay otros tipos de scripts (Perl, Python, PHP...) para los
cuales deberemos indicar la aplicacin ayudante correspondiente.
Como ves, no importa que pongamos lneas en blanco, pues sern
ignoradas. Podemos ponerlas despus de cada bloque de comandos
que tengan cierta relacin, para dar claridad y legibilidad al
conjunto de comandos del script.
Las dos ltimas lneas son dos comandos, de los que luego sern
ejecutados por bash. Como sabemos, el comando echo saca por
stdout (por defecto por pantalla) lo que le pasemos como
argumento, en este caso dos frases. Podemos aadir cualquier
comando normal de los que hemos visto, que ser ejecutado
normalmente. Despus escribiremos algunos scripts ms complejos,
para que te hagas una idea de para cunto pueden servirnos.

Guardemos el script y salgamos de vi. Ahora lo ejecutaremos. La


primera forma de hacerlo es como sigue:

$ bash miscript.sh
Hola
Soy un script de shell

Variables
Recordamos que una variable es un nombre al que le hacemos
corresponder un valor. Este valor puede ser un valor numrico o
bien una cadena de texto indistintamente en los scripts de shell. Los
nombres de las variables conviene que comiencen por una letra,
despus veremos por qu.
En el siguiente ejemplo aprenderemos a usar las variables en
nuestros scripts
#!/bin/bash
# Asignacin de una variable:
#
5
variable=5
otravariable=10
10 tercera=2
resultado1=$[5*10/2]
resultado2=$[$variable*$otravariable/$tercera]
15 echo " "
echo "El resultado de 5*10/2 es $resultado1 ,"
echo "que efectivamente coincide con $resultado2 "
echo " "
20 frase="Introduzca lo que usted quiera:"
echo $frase
read Entrada del usuario
echo
echo Usted intruso : $Entrada del usuario
25
exit 0

Repasemos el ejemplo despacio. En primer lugar tenemos la lnea


que ser siempre la primera en nuestros scripts, y que ya
conocemos, la que dice cul es el programa que ejecutar las
instrucciones del script.
Siguiendo, tenemos la asignacin de algunas variables, esto es,
estamos dando valores a algunas variables que luego usaremos.
Observar que entre el nomvre y el valor NO HAY ESPACIOS, es
variable=valor. Ahora cada variable tiene el valor que le hemos
asignado. Podramos cambiarlo de la misma forma, pero poniendo
otro valor, que sobrescribira a cualquiera que tuviese antes la
variable. As, tercera=7, hara que el valor de la variable tercera
fuese 7.
Despus nos encontramos con el comando $[ ], que nos permite hacer operaciones
aritmticas, obteniendo el resultado. Despus veremos ms detenidamente el hecho de
que un comando DEVUELVA un valor. De momento trata de comprender este
ejemplo. En la primera de esas lneas, la variable resultado1 se queda con el valor
resultante de efectuar la operacin entre los nmeros. En la lnea siguiente, vemos que
para REFERIRNOS al valor que tiene una variable, colocamos delante de su nombre
el signo $. Dondequiera que pongamos ese signo delante del nombre de una variable,
todo ello ser reemplazado por el valor de la variable. As, la expresin que se evala
al nal es la misma que la de la lnea anterior, pues todas las variables quedan
sustituidas por sus valores reales antes de
que se haga la operacin.
En las lneas siguientes usamos el ya conocido comando echo. Es muy conveniente
que en nuestros scripts pongamos entre comillas lo que echo debe sacar por pantalla.
As, en la primera lnea tenemos una forma sencilla posible para generar una lnea en
blanco en la salida, como podremos apreciar cuando despus ejecutemos el script.
Como ves, dentro de las comillas del argumento de
echo, podemos hacer que aparezca el valor de una variable procediendo como ya
hemos aprendido.
El comando echo ser nuestro mejor aliado para hacer que nuestro script saque
informacin por la pantalla.
A la variable frase le vamos a asignar una cadena de texto. Date cuenta de que esta
vez tampoco hay espacios en medio de la asignacin y que EL TEXTO VA
SIEMPRE ENTRE COMILLAS, pudiendo ser simples o dobles. La estructura es
entonces variable="texto". En la lnea siguiente, con el comando echo de nuevo,
podemos sacar por pantalla el texto que habamos guardado en la variable.
Atencin a la lnea siguiente. El comando read va a ser nuestra va de comunicacin
con el usuario en nuestros scripts. Funciona de este modo: primero, ponemos read, el
comando que hace todo el trabajo, y a continuacin, ponemos el nombre de la
variable donde queremos que la entrada del usuario quede almacenada (en nuestro
caso, la variable es entrada_del_usuario). Cuando a la hora de ejecutarse, el
script llegue a esa lnea, esperar a que el usuario escriba algo y
presione la tecla INTRO. En ese momento, lo que el usuario escribi
antes de de presionar INTRO quedar guardado en la variable, y
luego podremos hacer uso de estos datos que el usuario introdujo,
como hacemos en la lnea siguiente, sacarlos de nuevo por pantalla.
Por ltimo tenemos el comando exit. Este comando al nal del script no es
especialmente til, pero si pusisemos cualquier cosa debajo de l ya no sera
ejecutada. Lo usaremos despus cuando queramos que "si se da tal condicin,
entonces que el programa (script) termine".
4. Configuracin de X-window (KDe y Gnome)
Qu es el Entorno de Escritorio K (KDE)?

El proyecto

El Proyecto KDE es un proyecto de software libre y cdigo abierto dedicado al


desarrollo de KDE - un entorno grfico de escritorio para sistemas operativos
GNU/Linux y Unix. El desarrollo es llevado a cabo por varias centenas de ingenieros
de software y programadores de todo el mundo comprometidos con el desarrollo de
software libre. Vase tambin Qu es el Proyecto KDE? (en Ingls).

El software

"K Desktop Environment" es un entorno fcil de utilizar, construido sobre una


infraestructura slida y bien pensada que ofrece interoperabilidad entre aplicaciones,
funciones de arrastrar y soltar, etc. Aparte de los componentes esenciales del entorno,
KDE tambin proporciona soluciones listas para ser usadas en una multitud de tareas:
gestin de ficheros, navegacin en Internet, aplicaciones ofimticas, gestin de correo
electrnico, etc. Todas las necesidades estn cubiertas por el proyecto KDE.

El entorno KDE est disponible en ms de 70 idiomas y se utiliza por un nmero


inmenso de usuarios. Para los que les interese, hay un gran nmero de pantallazos
publicados. Para ms informacin acerca de KDE, lea el artculo Qu es KDE? (en
ingls) publicado en KDE.org.

La comunidad

Existen muchas comunidades de usuarios de KDE. En KDEnews.org (en ingls)


encontrar las noticias ms recientes acerca de KDE en general. El pblico objetivo
de KDEdevelopers.org es la comunidad de desarrollo KDE, mientras que el Foro
KDE es para el pblico general. Ms enlaces pueden ser encontrados en la Pgina de
Familia KDE.

2. Instalar KDE

Qu necesita?

Ante todo, si est interesado en instalar KDE (o el soporte para KDE), debe
asegurarse que su variable USE contenga las palabras claves kde y qt. Qt es el motor
de la biblioteca grfica de widgets de KDE.

Tambin debera agregar ahora hal a su variable USE si quiere aadir soporte para el
montaje automtico de dispositivos tal como se explica ms abajo en Configurar KDE
para montar dispositivos.

Si no quiere usar aRts para lo relacionado a multimedia, desactive el parmetro arts en


su variable USE (est activo por omisin).

Instalar KDE como paquetes monolticos

El proyecto KDE libera nueva versiones de su entorno de escritorio como un conjunto


de 16 grandes paquetes, conteniendo cada uno muchas aplicaciones (por tanto se le
denominan "monolticos"), as que necesita decidir cules de esos paquetes quiere
instalar.
Si quiere saber cmo se vera tener instalados todos esos paquetes, avergelo Ud.
mismo:

Listado de Cdigo 2.1: Listar de todos los paquetes que KDE instalara
# emerge --pretend kde | less

Si no est interesado en instalar todos esos paquetes, puede instalarlos


individualmente con emerge. Lo ms seguro es que necesite el paquete kdebase ya
que agrupa los paquetes de base y las dependencias requeridas. La siguiente tabla
muestra el listado de algunos paquetes disponibles para ser instalados con emerge.

Paquete Descripcin
Programas relacionados con Accesibilidad, gestionados por el
kdeaccessibility
Proyecto de Accesibilidad de KDE
Herramientas de Administracin KDE, por ejemplo, KCron
kdeadmin (Planificacin de tareas), KUser (Gestin de Usuarios) y KDat
(Gestin de Copias de Seguridad)
Diferentes utilidades relacionadas con el arte, por ejemplo:
kdeartwork protectores de pantallas, temas de escritorio. Vase tambin
www.kde-artists.org para ms informacin.
Paquetes de aplicaciones educativas KDE diseadas para nios
kdeedu y jvenes de 3 hasta 18 aos. Vase tambin el Proyecto KDE
Edu.
Incluye algunos juegos desarrollados para KDE. Puede
kdegames encontrar ms informacin en la siguiente pgina de Centro de
Juegos KDE.
Herramientas grficas para KDE, incluyendo KSnapshot (para
sacar capturas de pantallas), KolourPaint (editor grfico
kdegraphics
sencillo), Kpdf (visualizador de ficheros PDF), KIconEdit
(editor de iconos) y KPovModeler (un modelador 3D).
Aplicaciones multimedia que proporcionan soporte para
reproduccin de CDs, MP3s, DVDs y otras aplicaciones de
kdemultimedia
sonido y video. Para ms informacin vase la web del Proyecto
KDE Multimedia.
Aplicaciones relacionadas con la conectividad y redes como por
ejemplo Kopete (Mensajera Instantnea Multi-Protocolo), kppp
kdenetwork (Marcado) y KSirc (Cliente IRC). Tenga en cuenta que
konqueror (Gestor de Ficheros y Navegador) es parte del
paquete kdebase!
Herramientas de Gestin de Informacin Personal (PIM) que
incluyen aplicaciones como KOrganizer (Agenda),
kdepim KAddressbook (Libreta de direcciones), Kontact (Groupware) y
KMail (Gestor de correo electrnico). Para ms informacin
vase la pgina del Proyecto KDE PIM.
Herramientas de desarrollo de cdigo, que incluyen KBabel
(Herramienta de Traduccin), KBugBuster (Utilidad para
kdesdk
informar de errores en KDE) y Kompare (Interfaz grfica para
ver diferencias entre ficheros).
Algunos juguetes para entretenerse mientras est esperando la
entrega de su pizza. El paquete incluye entre otras aplicaciones
kdetoys los siguientes applets eyesapplet y fifteenapplet, adems estn
disponibles curiosos programitas como amor que no hacen nada
ms aparte de consumir recursos :)
Interfaces grficas de herramientas kcalc (Calculadora), kdessh
kdeutils (Terminal SSH), kfloppy (Tareas relacionadas con diskettes),
etc.
Ficheros de internacionalizacin de KDE. Incluye
kde-i18n documentacin traducida. Vase para ms informacin la pgina
del Proyecto KDE i18n.

Para instalar KDE con el soporte de red y aplicaciones administrativas solo


ejecutamos:

Listado de Cdigo 2.2: Ejemplo de instalacin de componentes individuales de KDE


# emerge kdebase kdenetwork kdeadmin

Por si le interesa, la compilacin de KDE tarda un poco.

Instalar KDE como paquetes separados

Si desea tener an ms control sobre qu partes de KDE instala, tiene la posibilidad


de instalar slo aquellas aplicaciones individuales de KDE que necesite. Para saber
ms acerca de los ebuilds para programas individuales de KDE vea el El COMO de
los Ebuilds separados de KDE.

Saber qu instalar o no es un poco ms difcil con los ebuilds separados. Sin embargo,
Gentoo provee algunos meta-paquetes que instalarn consigo una cierta cantidad de
paquetes KDE para Ud.:

Si quiere una completa instalacin de KDE, instale kde-meta. Este paquete traer
todas las aplicaciones como dependencias.
Si desea una instalacin bsica de KDE, instale kdebase-startkde. Siempre puede
instalar aplicaciones KDE adicionales cuando quiera.

Estas dos posibilidades son los lmites extremos, probablemente est interesado en
una mezcla segura de las dos :) Para facilitar el proceso de decisin, la siguiente tabla
presenta un corta, muy incompleta pero til visin general de algunos de los paquetes
disponibles de KDE.

Estos paquetes no son parte de la instalacin de kdebase-startkde.

Nombre del
Descripcin
ebuild
La aplicacin para administrar y navegar fcilmente canales de
akregator
sindicacin RSS en internet.
El reproductor de media orientado a listas de reproduccin, con
juk
una apariencia similar al iTunes de Apple.
El Editor Avanzado de Textos de KDE, es un editor multi-
kate documento con resaltado de sintaxis, bloques de cdigo
contrables (code folding) y ms.
kcontrol El Centro de Control de KDE.
La aplicacin kicker es el conocido panel para ejecutar/lanzar
aplicaciones en KDE. Contiene el men K y es capaz de correr
kicker
applets fijos (docked) como el localizador, la barra de tareas, el
reloj, etc.
kmail Organice eficientemente sus correos electrnicos con KMail.
Con KNetAttach (tambin conocido como el Asistente de Carpetas
knetattach de Red), puede fcilmente agregar carpetas de red adicionales a su
escritorio KDE.
knode KNode es el poderoso lector de noticias de KDE.
Con Konqueror tiene completo un gestor de ficheros y un
konqueror
navegador web.
konsole Konsole es el emulador de terminal en KDE.
Kontact es el Administrador de Informacin Personal de KDE, el
cual le ayuda a gestionar sus comunicaciones ms fcilmente,
kontact
organizar ms rpido su trabajo y trabajar juntos de forma ms
cercana.
Kopete es la aplicacin de mensajera instantnea (MI) de KDE
kopete
que soporta todos los protocolos de MI conocidos.
korganizer Korganizer es la aplicacin de calendario y planificador para KDE.
Con KPDF puede ver y trabajar con ficheros PDF. Tiene
kpdf caractersticas muy nicas que mejoran con creces la visin de
documentos.
kscd kscd es un reproductor grfico de CD para KDE.
ksnapshot Con ksnapshot puede tomar capturas de pantalla de su escritorio.
La aplicacin kuickshow de KDE es capaz de visualizar y explorar
kuickshow
diversos formatos de imgenes.

Y esto es slo la punta del iceberg. Si quiere saber ms acerca de todas las
aplicaciones de KDE, d una mirada a la categora kde-base. Sus funciones deberan
estar disponibles en la descripcin de los paquetes.

Para previsualizar qu instalara emerge, use emerge -p junto con el paginador less, de
otra manera puede que no sea capaz de ver todos los paquetes.

Listado de Cdigo 2.3: Previsualizar la instalacin de KDE


(Substituya lo siguiente con el(los) paquete(s) de su preferencia(s))
# emerge -p kdebase-startkde kicker | less

Si est feliz con el resultado que se le propone, quite la opcin -p. Este proceso de
construccin tomar algo de tiempo pues KDE es un entorno grande. No se sorprenda
de que su sistema no lo concluya inmediatamente.

Aplicaciones externas a KDE

El nmero de aplicaciones de KDE no est limitado a aquellas que vienen con las
versiones oficiales de KDE, sino que incluyen cientos de otras aplicaciones que usan
el framework y bibliotecas de KDE. Aqu listamos algunas de las ms populares.

Nombre
Descripcin
del ebuild
KOffice en la completa suite ofimtica de KDE, con aplicaciones
para procesamiento de texto (KWord), hojas de clculo (KSpread),
presentaciones (KPresenter), manipulacin de imgenes (Krita),
koffice gestin de base de datos (Kexi) y mucho ms. As como KDE puede
ser instalado mediante los ebuilds kde o kde-meta, KOffice por su
parte se instala como un paquete completo (koffice) o como un
conjunto de paquetes individuales (koffice-meta).
Con amaroK tiene un poderoso reproductor de msica para
amarok
Unix/Linux.
K3B es una completa herramienta para quemar CD/DVD con soporte
k3b
de audio. Quemar CDs nunca fue tan fcil.
kaffeine Kaffeine es un completo reproductor multimedia para KDE.

Primeras impresiones

Ahora echemos un vistazo al resultado de nuestros esfuerzos. Le habrn dicho muchas


veces que nunca debe trabajar como root. Aceptaremos este consejo y probaremos
KDE como un usuario normal. Acceda al sistema con sus credenciales de usuario y
configure la sesin para que arranque KDE al emitir el comando startx. Puede hacerlo
aadiendo exec startkde al fichero ~/.xinitrc (vea tambin Usando startx en la Gua de
configuracin del Servidor X):

Listado de Cdigo 2.4: Configuracin de la sesin local


$ echo "exec startkde" > ~/.xinitrc

Ahora inicie su sesin en el entorno grfico ejecutando startx.

Listado de Cdigo 2.5: Iniciar KDE


$ startx

Al iniciar KPersonalizer le dar la bienvenida al entorno grfico. Felicidades, veamos


ahora cmo podemos configurar KDE ...

3. Configurar KDE

KPersonalizer

KPersonalizer es el programa que le configura KDE. Es un asistente muy til que le


permite rpidamente modificar el comportamiento de KDE para ajustarse mejor a sus
necesidades. Cuando inicie la sesin por primera vez, KPersonalizer arrancar de
forma automtica.

La primera entrada de datos que le solicita KPersonalizer es saber cul es su pas y el


idioma que desea utilizar. Ya que no hemos instalado todava ningn paquete de
internacionalizacin al sistema, el nico idioma disponible es el Ingls. No se
preocupe, pronto lo cambiaremos (si fuera necesario, por supuesto).

La segunda decisin que debe tomar es acerca del Comportamiento del Sistema; esto
incluye el modus operandi de ventanas, configuracin del ratn, etc. Cuando
selecciona un comportamiento especfico su descripcin aparece en la parte inferior
para ayudarle a tomar la decisin sobre el modo de funcionamiento que le gusta ms.
Si no est seguro, no se preocupe, podr cambiar esta configuracin cuando lo desee.

En el siguiente paso KPersonalizer solicita saber la cantidad de efectos grficos que


debe habilitar para su sistema. Cuanto ms efectos tenga habilitados, ms entretenida
ser su sesin KDE, respectivamente su CPU cargar con ello. Sin embargo, le
hacemos notar que en una mquina con CPU de 600 MHz y 128 MB de RAM con
todos los efectos grficios habilitados el sistema proporciona un tiempo de respuesta
razonable.

Finalmente KDE le pregunta sobre el estilo que debe usar. Los estilos definen la
decoracin de ventanas, temas de escritorio, tipos de botones, y etc. Pruebe diferentes
estilos para averiguar cul le agrada ms. Hemos dicho ya que KDE es totalmente
configurable, verdad?

Y ahora, relajase y disfrute - KDE arrancar y le dar la bienvenida a un entorno


grfico de escritorio limpio y funcional.

Instalacin de Paquetes de Idiomas

Si el ingls no es su idioma nativo o est interesado en trabajar con KDE en otro


idioma, contine leyendo. Instalaremos paquetes de internacionalizacin
correspondientes a el(los) idioma(s) de su eleccin.
El paquete de internacionalizacin kde-i18n contiene ficheros de idiomas. Para
instalar el idioma que desea, debe ajustar la variable LINGUAS con el valor del
idioma o idiomas que desea utilizar. Es recomendable definir esta variable en el
fichero /etc/make.conf para asegurarse que su sistema no elimine los packs de idiomas
de su seleccin durante el proceso de actualizacin.

Listado de Cdigo 3.1: Definicin de la variable LINGUAS en /etc/make.conf


# nano -w /etc/make.conf
(Como ejemplo instalaremos el idioma holands (nl)
y el francs (fr))
LINGUAS="nl fr"

Ya puede ejecutar emerge kde-i18n para instalar los packs de idiomas. Una vez
finalizada la instalacin, cuando inicie KDE debe ejecutar el KDE Control Center (K-
menu > Control Center). Esa es la aplicacin que le permite controlar casi cualquier
aspecto de KDE. Este programa contiene ms funcionalidades que el KPersonalizer.

Para cambiar el idioma, debe acceder a las opciones todava en ingls Regional &
Accessibility, Country/Region & Languages y entonces aadir los idiomas que desea.
Para ver su KDE (internacionalizado) y en toda su gloria, debe salir y volver a entrar
en el sistema.

Acceso grfico

Si desea utilizar kdm como gestor de acceso grfico (significa que no necesitar
identificarse en el terminal y ejecutar startx cada vez que desee iniciar una sesin
grfica) debe editar un fichero de configuracin para que el sistema entre en modo
grfico luego de arrancar, tal como se explica a continuacin.

En el fichero /etc/rc.conf, cambie la variable de entorno DISPLAYMANAGER a


kdm.

Listado de Cdigo 3.2: Ajustar el DISPLAYMANAGER en /etc/rc.conf


# nano -w /etc/rc.conf
(Modifique la siguiente variable)
DISPLAYMANAGER="kdm"

Finalice aadiendo xdm a su nivel de ejecucin default:

Listado de Cdigo 3.3: Agregar xdm al nivel de ejecucin por defecto


# rc-update add xdm default

Cuando reinicie la mquina, su sistema utilizar el gestor grfico de acceso KDM.

KDM suministrar una lista de sesiones grficas disponibles para escoger, incluyendo
KDE - por supuesto - y las dems sesiones instaladas en el sistema, la cuales
encuentra KDM al examinar el directorio /usr/share/xsessions/. As que, si usa KDM,
no necesita modificar el fichero ~/.xinitrc.

Configurar KDE para montar dispositivos

KDE le da el poder de montar dispositivos como CDROMs o llaveros USB mediante


un solo click en una interfaz grfica. Para lograr este objetivo, necesita que KDE se
haya compilado con hal en su variable USE y tener adems dbus y hal instalados en
su sistema. Debera tambin agregar dbus y hal a su nivel de ejecucin default y
agregarse como usuario perteneciente al grupo plugdev.

Listado de Cdigo 3.4: Configurar el montaje de dispositivos


# emerge --noreplace dbus hal
# rc-update add dbus default
# rc-update add hald default
Agregando <usuario> al grupo plugdev (Reemplace <usuario> con su
nombre de usuario)
# gpasswd -a <usuario> plugdev

Tambin puede hacer que sus dispositivos se monten automticamente sin interaccin
alguna, tan solo necesita instalar ivman y aadirlo al nivel de ejecucin default.

Listado de Cdigo 3.5: Configurar el montaje automtico


# emerge --noreplace ivman
# rc-update add ivman default

Qu es GNOME?

El proyecto

El proyecto GNOME es un proyecto de software libre dedicado al desarrollo de


GNOME, un entorno de escritorio y plataforma de desarrollo Unix/Linux. La
Fundacin GNOME coordina el desarrollo y dems aspectos del Proyecto GNOME.

El software

GNOME es un entorno de escritorio y plataforma de desarrollo. Este software libre es


el escritorio escogido por muchos lderes de la industria. Es interesante para usuarios
en el mundo de los negocios y para usuarios caseros al igual que desarrolladores.

La comunidad

As como cualquier proyecto grande de software libre, GNOME tiene una extensa
base de usuarios y desarrolladores. La pgina Footnotes contiene noticias del entorno
de escritorio GNOME para usuarios; GnomePlanet es para hackers/colaboradores y
Developer.Gnome.Org es para los desarrolladores de GNOME.

Instalar GNOME

Qu necesita?

Antes de comenzar a instalar GNOME, tal vez quiera modificar sus parmetros USE.
Asegrese que gtk y gnome sean agregados a su /etc/make.conf. Si desea agregar
soporte para hald, el demonio de abstraccin del hardware, agregue hal a sus
parmetros USE. El parmetro USE howl integra la deteccin DNS a GNOME
(similiar a Rendevouz bajo Mac OS X). Si no desea soporte para KDE (el otro
entorno de escritorio importante), quite los parmetros qt y kde.

Listado de Cdigo 2.1: Ejemplo de parmetros USE en /etc/make.conf


USE="-qt -kde gtk gnome hal howl"

Una vez hecho esto, comience la instalacin de GNOME va emerge gnome y


xscreensaver:

Listado de Cdigo 2.2: Instalar GNOME


# emerge gnome xscreensaver

Tambin puede optar por una instalacin mnima de Gnome, usando gnome-light:
Listado de Cdigo 2.3: Instalar un entorno mnimo GNOME
# emerge gnome-light

Esto tomar un rato, as que tal vez quiera comenzar a leer todos aquellos libros
comprados recientemente pero que no lleg a abrir. Listo? Bien, ahora actualice sus
variables de entorno:

Listado de Cdigo 2.4: Actualizar las variables de entorno


# env-update && source /etc/profile

Si puso atencin a la salida del comando emerge anterior, notar que sugiere agregar
gamin para que nautilus y gnome-vfs monitoricen los cambios en los archivos:

Listado de Cdigo 2.5: Instalar gamin, un monitor de cambios en archivos


# emerge gamin
Importante: Si est cambindose desde fam (el viejo y obsoleto monitor de archivos)
a gamin, tendr que eliminar famd de todos los niveles de ejecucin y luego
desinstalarlo:
Listado de Cdigo 2.6: Cambiar a gamin
# rc-update del famd default
# emerge --unmerge fam

Luego limpiaremos los niveles de ejecucin restantes.

Listado de Cdigo 2.7: Agregar hald y mDNSResponder al nivel de ejecucin default


# /etc/init.d/hald start
# rc-update add hald default

# /etc/init.d/mDNSResponder start
# rc-update add mDNSResponder default

Primeras impresiones

Tomemos una mirada a lo que acabamos de construir. Salga del shell de superusuario
e ingrese como un usuario normal. Configuraremos nuestra sesin para ejecutar
GNOME al escribir el comando startx (vea tambin Usar startx en la Gua de
configuracin del servidor X): :

Listado de Cdigo 2.8: Establecer GNOME como entorno de escritorio


predeterminado
$ echo "exec gnome-session" > ~/.xinitrc

Ahora inicie su entorno grfico escribiendo startx:

Listado de Cdigo 2.9: Iniciar GNOME


$ startx

Si todo va bien, ser saludado por GNOME. Felicitaciones. Veamos ahora cmo
configurar GNOME para sus necesidades.

Configurar GNOME

El gestor grfico de ingreso de GNOME


Si desea que el gestor grfico de ingreso de GNOME (GNOME Display Manager, o
GDM) inicie automticamente al arrancar (as puede hacer login grficamente), debe
agregar el guin de inicio xdm al nivel de ejecucin default:

Listado de Cdigo 3.1: Agregar xdm al nivel de ejecucin default


# rc-update add xdm default

Ahora edite el archivo /etc/rc.conf y modifique la variable de entorno


DISPLAYMANAGER.

Listado de Cdigo 3.2: Editar /etc/rc.conf


DISPLAYMANAGER="gdm"

Si reinicia ahora, el gestor grfico de ingreso de GNOME le pedir su nombre de


usuario y su contrasea y cargar GNOME por defecto como entorno de escritorio
(aunque, por supuesto, tendr la opcin de escoger otro distinto, de los disponibles en
/usr/share/xsessions/). De manera que, si usa GDM, no har falta editar el archivo
~/.xinitrc.

Para usar la funcionalidad de hald ejecute gnome-volume-manager y modifique sus


preferencias.
5. Administracin bsica.
5.1. El superusuario root.

La cuenta superusuario, normalmente llamada root, viene preconfigurada para


facilitar la administracin del sistema, y no debera ser utilizada para tareas cotidianas
como enviar o recibir correo, exploracin general del sistema, o programacin.

Esto es as porque el superusuario, a diferencia de las cuentas de usuario, puede


operar sin lmites, y un mal uso de la cuenta de superusuario puede conllevar
desastres espectaculares. Las cuentas de usuario no pueden destruir el sistema por un
error, por ello es generalmente mejor utilizar cuentas de usuario normales cuando sea
posible, a no ser que especialmente necesites privilegios extra.

Deberas comprobar siempre un par o tres de veces los comandos que ejecutas como
superusuario, ya que un espacio de ms o un carcter omitido pueden significar una
prdida de datos irreparable.

As pues, lo primero que deberas hacer despus de leer este captulo es crear una
cuenta sin privilegios de uso general para ti si an no la tienes. Esto aplica tanto si
trabajas en una mquina con varios usuarios como si trabajas en una mquina con un
solo usuario. Ms adelante, en este mismo captulo, explicamos cmo crear cuentas
adicionales, y cmo cambiar de usuario normal a superusuario.

5.2. Arranque y parada del sistema.

Arranque genrico de un sistema

BIOS, firmware o ROM de arranque del sistema:


POST (Power On Self Test).
Inicializacin del hardware necesario para el arranque.
Bsqueda del dispositivo de arranque.
Cargador del Sistema Operativo a memoria.
Ejecucin del cargador.
Cargador del Sistema Operativo:
Localizacin de la imagen del kernel.
Carga y configura la imagen.
Ejecucin del kernel.

Dispositivos de arranque

Disco duro, floppy o CD-ROM.


El primer sector del dispositivo se lleva a memoria y se ejecuta
Este primer sector localiza y ejecuta el resto del cargador
El cargador carga la imagen del kernel, la configura, le pasa
las opciones pertinentes y la ejecuta
Arranque de red:
Configuracin TCP/IP (BOOTP, DHCP o manual)
Descarga de imagen del servidor.

LILO
LInux LOader, es el cargador del kernel ms comn para Linux
Uso casi exclusivo para arranques desde disco duro
Configuracin en /etc/lilo.conf
Cargador en sector de arranque y en /boot/map
Ejemplo de /etc/lilo.conf:
boot=/dev/hda
root=/dev/hda1
image=/boot/vmlinuz
label=Linux
image=/boot/vmlinuz-2.6.10
label=2.6.10

GRUB
GRand Unified Bootloader, es el cargador del Proyecto GNU
Muy verstil y configurable, permite arrancar casi cualquier sistema
operativo
Entiende internamente FAT, ext2, Reiser, JFS. . .
Configuracin en /boot/grub/menu.lst. Ejemplo:
title Debian GNU/Linux
root (hd0,1)
kernel /boot/vmlinuz root=/dev/hda1 ro
title Debian GNU/Linux, kernel 2.6.10
root (hd0,1)
kernel /boot/vmlinuz-2.6.10 root=/dev/hda1 ro

SYSLINUX / ISOLINUX
Orientado a arranques desde floppy o CD
Prcticamente todas las distribuciones de Linux lo utilizan como
cargador durante la instalacin del sistema
Configuracin en /syslinux.cfg (/isolinux.cfg):
DEFAULT Linux
DISPLAY readme.txt
LABEL Linux
KERNEL linux
APPENT ro initrd=image.gz
LABEL dos
KERNEL opendos.bss

Arranque remoto
En el cliente, tiene que estar activo el arranque por red
En el servidor, es necesario:
Servidor de DHCP (para configurar la red)
Servidor de TFTP (transmisin de cargadores, configuraciones
y kernels)
Cargador (los ms comunes son PXELINUX, ETHERBOOT,
COMBOOT) que descargan el kernel, lo configuran y lo ejecutan

Configuracin del kernel


Al kernel se le pueden pasar una serie de parmetros para:
Configurar dispositivos (discos duros, tarjetas de red, puertos
serie, memoria (mem=XXX). . . )
Indicar sistema de ficheros raz (root=/dev/XXX)
Condiciones especiales: monousuario, distinto init (init=XXX). . .
Cada cargador tiene su manera de pasarle parmetros al kernel
Dentro del kernel, los parmetros con los que se ha arrancado
se pueden ver en /proc/cmdline

Arranque del kernel de UNIX


Comprobacin del procesador.
Bsqueda e inicializacin de hardware.
Inicializacin de la pila TCP/IP.
Monta sistema de ficheros raz (root filesystem).
Prepara la consola, terminales virtuales, etc.
Ejecuta el primer proceso del sistema, /sbin/init.
Todos los mensajes que genera el kernel se pueden ver con la
orden dmesg.

Sistema de ficheros raz


Puede ser local (disquete, disco duro, particin)
remoto (DHCP + NFS)
ramdisk (descargado junto con el kernel)
Lo ms habitual ltimamente es el uso de initrd:
Imagen compromida que se distribuye junto con el kernel
Se carga en RAM (ramdisk) y se ejecuta un script (linuxrc)
Este script carga modulos, configura discos y monta el sistema
raz
Una vez montado, el initrd desaparece y procede el arranque
Normal

Proceso init
Primer proceso del sistema.
PID=1 (siempre).
Padre de todos los procesos.
Adopta y recoge a todos los procesos hurfanos.
No se puede morir.
Fichero de configuracin: /etc/inittab
Niveles de ejecucin: runlevels.
Runlevels
Los runlevels son nmeros del 0 al 6.
3 de ellos tienen significado especial:
0: Parar la mquina (shutdown).
1: Modo monousuario (single-user ).
6: Reiniciar la mquina (reboot).
El resto pueden configurarse para que arranquen y paren determinados
servicios en cada uno.
NOTA: El significado de cada runlevel es un convenio, depende
exclusivamente de lo que indique el fichero de configuracin
/etc/inittab.
/etc/inittab
Formato de cada lnea:
identificador:runlevel:accin:proceso-a-ejecutar
Las acciones ms importantes son sysinit, initdefault,
wait, respawn.
sysinit: Orden a ejecutar en el arranque del sistema, antes
de preocuparse por los runlevels.
initdefault: Indica cul es el runlevel al que pasara el
sistema despus de la inicializacin.
wait: Ejecuta la orden dada si estamos en el runlevel indicado,
y espera a que termine.
respawn: Ejecuta la orden dada si estamos en el runlevel
indicado, y la relanza una y otra vez si esta termina.

Runlevels en un sistema Linux


En el fichero /etc/inittab estn las siguientes lneas:
si::sysinit:/etc/init.d/rcS
l0:0:wait:/etc/init.d/rc 0
l1:1:wait:/etc/init.d/rc 1
...
l6:6:wait:/etc/init.d/rc 6
. . . que se encargan de ejecutar los scripts que haya en el directorio
/etc/rcS.d, /etc/rc0.d. . . /etc/rc6.d.
En /etc/rcN.d hay scripts que comienzan por S, que inician
un servicio (se les llama con el argumento start), y que
comienzan por K, que lo finalizan (argumento stop).

scripts de inicio
Todos los scripts de inicio y fin de servicios estn en /etc/init.d,
pero init los ejecuta desde /etc/rcN.d, donde hay enlaces
simblicos al directorio real:
/etc/rc0.d/K20ssh -> ../init.d/ssh
/etc/rc1.d/K20ssh -> ../init.d/ssh
/etc/rc2.d/S20ssh -> ../init.d/ssh
/etc/rc3.d/S20ssh -> ../init.d/ssh
/etc/rc4.d/S20ssh -> ../init.d/ssh
/etc/rc5.d/S20ssh -> ../init.d/ssh
/etc/rc6.d/K20ssh -> ../init.d/ssh
Solo hay un script por servicio, y se comporta de distinta manera
dependiendo de si su primer argumento es start o
stop.

Ejemplo de script de inicio


#!/bin/sh -e
# Script de arranque del servidor ssh
#
case "$1" in
start)
echo -n "Arrancando servidor ssh..."
sshd
echo "done."
;;
stop)
echo -n "Parando servidor ssh..."
kill -TERM $( cat /var/run/sshd.pid )
echo "done."
;;
restart)
$0 stop
$0 start
;;
*)
echo "Uso: $0 {start|stop|restart}"
exit 1
esac
exit 0

Ordenes relacionadas con el arranque y parada


runlevel: Indica el runlevel anterior y el actual.
init, telinit: Avisan al proceso init de un cambio de runlevel.
shutdown, halt, reboot: se utiliza para parar o reiniciar el
sistema:
shutdown -h now = halt = init 0.
shutdown -r now = reboot = init 6.

5.3.Gestion de cuentas de usuario.


Creando un usuario.
Para crear un usuario, escribimos, entrando como root, "useradd" o
"adduser" sin las comillas ms el nombre del usuario. Ej.:

adduser carlos.
Habrs creado un usuario sin clave de acceso, y escribiendo al inicio de
Linux en login el nombre carlos, entrars en TU SESIN.

NOTA
(Si no existiera la sentencia "adduser", o "useradd", pudiera ser porque
tienes "linuxconf" instalado, escribe linuxconf, que es un frontend (entorno
amigable o entorno final) muy cmodo para gestionar todo linux, entre ellos
la creacin de usuarios.)
FIN NOTA

De esta forma crearemos un usuario con las caractersticas por defecto, que
suelen ser las mejores, pero para crear un usuario a nuestra medida, tambin
podemos escribir:
(Forma general)

[root@Wakitaki /root]# adduser -u 500 -g users carlos


[root@Wakitaki /root]# passwd carlos
(y asignamos la clave para carlos)

[root@Wakitaki /root]# adduser -u 501 -g users javier


[root@Wakitaki /root]# passwd javier
(y asignamos la clave para javier)

o tambin:

[root@Wakitaki /root]# adduser -u 500 -g 100 -p 123 -r carlos.

Ahora ya sabemos que -u 500 -g 100 -p 123 -r son opcionales, y no hace


falta escribirlos para crear al usuario
Esta son algunas de las caractersticas ms importantes a la hora de crear
usuarios.

adduser -u : Indica la UID del usuario, o sea, el nmero con el que el


sistema identificar al usuario. Su nmero debe ser mayor que el
ltimo usuario/cuenta que exista en el fichero /etc/passwd, por
ejemplo podemos ponerle 500 para el primer usuario. El usuario 501
ser el siguiente, 502 el 3, etc.

-g 100. Indica el GID, esto es, el grupo al que ese usuario pertenece.
Esto es importante porque en Linux un grupo de usuarios puede
compartir una serie de ficheros y directorios. El nmero ha de ser el
mismo para todos los que formen el grupo. As, el grupo de los que
formen el grupo 100 ser uno, el 101 ser otro, el 102 otro, etc.
(TODOS los USUARIOS, deberan estar bajo el mismo grupo,
"users", que suele ser el grupo 100). El fichero que identifica a los
grupos es: /etc/group

-p 123. Se refiere a la clave del usuario para entrar en el sistema. Si


se quiere, puede no ponerse ninguna si tu ordenador no va a estar
conectado a ninguna red o si tu eres el nico que entra. Veremos
como hacerlo en Editando usuarios.
-r carlos. Ser el nombre con el que el usuario entre en el sistema.

Otra forma ms fcil de crear usuarios es a travs de las X-Window


con el programa control-panel.
Para comprobar su funcionamiento, pulsa [ctrl]+[F2], y
escribe el nombre con el que hayas creado al nuevo usuario
Si, al crear al nuevo usuario (y si no has especificado clave)
te pide el password y no eres capaz de entrar como l,
debers entonces editar el fichero passwd para suprimir el
carcter de admiracin ( ! ) "u otro(s)" que aparece en el
segundo campo, pues el carcter ! impedir todava entrar en
la cuenta de carlos.

Tambin, es MUY probable que tengas que editar adems el


fichero /etc/shadow, para activar la cuenta: (al que le pasar
algo parecido)

Ej.:

# fichero: /etc/passwd (ANTES de la modificacin)


carlos:!:501:100:carlos
orovengua:/home/carlos:/bin/bash

# fichero: /etc/passwd (DESPUS de la


modificacin)
carlos::501:100:carlos
orovengua:/home/carlos:/bin/bash

Despus de quitarlo, (y si no hay que modificar el


fichero /etc/shadow), con escribir en login tu nombre,
bastar para entrar al sistema. Por ejemplo:

Ej:
# fichero: /etc/shadow (ANTES de la modificacin)

carlos:xx:10745::99999::::

# fichero: /etc/shadow (DESPUS de la


modificacin)
carlos::10745::99999::::

El usuario creado se guardar en el directorio /home, y con el directorio con


el nombre del usuario creado, en este caso ser: /home/carlos, con todas las
configuraciones por definir, un .bashrc y un fichero .bash_profile, que tienen
una mnima configuracin, la cual recomendamos (ver captulos anteriores)
para una gestin adecuada.

Editando usuarios.
Para editar usuarios, editamos el archivo passwd, con el joe, por ej.:

Escribiremos:

cd /etc
joe passwd
joe shadow

o bien:
joe /etc/passwd.
joe /etc/shadow

En este fichero hemos incluido su estructura:


Cada lnea de este archivo corresponde con un usuario, y cada uno de sus campos
(separados por dos puntos) se refiere a un dato.

o Los asteriscos (*) en el segundo campo indican las cuentas que no se


pueden usar como usuarios normales. Pueden usarse tambin cuando
queremos dar de baja temporalmente a un usuario.
o Para eliminar una clave (password), podemos borrar lo que viene situado en
el segundo campo de cada lnea entre los dos puntos (:), o usar el comando:
passwd carlos

para cambiarle la clave a Carlos. Slo root puede cambiarle la clave a otros
usuarios, y puede cambiarse cada uno la suya (incluido root, claro), si como
usuarios normales escribimos:

passwd

donde nos preguntar por la vieja, la nueva y que la verifiquemos.

Si no te acuerdas, o cualquier usuario no se acuerda de su password, root, deber


encargarse de editar el fichero /etc/passwd y suprimir la lnea donde aparece la
clave:

javier:ClaveOlvidada:...

Para quedar:

javier::...

Borrando a un usuario.
Para borrar un usurio, bastar con escribir el comando:

"userdel" y el nombre del usuario, ejemplo.:

userdel carlos

Tambin, se podr editar el fichero passwd y quitar la lnea entera donde


aparece el nombre del usuario en cuestin, y despus borraremos su
directorio de /home. (tambin conocido como directorio raz de cada
usuario)

De todas formas es conveniente hacerlo con el comando userdel, o desde X-


Window en su defecto, ya que tambin se eliminar el directorio "carlos" del
directorio "home", ya que si no, como root, debers borrar el directorio del
usuario eliminado.

NOTA IMPORTANTE:

Esta es una opcin excesivamente TRGICA, ya, que al suprimir a


un usuario, tambin se le elimina su configuracin, todos los
programas y configuraciones particulares que tenga en su
directorio /home/usuario, as como semanas, incluso meses de
trabajo que tenga, tanto en sus propios documentos, trabajos y horas
que tard en configurar a su gusto, el gestor de ventanas de X-
Window, su navegador Netscape, sus StarOffices, su WordPerfect...,
por esto, y si lo que se quiere es dar un toque de atencin, lo mejor es
editar el fichero passwd, y colocar un signo "!", para desactivarlo,
una vez dado el toque de atencin, quitas el signo "!", y su cuenta
volver a estar activa.

5.4. gestin de sistemas de Archivos


Desde X-Window
Todas estas gestiones tambin lo podrs hacer desde X-Window ms fcilmente, y
claro est de una forma grfica, existen multitud de programas para realizar estas
tareas, el ms utilizado es: 'linuxconf', que existe para los gestores de ventanas KDE
y GNOME, adems de otros existentes.

Gestion del sistema de archivos

Mostrando Archivos
El comando que se utiliza en Unix, y por lo tanto en Linux para mostrar los ficheros
es el comando: "ls", tambin se utiliza "dir", pero no es mas que una copia de "ls",
con otro nombre.

Para hacerte una demostracin haremos lo siguiente:

1. Si ests en LYNX:

Pulsa [alt] y sin soltar, pulsa ahora [F2], para regresar tendrs que pulsar [alt] y sin
soltar [f1]

2. Si estas en XWindow:
Pulsa [control], sin soltar ahora tambin [alt], y ahora sin soltar ninguna de las dos
teclas pulsa [F3], para regresar pulsa [alt] y [F7]

* Suelta todas las teclas que tengas presionadas.

Escribe en login 'root' y en password , la clave de acceso que tengas.(Si procede)

Una vez iniciada la sesin;


escribe:
[root@localhost /root]$ ls

Vers los ficheros que estn en ese directorio. Esos ficheros pueden ser:

ejecutables (binarios), de texto, directorios, scripts (conjunto de comandos dentro de


un fichero de texto).

Has visto los ficheros... pero... Bien, ahora te preguntars qu ficheros son
binarios, cules son directorios...?
Bueno, pues para saber cuales son cuales, puedes escribir vdir, en vez de ls,
entonces vers informacin muy rara ajustada a la izquierda de la pantalla (como
-rw-r--r--), eso son los atributos del fichero (no entraremos en detalles), despus un
nombre, puede que 'root', eso indicar a quien pertenece el fichero/directorio,
despus otra vez 'root', eso es el grupo al que pertenece, tras varios espacios podrs
ver ficheros como:
*noseque (eso es bien un binario o un script, ambos son ejecutables)
otronombre (eso podr ser un fichero de texto, o binario, pero no ejecutable, podr
ser de texto si lleva una extensin identificativa, como: otronombre.txt, o
otronombre.doc, etc., etc...)
directorio/ (los conocers porque siempre llevan detrs la barra identificativa: '/')
(Si alguna vez te encuentras con un fichero y no sabes que es, escribe: file
nombre_del_fichero)

Claro, que esta no son formas de ver los ficheros, habra alguna forma de
identificarlos de un vistazo?

Mostrando los archivos en color


Para ver los ficheros con colores usa:
[root@localhost /root]$ ls --color -s
Adems, el parmetro "-s", mostrar el tamao del fichero ("size" en ingls)

Pero... claro, dirs que si siempre hay que escribir eso... (yo tambin), apaga y
vmonos, porque aunque hay que reconocer que es bonito, hay que escribir muchas
letras, incluso hasta para uno que sepa MECANOGRAFA.

Una de las muchas formas que tiene Linux para ahorrar tiempo es usando un 'alias',
de forma que cuando hagamos referencia al alias, se escriba el comando que
queramos con todos sus parmetros, este es el ejemplo que tienes que aprender
(todos los alias hacen referencia a la shell 'bash', que es la que seguramente tengas
por defecto):

[root@localhost /root]$ alias ls='ls --color -s'

ahora, escribe ls

[root@localhost /root]$ ls

Pero si lo que quieres es que esa (y otras) opciones puedan disponerlas todos los
usuarios debers configurar el fichero /etc/bashrc
Creando Directorios
Un directorio, es un archivo el cual tiene la propiedad de poder almacenar, ficheros
y directorios.

En Linux existe una forma muy sencilla de crear directorios. Para ello, simplemente
has de escribir mkdir NombreDirectorio, por ejemplo: mkdir carlos crear un
directorio llamado carlos. Un punto importante es recordarte que Linux es sensible a
las maysculas y no es lo mismo escribir mkdir carlos que mkdir Carlos ni
CARLOS. Estos son directorios diferentes, y, por tanto, para acceder a ellos habrs
de escribirlo tal y como los llamaste.

Si has venido del DOS, (Y si no has venido no importa), te acordars que para crear
directorios se usaba el comando: md, que es el acrnimo de Make Directory (MD),
y dirs que es mas corto, pues te recordamos que en Linux existe 'alias', as que
usando el alias de la forma siguiente podrs obtener la misma comodidad

alias md='mkdir'

Ahora para crear el directorio carlos. puedes hacer:

mkdir carlos
o tambin
md carlos

Prueba (dependiendo si ests en un terminal (pantalla de texto) o en X-Window) de


la forma expresada en Mostrar ficheros
y prueba a crear los directorios: Amigos, Familia, Banco, Internet, Trabajos,
Estudios...

Prueba: a crear tanto con mkdir o con md, es decir crea mkdir Amigos, md
Familia...
---

FICHEROS
Los ficheros o archivos, tienen la propiedad de poder almacenar en su interior datos,
de tipo texto o binarios, en este caso, nos ocuparemos del primer caso.

Para crear FICHEROS DE TEXTOS, como no, nuestras queridas cartas...

Aqu puedes utilizar, VARIOS procesadores de textos, entre todos ellos destacan
estos tres:

o vi
o emacs
o joe

Te aconsejamos que para empezar uses el JOE, y una vez que tengas experiencia, te
vayas introduciendo tanto en vi como en vim (el editor vi Mejorado) o emacs.
Particularmente, el que mas me gusta a mi es el emacs, pero cuando slo tengo que
escribir un simple documento de Texto, uso el joe, que adems es el que utilizo para
crear 80 de cada 100 documentos.

Si no tienes el JOE instalado haz esto (deber estar en formato .RPM) (ejemplo para
las distribuciones: SuSE, RedHat o GLHis) para instalarlo desde el CD-ROM
mount -t iso9660 /dev/cdrom (/mnt o /media)/cdrom

rpm -i (/mnt o /media)/cdrom/RedHat/RPMS/joe*.rpm

(Si no fuera la distribucin de RedHat, pero por ejemplo la distribucin


fuera en paquetes .rpm, podras poner...)

rpm -i `find (/mnt o /media)/cdrom -iname joe*.rpm`

umount /dev/cdrom

o Si lo tuvieras en formato .TGZ o TAR.GZ (que es lo mismo) (En el caso de


que usaras SlackWare), debers hacer los casos 1 y 3, pero en el caso 2 haz:
o cd /
o tar xvfz joe*.tgz
o y Lete el fichero INSTALL, en el caso de que se hubiera creado algn
directorio nuevo

Si no te aclaras, tambin podrs meter el CD-ROM y reiniciar como cuando


instalaste por primera vez Linux y elegir la opcin (Upgrade=Actualizar) y
seleccionar el paquete JOE.

El joe, es un SENCILLISIMO editor de textos, al estilo WordStar de Microsoft, o


Editor de Digital Research, algo mas potente, pero hay que buscar mucho para ver
todas sus cualidades.

Ejemplos:

* Crear un documento de texto

joe carta.txt

* Salir Guardando el documento

[Ctrl]+[K]+[X] <--> Recuerda que significa: Pulsar [Ctrl], sin soltarla pulsar [K], y
sin soltar ninguna de las dos, pulsar [X]

* Salir SIN Salvar el documento

[Ctrl]+[C]

Preguntar si desea PERDER LOS CAMBIOS, para lo que habr que pulsar: [Y], o
[N] PARA NO PERDER LOS CAMBIOS

* AYUDA DE JOE

[Ctrl]+[K]+[H]

Activa la visualizacin de la ayuda

[Ctrl]+[K]+[H]

Desactiva la visualizacin de la ayuda

(En ti queda aprender el resto)


Para obtener ms informacin puedes escribir desde un terminal: man joe, si lo que
quieres es informacin a cerca del joe, man vi, o man vim, o man emacs,
dependiendo de la informacin de desees obtener.

Borrando Directorios (CUIDADO!)


Para borrar directorios en Linux, debes usar el comando: rmdir NombreDirectorio,
pero te aconsejamos que uses un alias para poder utilizar tambin rd.

Te recuerdo que la estructura de directorios de Linux es muy importante, por lo que


NO borres ningn directorio que no este bajo tu rbol de directorios. Por ejemplo,
yo podr borrar todo lo que este bajo /home/carlos, porque me pertenecen esos
ficheros, pero no podr borrar los ficheros que estn fuera de l, entre otras cosas
porque a menos que sea el superusuario (root) no me dejarn por los permisos.

Renombrando Directorios
El comando que se utiliza para RENOMBRAR, es el mismo que se utiliza para
MOVER, que es: 'mv'

Para cambiar el nombre del directorio carlos a javier, habr que escribir:

mv carlos javier

El mismo comando se usa para renombrar tanto FICHEROS como DIRECTORIOS.

Moviendo Directorios ( MUCHO CUIDADO...)


Para mover ficheros, o directorios usa el comando mv:

Por ejemplo queremos MOVER el fichero: 'carta_a_pepe.txt' a


/home/javier/cartas_a_amigos/, pues escribimos:

mv carta_a_pepe.txt /home/javier/cartas_a_amigos/

PERO, TAMBIN CON EL MISMO COMANDO SE PUEDE MOVER UN


DIRECTORIO, por eso, es aconsejable no utilizar los comodines cuando ESTS
COMO ROOT, y peor, si ests en la raz de directorios '/', (Que, a propsito, cuando
creemos los perfiles de usuario, siempre debers entrar como el usuario creado, y
usar slo ROOT, para acceder a las unidades...)

Por ejemplo:

mv cartas_a_amigos/ / (mueve "cartas_a_amigos" a la raz)

Si alguna vez estas en la raz, NI SE TE OCURRA hacer (Estando como root):

mv * /algn_directorio

(ls / )
Ya que en ese momento TE ESTAS CARGANDO EL SISTEMA, y tendrs que
entrar con un disco de mantenimiento, adems de lo sufrido que supone su (nueva)
colocacin.

Accediendo a directorios, y En que directorio estoy?


cd NombreDirectorio <<- para acceder a un directorio

pwd <-Te dir tu ruta actual

PWD, es el mismo comando que el comando de UNIX para mostrar la ruta "CWD",
hace un: "Current Work Directory"

cd
Sin parmetros regresara a "casa"
(Este comando, hace lo mismo que si escribes: "cd ~", o "cd $HOME", y de hecho,
esto es muy utilizado para regresar a cualquier directorio del dueo que en ese
momento est usando el ordenador, por ejemplo si quisiera ir al directorio
/home/javier/programacin/C, y estuviera como el usuario "javier", escribira
(independientemente de yo donde estuviera) cd ~/programacin/C, ahorrando
evidentemente tener que escribir la sentencia "/home/javier")

cd /
Independientemente del directorio donde te encuentres ira directamente a la raz

cd ..
Acceder a la carpeta/directorio inmediatamente anterior

Como esto puede confundir a errores explicaremos.

El rbol de directorios se puede ver como:

Una raz:

Por lo que al directorio/carpeta '/' se le considera la raz, la superficie,


y cada vez que accedes a otro directorio con cd directorio, te ests
alejando de la raz, y estas profundizando "un nivel", por lo que al
escribir cd .. estars subiendo un nivel.

Un rbol:

Al igual que en el anterior la carpeta/directorio '/' se le considera el


nacimiento del rbol y cada vez que accedes a un directorio, estas
subiendo a las ramas del rbol, por lo que escribir cd .., significa
bajar un directorio, este trmino es el mas utilizado, pero de todas
formas es conveniente que ambas cosas "subir un nivel" o "bajarlo
un directorio" significan lo mismo.

EJEMPLO:
Las KDE, consideran que acceder a un directorio es "bajar un nivel",
y cambiar de directorio ms prximo a la raz lo considera como
"subir un nivel", por lo que est considerando la estructura como:
una raz o un rbol?
-respuesta una raz-

Limpiando la pantalla
clear <--> Limpia la pantalla

(intenta hacer un alias para cls)

Limpiar la pantalla no requiere parmetros algunos, por lo que es bastante fcil de


recordar, clear significa en ingls "limpiar", mientras que cls, es el acrnimo ingls
de "Clear Screen", "Limpiar la pantalla"

Montando Unidades
Esto es una de las cosas ms importantes. Te preguntas montar?. Pues s, montar.

Un sistema de ficheros, no es ms que una particin en tu disco duro (que puede ser
nica) la cual tiene un formato, y el formato es la forma de colocar los archivos.

Por lo que para que un Sistema Operativo solo entienda su sistema de ficheros,
como por ejemplo pueden ser: Windows, MS-DOS, OS/2, etc., etc... cuando se
carga el sistema, automticamente tambin cargan su sistema de ficheros, y trabajan
con su sistema de ficheros, nica y exclusivamente (hasta que no se le aadan
mdulos al kernel o ncleo del Sistema Operativo).

Linux, carga automticamente su Sistema de ficheros, al cargar, se le denomina


"montar", en ese momento, al igual que han hecho otros sistemas operativos puedes
empezar a trabajar con tu sistema de ficheros, pero Linux, al contrario que otros
sistemas puede adems acceder a Sistemas de Archivos que no son suyos, es decir,
puedes desde Linux, acceder a tu particin de MS-DOS, Windows, OS/2, etc., etc.
Es ms, puedes acceder a tu disquete o disquetes que te hayan pasado que estn
formateados en otros sistemas, por ejemplo de un Mac.

ext2 (ext3) Nativa de Linux


NFS Network File System
msdos Sistemas D.O.S.
vfat Sistemas Windows
Sistema de ficheros de
iso9660
CD-ROMs
Intenta montar
auto
cualquier Sistema
(ms sistemas de
(ms sistemas operativos)
ficheros)

Para montar tu disquete haz:


(En este caso, debers asegurarte de que existe el directorio (/mnt o /media)/floppy,
si no existiera cralo usando: mkdir (/mnt o /media)/floppy)

1. introduce el disquete en la disquetera


2. escribe: mount -t vfat /dev/fd0 (/mnt o /media)/floppy
3. escribe cd (/mnt o /media)/floppy

Ahora ests viendo tu disquete.

"mount -t vfat"

mount: es el comando.
-t vfat: es la opcin para montar la virtual fat de Windows
/dev/fd0: en /dev/ se guardan los dispositivos (devices en ingls) y
fd0, es el disco floppy 0, si tuvieras otro disco floppy deberas
escribir fd1, fd2...
(/mnt o /media)/floppy: son directorios, (/mnt o /media)/ es donde se
deben montar TODOS los sistemas de archivos, /floppy, es dentro
del directorio (/mnt o /media)/ donde vamos a montar el disquete.

Por ejemplo para montar el cdrom:

mount -t iso9660 /dev/cdrom (/mnt o /media)/cdrom <-> has


montado el cdrom, a travs del estndar iso9660 (que es general a
casi todos los cdroms)
cd (/mnt o /media)/cdrom <-> para acceder al cdrom.

Para montar tu disco duro, la particin que tienes para, por ejemplo
Windows

mount -t vfat /dev/hda1 (/mnt o /media)/win


cd (/mnt o /media)/win <-> para acceder a la particin

Para montar tu particin de ms-dos

mount -t msdos /dev/hda2 (/mnt o /media)/dos


cd (/mnt o /media)/dos <-> para acceder a la particin

Evidentemente, como habrs podido observar, DEBEN de existir los


directorios win, dos, cdrom, floppy... dentro del directorio (/mnt o /media)/,
si no existieran debers acceder a (/mnt o /media)/ y crearlos, haz:

cd (/mnt o /media)
ls
(Que existen los directorios cdrom y floppy, pues por ejemplo crea
win, y si tienes tambin una particin del dos crea otra para dos)
ahora ya tienes creado varios directorios dentro de (/mnt o /media)/,
as, cuando tengas montado win, el cdrom y el disquete, para cambiar
podrs hacer:
1. pwd (para mostrar la ruta)
2. cd ../win (para cambiar a la particin de windows)
3. cd ../floppy (para cambiar a la particin del disquete...

para montar tu 2 disco duro, tienes que escribir: (con formato para la virtual
fat de Windows)

mount -t vfat /dev/hdb1 (/mnt o /media)/2disco

para montar tu 3er disco.

mount -t vfat /dev/hdc1 (/mnt o /media)/3disco

tu 4 disco

mount -t vfat /dev/hdd1 (/mnt o /media)/4disco

Y evidentemente como habrs podido comprobar, hd, son las siglas de Hard Disk "
Disco duro en ingles", a, b,c, d, son los discos, a, el disco maestro, b, c, y d, los
discos esclavos dependientes del maestro y los nmeros finales son el numero de las
particiones.

Un disco duro, puede tener hasta 4 particiones

Si tu disco duro es IDE, entonces ser hdxx (hda1, hda2, hdb1,


hdc1...), pero si tu disco duro es SCSI, entonces los discos duros
sern scxx (sca1, sca2, sca3...)

Si has seguido el curso hasta ahora, como te podrs suponer, tambin


podemos utilizar alias para facilitarnos esta tarea, por ejemplo mira:
Configurando tu fichero de usuario: .bashrc, y .bash_profile

Accediendo a Unidades
Para acceder a las unidades (una vez montadas), debers acceder escribiendo:

cd (/mnt o /media)/[directorio que haga referencia a la unidad montada y existente


en el directorio mnt]

Ejemplo

cd (/mnt o /media)/floppy

Acceder a tu disquete.

Claro est que si quieres hacer ms cmodo tus accesos a las unidades puedes hacer
un enlace simblico desde tu directorio /home/[usuario] /root/ a los directorios
existentes en el directorio (/mnt o /media)/

Lo puedes hacer fcilmente desde mc, o haciendo ln -s fichero_a_enlazar


fichero_enlace.
Desmontar Unidades
Desmontar las unidades es FUNDAMENTAL, si no se desmontan las unidades y no
se cierra correctamente el sistema se corre el riesgo de perder datos.

Para desmontar las unidades bastar con escribir:

umount /dev/[dispositivo montado que se quiera desmontar]

Ejemplos:
umount /dev/df0

Desmontar el disquete.
umount /dev/hda1
Desmontar la particin 1 del disco duro A
umount -a
Desmontar TODAS las unidades montadas.
Puedes si quieres automatizar estas tareas modificando tu fichero .bashrc y
.bash_profile, esto lo podrs ver en el tema: Automatizar tareas

Automatizar Tareas
La automatizacin de tareas es algo fundamental, ya que si estamos mucho tiempo
haciendo siempre el mismo trabajo, al automatizar algo, nos ahorraremos tiempo.

Con este objetivo se hizo en linux comandos como: alias, y tambin por el mismo
motivo se hizo comandos para crear ejecutores de tareas (scripts)

En nuestro caso, lo que nos interesa ser la automatizacin de tareas a travs de


alias, por lo que observa los ficheros .bash_profile y .bashrc que a continuacin se
presentan e intenta modificar tu .bash_profile y .bashrc con la misma intencin.

(El punto delante del nombre lo convierte en "escondidos")

Ejemplo de .bash_profile.
Ejemplo de .bashrc

Midnight Commader:
El Midnight Commader de Linux, es un entorno amigable en modo texto que te
ayudar a hacer todas, todas, las gestiones de ficheros que normalmente usas, para
ejecutar el Midnight Commander, bastar con escribir:

mc

Y ya estars en un entorno amigable para tu gestin de ficheros.


Te decimos que muchos programas comerciales (los cuales aqu no mencionaremos) de
otros sistemas operativos estn basados en mc de Linux aunque ellos los vendan como
software original.
5.5. Archivos de auditora
Ficheros de logs

Presentaremos aqui los fichero de logs mas habituales en un sistema Linux, y la


configuracion de alguno de ellos como syslog.

Los ficheros de log en un sistema linux, residen en el directorio

/var/log
y aqu es donde deberan logear todos los programas.

syslog

syslog es un log del sistema y del kernel que nos puede dar importante informacin de
eventos que suceden en el sistema y en sus programas. Syslog provee incluso alguna
llamada para que los programas que corren en el sistema logeen en el propio syslog.
Todas las entradas que presenta syslog tienen como mnimo una fecha y una hora, el
nombre de la maquina y del programa que gener el evento. El fichero de
configuracin de syslog es

/etc/syslog.conf
y podemos ver un ejemplo de fichero de configuracin.
# /etc/syslog.conf Configuration file for syslogd.
#
# For more information see syslog.conf(5)
# manpage.

#
# First some standard logfiles. Log by facility.
#

auth,authpriv.* /var/log/auth.log
*.*;auth,authpriv.none -/var/log/syslog
#cron.* /var/log/cron.log
daemon.* -/var/log/daemon.log
kern.* -/var/log/kern.log
lpr.* -/var/log/lpr.log
mail.* /var/log/mail.log
user.* -/var/log/user.log
uucp.* -/var/log/uucp.log

#
# Logging for the mail system. Split it up so that
# it is easy to write scripts to parse these files.
#
mail.info -/var/log/mail.info
mail.warn -/var/log/mail.warn
mail.err /var/log/mail.err

# Logging for INN news system


#
news.crit /var/log/news/news.crit
news.err /var/log/news/news.err
news.notice -/var/log/news/news.notice

#
# Some `catch-all' logfiles.
#
*.=debug;\
auth,authpriv.none;\
news.none;mail.none -/var/log/debug
*.=info;*.=notice;*.=warn;\
auth,authpriv.none;\
cron,daemon.none;\
mail,news.none -/var/log/messages
#
# Emergencies are sent to everybody logged in.
#
*.emerg *

#
# I like to have messages displayed on the console, but only on a
virtual
# console I usually leave idle.
#
#daemon,mail.*;\
# news.=crit;news.=err;news.=notice;\
# *.=debug;*.=info;\
# *.=notice;*.=warn /dev/tty8

# The named pipe /dev/xconsole is for the `xconsole' utility. To use


it,
# you must invoke `xconsole' with the `-file' option:
#
# $ xconsole -file /dev/xconsole [...]
#
# NOTE: adjust the list below, or you'll go crazy if you have a
reasonably
# busy site..
#
daemon.*;mail.*;\
news.crit;news.err;news.notice;\
*.=debug;*.=info;\
*.=notice;*.=warn |/dev/xconsole

local2.* -/var/log/ppp.log

Aunque no nos pararemos a ver este archivo de configuracin con demasiado detalle,
si es interesante ver en base a que criterios trabaja syslog. Podemos ver en el fichero
de configuracin, lineas que nombran una "facility" ( subsistema de aplicacin ) y
separados por un punto las palabras crit,debug,info,notice o warn. Por ejemplo:

mail.warn
-/var/log/mail.warn
Lo que realiza syslog es logear los eventos dependiendo de la aplicacin y de la
prioridad del evento ( crit = critical, warn=warning, info=information, err=errors .... )
y reenviandolos a syslog o a otros logs separados para "categorizar" mejor cada uno
de los eventos, puede usar tambin comodines de modo que sea posible incluir una
linea de este tipo
kern.* -/var/log/kern.log
de modo que todos los mensajes del kernel vayan a fichero kern.log, sean del tipo que
sean.

Como curiosidad hacer notar que las entradas de ficheros que van precedidos por un
guin (-) indican que no se hace un "sync" cada vez que existe una entrada en ese log,
de modo que si hay una caida del sistema pueden perderse datos en este fichero.

Otros logs en Linux

Adems de syslog y de los logs generados por el mismo, hay otros logs que hay que
tener en cuenta para saber en cada momento que ocurre o a ocurrido en nuestro
sistema. Enumeramos aqu algunos y su cometido.

/var/log/xferlog Este fichero es creado por los servidores de ftp e indica la fecha de
las transferencias de ficheros, los ficheros, cantidad de bytes, etc...
/var/log/apache/access.log Fichero creado por el servidor web apache e indica las
conexiones al servidor, con que version http, si ha sido un GET o un put, etc.
/var/log/apache/error.log Da los errores ( categorizados por warn, notice, etc... )
que surgen en el servidor web.
/var/log/setuid.changes Log generado por el programa checksecurity incluido en la
distribucin Debian y que da un listado de los setuids en el sistema. Se activa en el
cron.
/var/log/wtmp Es un log binario que guarda el los usuarios del sistema que han
hecho logins. No se usa directamente pero si podemos usarlo con la instruccin last
por ejemplo.

"Rotado" y Replicado de logs.

En tanto en cuanto los logs representan a nuestros sistema, es necesario tener un


cuidado con los mismos y "sanearlos" de alguna manera, veremos en primer lugar el
rotado de logs y posteriormente el replicado de los mismos para asegurar una
consistencia y redundancia que evite problemas en un posible compromiso de la
maquina donde residen estos logs.

Rotado

Los logs, especialmente algunos de ellos, tienden a crecer de manera exagerada, de


modo que es un uso habitual guardar ( en ocasiones compromidos ) los logs de vez en
cuando e iniciar un nuevo log. Como ejemplo, tomemos este 'ls' de /var/log:

emain:/var/log $ ls -1 syslog*
syslog
syslog.0
syslog.1.gz
syslog.2.gz
syslog.3.gz
syslog.4.gz
syslog.5.gz
syslog.6.gz
Vemos que hay un syslog, otro numerado con 0 y los demas numerados y
comprimidos. Esto lo podemos hacer con la utilidad logrotate incluyendola en el cron.

La utilidad logrotate tiene un fichero de configuracin que podemos comentar:

# see "man logrotate" for details


# rotate log files weekly
weekly

# keep 4 weeks worth of backlogs


rotate 4

# send errors to root


errors root

# create new (empty) log files after rotating old ones


create

# uncomment this if you want your log files compressed


#compress

# RPM packages drop log rotation information into this directory


include /etc/logrotate.d

# no packages own wtmp or btmp -- we'll rotate them here


/var/log/wtmp {
monthly
create 0664 root utmp
rotate 1
}
/var/log/btmp {
missingok
monthly
create 0664 root utmp
rotate 1
}

# system-specific logs may be configured here

Este fichero rige los rotados de logs, en este caso se haran cada semana ( weekly ),
guardaran los logs antiguos 4 semanas y crear unos nuevos cada vez que lo rote.
Adems existe la posibilidad de especificar el comportamiento especifico de algunos
ficheros determinados en este caso btmp y wtmp.

Replicado

El replicado de logs est ms encaminado a la redundancia y seguridad de los logs


que al propio saneamiento. Syslog da la posibilidad de logear de manera remota
adems de en la propia mquina en otras mquinas de una red, de modo que la misma
informacin este replicada y distribuida por ms nodos de la red en caso de que una
determinada maquina haya sufrido una intrusin y se haya intentado borrar
informacin.

Describiremos los pasos para hacerlo, enumerandolos:

Arranque de syslog: Activaremos syslog con el parmetro -r en la mquina que va a


recibir los mensajes de syslog remotos. Por defecto syslog no permite mensajes
remotos.
/etc/services: Es importante incluir una entrada en /etc/services que indique el
puerto y protocolo de syslog de este modo:
syslog 514/udp
/etc/syslog.conf: Indicaremos ahora en el fichero de configuracin de syslog que
mensajes queremos replicar y a que nodos, por ejemplo, podramos replicarlos todos
del siguiente modo:
# Sample syslogd configuration file to
# messages to a remote host forward all.
*.* @hostname

o un subsistema ( facility ) concreta con sus determinadas prioridades, por ejemplo:

kern.warm @hostname

Es importante hacer algunas aclaraciones en cuanto al replicado, en primer lugar que


el transporte se realiza con UDP, es decir nada nos asegura que esos paquetes lleguen
a su destino. Existen programas que ya realizan el transporte con TCP. Tambin es
necesario hacer notar que corremos el peligro de que exista "sniffing" en la red o que
alguien intente enviar logs falsos algunos de los nodos existentes. Algunas de las
soluciones pasan por encriptacin o por tuneles "seguros"

Logcheck y tripwire

En esta seccin veremos dos utilidades una para realizar chequeos automticos de
logs y hacer saltar alarmas por mail de modo automtico y la otra para realizar
chequeos de integridad de los ficheros de un sistema.

Logcheck

Logcheck permite generar alarmas por mail cuando se encuentran determinados


patrones en los logs. El fichero de configuraci esta en /etc/logcheck/logcheck.conf y
posteriormente tenemos unos ficheros donde existen una serie de patrones que
aparecen en casos de intentos de "hacking" etc..., vemos un listado de este directorio:

emain:/etc/logcheck# ls
logcheck.conf logcheck.ignore logcheck.violations.ignore
logcheck.hacking logcheck.violations
y un mail generado por un error en una autentificacin:
Date: Wed, 17 May 2000 23:02:02 +0200
From: root <root@emain.celtic.org>
To: root@emain
Subject: emain 05/17/00:23.02 system check

Security Violations
=-=-=-=-=-=-=-=-=-=
May 17 22:09:38 emain PAM_unix[579]: authentication failure;
david(uid=1000)
->
root for su service
May 17 22:09:40 emain su[579]: pam_authenticate: Authentication
failure

Tripwire

Tripwire es una utilidad aparentemente simple que recorre nuestros sistemas de


ficheros y extracta de ellos una suma MD5 que deberemos de guardar en un soporte
completamente seguro fisicamente ( por ejemplo un diskette ) y la cual compararemos
con la siguiente suma MD5 de los ficheros que hagamos para asegurar que siguen
igual y que sus tamaos no han cambiado, de haberlo hecho es casi seguro que
estamos ante una intrusin.

Tripwire se basa en un fichero de configuracin que reside en

/etc/tripwire/
un ejemplo del mismo:
#
# tripwire.config for Linux/Debian machines
#
# I have tried to provide for a reasonable, minimal configuration
file.
# You will have to tune this to your own taste and needs. -- pw.
#
# I even removed some more stuff to make it fit on a floppy. -- MM

# Define variables for searching devices, tmp directories, and


logfiles
@@define DEVSEARCH E+ins
@@define TMPSEARCH E+ugp
@@define LOGSEARCH L-i

# Check all files:


# (We also mention some directories explicitly, as
# these are often put on a separate filesystem)
/ R
/usr R
/usr/local R

# Don't do these
# (/mnt is for temporarily mounted filesystems;
# do a minimal check on /home anyway;
# no spool files except the crontab for root):
!/mnt
=/home
!/root

#
# I don't like /var since too many files change automatically. -- MM
#
#/var R
!/var

# Log files:
#/var/log @@LOGSEARCH
#/var/account @@LOGSEARCH

# /dev, /tmp and /var/tmp


#
/dev @@DEVSEARCH
=/tmp @@TMPSEARCH
=/usr/tmp @@TMPSEARCH

# no checksums for less important files (documentation, word lists):


# you might want to add /usr/X11R6/man if you have X installed
!/usr/doc
!/usr/dict
!/usr/info
!/usr/man
!/usr/src

# but do check the kernel sources


/usr/src/linux

Vemos que en este fichero indicaremos de que directorios no queremos que se hagan
copias bien por ser ficheros muy cambiantes o bien por que no tienen informacin
sensible.

El primer paso para analizar con tripwire es la creacin de una base con las sumas de
los ficheros de los sistmas:

tripwire -initialize
con esto el programa crear una base de datos que guardar en
/usr/lib/tripwire/databases
o en un lugar indicado previamente ( homde de root ) y que deberemos guardar en un
medio fisicamente seguro y nunca accesible por red, para que no se puedan operar
cambios en las sumas.

Posteriormente con la orden

tripwire -initialize -d basededatos


el programa ir a buscar la base de datos anterior que comparar con el estado actual
del sistema para comprobar que no ha habido cambios en los binarios.

5.6. Control de carga del sistema.


Comandos bsicos de monitoreo

Para diagnosticar el sistema en muy brevemente:

Por consola: basta con utilizar 5 comandos bsicos, en el siguiente orden:


0. uname -a : nos dice la version de kernel, procesador, y nombre de sistema
1. df : nos muestra la ocupacin del disco duro.
2. free : nos muestra el uso de la memoria
3. ps -aux. : nos muestra los procesos en curso
4. netstat -a : nos muestra las conexiones de red actuales

Otro programa muy util para el diagnostico del sistema y las conexiones de red
sera IPTRAF que se ejecuta como iptraf o /usr/bin/iptraf.
ESTADO DE DISCO: lo normal es que de un dia para otro no aumente ni en un
punto porcentual, a no ser que tenga algun servicio concreto de estadisticas o
BBDD. Si llega al 90% hay que empezar a barrer el sistema de ficheros,
localizar ficheros grandes, etc.

ESTADO DE PROCESOS: normalmente veremos una serie de procesos que


van desde el ID 1 al 600-700, muchos de los cuales comienzan por "[k". Todos
ellos son los iniciados al arrancar del sistema. El resto son servidores iniciados
posteriormente. El estado de los procesos en marcha suele mostrar siempre el
mismo aspecto, aunque cada servidor tendra uno distinto. Conviene conocerlo.
En cuanto a la ocupacion de la CPU ningn servicio suele ocupar mas de un
10% suele tener esos picos). Todo lo que tenga valores como 40% o mas se
consideran niveles anormales; puede tratarse de generadores de estadisticas.Un
programa UTIL para ver los porcentajes es top.

ESTADO DE MEMORIA: mientras quede RAM libre no hay problema. Un


servidor Linux incluso puede aguantar usando SWAP.

Proceso de monitoreo ms avanzado.


Este proceso describe el proceso genrico de resolucin de problemas
de cualquier servidor de Linux:
0. Verificar si el servicio esta en marcha:
Se puede hacer con: service <servicio> status
/etc/rc.d/init.d/servicio status
ps -axf | grep servicio
netstat -ln | grep puerto_servicio
telnet localhost puerto_servicio
1. Si el servicio esta parado, iniciarlo directamente con:
/etc/rc.d/init.d/servicio start
2. Chequear dos veces si el servicio esta en marcha realmente.
3. En cualquier caso, si esta en marcha o parado, chequear los logs
correspondientes al servicio para verificar o comprobar errores.
4. Segn la informacin que nos den los logs actuar en consecuencia.
De todas formas, cada servicio Linux tiene sus pecualiaridades, por eso se
describen por separado a continuacin.

5.7. Copias de seguridad


Las copias de seguridad en LINUX se realizan con algunos utilitarios
disponibles y que se extraen de Internet y se instalan como cualquier aplicacin.
Uno de ellos es el SIMPLE BACKUP que se puede obtener de la red e instalarlo
con RPM.

5.8. Sistemas de impresin


Este instructivo describe la forma de instalar y configurar una impresora en
Linux. Expone tambin los rudimentos del control de la cola de impresin. El
anlisis se limita al caso de impresoras conectadas al puerto paralelo, con mucho
las ms comunes.

Mdulos de kernel.
Para el manejo del puer paralelo ser necesario asegurar la existencia de soporte
en el kernel, en los siguientes mdulos:
lp parport_probe parport_pc
Impresora testigo.
Crearemos primero una impresora testigo cuya salida se dirige a un archivo de
prueba, para verificar el funcionamiento del sistema de impresin.

Directorio de spool.
El directorio de "spool" es un depsito temporal para los archivos de los trabajos
de impresin, archivos de estado, filtros y auxiliares de una impresora. Los
siguientes comandos crean un directorio de spool para una impresora llamada
lpprueba, asignando los dueos y permisos requeridos.

cd /var/spool/lpd
mkdir lpprueba
chown lp.lp lpprueba
chmod g+w lpprueba
ls -l

Entrada en /etc/printcap.
El sistema de impresin se controla a travs del archivo /etc/printcap, donde se
definen todas las impresoras conectadas al sistema.
Se agrega en el archivo /etc/printcap una entrada descriptiva de la impresora
testigo. El dispositivo de impresin (lp=) se asigna a /dev/null, ya que no
disponemos de la impresora como equipo fsico:

lpprueba|Impresora de prueba hacia archivo:\


:lp=/dev/null:\
:sd=/var/spool/lpd/lpprueba:\
:af=/var/log/lp-acct:\
:lf=/var/log/lp-errs:\
:if=/var/spool/lpd/lpprueba/filtro_entrada:\
:pl#66:\
:pw#80:\
:mx#0:\
:sh:

Archivo de filtro.
Crearemos, en el directorio de spool de la impresora testigo, un archivo filtro de
entrada para dirigir la salida de impresin hacia un archivo.
cd /var/spool/lpd/lpprueba
vi filtro_entrada

El archivo de filtro para la impresora testigo contiene el siguiente texto:

#!/bin/bash
# filtro_entrada: para prueba de impresora hacia archivo texto
# en directorio "spool" de la impresora
# dueo root, grupo lp, permisos -rwxr-xr-x
#
echo
------------------------------------------------>/tmp/testlp.out
echo Prueba de impresora: >>/tmp/testlp.out
date >> /tmp/testlp.out
echo
------------------------------------------------>>/tmp/testlp.ou
t
cat - >> /tmp/testlp.out

Probar la impresora testigo.


Asegurarse de tener disponible el sistema de impresin, o arrancarlo como se
indica en la seccin "Scripts de control". Para verificar el funcionamiento de la
impresora testigo, "imprimimos" un pequeo archivo cualquiera; el contenido de
la "impresin" estar en el archvo /tmp/testlp.out, segn lo fijamos en el filtro.
Los siguientes comandos "imprimen" el archivo /etc/resolv.conf en la impresora
testigo, visualizando luego el archivo de salida hacia donde se ha redirigido la
impresin.

lpr -P lpprueba /etc/resolv.conf


cat /tmp/testlp.out

Debe aparecer en pantalla el encabezado indicado en el filtro y luego el archivo


que mandamos imprimir.

Impresoras para PostScript.


Las impresoras comunes no imprimen PostScript, pero la mayora de las
aplicaciones Unix producen la salida impresa en PostScript. Una impresora
comn no PostScript puede imprimir PostScript si colocamos un "filtro" a su
entrada. El programa capaz de realizar esta conversin se llama GhostScript
(gs).

En este ejemplo instalaremos una impresora Epson Stylus Color 400 de chorro
de tinta; su directorio de spool se llamar stc (STylus Color) y estar, como
todos los directorios de spool de impresoras, bajo /var/spool/lpd. Para el mismo
dispositivo fsico crearemos dos "impresoras" de nombre diferente, con
diferente resolucin, pero dirigidas al mismo dispositivo fsico, a esta nica
impresora Stylus Color. Ellas sern stcnor, de resolucin 360x180 puntos por
pulgada (calidad normal), y stcecon, de 180x180 puntos por pulgada (calidad
borrador o econmica).

Directorio de spool.
Crear un directorio de spool /var/spool/lpd/stc para estas impresoras. Aunque
crearemos dos impresoras, basta un solo directorio; la impresora como
dispositivo fsico es una sola, aunque la manejemos como dos impresoras
diferentes con diferentes resoluciones.

Archivos de filtro.
Crear los archivos de filtro en el directorio de la impresora, /etc/lpd/stc. La
impresora de chorro de tinta Epson Stylus Color 400 es una de las varias
manejadas por el controlador de GhostScript de nombre "stcolor"; para otras
impresoras ser preciso colocar el controlador correspondiente, listado en la
documentacin del paquete gs. Los archivos de filtro se llaman gsfilter.nor para
calidad normal, gsfilter.econ para calidad borrador; los nombres son arbitrarios.

gsfilter.nor: para impresora Epson Stylus 400 calidad normal. El texto con el
comando gs debe ir todo en una lnea.
#!/bin/sh
/usr/bin/gs -q -sDEVICE=stcolor -sPAPERSIZE=a4 -dNOPAUSE
-r360x180 -sOutputFile=- /usr/lib/ghostscript/5.10/stcolor.ps -

gsfilter.econ: para impresora Epson Stylus 400 calidad borrador (econmica).


El texto con el comando gs debe ir todo en una lnea.
#!/bin/bash
/usr/bin/gs -q -sDEVICE=stcolor -sPAPERSIZE=a4 -dNOPAUSE
-r180x180 -sOutputFile=- /usr/lib/ghostscript/5.10/stcolor.ps -

Entradas en archivo /etc/printcap.


Crear la entrada para ambas impresoras en el archivo /etc/printcap.

stcnor|stylus color normal: \


:lp=/dev/lp0: \
:sd=/var/spool/lpd/stc: \
:af=/var/log/lp-acct:\
:lf=/var/log/lp-errs:\
:if=/var/spool/lpd/stc/gsfilter.nor:\
:mx#0:\
:sh:

stcecon|stylus color normal: \


:lp=/dev/lp0: \
:sd=/var/spool/lpd/stc: \
:af=/var/log/lp-acct:\
:lf=/var/log/lp-errs:\
:if=/var/spool/lpd/stc/gsfilter.econ:\
:mx#0:\
:sh:

Probar las impresoras creadas.


Estas impresoras estn configuradas con un filtro gs para recibir archivos en
PostScript. Para probarlas, deber usarse un programa tal como Mozilla,
Nestcape, Opera, GV u otro. En la seccin de configuracin de impresoras de
cada uno de estos programas deber ir un comando de impresin adecuado, uno
de estos dos:
lpr -P stcecon
lpr -P stcnor
La sintaxis quedar clara al ubicarse la seccin de configuracin del programa
correspondiente.

Monitoreo del sistema de impresin.


Los comandos lpc, lpq y lprm permiten monitorar el estado de impresoras,
mostrar la cola de impresin y eliminar un trabajo a imprimir de la cola de
impresin.

lpc status
muestra el estado de todas las impresoras.
lpc help
da una lista de los comandos aceptados.
lpq -P stcecon
muestra la cola de impresin en la impresora indicada:
stcecon is ready and printing
Rank Owner Job Files Total Size
active root 285 /etc/resolv.conf 107 bytes
1st root 286 /etc/hosts 122 bytes

Cada impresora tiene su propia cola de trabajos; es siempre necesario indicar el


nombre de la impresora referida.
lprm -P stcecon 285
elimina el trabajo de impresin de nmero indicado en la impresora indicada.
Ser preciso ejecutar primero lpq para obtener este nmero. Para eliminar un
trabajo es preciso ser el dueo (quien lo envi) o el superusuario. Si no se indica
nmero se eliminan todos los trabajos de esa impresora.

Scripts de control.
/etc/init.d/lpd start
arranca el sistema de impresin.
/etc/init.d/lpd stop
detiene el sistema de impresin.
El sistema de impresin se maneja a travs del demonio lpd. El comando
ps auxw | grep lpd
permite averiguar si existe un proceso lpd corriendo; si lo hay, aparecer una
lnea similar a sta:
root 206 0.0 0.2 1352 560 ? S 09:42 0:00
/usr/sbin/lpd
5.9. Automatizacin de tareas

Tareas peridicas.
Automatizan la gestin del sistema.
Fiabilidad. Se llevan a cabo a pesar de posibles olvidos o descuidos
por parte del administrador.
Se ejecutan en el momento preciso (da y hora).
Ayudan o detectan situaciones de error.
Facilitan el control del sistema.
Posibilidad de tareas por usuario.
Programas: cron y at.

Usos de las tareas peridicas


Generacin de informes peridicos (fin de mes, etc.).
Estado de las comunicaciones.
Borrado de ficheros temporales (/tmp, /var/tmp).
Tareas de respaldo de informacin.
Control de los procesos presentes en el sistema.
Parada del sistema segn horarios de trabajo.
Recordatorios.
Descarga de software en horarios de poco trfico.

cron
Es uno de los demonios esenciales de un sistema, siempre est arrancado
(/usr/sbin/cron).
Se encarga de ejecutar tareas programadas para un determinado momento, bajo
la identidad del usuario que lo program y con precisin de 1 minuto.
Se controla a travs del uso de determinados ficheros de configuracin (solo
para el superusuario) y mediante el uso de la orden crontab (para todos los
usuarios).

crontab
crontab [ -u usuario ] fichero
crontab [ -u usuario ] { -l | -r | -e }
-u usuario: disponible solo para root, permite ver o modificar las tareas
programadas para otro usuario.
fichero: Reemplaza la lista de tareas programadas por las que aparezcan en el
fichero indicado.
-l: Muestra la lista de todas las tareas programadas.
-r: Elimina todas las tareas programadas.
-e: Edita la lista de tareas programada

Ficheros de configuracin de crontab


Normalmente, la orden crontab puede ejecutarla cualquier usuario, permitiendo
que incluya tareas peridicas en el sistema, pero existen un par de ficheros de
configuracin para limitar su uso:
/etc/cron.allow y /etc/cron.deny.
/etc/cron.allow. Si existe, indica que solamente la lista
de usuarios incluidos en ese fichero (un usuario por lnea) tiene
permiso para utilizar crontab.
/etc/cron.deny. Si no existe /etc/cron.allow, y existe
este fichero, los usuarios incluidos en l no tienen permiso para
utilizar crontab.
Lista de tareas para cron
Cada tarea se especifica en una lnea diferente, en la que se indica el momento
en el que debe realizarse, y que se debe ejecutar.
Cada lnea contiene 6 campos separados por espacios:
minuto (059)
hora (023)
da del mes (131)
mes (112)
da de la semana (07). 0=7=domingo, 1=lunes, 2=martes. . .
orden a ejecutar

Formato de cada lnea en cron


Cada campo numrico (del primero al quinto de cada lnea), puede tener:
Un *, que indica todos.
Un nmero, que indica un momento exacto (4).
Lista de nmeros separadas por comas (3,4,6).
Rango de nmeros separados por guiones (3-7).
Ejemplo:
0 9,18 * * 1-5 echo "hora de comer"| wall
(ejecuta la orden de lunes a viernes a las 9:00 y a las 18:00).

Ambigedades en la especificacin del momento de ejecucin


El da en el que se ejecuta cada orden se puede indicar de 2 maneras:
da del mes (3er campo)
da de la semana (5o campo)
En caso de aparecer los dos campos (esto es, que ninguno
es *), la interpretacin que hace cron es que la orden debe
ejecutarse cuando se cumpla cualquiera de ellos.
Ejemplo:
0,30 * 13 * 5 echo Viernes 13! | wall
(ejecuta la orden cada media hora, todos los viernes y adems
todos los das 13 de cada mes).

Momentos especiales (solo Linux)


En lugar de especificar los 5 primeros campos, se puede usar una cadena de las
siguientes:
@reboot: Se ejecuta al iniciarse la mquina.
@yearly: Se ejecuta una vez al ao.
@monthly: Se ejecuta una vez al mes.
@weekly: Se ejecuta una vez por semana.
@daily: Se ejecuta una vez al da.
@hourly: Se ejecuta una vez por hora.

Entorno de ejecucin de las tareas


Cada tarea se ejecuta por una shell /bin/sh.
Para cada tarea estn disponibles algunas variables de entorno,
como SHELL, LOGNAME y HOME.
La entrada est ndar de cada tarea se redirige de /dev/null, la salida estndar y la
de error se envan por correo electrnico al propietario de la tarea.

cron para el administrador


La orden crontab almacena la lista de tareas para cada usuario en el fichero
/var/spool/cron/crontabs/usuario.
cron examina peridicamente estos ficheros, y adems el contenido del fichero
/etc/crontab, que tiene una lista de tareas peridicas de administracin.
Estas tareas peridicas de administracin tienen el mismo formato que la lista de
tareas de usuarios, pero con un campo ms: el nombre del usuario que ha de
levar a cabo la tarea.
Ejemplo:
0 8 * * * root /etc/init.d/gdm restart
(reinicia el servicio gdm, como usuario root, todos los das a las 8:00)
Adems, lee todos los ficheros del directorio /etc/cron.d
como extensiones del /etc/crontab (esto es, contienen tambin el campo
usuario).
Normalmente, el contenido del fichero /etc/crontab es siempre el mismo, y
similar a este:
17 * * * * root run-parts --report /etc/cron.hourly
25 6 * * * root run-parts --report /etc/cron.daily
47 6 * * 7 root run-parts --report /etc/cron.weekly
52 6 1 * * root run-parts --report /etc/cron.monthly
Esto es, ejecuta con la periodicidad indicada todos los scripts que se encuentren
en esos directorios.
Si algn paquete del sistema necesita realizar algn tipo de tarea peridica,
aade scripts al directorio /etc/cron.* adecuado, o, si sus necesidades no se
ajustan a ninguno de ellos, aaden un fichero con formato de cron al directorio
/etc/cron.d.

anacron
Las tareas peridicas indicadas en los directorios /etc/cron.daily,
/etc/cron.weekly. . . , suelen ser tareas rutinarias del sistema que conviene
realizar de vez en cuando, como limpiar los temporales, gestionar colas de
correo, realizar back-ups, etc.
Estas tareas se realizan en horas de poco uso de la mquina (de madrugada).
Pero es habitual que haya mquinas que no estn encendidas 24 horas al da:
estaciones de trabajo que se encienden y apagan para cada uso, y no suelen estar
encendidas en el momento planificado para llevar a cabo estas tareas peridicas.
anacron: Servicio que se inicia al encender la mquina, se da cuenta de que
tareas peri odicas deberan haberse realizado desde la ltima vez que se apag
esta, y las realiza.

at
El demonio cron se utiliza para realizar tareas peridicas, que se realizan en un
momento determinado y se vuelven a realizar pasado un perodo de tiempo.
at y atd se utilizan para ejecutar una tarea concreta en un instante determinado,
y no volver a ejecutarla ms.
atd es un demonio, que siempre est arrancado, y se encarga de ejecutar las
tareas programadas.
at se ejecuta para aadir tareas nuevas a la lista de tareas por realizar.
atq lista las tareas pendientes para el usuario que las ejecuta.
atrm elimina una tarea de la lista de tareas pendientes.

Ficheros de configuracin de at
Son similares a los de crontab:
/etc/at.allow. Si existe, indica que solamente la lista de usuarios incluidos en
ese fichero (un usuario por lnea) tiene permiso para utilizar at, atq y atrm.
/etc/at.deny. Si no existe /etc/at.allow, y existe este fichero, los usuarios
incluidos en l no tienen permiso para utilizar at, atq y atrm.
Si ninguno de los dos ficheros existe, solo el superusuario puede
utilizar estas rdenes.
Normalmente, at.allow no existe, y at.deny es un fichero
vaco, lo cual permite el uso de at para todos los usuarios del sistema.

Uso de at
at fecha/hora. Lee ordenes de la entrada estndar, para que se realicen en la
fecha/hora especificadas.
fecha/hora puede ser:
HH[:]MM[am|pm] [Mes da]
now, midnight, noon, teatime, today o tomorrow.
fecha/hora + nmero (minutes,hours,days,weeks)
Ejemplos:
1550 Feb 14 + 3 days
10am Jul 31
1am tomorrow

5.10. Adicin y compilacin nuevos programas.


Mtodos de instalacin
A la hora de instalar software adicional a la distribucin que instalemos nos
podemos encontrar con varios sistemas de paquetes. Existen, a grandes rasgos,
cuatro sistemas de paquetes en todas las distribuciones de Linux: RPM, DEB,
TGZ y EBUILD. Los tres primeros son binarios (ver la seccin de nombre Los
paquetes binarios en Captulo 1), y el cuarto se trata de meta-paquetes
Los paquetes binarios contienen el software ya en cdigo de mquina (a
excepcin de los Source RPM y dems que sern tratados ms tarde), y pondrn
los programas y ficheros de configuracin en el sitio adecuado del rbol de
directorios para que los otros paquetes puedan encontrarlos. Los sistemas de
paquetes binarios se apoyan en una "base de datos" que guarda qu paquetes estn
instalados y cules no, la versin de estos, etc... As, cuando instalamos un
paquete binario, tal como un RPM o un DEB, adems de crearse los ficheros
necesarios para que el software pueda funcionar, se aade a esta base de datos una
entrada diciendo que el paquete ha sido instalado y asimismo se guarda su nmero
de versin. Algo parecido (pero no igual) ocurre con los ebuilds de Gentoo.
Conforme trates con estos sistemas de paquetes te podr ocurrir que los datos de
la base de datos de paquetes no coincidan con lo que realmente hay en la mquina.
Esto puede ocurrir mediante el borrado accidental de ficheros sin desinstalar
adecuadamente un paquete, o conflictos de versiones.
En cualquier caso dispones de opciones que te permiten instalar o desinstalar
paquetes incluso si la informacin de la base de datos de paquetes no es del todo
coherente. Adems, existen comandos para "reconstruir" o arreglar la base de
datos de paquetes. Las pginas man de los programas que se mencionan a
continuacin te aportarn toda la informacin que necesitas al respecto.
Adems de los paquetes de nuestra distribucin disponemos de unos paquetes un
poco especiales.
Estos paquetes contienen el cdigo fuente preparado para compilarse e instalarse
en cualquier distribucin.
Por lo general no es difcil instalarlos pero puede dar bastante dolor de cabeza las
primeras veces. Con estos paquetes no todo son penurias, tambin tienen sus
ventajas. Entre las ventajas podemos destacar el control que adquirimos sobre la
instalacin del paquete y sus binarios, adems de la posibilidad de hacer algunos
cambios en el mismo si nos interesa (aplicando parches). Instalar software de este
modo no implica que se guarde informacin en una base de datos de lo que se ha
aadido al sistema como ocurre con los sistemas anteriores, por lo que si el
paquete de cdigo fuente no dispone de una opcin para desinstalarlo, tendremos
que borrar los ficheros a mano uno a uno en caso de querer quitar el software.
Esto no es muy comn ni necesario en la mayora de los casos, porque aunque
instalemos un software, mientras no lo estemos ejecutando "no nos molesta", el
espacio ocupado en disco suele ser muy pequeo.
Escogiendo nuestro mtodo (binarios vs. fuentes)
Como se ha nombrado antes, hay que decidir qu mtodo vamos a utilizar. En
principio siempre deberemos optar por los binarios de nuestra distribucin a no
ser que sepamos realmente lo que hacemos.
Compilar un programa desde las fuentes puede sernos til en mquinas donde se
necesite un rendimiento extremo o en casos en que necesitemos aplicar parches al
paquete.
Binarios
Si hemos escogido este mtodo, debemos saber que las utilidades para manejar los
paquetes varan segn la distribucin que tengamos.
Si tenemos RedHat
En RedHat podemos instalar nuestros paquetes de dos formas distintas la primera
pasa por bajar el paquete y sus dependencias (un paquete puede necesitar que
otros paquetes estn instalados antes que l) de internet e instalarlas con el
comando rpm, y la otra forma es instalar una utilidad llamada apt-rpm que bajar
automticamente el programa y las dependencias que se necesiten y las instalar
automticamente.

Instalando RPMs con rpm


No se pretende que este manual sutituya ni mucho menos a cualquier
documentacin escrita de rpm. rpm es extenso y no se puede tratar en una
subseccin de este manual; lo mejor es que le eches un vistazo a la pgina del
manual si necesitas algo ms avanzado. Veamos unos ejemplos:
# rpm -ivh mutt-1.4.1-1.i386.rpm
# rpm -Uvh mutt-1.5.1-1.i386.rpm
Instala el paquete mutt-1.4.1. Para que funcione tienes que tener el RPM en el
mismo directorio en el que se ejecuta el comando.
En caso de que mutt ya estuviera instalado en el sistema, lo mejor es correr este
comando puesto que se mantendrn algunos ficheros de configuracin. Se trata
del comando para actualizar software.
Otras opciones tiles a la hora de instalar con rpm son --force y --nodeps. La
primera es til para reinstalar un paquete cuando el sistema nos dice que est
instalado pero falta algn fichero; y la segunda sirve para que rpm instale el
paquete ignorando sus dependencias. Esto ltimo resultar en que el software no
funcionar en la mayora de los casos, pero en el futuro podrs descubrir su
utilidad por t mismo. Estas dos opciones se pueden aadir en conjunto con las ya
vistas para instalar o actualizar un paquete.
Tanto para RedHat como para distribuciones basadas en esta, es posible encontrar
los RPMs en los discos de instalacin bajo el directorio RedHat/RPMs/,
sustituyendo RedHat por el nombre de la distribucin si no se trata de RedHat
Linux.
Un sitio web muy comn es rpmfind.net (http://www.rpmfind.net). All se puede
encontrar un buscador de paquetes RPM que puede sacarnos alguna vez de un
apuro si necesitamos resolver alguna dependencia rara. No obstante, debemos
tener cuidado con lo que instalamos, es recomendable leer las consideraciones de
seguridad al final de este captulo.
Puedes averiguar si un paquete est instalando con el comando rpm -q paquete,
donde paquete es el nombre del paquete sin versin, por ejemplo rpm -q
sendmail nos dira si sendmail est instalado en nuestro sistema.

Instalando RPMs con apt-rpm


Lo primero ser bajar e instalar el software necesario de http://apt.freshrpms.net
(http://apt.freshrpms.net) , para despues instalarlo.
Una vez tengas instalado apt debes modificar el fichero /etc/apt/sources.list para
que quede ms o menos as (dependiendo la versin de tu distribucin):
# Red Hat Linux 9
rpm http://ayo.freshrpms.net redhat/9/i386 os updates freshrpms
rpm-src http://ayo.freshrpms.net redhat/9/i386 os updates freshrpms
# Red Hat Linux 8.0
#rpm http://ayo.freshrpms.net redhat/8.0/i386 os updates freshrpms
#rpm-src http://ayo.freshrpms.net redhat/8.0/i386 os updates freshrpms
Una vez est todo bien tendremos a nuestra disposicin (entre otros) estos
comandos:
# apt-get update
# apt-get install paquete
# apt-get upgrade
# apt-cache search palabraclave
Esto actualiza la lista local de paquetes disponibles. Cada vez que vayas a instalar
un nuevo paquete es interesante que ejecutes este comando.
Esto instala un nuevo paquete. APT bajar todas las dependencias y las instalar.
Simplemente el nombre del paquete, sin versiones ni extensiones.
Este comando actualiza todos los paquetes que haya nuevos en internet.
Previamente tendremos que haber actualizado nuestra lista local con apt-get
update.
Este comando ofrecer una lista de paquetes con una pequea descripcin que
coincidan con el criterio de bsqueda palabraclave .
Si queremos actualizar un solo paquete y sus dependencias, primero
actualizaramos la lista local
de paquetes, y despus haramos apt-get install paquete (sin nmero de versin).
Si existiese una versin ms reciente de este paquete se instalara.
Tanto rpm como apt-rpm modifican la misma base de datos de paquetes RPM
cuando instalan o desinstalan paquetes. La pgina man de rpm puede darte ms
informacin acerca de las opciones disponibles.
Hay una gua ms detallada de esto en: http://linuxparatodos.com/linux/intro-apt-
rpm/
(http://linuxparatodos.com/linux/intro-apt-rpm/)

Si tenemos Debian
Si nuestra distribucin es Debian o alguna basada en esta, lo mejor que podemos
hacer es utilizar apt-get para instalar software. Esta distribucin utiliza tambin
paquetes binarios, pero son distintos de los RPMs y se llaman comnmente DEB.

Instalando DEBs con dpkg


Aunque esta manera de instalar software en Debian es un poco desaconsejada
mostrar el comando para instalar un paquete .deb que hayamos descargado de
internet. dpkg tiene un cometido similar al de rpm en las distribuciones basadas
en RedHat a diferencia de que dpkg como es lgico slo trabaja con paquetes
binarios DEB.
# dpkg -i paquete.deb

Instalando DEBs con apt-get


El caso de apt-get es idntico al de apt-rpm. Los comandos que podremos usar
son (entre otros):
# apt-get update
# apt-get install paquete
# apt-get upgrade
# apt-cache search palabraclave
Esto actualiza la lista de paquetes local. Cada vez que vayas a instalar un nuevo
paquete es interesante que ejecutes este programa.
Esto instala un nuevo paquete. APT bajar todas las dependencias y las instalar.
Simplemente el nombre del paquete, sin versiones o extensiones.
Este comando actualiza todos los paquetes que haya nuevos en internet.
Previamente tendremos que haber actualizado nuestra lista local con apt-get
update.
Este comando ofrecer una lista de paquetes con una pequea descripcin que
coincidan con el criterio de bsqueda palabraclave .
Exactamente igual que ocurra con apt-rpm, apt-get nos permite actualizar un
paquete previa actualizacin de nuestra lista local con apt-get install paquete.
Tambin, el fichero /etc/apt/sources.list contiene las direcciones e informacin de
dnde bajar los paquetes.
Es muy comn en las distribuciones Debian (tambin lo es con apt-rpm pero no
tanto), aadir nosotros mismos lneas al sources.list para poder instalar mediante
apt paquetes que no estn en las fuentes oficiales (nuevas versiones
generalmente). Despus de aadir (o quitar) lneas al sources.list se debe
actualizar la lista de paquetes local.

La base de datos de paquetes DEB


Tanto la instalacin/desinstalacin de paquetes con dpkg como con apt, registran
sus cambios en la misma base de datos de paquetes Debian. dpkg es el programa
que permite hacer distintas operaciones con esta base de datos. Su pgina man te
dar ms detalles.

Si tenemos Slackware
Los paquetes en Slackware usan un sistema bastante simple. Un paquete de
Slackware es un paquete tar comprimido con gzip (Ver Captulo 12).
Descomprimiendo a mano uno de estos paquetes en el directorio raz (/) los
contenidos de aqul se distribuiran adecuadamente en el sistema (por ejemplo los
binarios en /usr/bin, los ficheros de configuracin en /etc ...). Pero adems del
software en s estos paquetes contienen informacin extra, til para las utilidades
que gestionan los paquetes binarios de esta distribucin.
Esto no debe llevar a confusin con los paquetes de cdigo fuente; un paquete
binario de Slackware es justamente eso, aunque venga comprimido como
habitualmente descargamos los paquetes de cdigo fuente.
La nomenclatura de los paquetes es del tipo nombre-version-plataforma-
IDcompilacin.tgz
por ejemplo cdrdao-1.1.7-i386-1.tgz

Aviso
Las utilidades bsicas de paquetes de Slackware NO GESTIONAN
DEPENDENCIAS ENTRE PAQUETES, esto es, no se quejarn si se instala un
paquete que depende de otro que no est instalado. Obviamente el software del
primer paquete no funcionar.
Pero es posible gestionarlas con otras utilidades descritas en la seccin la seccin
de nombre Gestin de dependencias. Adems, como irs descubriendo si usas
habitualmente Slackware, esto no es una desventaja en todos los aspectos como
pudiera parecer al principio.
Instalando paquetes normalmente
La utilidad installpkg instala un paquete en el sistema. Un ejemplo sera,
suponiendo que hemos descargado el fichero de Internet o estamos en el directorio
del CDROM donde aqul se encuentra:
# installpkg cdrdao-1.1.7-i386-1.tgz
Opciones interesantes para esta rden son:
-warn no instala el paquete pero nos informa de lo que pasara si lo instalamos
(ficheros nuevos o sobreescritos).
-r instalar los paquetes de el directorio de trabajo y adems recursivamente los
que haya en directorios inferiores que coincidan con el nombre de archivo que,
adems, puede contener los wildcards ya conocidos.
Ms opciones de esta orden en su pgina man
Actualizando paquetes
Si tenemos un paquete instalado y nos hemos hecho con una versin actualizada,
debemos usar la orden upgradepkg <nombrefichero> para actualizar al nuevo
nuestro sistema.

Eliminando paquetes
La orden removepkg seguida del nombre del paquete a quitar del sistema (puede
ser slo el nombre, sin versin, pero tambin el nombre del fichero completo que
se us para instalarlo -til si hay varias versiones-).
Del mismo modo que installpkg, aqu tambin disponemos de la opcin -warn
que nos permite ver qu cambiara en nuestro sistema sin desinstalar el paquete
realmente.
pkgtool, utilidad con mens
Ejecutando esta orden sin argumentos en un shell como root, obtendremos un
men con diversas opciones que hablan por s solas. Nos permitir intuitivamente
instalar, desinstalar, actualizar, ver informacin o los paquetes instalados, etc.
Conversor de paquetes RPM a TGZ
Esta posibilidad nos ser til si tenemos un paquete RPM que no tiene muchas
dependencias (porque si las tiene, las tendremos que satisfacer copiando libreras
o similar manualmente, y las rutas pueden ser distintas entre las distribuciones) y
no podemos conseguir un paquete Slackware y adems no nos apetece compilarlo.
Si las condiciones anteriores se cumplen, la orden rpm2tgz fichero.rpm nos
generar un paquete .tgz que podremos instalar normalmente con las utilidades
concidas.
Gestin de dependencias
Internamente Slackware s que conoce que paquetes dependen de cules otros, as
que hay utilidades que nos permiten instalar y desinstalar gestionando las
dependencias entre paquetes para que nosotros nos olvidemos de ello.
Si no la mejor, una de las mejores es swaret (http://swaret.sourceforge.net). Para
hacerla funcionar, simplemente instala el paquete que puedes descargarte desde la
direccin anterior y edita el fichero /etc/swaret.conf
Lo nico que hay que ajustar en este fichero es el nmero de versin de Slackware
que se tiene, y luego descomentar (borrar los #) de las lneas que comienzan por
ROOT que nos interesen. Estas lneas representan fuentes desde las cuales se
descargarn los paquetes que se quieran instalar (y sus dependencias).
A continuacin de lo anterior se pueden aadir repositorios de paquetes no
oficiales (como Linux-Packages (http://www.linuxpackages.net)) mediante las
lneas REPOS_ROOT. Para ms opciones consultar los comentarios del resto del
fichero.
Para instalar un paquete:
# swaret --update
# swaret --install cdrecord
La primera lnea actualiza el listado de paquetes con los ms recientes y la
segunda descarga e instala el paquete cdrecord. Si hay varias versiones de este
paquete disponibles se nos preguntar una por una si deseamos o no instalarla.
Hay muchas ms cosas que esta herramienta puede hacer, hay ms informacin en
su pgina man.

SlackBuilds y creacin casera de paquetes


Uno de los principales problemas de instalar paquetes de cdigo fuente es que en
algunos casos puede no ser inmediata su desinstalacin. Una posible solucin es
compilar el paquete de cdigo y a partir de estos binarios crear un paquete
Slackware "casero".
Este proceso se escapa al nivel del resto de este captulo y viene detallado
perfectamente en LinuxPackages.
net (http://www.linuxpackages.net) en los documentos Building Packages y
ThePerfect Package; y hay algunas notas en Slackware Linux Essentials
(http://www.slackware.com/book), libro oficial. Al final la utilidad makepkg (ver
su pgina man) se utiliza para crear el paquete.
Es muy habitual que esos pasos se sintenticen en un script de shell (distinto para
cada paquete).
Son lo que se conocen como SlackBuilds y es de este modo como se crean los
paquetes oficiales de Slackware Linux. Se pueden encontrar algunos de ejemplo
en LinuxPackages y tambin en el directorio de fuentes ("source") de las releases
de Slackware Linux.
Antes de disponerte a crearte el tuyo busca bien no sea que alguien haya hecho ese
trabajo por t (es bastante probable).
Si tenemos Mandrake
Esta distribucin trae consigo una utilidad propia, urpmi, que sirve para manejar
las instalaciones de software. Mandrake guarda gran similitud con Red Hat, y de
hecho est basada en ella. As, urpmi es el equivalente al apt-get de Red Hat, y
como en el caso de Red Hat, urpmi instala automticamente el paquete elegido y
resuelve sus dependencias. Adems, sigue siendo posible instalar el paquete
seleccionado y sus dependencias a mano con la utilidad rpm ya que Mandrake la
trae de serie.
Instalando RPMs con rpm
Aqu nos encontramos en una situacin exctamente igual a la de Red Hat. Para
instalar y actualizar paquetes, podemos usar:
# rpm -ivh mutt-1.4.1-1.i386.rpm
# rpm -Uvh mutt-1.5.1-1.i386.rpm
Instala el paquete mutt-1.4.1. Para que funcione tienes que tener el RPM en el
mismo directorio en el que se ejecuta el comando.
En caso de que mutt ya estuviera instalado en el sistema, lo mejor es correr este
comando puesto que se mantendrn algunos ficheros de configuracin. Se trata
del comando para actualizar software.
El rpm de Mandrake (as como el de otras distros) aceptar exactamente las
mismas opciones que estn disponibles en el rpm de RedHat Linux.

Instalando RPMs con urpmi


Podremos apreciar la similitud de funcionamiento entre las distintas utilidades. El
caso de urpmi es casi idntico al de apt-get, pero aqu las fuentes
predeterminadas son los CDs de instalacin. Los comandos que podremos usar
son, entre otros:
# urpmi.update -a
# urpmi paquete
# urpmi --auto-select
Esto busca actualizaciones dentro de las fuentes de software que se encuentren en
unidades no removibles. Si adems de los CDs de fuentes que trae por defecto
mandrake, tiene alguna fuente que pueda haber sido actualizada, es interesante
ejecutar este comando antes de instalar un paquete.
Este instala un nuevo paquete. urpmi buscar entre las fuentes donde conseguir
el paquete y sus dependencias. Si necesita conseguir algn paquete de una unidad
removible, como puede ser el CDROM, nos pedir que insertemos el disco
correcto.
Este comando actualiza todos los paquetes que haya nuevos listados en las
fuentes.

Aadiendo una nueva fuente de software


A medida que pasa el tiempo, van saliendo nuevas versiones de paquetes
constantemente, y seguramente nos interesar actualizar algunos paquetes
concretos, por ejemplo, aquellos que ms utilicemos.
Para ello Mandrake tiene una rama llamada en desarrollo que es la que cuenta con
las versiones ms nuevas de los paquetes disponibles, aunnque sean ms
propensos a contener errores al tratarse de una versin de Mandrake en desarrollo;
Mandrake Cooker. Mandrake dispone de diferentes mirrors o servidores rplica
(espejos) que contienen una lista actualizada de los paquetes de Mandrake
Cooker, que nosotros usaremos como fuente de software.
La sintaxis del comando para aadir una nueva fuente de software es la siguiente:
# urpmi.addmedia [opciones] <nombre> <direccin> [with hdlist.cz]
No vamos a entrar en que opciones se le pueden dar como argumento al comando
urpmi.addmedia
pues se sale fuera de contexto. El nombre es como llamaremos a esta nueva fuente
de software, y la direccin es el lugar donde se encuentra localizada la misma.
Opcionalmente, podemos indicar explcitamente cual es el fichero que contiene la
lista de los paquetes que se hallan dentro del repositorio de software.
El fichero hdlist.cz es por defecto el que conitene la lista de paquetes del
repositorio, pero normalmente existe una lista de un tamao increiblemente menor
que nos sirve para el mismo fin pero que nos ahorrar tiempo de descarga si la
fuente de software se encuentra en Internet, y es un archivo normalmente llamado
synthesis.hdlist.cz.
Con todo, el comando para aadir una nueva fuente de software mandrake cooker
podra ser el siguiente, cambiando si quieres el servidor espejo por el que
prefieras:
# urpmi.addmedia ftp-cooker
ftp://ftp.ciril.fr/pub/linux/mandrake-devel/cooker/cooker/Mandrake/RPMS
with synthesis.hdlist.

Creando nuestro propio repositorio de software


Posiblemente necesitemos descargar e instalarnos paquetes RPM que ni siquiera
se encuentren dentro del repositorio de software de Mandrake Cooker. Para eso
hay una solucin: aadir una nueva fuente de software localizada en un directorio
de nuestro disco duro, que es donde meteremos todos aquellos paquetes que nos
descarguemos.
De esta manera luego podremos manejar estos paquetes mediante urpmi.
Pues bien, los pasos para crear nuestro repositorio de software son los siguientes:
# mkdir -p /usr/local/repositorio
# cd /usr/local/repositorio
# wget -c http://belnet.dl.sourceforge.net/sourceforge/gaim/gaim-0.66-
1mdk9.1.i586.rpm
# genhdlist
# urpmi.addmedia repositorio_local file://usr/local/repositorio with
synthesis.hdlist.cz # urpmi gaim
Creemos el directorio donde se situar el repositorio de software y nos situamos
dentro de l.
Naturalmente si ya tenemos un directorio para el repositorio no necesitamos
crearlo, pero si entrar dentro de l.
Para seguir necesitamos tener algn paquete RPM dentro del repositorio de
software, as que optamos por bajarnos el paquete gaim (para la mensajera
instantnea), pero puedes o meter paquetes que ya tienes bajados en otro lugar, o
optar por descargar otro(s) paquetes(s) de software en formato RPM, eso s.
Este paso es muy importante, ya que aqu creamos la lista de paquetes que urpmi
necesita para poder usar este repositorio como fuente de software.
Has de saber que si cambias algo dentro del repositorio (aades, borras o
actualizas un paquete) si quieres que urpmi tenga su base de datos de paquetes
actualizada has de volver a ejecutar este comando dentro del directorio del
repositorio.
Con este comando dejamos listo y en funcionamiento nuestra flamante y completa
fuente de software a la lista de fuentes de Mandrake.
Finalmente podemos comprobar que los paquetes que tenemos en el repositorio
son visibles e instalables mediante urpmi, enhorabuena!
Si tenemos Gentoo
Instalando ebuilds del portage
Si te las has arreglado para instalar esta distribucin, es ms que probable que ya
sepas como instalar y desinstalar software, pero vamos a describirlo
superficialmente.
Podramos definir portage como el rbol o lista de paquetes disponibles para
Gentoo Linux; lo que ms o menos equivaldra a la lista de paquetes local que
nombrbamos para otras distribuciones. Si quieres instalar el ltimo software,
tendrs que actualizar esta lista:
# emerge sync
emerge es la herramienta que utilizaremos principalmente para instalar software
en Gentoo. Puedes leer su pgina man para ms detalles de los explicados aqu.
Tras introducir este comando se descargar la nueva lista de ebuilds.
Para actualizar todos los paquetes que tengan nuevas versiones, tenemos:
# emerge -up system
# emerge -u system
La primera lnea mostrar los paquetes que se actualizaran, y la segunda los
bajara y los instalara. Si queremos instalar un paquete que est en el rbol de
ebuilds (portage). Instalaremos el programa con:
# emerge paquete
Exactamente igual que ocurra con apt, emerge bajar, compilar (en su caso) e
instalar las dependencias del paquete y luego el paquete. Si queremos ver cules
son las dependencias de un determinado paquete, podemos usar la opcin -p:
# emerge -p paquete
Podemos buscar paquetes por palabras clave con la opcin -s :
# emerge -s palabraclave
Un ebuild es uno de los meta-paquetes que instalamos con emerge. Generalmente
el software ser compilado en nuestra mquina, lo que implica una gran diferencia
con los sistemas de paquetes descritos anteriormente; y es que un paquete puede
ser compilado con soporte o sin soporte para otro software distinto. Compilarlo
con soporte para este otro software, dar al paquete funcionalidades extra. La
mayora de las veces nos interesar activar el soporte de un paquete para el mayor
nmero de programas que tengamos instalados. Aqu entran en juego dos
elementos muy importantes del sistema de paquetes de Gentoo: el fichero
/etc/make.conf y la variable USE, definida en este mismo fichero. Esta variable
contendr los paquetes para los que queremos que se habilite soporte cuando
compilemos otros. Hay multitud de documentos que describen todo esto en la web
de documentacin de Gentoo Linux (http://www.gentoo.org/doc).
Por ltimo, podemos actualizar un solo paquete (y sus dependencias mediante
emerge -u paquete,
donde paquete es simplemente el nombre del paquete sin versiones ni extensiones.

Instalando ebuilds no oficiales


Si lo que queremos es instalar un paquete que no est en el arbol de Gentoo
(portage), lo primero que tendremos que hacer es ajustar la variable
PORTDIR_OVERLAY a /usr/local/portage. Para esto tendremos que editar el
fichero /etc/make.conf.
Una vez hemos ajustado la variable PORTDIR_OVERLAY, creamos el
directorio, la categora y corremos unos comandos que son necesarios para evitar
instalar programas troyanizados. Se supone que queremos instalar ssmtp que est
en la categora net-mail.
# mkdir -p /usr/local/portage
# cd /usr/local/portage
# mkdir -p net-mail/ssmtp/files
# cd net-mail/ssmtp
# cp /donde/este/ssmtp-2.60.3.ebuild
# ebuild ssmtp-2.60.3.ebuild digest
# ACCEPT_KEYWORDS="~x86" emerge ssmtp
Creamos el directorio donde pondremos los ebuilds y cambiamos all
Creamos la categora y el directorio del paquete y cambiamos a este ltimo.
Adems copiamos all el ebuild.
Este paso es muy importante, se crean unos ficheros con hashes md5 para evitar
que instalemos programas troyanizados y cosas as.
Con este comando finalmente portage instala el paquete en cuestin.

Caso especial, alien


Hay ocasiones en que un paquete de software no est disponible para el sistema de
paquetera de nuestra distribucin. En estos casos la alternativa a usar tiene
nombre propio y se llama alien. Alien es un programa que transforma los paquetes
de un sistema a otro.
Como ejemplo generaremos un RPM a partir de un DEB
# alien --to-rpm mutt-1.5.4.deb
Opcionalmente se le puede pasar el flag -i para que alien instale el paquete
generado automticamente.
Alien se encuentra en: http://kitenet.net/programs/alien/
(http://kitenet.net/programs/alien/)

Fuentes
En caso de que vayamos a compilar un programa por nuestra cuenta lo mejor es
que leamos los ficheros de ayuda README e INSTALL del paquete. Para
descomprimirlo haremos (suponiendo el archivo de fuentes descargado en el
directorio actual):
# tar zxf paquete-version.tar.gz
Si el paquete es un .tar.bz2 haremos:
# tar jxf paquete-version.tar.bz2
Los pasos "genricos" son:
# ./configure
# make
# make install
Pero como las cosas pueden cambiar entre unos paquetes y otros lo mejor que
podemos hacer es leernos los ficheros de documentacin que acompaen a dicho
programa.

Desinstalando lo instalado
Binarios
En las diferentes sub-secciones pondremos el comando genrico que hay que
ejecutar si queremos desinstalar un paquete que ya est instalado. A veces se nos
avisar que otros paquetes dependen de el paquete que queremos quitar; en ese
caso, lo ms sencillo es quitar estos paquetes primero y despus desinstalar el que
queramos quitar.

RPMs
# rpm -evh paquete
En caso de usar apt-get para RPMs tambien disponemos del comando:
# apt-get remove paquete
DEBs
# apt-get remove paquete
TGZs
# removepkg paquete
EBUILDs
# emerge -C paquete
Fuentes
En el directorio donde se descomprimieron las fuentes ejecutamos:
# make uninstall
6. Administracin de redes.
6.1. Familia de Protocolos TCP/IP.
Introduccin a las direcciones IP.

Las direcciones del Protocolo Internet (IP) estn compuestas por cuatro bytes. La
convencin es escribir estas direcciones en la denominada notacin decimal
puntuada (dotted decimal notation). De esta forma cada byte es convertido en un
nmero decimal (0-255), despreciando los ceros a la izquierda a menos que el
nmero en s sea cero. Por convencin, cada interfaz de una mquina o encaminador
tiene una direccin IP. Es vlido usar la misma IP para cada interfaz de una sola
mquina en algunas circunstancias, pero normalmente cada interfaz tiene su propia
direccin.

Las Redes basadas en Internet Procotol son secuencias contiguas de direcciones IP.
Todas las direcciones dentro de una red tienen un nmero de dgitos de en comn. A
la porcin de la red que es comn a todas las direcciones llama la porcin de la
red. Los dgitos restantes son llamados porcin de la mquina. Al nmero de
bits que comparten todas las direcciones de una red se le llama mscara de red
(netmask), y su papel es determinar qu direcciones pertenecen a la red y cules no.
Consideremos el siguiente ejemplo:

--------------------- ---------------
Direccin Host 192.168.110.23
Mscara de red 255.255.255.0
Porcin de red 192.168.110.
Porcin de Host .23
--------------------- ---------------
Direccin de Red 192.168.110.0
Direccin de Difusin 192.168.110.255
--------------------- ---------------

Cualquier direccin a la que se aplique una operacin and de bits con su mscara de
red, revelar la direccin de la red a la que pertenece. La direccin de red es por
tanto siempre el menor nmero de direccin dentro de el rango de la red y siempre
tiene la porcin de mquina codificada toda con ceros.

La direccin de difusin (broadcast) es una especial a la que escucha cada


mquina en la red adems de a la suya propia. Esta direccin es a la que se envan
los datagramas si se supone que todas las mquinas de la red lo deben recibir.
Ciertos tipos de datos, como la informacin de encaminamiento y los mensajes de
aviso son transmitidos a la direccin de difusin para que cada estacin en la red
pueda recibirlo simultneamente. Hay dos estndares usados comnmente al
respecto de la direccin de difusin. El ms ampliamente aceptado es el de usar la
direccin ms alta posible en la red. En el ejemplo anterior sera 192.168.110.255.
Por alguna razn, otras estaciones han adoptado la convencin de usar las
direcciones de red como direcciones de difusin. En la prctica no importa mucho
cual use, pero asegrese de que cada mquina en la red est configurada con la
misma.

Por razones administrativas, durante el desarrollo inicial del protocolo IP se


formaron, de forma arbitraria, algunos grupos de direcciones como redes, y estas
redes se agruparon en las llamadas clases. Estas clases proporcionan un cierto
nmero de redes de tamao estndar que pueden ser reservadas. Los rangos
reservados son:

----------------------------------------------------------
| Clase | Mscara de | Direcciones de red |
| de red | red | |
----------------------------------------------------------
| A | 255.0.0.0 | 0.0.0.0 - 127.255.255.255 |
| B | 255.255.0.0 | 128.0.0.0 - 191.255.255.255 |
| C | 255.255.255.0 | 192.0.0.0 - 223.255.255.255 |
|Multicast| 240.0.0.0 | 224.0.0.0 - 239.255.255.255 |
----------------------------------------------------------

Las direcciones que deber usar dependen de lo que vaya a hacer exactamente.
Puede que tenga que realizar varias de las siguientes actividades para obtener las
direcciones que necesite:

6.2. Configuracin de hardware de red.

Requisitos de hardware

La propaganda que surgi hace algn tiempo fue que GNU/Linux poda ejecutarse
en un 386/16 sin disco rgido y con 2 MB de memoria. Aunque esto es cierto, no es
productivo. Para que GNU/Linux funcione correctamente se tendr que contar con
un sistema 486 con disco rgido de por lo menos 500 MB con al menos 8 MB de
memoria para las aplicaciones en modo texto y 16 MB para el modo grfico.

Si se pensara poner dicha mquina como servidor, tendramos que pensar en por lo
menos 1 MB de RAM adicional por usuario en modo texto y 2 MB para modo
grafico que aunque parezca demasiado, cuando se cuenta con 100 usuarios usando
el entorno grfico se vera que la memoria se evapora como agua en el desierto.

Si el trabajo a realizar requiere de un entorno grfico como el KDE o el GNOME y


el uso de aplicaciones ofimticas como el OpenOffice, los requerimientos sern
mayores debido a que estos requiere por lo menos de 128 MB para su correcto
funcionamiento y de un Pentium de por lo menos 450 MHZ.

Un servidor sencillo de pginas WEB puede funcionar correctamente con 16 MB de


RAM en un 486 con un disco de 1 GB. Aunque la instalacin del servidor WEB
requiere de menos de 65 MB, el espacio restante es para que se cuente con espacio
suficiente para las pginas WEB que en un futuro se incorporaran. Igualmente
depende de lo que se quiera poner en el servidor.

Un tema interesante es la capacidad de almacenamiento. Existen distribuciones con


herramientas muy bsicas que ocupan menos de 20 MB de espacio en disco, pero
tambin hay distribuciones completas que ocupan ms de 1 GB de disco para todos
sus programas, y el nmero de estos va creciendo de distribucin en distribucin.

Habamos hablado antes de las compatibilidades con el hardware del sistema. Antes
de comenzar a instalar se tendr que armar una libreta o apuntador con todo el
Hardware de nuestro sistema, con sus correspondientes interrupciones y DMA as
como tambin las caractersticas que vienen puestas de fbrica; con esta lista se
buscara en el Hardware-HOWTO si es soportado y este ser el detalle que
seguiremos cada vez que se tenga que agregar un dispositivo nuevo. De esta manera
estarn seguros de que comprar y como instalarlo antes de que nos demos cuenta
que no funciona en nuestro sistema.
6.3. Configuracin de una LAN.
Instalar una mquina Linux en una red IP existente

Si desea instalar una mquina Linux en una red IP existente entonces debera
contactar con los administradores de la red y preguntarles por la siguiente
informacin:

Direccin IP del Host


Direccin IP de la red
Direccin IP de broadcast
Mscara de red IP
Direccin del encaminador (router)
Direccin del Servidor de Nombre de Dominio (DNS)

Debera configurar entonces el dispositivo de red Linux con esos detalles. No puede
inventarlos y esperar que la configuracin funcione.

Construir una nueva red propia que nunca conectar con Internet

Si est construyendo una red privada y no tiene intencin de conectar nunca esa red
a Internet entonces puede elegir las direcciones que quiera. De todas maneras, por
razones de seguridad y consistencia, se han reservado algunas direcciones IP de red
especficamente para este propsito. Estn descritas en el RFC1597 y son las que
siguen:

-----------------------------------------------------------
| DIRECCIONES RESERVADAS PARA REDES PRIVADAS |
-----------------------------------------------------------
| Clase | Mscara de | Direcciones de red |
| de red | red | |
-----------------------------------------------------------
| A | 255.0.0.0 | 10.0.0.0 - 10.255.255.255 |
| B | 255.255.0.0 | 172.16.0.0 - 172.31.255.255 |
| C | 255.255.255.0 | 192.168.0.0 - 192.168.255.255 |
-----------------------------------------------------------

Primero debera decidir cun grande quiere que sea su red para entonces elegir
tantas direcciones como necesite.

Dnde debera poner las rdenes de configuracin?

Hay unas pocas opciones a elegir para el procedimiento de arranque del sistema
Linux. Despus de que carga el ncleo, siempre ejecuta un programa llamado init.
El programa init lee entonces el fichero de configuracin llamado /etc/inittab
y comienza el proceso de arranque. Hay unos pocos init diferentes, aunque todo el
mundo est ahora convergiendo al modelo SystemV, desarrollado por Miguel van
Smoorenburg.

A pesar de que el programa init sea el mismo, la configuracin del arranque del
sistema est organizada de manera diferente en cada distribucin.

Normalmente el fichero /etc/inittab contiene una entrada que dice algo como:

si::sysinit:/etc/init.d/boot

Esta lnea especifica el nombre del fichero de guin de ejecucin (script) que
controla la secuencia de carga. Este fichero es algo as como el AUTOEXEC.BAT en
MS-DOS.
El guin de arranque suele llamar a otros, y a menudo la red se configura dentro de
alguno de stos.

La siguiente tabla puede ser usada como gua para su sistema:

----------------------------------------------------------------------
Distrib. |Interfaz Configuracin/Encaminado |Iniciacin del Servidor
----------------------------------------------------------------------
Debian | /etc/init.d/network | /etc/rc2.d/*
----------------------------------------------------------------------
Slackware| /etc/rc.d/rc.inet1 | /etc/rc.d/rc.inet2
----------------------------------------------------------------------
RedHat | /etc/rc.d/init.d/network | /etc/rc.d/rc3.d/*
----------------------------------------------------------------------

Fjese en que Debian y Red Hat usan un directorio entero de guiones que levantan
los servicios del sistema (y normalmente la informacin no se encuentra en esos
archivos; por ejemplo, el sistema de Red Hat almacena toda la configuracin del
sistema en ficheros dentro de /etc/sysconfig, de donde es leda por los guiones
de carga). Si quiere comprender los detalles del proceso de arranque del sistema, le
sugiero que examine /etc/inittab y la documentacin que acompaa a init.
Linux Journal va a publicar (o lo ha hecho ya) un artculo tratando la iniciacin del
sistema, y este documento mantendr una referencia a l tan pronto como est
disponible en la red.

La mayora de distribuciones modernas incluyen algn programa que le permita


configurar la mayora de interfaces de red. Si tiene una de stas entonces debera ver
si hace lo que usted quiere antes de acudir a la configuracin manual.

--------------------------------------------
Distrib. | Programa de configuracin de red
--------------------------------------------
RedHat | /sbin/netcfg
Slackware | /sbin/netconfig
--------------------------------------------

Creacin de las interfaces de red.

En muchos sistemas operativos Unix los dispositivos de red tienen correspondencias


en el directorio /dev. Esto no pasa en Linux. Los dispositivos de red se crean de
forma dinmica y por tanto no requieren de la presencia de ficheros de dispositivo.

En la mayora de los casos los dispositivos de red son creados automticamente por
el controlador de dispositivos mientras se inicia y localiza el hardware. Por ejemplo,
el controlador Ethernet crea interfaces eth[0..n] secuencialmente segn va
encontrado tarjetas Ethernet. La primera tarjeta que encuentra es eth0, la segunda
eth1, etc.

Sin embargo, en algunos casos, de los que slip y ppp son ejemplos notables, los
dispositivos de red son creados por la accin de algn programa de usuario. Se
aplica la misma numeracin secuencial de dispositivos, pero no se crean al arrancar.
La razn es que al contrario que con los dispositivos Ethernet, el nmero de
dispositivos ppp o slip puede variar durante la actividad de la mquina. Estos casos
sern cubiertos con ms detalle en secciones posteriores.

Configuracin de una interfaz de red.

Cuando tenga todos los programas necesarios y su direccin e informacin de red,


puede configurar la interfaz de red. Cuando hablamos de configurar una interfaz de
red nos referimos al proceso de asignar direcciones apropiadas a un dispositivo y
asignar valores adecuados a otros parmetros configurables. El programa usado ms
comnmente para hacer esto es la orden ifconfig (interface configure).

Lo normal ser usar una orden similar a la siguiente:

root# ifconfig eth0 192.168.0.1 netmask 255.255.255.0 up

En este caso estoy configurando la interfaz Ethernet eth0, con direccin IP


192.168.0.1 y mscara de red 255.255.255.0. El `up del final de la orden le dice
al interfaz que debera activarse, pero normalmente se puede omitir, ya que es el
valor por defecto. Para desactivar una interfaz, simplemente tiene que ejecutar
ifconfig eth0 down.

El ncleo asume ciertas cosas cuando configura interfaces. Por ejemplo, puede
especificar la direccin de red y difusin de una interfaz, pero si usted no lo hace,
como en mi ejemplo anterior, entonces el ncleo har una suposicin razonable de
cules deberan ser, basndose en la mscara que se le proporciona; si tampoco
indica la mscara, entonces partir de la clase de la direccin IP configurada. En mi
ejemplo, el ncleo asumir que se va a configurar una red clase C en la interfaz y
establece una direccin de red 192.168.0.0 y una direccin de difusin
192.168.0.255. Hay otras muchas opciones para la orden ifconfig. Las mas
importantes son:

up

esta opcin activa una interfaz (y es la opcin por defecto).

down

esta opcin desactiva una interfaz.

[-]arp

esta opcin activa o desactiva el uso del protocolo de resolucin de direccin


(address resolution protocol) sobre la interfaz

[-]allmulti

esta opcin activa o desactiva la recepcin de todos los paquetes multicast por
hardware. El multicast por hardware permite que varios grupos de interfaces reciban
paquetes remitidos a destinos especiales. Esto puede ser de importancia si est
usando aplicaciones como videoconferencia, pero normalmente no se usa.

mtu N

este parmetro le permite especificar la MTU del dispositivo.

netmask <direc>

este parmetro le permite asignar la mscara de la red a la que pertenece el


dispositivo.

irq <direc>

este parmetro slo trabaja con ciertos tipos de hardware, y permite especificar la
IRQ del dispositivo.
[-]broadcast [direc]

este parmetro le permite activar y asignar la acepcin de datagramas destinados a


la direccin de difusin, o desactivarla por completo.

[-]pointopoint [direc]

este parmetro le permite asignar la direccin de la mquina en el otro extremo de


un enlace punto a punto, como en SLIP o PPP.

hw <tipo> <direc>

este parmetro le permite asignar la direccin del hardware de ciertos tipos de


dispositivos de red. Esto no suele ser til para Ethernet, pero lo es para otras redes
como AX.25.

Puede usar la orden ifconfig sobre cualquier dispositivo de red. Algunos


programas de usuario, como pppd y dip configuran automticamente los
dispositivos de red al crearlos, por lo que es innecesario el uso de ifconfig con
ellos.

Configuracin de la interfaz loopback

La interfaz loopback' es un tipo especial de interfaz que le permite hacer conexiones


consigo mismo. Hay varias razones por las que podra querer esto. Por ejemplo,
puede que desee probar algn tipo de programa sin interferir con alguien ms en su
red. Por convencin, la direccin de red IP 127.0.0.1 ha sido asignada
especficamente para el dispositivo de pruebas. Por lo que da igual lo que haga su
mquina, que si abre una conexin de telnet a 127.0.0.1, siempre llegar a la
interfaz interna.

Configurar la interfaz loopback es simple y debera asegurarse de hacerlo.

root# ifconfig lo 127.0.0.1


root# route add -host 127.0.0.1 lo

Hablaremos ms de la orden route en la siguiente seccin.

6.4. Demonios y el superservidor de internet (inetd, xinetd)

Configuracin de los servidores de red y los servicios.

Los servidores de red y los servicios son aquellos programas que permiten a un
usuario remoto hacer uso de su mquina Linux. Los programas servidores escuchan
en los puertos de red. Los puertos de red son el medio de llegar a un servicio en
particular en una mquina en particular, y es as como un servidor conoce la
diferencia entre una conexin telnet y otra de FTP que le lleguen. El usuario remoto
establece una conexin de red con la mquina, y el programa servidor, el demonio
de red que est escuchando en ese puerto, aceptar la conexin y se ejecutar. Hay
dos modos de operacin para los demonios de red. Ambos se usan por igual en la
prctica. Las dos maneras son:
autnomo (standalone)

el programa demonio de red escucha en el puerto de red asignado y, cuando llega


una conexin, se ocupa l mismo de dar el servicio de red.

esclavo del servidor inetd

el servidor inetd es un demonio de red especial que se especializa en controlar las


conexiones entrantes. Tiene un fichero de configuracin que le dice qu programa
debe ser ejecutado cuando se reciba una conexin. Cualquier puerto de servicio
puede ser configurado tanto para el protocolo tcp como para udp. Los puertos son
descritos en otro fichero del que hablaremos dentro de poco.

Hay dos ficheros importantes que necesitamos configurar. Son el fichero


/etc/services que asigna nombres a los nmeros de puerto y el fichero
/etc/inetd.conf que es el fichero de configuracin del demonio de red inetd.

/etc/services

El fichero /etc/services es una base de datos sencilla, que asocia un nombre que
nosotros podamos entender, con un puerto de servicio de la mquina. Su formato es
bastante simple. Es un fichero de texto en el que cada lnea representa una entrada a
la base de datos. Cada entrada comprende tres campos separados por cualquier
nmero de espacios en blanco (espacio o tabulador). Los campos son:

nombre puerto/protocolo sobrenombres # comentario


nombre

una sola palabra que representa el servicio descrito.

puerto/protocolo

este campo est dividido en dos subcampos.

puerto

un nmero que especifica el nmero de puerto del servicio que estar disponible. La
mayora de los servicios comunes tienen asignados nmeros de servicio, y estn
descritos en el RFC-1340.

protocolo

este subcampo debe tener como valor tcp o udp.

Es importante que tenga en cuenta que el servicio 18/tcp es muy diferente del
18/udp y que no hay razn tcnica por la cual deban existir ambos. Normalmente
prevalece el sentido comn, y slo ver una entrada tcp y otra udp para el mismo
servicio si es que est disponible para ambos.

sobrenombres

(o alias) otros nombres que pueden usarse para referirse a esta entrada de servicio.

Cualquier texto que aparezca en una lnea despus de un caracter # es ignorado y se


trata como un comentario.
Un ejemplo de fichero /etc/services.

Todas las distribuciones modernas de Linux tienen un buen fichero


/etc/services. Para el caso de que est montando una mquina desde cero, aqu
tiene una copia del fichero /etc/services proporcionado por una antigua la
distribucin Debian http://www.debian.org:
# /etc/services:
# $Id: services,v 1.3 1996/05/06 21:42:37 tobias Exp $
#
# Network services, Internet style
#
# Note that it is presently the policy of IANA to assign a single well-known
# port number for both TCP and UDP; hence, most entries here have two entries
# even if the protocol doesn't support UDP operations.
# Updated from RFC 1340, Assigned Numbers (July 1992). Not all ports
# are included, only the more common ones.

tcpmux 1/tcp # TCP port service multiplexer


echo 7/tcp
echo 7/udp
discard 9/tcp sink null
discard 9/udp sink null
systat 11/tcp users
daytime 13/tcp
daytime 13/udp
netstat 15/tcp
qotd 17/tcp quote
msp 18/tcp # message send protocol
msp 18/udp # message send protocol
chargen 19/tcp ttytst source
chargen 19/udp ttytst source
ftp-data 20/tcp
ftp 21/tcp
ssh 22/tcp # SSH Remote Login Protocol
ssh 22/udp # SSH Remote Login Protocol
telnet 23/tcp
# 24 - private
smtp 25/tcp mail
# 26 - unassigned
time 37/tcp timserver
time 37/udp timserver
rlp 39/udp resource # resource location
nameserver 42/tcp name # IEN 116
whois 43/tcp nicname
re-mail-ck 50/tcp # Remote Mail Checking Protocol
re-mail-ck 50/udp # Remote Mail Checking Protocol
domain 53/tcp nameserver # name-domain server
domain 53/udp nameserver
mtp 57/tcp # deprecated
bootps 67/tcp # BOOTP server
bootps 67/udp
bootpc 68/tcp # BOOTP client
bootpc 68/udp
tftp 69/udp
gopher 70/tcp # Internet Gopher
gopher 70/udp
rje 77/tcp netrjs
finger 79/tcp
www 80/tcp http # WorldWideWeb HTTP
www 80/udp # HyperText Transfer Protocol
link 87/tcp ttylink
kerberos 88/tcp kerberos5 krb5 # Kerberos v5
kerberos 88/udp kerberos5 krb5 # Kerberos v5
supdup 95/tcp
# 100 - reserved
hostnames 101/tcp hostname # usually from sri-nic
iso-tsap 102/tcp tsap # part of ISODE.
csnet-ns 105/tcp cso-ns # also used by CSO name server
csnet-ns 105/udp cso-ns
rtelnet 107/tcp # Remote Telnet
rtelnet 107/udp
pop-2 109/tcp postoffice # POP version 2
pop-2 109/udp
pop-3 110/tcp # POP version 3
pop-3 110/udp
sunrpc 111/tcp portmapper # RPC 4.0 portmapper TCP
sunrpc 111/udp portmapper # RPC 4.0 portmapper UDP
auth 113/tcp authentication tap ident
sftp 115/tcp
uucp-path 117/tcp
nntp 119/tcp readnews untp # USENET News Transfer Protocol
ntp 123/tcp
ntp 123/udp # Network Time Protocol
netbios-ns 137/tcp # NETBIOS Name Service
netbios-ns 137/udp
netbios-dgm 138/tcp # NETBIOS Datagram Service
netbios-dgm 138/udp
netbios-ssn 139/tcp # NETBIOS session service
netbios-ssn 139/udp
imap2 143/tcp # Interim Mail Access Proto v2
imap2 143/udp
snmp 161/udp # Simple Net Mgmt Proto
snmp-trap 162/udp snmptrap # Traps for SNMP
cmip-man 163/tcp # ISO mgmt over IP (CMOT)
cmip-man 163/udp
cmip-agent 164/tcp
cmip-agent 164/udp
xdmcp 177/tcp # X Display Mgr. Control Proto
xdmcp 177/udp
nextstep 178/tcp NeXTStep NextStep # NeXTStep window
nextstep 178/udp NeXTStep NextStep # server
bgp 179/tcp # Border Gateway Proto.
bgp 179/udp
prospero 191/tcp # Cliff Neuman's Prospero
prospero 191/udp
irc 194/tcp # Internet Relay Chat
irc 194/udp
smux 199/tcp # SNMP Unix Multiplexer
smux 199/udp
at-rtmp 201/tcp # AppleTalk routing
at-rtmp 201/udp
at-nbp 202/tcp # AppleTalk name binding
at-nbp 202/udp
at-echo 204/tcp # AppleTalk echo
at-echo 204/udp
at-zis 206/tcp # AppleTalk zone information
at-zis 206/udp
z3950 210/tcp wais # NISO Z39.50 database
z3950 210/udp wais
ipx 213/tcp # IPX
ipx 213/udp
imap3 220/tcp # Interactive Mail Access
imap3 220/udp # Protocol v3
ulistserv 372/tcp # UNIX Listserv
ulistserv 372/udp
#
# UNIX specific services
#
exec 512/tcp
biff 512/udp comsat
login 513/tcp
who 513/udp whod
shell 514/tcp cmd # no passwords used
syslog 514/udp
printer 515/tcp spooler # line printer spooler
talk 517/udp
ntalk 518/udp
route 520/udp router routed # RIP
timed 525/udp timeserver
tempo 526/tcp newdate
courier 530/tcp rpc
conference 531/tcp chat
netnews 532/tcp readnews
netwall 533/udp # -for emergency broadcasts
uucp 540/tcp uucpd # uucp daemon
remotefs 556/tcp rfs_server rfs # Brunhoff remote filesystem
klogin 543/tcp # Kerberized `rlogin' (v5)
kshell 544/tcp krcmd # Kerberized `rsh' (v5)
kerberos-adm 749/tcp # Kerberos `kadmin' (v5)
#
webster 765/tcp # Network dictionary
webster 765/udp
#
# From Assigned Numbers:
#
#> The Registered Ports are not controlled by the IANA and on most systems
#> can be used by ordinary user processes or programs executed by ordinary
#> users.
#
#> Ports are used in the TCP [45,106] to name the ends of logical
#> connections which carry long term conversations. For the purpose of
#> providing services to unknown callers, a service contact port is
#> defined. This list specifies the port used by the server process as its
#> contact port. While the IANA can not control use of these ports it
#> does register or list use of these ports as a convienence to the
#> community.
#
ingreslock 1524/tcp
ingreslock 1524/udp
prospero-np 1525/tcp # Prospero non-privileged
prospero-np 1525/udp
rfe 5002/tcp # Radio Free Ethernet
rfe 5002/udp # Actually use UDP only
bbs 7000/tcp # BBS service
#
#
# Kerberos (Project Athena/MIT) services
# Note that these are for Kerberos v4 and are unofficial. Sites running
# v4 should uncomment these and comment out the v5 entries above.
#
kerberos4 750/udp kdc # Kerberos (server) udp
kerberos4 750/tcp kdc # Kerberos (server) tcp
kerberos_master 751/udp # Kerberos authentication
kerberos_master 751/tcp # Kerberos authentication
passwd_server 752/udp # Kerberos passwd server
krb_prop 754/tcp # Kerberos slave propagation
krbupdate 760/tcp kreg # Kerberos registration
kpasswd 761/tcp kpwd # Kerberos "passwd"
kpop 1109/tcp # Pop with Kerberos
knetd 2053/tcp # Kerberos de-multiplexor
zephyr-srv 2102/udp # Zephyr server
zephyr-clt 2103/udp # Zephyr serv-hm connection
zephyr-hm 2104/udp # Zephyr hostmanager
eklogin 2105/tcp # Kerberos encrypted rlogin
#
# Unofficial but necessary (for NetBSD) services
#
supfilesrv 871/tcp # SUP server
supfiledbg 1127/tcp # SUP debugging
#
# Datagram Delivery Protocol services
#
rtmp 1/ddp # Routing Table Maintenance Protocol
nbp 2/ddp # Name Binding Protocol
echo 4/ddp # AppleTalk Echo Protocol
zip 6/ddp # Zone Information Protocol
#
# Debian GNU/Linux services
rmtcfg 1236/tcp # Gracilis Packeten remote config server
xtel 1313/tcp # french minitel
cfinger 2003/tcp # GNU Finger
postgres 4321/tcp # POSTGRES
mandelspawn 9359/udp mandelbrot # network mandelbrot

# Local services

En el da a da, este fichero se encuentra en proceso de continuo crecimiento segn


se van creando nuevos servicios. Si piensa que su copia es incompleta, le sugiero
que haga una copia del /etc/services de una distribucin reciente.

/etc/inetd.conf

/etc/inetd.conf es el fichero de configuracin para el demonio servidor inetd.


Su funcin es la de almacenar la informacin relativa a lo que inetd debe hacer
cuando recibe una peticin de conexin a un servicio en particular. Para cada
servicio que desee que acepte conexiones deber decirle a inetd qu demonio
servidor de red ejecutar, y cmo ha de hacerlo.

Su formato tambin es relativamente sencillo. Es un fichero de texto en el que cada


lnea describe un servicio que desee proporcionar. Cualquier texto en una lnea que
siga a # es ignorado y se considera un comentario. Cada lnea contiene siete campos
separados por cualquier nmero de espacios en blanco (espacio o tabulador). El
formato general es el siguiente:

servicio tipo_socket proto flags usuario servidor argumentos


servicio

es el servicio correspondiente a esta configuracin, tomado del fichero


/etc/services.
tipo_socket

describe el tipo de socket que esta entrada considerar relevante. Los valores
permitidos son: stream, dgram, raw, rdm o seqpacket. Es un poco tcnico por
naturaleza, pero por regla general casi todos los servicios basados en tcp usan
stream, y casi todos los basados en udp usan dgram. Slo algunos demonios
servidores muy particulares usarn otros valores.

proto

el protocolo considerado vlido para este servicio. Debera corresponder con la


entrada apropiada en el fichero /etc/services y suele ser tcp o udp. Los
servidores basados en Sun RPC (Remote Procedure Call) usarn rpc/tcp o
rpc/udp.

flags

slo hay dos valores posibles. Este campo le dice a inetd si el programa servidor de
red libera el socket despus de comenzar la ejecucin, y si por tanto inetd podr
ejecutar otro servidor para la siguiente peticin de conexin, o si inetd deber
esperar y asumir que el demonio servidor que est ejecutndose controlar las
nuevas peticiones de conexin. Esto tiene su dificultad, pero por norma general
todos los servidores tcp deberan tener esta entrada con el valor nowait y la
mayora de servidores udp deberan tener wait. De todas maneras hay algunas
excepciones notables, por lo que debera leer la gua de ejemplo si no est seguro.

usuario

este campo indica qu cuenta de usuario de /etc/passwd ser asignada como duea
del demonio de red cuando se ejecute. Esto es a menudo til si quiere protegerse
ante riesgos de seguridad. Puede asignar el usuario nobody a una entrada, por lo que
si la seguridad del servidor de red es traspasada el posible dao queda minimizado.
Habitualmente, sin embargo, este campo est asignado a root, porque muchos
servidores requieren privilegios de administrador para funcionar correctamente.

servidor

este campo es el camino completo hasta el programa servidor a ejecutar para esta
entrada.

argumentos

este campo comprende el resto de la lnea de rdenes y es opcional. Es en donde se


pone cualquier argumento de lnea de rdenes que desee pasar al programa demonio
servidor cuando es ejecutado.

Un ejemplo de /etc/inetd.conf

Al igual que pasa con el /etc/services, todas las distribuciones modernas


incluirn un buen fichero /etc/inetd.conf para trabajar con l. Aqu incluyo,
como ejemplo, el fichero /etc/inetd.conf de la distribucin Debian
http://www.debian.org.

# /etc/inetd.conf: see inetd(8) for further informations.


#
# Internet server configuration database
#
#
# Modified for Debian by Peter Tobias <tobias@et-inf.fho-emden.de>
#
# <service_name> <sock_type> <proto> <flags> <user> <server_path> <args>
#
# Internal services
#
#echo stream tcp nowait root internal
#echo dgram udp wait root internal
discard stream tcp nowait root internal
discard dgram udp wait root internal
daytime stream tcp nowait root internal
daytime dgram udp wait root internal
#chargen stream tcp nowait root internal
#chargen dgram udp wait root internal
time stream tcp nowait root internal
time dgram udp wait root internal
#
# These are standard services.
#
telnet stream tcp nowait root /usr/sbin/tcpd /usr/sbin/in.telnetd
ftp stream tcp nowait root /usr/sbin/tcpd /usr/sbin/in.ftpd
#fsp dgram udp wait root /usr/sbin/tcpd /usr/sbin/in.fspd
#
# Shell, login, exec and talk are BSD protocols.
#
shell stream tcp nowait root /usr/sbin/tcpd /usr/sbin/in.rshd
login stream tcp nowait root /usr/sbin/tcpd /usr/sbin/in.rlogind
#exec stream tcp nowait root /usr/sbin/tcpd /usr/sbin/in.rexecd
talk dgram udp wait root /usr/sbin/tcpd /usr/sbin/in.talkd
ntalk dgram udp wait root /usr/sbin/tcpd /usr/sbin/in.ntalkd
#
# Mail, news and uucp services.
#
smtp stream tcp nowait root /usr/sbin/tcpd /usr/sbin/in.smtpd
#nntp stream tcp nowait news /usr/sbin/tcpd /usr/sbin/in.nntpd
#uucp stream tcp nowait uucp /usr/sbin/tcpd /usr/lib/uucp/uucico
#comsat dgram udp wait root /usr/sbin/tcpd /usr/sbin/in.comsat
#
# Pop et al
#
#pop-2 stream tcp nowait root /usr/sbin/tcpd /usr/sbin/in.pop2d
#pop-3 stream tcp nowait root /usr/sbin/tcpd /usr/sbin/in.pop3d
#
# `cfinger' is for the GNU finger server available for Debian. (NOTE: The
# current implementation of the `finger' daemon allows it to be run as `root'.)
#
#cfinger stream tcp nowait root /usr/sbin/tcpd /usr/sbin/in.cfingerd
#finger stream tcp nowait root /usr/sbin/tcpd /usr/sbin/in.fingerd
#netstat stream tcp nowait nobody /usr/sbin/tcpd /bin/netstat
#systat stream tcp nowait nobody /usr/sbin/tcpd /bin/ps -auwwx
#
# Tftp service is provided primarily for booting. Most sites
# run this only on machines acting as "boot servers."
#
#tftp dgram udp wait nobody /usr/sbin/tcpd /usr/sbin/in.tftpd
#tftp dgram udp wait nobody /usr/sbin/tcpd /usr/sbin/in.tftpd /boot
#bootps dgram udp wait root /usr/sbin/bootpd bootpd -i -t 120
#
# Kerberos authenticated services (these probably need to be corrected)
#
#klogin stream tcp nowait root /usr/sbin/tcpd /usr/sbin/in.rlogind
-k
#eklogin stream tcp nowait root /usr/sbin/tcpd /usr/sbin/in.rlogind
-k -x
#kshell stream tcp nowait root /usr/sbin/tcpd /usr/sbin/in.rshd -k
#
# Services run ONLY on the Kerberos server (these probably need to be corrected)
#
#krbupdate stream tcp nowait root /usr/sbin/tcpd /usr/sbin/registerd
#kpasswd stream tcp nowait root /usr/sbin/tcpd /usr/sbin/kpasswdd
#
# RPC based services
#
#mountd/1 dgram rpc/udp wait root /usr/sbin/tcpd /usr/sbin/rpc.mountd
#rstatd/1-3 dgram rpc/udp wait root /usr/sbin/tcpd /usr/sbin/rpc.rstatd
#rusersd/2-3 dgram rpc/udp wait root /usr/sbin/tcpd
/usr/sbin/rpc.rusersd
#walld/1 dgram rpc/udp wait root /usr/sbin/tcpd /usr/sbin/rpc.rwalld
#
# End of inetd.conf.
ident stream tcp nowait nobody /usr/sbin/identd identd -i
Otros ficheros de configuracin relacionados con la red

Hay varios ficheros miscelneos relacionados con la configuracin de la red en


Linux por los que podra estar interesado. Nunca debera tener que modificar estos
ficheros, pero merece la pena describirlos para que sepa lo que contienen y para qu
son.

/etc/protocols

El fichero /etc/protocols es una base de datos que correlaciona nmeros de


identificacin de protocolos con sus nombres. Esto lo usan los programadores para
especificar protocolos por su nombre en sus programas y tambin por programas
como tcpdump para mostrar nombres en lugar de nmeros en su salida. En general
la sintaxis del fichero es:

nombredelprotocolo nmero sobrenombres

El fichero /etc/protocols proporcionado con la distribucin Debian


http://www.debian.org es como sigue:

# /etc/protocols:
# $Id: protocols,v 1.1 1995/02/24 01:09:41 imurdock Exp $
#
# Internet (IP) protocols
#
# from: @(#)protocols 5.1 (Berkeley) 4/17/89
#
# Updated for NetBSD based on RFC 1340, Assigned Numbers (July 1992).

ip 0 IP # internet protocol, pseudo protocol number


icmp 1 ICMP # internet control message protocol
igmp 2 IGMP # Internet Group Management
ggp 3 GGP # gateway-gateway protocol
ipencap 4 IP-ENCAP # IP encapsulated in IP (officially IP)
st 5 ST # ST datagram mode
tcp 6 TCP # transmission control protocol
egp 8 EGP # exterior gateway protocol
pup 12 PUP # PARC universal packet protocol
udp 17 UDP # user datagram protocol
hmp 20 HMP # host monitoring protocol
xns-idp 22 XNS-IDP # Xerox NS IDP
rdp 27 RDP # "reliable datagram" protocol
iso-tp4 29 ISO-TP4 # ISO Transport Protocol class 4
xtp 36 XTP # Xpress Tranfer Protocol
ddp 37 DDP # Datagram Delivery Protocol
idpr-cmtp 39 IDPR-CMTP # IDPR Control Message Transport
rspf 73 RSPF # Radio Shortest Path First.
vmtp 81 VMTP # Versatile Message Transport
ospf 89 OSPFIGP # Open Shortest Path First IGP
ipip 94 IPIP # Yet Another IP encapsulation
encap 98 ENCAP # Yet Another IP encapsulation

/etc/networks

El fichero /etc/networks tiene una funcin similar a la del fichero /etc/hosts.


Proporciona una base de datos sencilla de nombres de red y direcciones de red. Su
formato difiere en que slo puede haber dos campos por lnea y los campos estn
codificados as:

nombredelared direccindered

Un ejemplo podra ser:

loopnet 127.0.0.0
localnet 192.168.0.0
amprnet 44.0.0.0
Cuando use rdenes como route, si un destino es una red y la red tiene una entrada
en el fichero /etc/networks entonces route mostrar el nombre de la red en lugar de
su direccin.

6.5. Servicios de acceso : Telnet / SSH

Para iniciar una sesin con un interprete de comandos de otro computador, puede
emplear el comando telnet seguido del nombre de la mquina en la que desea
trabajar, por ejemplo si desea conectarse a la mquina
purpura.micolegio.edu.co:

telnet purpura.micolegio.edu.co

Una vez conectado podr ingresar su login y clave en esa mquina, y entonces se
iniciar una sesin en modo texto como las que ve en las consolas virtuales (ver
Lectura Sistema de usuarios y manejo de clave). La informacin que transmita
(incluyendo su clave) no ser protegida o encriptada y podra ser vista en otros
computadores por los que transite la informacin (esto slo puede hacerse con
herramientas apropiadas i.e. sniffers, y desde la cuenta del administrador del
sistema).

Una alternativa ms segura para telnet, pero que requiere ms recursos del
computador es ssh que encripta la informacin antes de transmitirla, que autentica
la mquina a la cual se conecta y que puede emplear mecanismos de autenticacin
de usuarios ms seguros. Para conectarse como usuario paz a la mquina
purpura.micolegio.edu.co:

ssh -l paz purpura.micolegio.edu.co

ssh autenticar la mquina a la cual se est conectado, comparando la llave pblica


de esa mquina con alguna de las que conozca, si la llave pblica de la mquina a
cambiado o si es la primera vez que se conecta a ese sitio, ssh le pedir confirmar la
nueva llave pblica. Despus le pedir su clave en ese servidor (o si ha configurado
autenticacin con llaves simtricas pedir su clave RSA) para finalmente dejarlo en
una sesin en modo texto, tal como telnet, pero que encripta toda la informacin
que transmita.
Si en el computador al que se conecta hay programas para X-Window (con
interfaces grficas) puede iniciarlos y verlos en su computador ---esto incluso puede
hacerse con otros sistemas operativos si configura un servidor de X-Window. Para
lograrlo se deben seguir cierto pasos que se ejemplifican a continuacin, suponiendo
que usted est conectado al computador rojo.micolegio.edu.co y abri una
sesin con telnet en el computador purpura.micolegio.edu.co:

1. En el computador rojo.micolegio.edu.co debe estar corriendo un servidor de X-


Window (si usted est trabajando en el escritorio Gnome ya est funcionando su servidor
X-Window). El computador purpura.micolegio.edu.co actuar como cliente de X-
Window.
2. En rojo.micolegio.edu.co debe habilitar conexiones de X-Window desde la
mquina en la cual ejecutar la aplicacin. Si usa telnet o si ssh no se configur para
retransmitir informacin de X-Window, esto lo puede hacer con el comando xhost:
3. xhost +purpura.micolegio.edu.co
4. En el computador en el cual ejecutar el programa (el cliente) debe indicar en la
variable de ambiente DISPLAY [20], el nombre del servidor de X-Window:
5. export DISPLAY=rojo.micolegio.edu.co:0
Si emplea ssh normalmente no requerir este paso.

6. Finalmente puede iniciar la aplicacin grfica en purpura.micolegio.edu.co por


ejemplo:
7. xeyes

6.6. Servicios de transferencia de ficheros : FTP /SFTP/ SCP

Una de las alternativas ms importantes que nos permite Internet es la transferencia


de archivos de una computadora a otra desde cualquier parte del mundo. Para ello
utilizamos el protocolo de transferencia de archivos o FTP.

COMO FUNCIONA

Normalmente los sistemas se configuran para autentificar los inicios de sesin, esto
es pues, colocando un password y una contrasea, de esta manea se puede acceder
al sistema. FTP tiene dos modalidades de uso:

FTP anonymous:
Supone un servidor FTP configurado para permitir el acceso publico es decir, no se
dejan de enviar ni el usuario ni la contrasea, pero por convencin, se utiliza el
usuario anonymous y como contrasea la direccin de correo del que hace la
solicitud.

FTP privado:
El servidor se basa en autentificacin a partir de la base de datos de usuario locales,
por lo tanto, solo pueden iniciar sesin los usuarios que hallan sido dados de alta en
dicho sistema.

Linux para Todos recomienda Very Secure FTP Daemon es un software utilizado
para implementar servidores de archivos a travs del protocolo FTP. Se distingue
principalmente porque sus valores por defecto son muy seguros y por su sencillez
en la configuracin, comparado con otras alternativas como Wu-ftpd. Actualmente
se presume que VSFTPD es quiz el servidor FTP ms seguro del mundo.

BENEFICIOS

Very Secure FTP Daemon es un software utilizado para implementar servidores de


archivos a travs del protocolo FTP. Se distingue principalmente porque sus valores
por defecto son muy seguros y por su sencillez en la configuracin, comparado con
otras alternativas como Wu-ftpd. Actualmente se presume que VSFTPD es quiz el
servidor FTP ms seguro del mundo.

SOFTWARE REQUERIDO

Vsftpd

HARDWARE REQUERIDO

Requerimientos minimos:
Servidor a 250 Mhz, 256 MB RAM, 8 GB disco duro
Si desea saber si su hardware es certificado por Linux (Funcionara con Linux)
chequelo en la siguiente pgina:
http://hardware.redhat.com
Instalacin del servidor FTP

Para instalarte un servidor FTP en Linux normalmente no necesitas ningn


programa adicional ya que el servidor FTP suele venir con el sistema. Para los
ejemplos que vamos a citar a continuacin hemos utilizado el servidor FTP que
viene con red hat 9.0

Para comenzar tendremos que instalarnos el paquete que contiene el servidor FTP
que en este caso se llama Vsftpd 1.1.3-8, para lo cual ejecutaremos la siguiente
instruccin:

rpm -ivh vsftpd 1.1.3-8

Configuracin

Una vez instalados comenzaremos a configurarlo a nuestro gusto. Comenzaremos


con la lista de usuarios que podrn tener acceso al servidor FTP:

Para configurar este parmetro necesitaremos abrir el archivo vsftpd.user.list que se


encuentra en /etc/. En este archivo pondremos ver una lista con los usuarios que
tienen acceso.

Pero en realidad el archivo ms importante para la configuracin del servidor es el


vsftpd.conf que contiene todos los parmetros de configuracin, entre otras cosas la
ubicacin de los archivos compartidos. Dentro de este archivo se encuentran los
siguientes parmetros, que podemos modificar dependiendo del uso que le
queramos dar.

anonymous.allow

Con este parmetros se habilita o deshabilita el usuario annimo.


Anonymous.allow=true (usuario annimo habilitado)
Anonymous.allow=false (usuario annimo deshabilitado)

Write_enable

Indica si una carpeta tiene permiso de escritura o no. En otras palabras indica si a
una carpeta se la pueden subir archivos o no.
Write_enable=trae (si tiene permiso de escritura)
Write_enable=false (no tiene permiso de escritura)

ftpd_banner

Permite poner un mensaje de bienvenida a los usuarios cuando se conecten


ftpd_banner=mensaje

chroot_local_user

Permite o no a los usuarios locales el acceso a la maquina


chroot_local_user=true
chroot_local_user=false

Para decirle al servidor fe FTP que usuarios tienen permiso para acceder tenemos
que coger la ruta de el archivo antes comentado donde se encontraba la lista de
usuarios (vsftpd.user_list)
Para ello en el archivo de configuracin pondramos algo como esto:
Chroot_list_file=/etc/vsftpd.user_list
Bsicamente con estos comandos podrs configurar tu servidor FTP en Linux sin
ningn problema.

Arrancar y detener el servidor de FTP

Ya solo nos queda arrancar el servidor para lo cual utilizaremos los siguientes
comandos.

Para arrancar el servicio: /sbin/service vsftpd Start

Para parar el servicio: /sbin/ service vsftpd stop

Para reiniciar el servicio: /sbin/service vsftpd restart


6.7. Servicio de resolucin de nombres : DNS

Funcionamiento de DNS

El Domain Name System (DNS) o Sistema de Nombres de Dominio permite a los


usuarios de una red TCP/IP utilizar nombres jerrquicos y descriptivos para
localizar fcilmente computadores (hosts) y otros recursos en dicha red, evitando de
esta manera tener que recordar la direccin IP de cada computador al que se desea
acceder. En esencia, DNS es una base de datos distribuida que contiene
asociaciones de nombres simblicos (de hosts) a direcciones IP. El hecho de que sea
distribuida permite delegar el control sobre diferentes segmentos de la base de datos
a distintas organizaciones, pero siempre de forma que los datos de cada segmento
estn disponibles en toda la red, a travs de un esquema cliente-servidor.

Los programas denominados servidores de nombres (name servers) constituyen la


parte servidora del esquema cliente-servidor. Los servidores de nombres contienen
informacin sobre algunos segmentos de la base de datos y los ponen a disposicin
de los clientes, llamados solucionadores o resolvers.

El Espacio de Nombres de Dominio

La base de datos distribuida de DNS est indexada por nombres de dominio. Cada
nombre de dominio es esencialmente una trayectoria en un rbol invertido
denominado espacio de nombres de dominio. La estructura jerrquica del rbol es
similar a la estructura del sistema de archivos UNIX. El rbol tiene una nica raz
en el nivel superior llamada raz (root). Cada nodo del rbol puede ramificarse en
cualquier nmero de nodos de nivel inferior. La profundidad del rbol est limitada
a 127 niveles.

Cada nodo en el rbol se identifica mediante una etiqueta no nula que puede
contener hasta 63 caracteres, excepto el nodo raz, identificado mediante una
etiqueta nula. El nombre de dominio completo de cualquier nodo est formado por
la secuencia de etiquetas que forman la trayectoria desde dicho nodo hasta la raz,
separando cada etiqueta de la siguiente mediante un punto. De esta forma, el
nombre del nodo especifica de forma unvoca su localizacin en la jerarqua. A este
nombre de dominio completo o absoluto se le conoce como nombre de dominio
completamente cualificado o Fully Qualified Domain Name (FQDN). Al ser nula la
etiqueta que identifica el nodo raz, el FQDN de cualquier nodo del rbol siempre
acaba con un punto. La nica restriccin que se impone en el rbol de nombres es
que los nodos hijos del mismo padre tengan etiquetas diferentes.

En el esquema jerrquico de nombres DNS, se denomina dominio a cualquier


subrbol del espacio de nombres de dominio. De esta forma, cada dominio puede
contener, a su vez, otros dominios. Generalmente, los hosts estn representados por
las hojas del rbol, aunque es posible nombrar a un host con una etiqueta
correspondiente a un nodo intermedio del rbol (en este caso, tendramos un
dominio y un nodo que se llaman igual).

La informacin sobre los nombres de dominio DNS se guarda mediante los


denominados registros de recursos en los servidores DNS de la red. Concretamente,
cada servidor DNS contiene los registros de recursos necesarios para responder a las
consultas sobre la parte del espacio de nombres en la que tiene autoridad.

El Espacio de Nombres de Dominio en Internet

El estndar DNS no impone muchas reglas sobre las etiquetas de los nombres de
dominio, ni tampoco asocia un significado determinado a las etiquetas de un
determinado nivel del espacio de nombres. Cuando manejamos una parte de este
espacio, podemos decidir el significado y la sintaxis de nuestros nombres de
dominio. Sin embargo, en el espacio de nombres Internet existente, se ha impuesto
una estructura de nombres bien definida, especialmente en los dominios de primer
nivel.

Los dominios originales de primer nivel dividan originalmente el espacio de


nombres de Internet en siete dominios: com, edu, gov, mil, net, org, e int.
Posteriormente, para acomodar el crecimiento y la internacionalizacin de Internet,
se reservaron nuevos dominios de primer nivel que hacan referencia a pases
individuales.

Actualmente, los dominios originales se denominan dominios de primer nivel


genricos y han surgido nuevos nombres que se ajustan a los tiempos que corren.

Delegacin

Es importante resaltar que el objetivo principal del diseo del sistema de nombres
de dominio fue su administracin descentralizada. Este objetivo se consigue a travs
de la delegacin. La delegacin de dominios funciona de forma parecida a la
delegacin de tareas en una organizacin. Un responsable de proyecto divide el
proyecto en pequeas tareas y asigna (delega) la responsabilidad de las mismas a
diferentes empleados.

De la misma forma, una organizacin que administra un dominio puede dividirla en


subdominios. Cada subdominio puede ser delegado a diferentes organizaciones, lo
cual implica que esa organizacin ser responsable de mantener los datos (registros
de recursos) de ese subdominio. Esa organizacin puede libremente cambiar los
datos e incluso volver a dividir el dominio delegado en subdominios y delegarlos. El
dominio padre solamente contiene enlaces a los responsables del subdominio
delegado, de forma que pueda hacer referencia a ellos cuando se le planteen
consultas sobre nombres en dicho subdominio delegado.

Realmente, la subdivisin de un dominio en subdominios y la delegacin de dichos


subdominios son cosas distintas. En primer lugar, un dominio que tenga capacidad
de autogestin (autoridad), siempre puede decidir subdividirse en diferentes
subdominios, manteniendo l en principio la autoridad sobre todos ellos.
Posteriormente, la organizacin que gestiona el dominio puede decidir adems
delegar la autoridad de algunos (o todos) sus subdominios en otras organizaciones.
La delegacin es una accin que siempre decide el dominio padre, y ste puede
revocarla cuando desee, volviendo a retomar la autoridad sobre el subdominio que
haba delegado.

Servidores de nombres y zonas

Como se ha dicho anteriormente, los programas que almacenan informacin sobre


el espacio de nombres de dominio se denominan servidores de nombres. En virtud
de la delegacin mencionada anteriormente, cada servidor de nombres posee
generalmente informacin completa sobre una parte contigua del espacio de
nombres (generalmente un dominio, potencialmente dividido en subdominios).
Dicha parte del espacio se denomina zona, y se dice que el servidor de nombres
tiene autoridad sobre ella. En realidad, un mismo servidor de nombres puede tener
autoridad sobre mltiples zonas, y obtiene la informacin que describe la zona (los
registros de recursos) o bien de un archivo local o bien de otro servidor de nombres.

Entender la diferencia entre una zona y un dominio es importante. Todos los


dominios de primer nivel, y la mayora de dominios de segundo nivel, se dividen en
unidades ms pequeas y manejables gracias a la delegacin. Estas unidades se
denominan zonas y contienen una serie de registros almacenados en un servidor. Sin
embargo, las zonas no son dominios. Un dominio es un subrbol del espacio de
nombres, mientras que una zona es una parte del espacio de nombres DNS que se
almacena generalmente en un archivo y que puede contener informaci sobre
mltiples dominios.

DNS define dos tipos de servidores de nombres que mantienen informacion sobre el
espacio de nombres: primarios (maestros) y secundarios (esclavos). Un servidor de
nombres primario para una zona lee los datos de la zona desde un archivo que l
mantiene. Un servidor de nombres secundario para una zona obtiene los datos de la
zona desde otro servidor de nombres que es autoritario para la zona, llamado
servidor maestro. Normalmente el servidor maestro es el servidor primario de la
zona, pero esto no es un requisito ya que un servidor secundario puede cargar los
datos desde otro secundario.

Cuando un servidor de nombres secundario se inicia, ste se pone en contacto con


su servidor maestro y, si es necesario, inicia una transferencia de zona, es decir, una
actualizacin de su informacin sobre la zona (ver Transferencias de zona).
Adems, peridicamente el servidor secundario contacta con el servidor maestro
para ver si los datos de zona han cambiado. Tanto el servidor primario como el
secundario poseen autoridad sobre la zona. Definir servidores secundarios
proporciona tolerancia a errores y reduce la carga en el servidor primario de la zona.

Resolucin de nombres

Los clientes DNS utilizan bibliotecas llamadas solucionadores (resolvers) que


efectan las consultas DNS a los servidores en nombre del cliente.

Los servidores de nombres son los expertos en obtener informacin del espacio de
nombres de dominio. Es decir, no solamente responden los datos referentes a las
zonas sobre los que tienen autoridad, sino que pueden tambin buscar informacin a
travs del espacio de nombres de dominio para encontrar datos sobre los que no son
autoritarios. A este proceso se le denomina resolucin de nombres. Por ese motivo,
existen servidores de nombres que no mantienen informacin sobre ninguna zona, y
nicamente sirven para responder consultas de los clientes (resolvers) sobre
cualquier dominio. Este tipo de servidores DNS se denomina cache only.

Ya que el espacio de nombres est estructurado como un rbol invertido, un


servidor de nombres necesita nicamente los nombres de dominio y las direcciones
de los servidores de nombres raz para encontrar cualquier punto en el rbol. Los
servidores raz conocen dnde se encuentran los servidores de nombres con
autoridad para los dominios de primer nivel. De hecho, la mayora de servidores
raz son autoritarios para los dominios de primer nivel genricos.

Cuando se solicita una consulta a cualquier nombre de dominio, los servidores raz
pueden al menos proporcionar los nombres y direcciones de los servidores de
nombres autoritarios para el dominio de primer nivel al que pertenece el nombre de
dominio buscado. Y los servidores de nombres de primer nivel pueden proporcionar
la lista de servidores de nombres autoritarios para el dominio de segundo nivel al
que pertenece el nombre de dominio buscado. De esta forma, cada servidor de
nombres consultado va proporcionando la informacin ms prxima a la respuesta
buscada, o proporciona la propia respuesta.

Como conclusin hay que resaltar la importancia que tienen los servidores de
nombres raz en el proceso de resolucin. Por esta razn, el sistema de nombres de
dominio proporciona mecanismos de cach para ayudar a reducir la carga que
supondra el proceso de resolucin sobre los servidores raz. Si todos los servidores
raz de Internet fallaran por un largo perodo de tiempo, toda la resolucin en
Internet fallara. Para protegerse, Internet posee 13 servidores de nombres raz
repartidos por diferentes partes de la Red.

Configuracin de DNS

Los estndares de DNS no especifican la estructura de datos interna en que deben


almacenarse los registros de recursos (registros de la base de datos DNS), y por
tanto existen varias implementaciones que son diferentes en este sentido. Por regla
general, los servidores guardan la informacin sobre las zonas en archivos en texto
plano sin formato. Los nombres de los archivos son arbitrarios y se especifican en la
configuracin del servidor DNS.

Por ejemplo, en la implementacin habitual de DNS en el mundo UNIX, BIND


(Berkeley Intenet Name Domain), se utiliza los nombres de archivo siguientes para
almacenar los registros de cada zona:

Db.dominio: zona de resolucin directa.


Db.direccion: zona de resolucin inversa.
Db.cache: sugerencias de servidores raz.
Db.127.0.0.1: resolucin inversa de bucle cerrado.

Por el contrario, la configuracin predeterminada del servidor DNS de Microsoft


Windows 2000 no utiliza los mismos nombres de archivo que BIND, sino que usa la
nomenclatura nombre_zona.dns. Por otra parte, en Windows 2000, la base de datos
DNS puede integrarse con la base de datos de Active Directory, en cuyo caso dicha
informacin participa de los mismos mecanismos de almacenamiento y replicacin
que el resto de informacin contenida en el Directorio Activo.

Registros de Recursos (RR)

Para resolver nombres, los servidores consultan sus zonas. Las zonas contienen
registros de recursos que constituyen la informacin de recursos asociada al
dominio DNS. Por ejemplo, ciertos registros de recursos asignan nombres
descriptivos a direcciones IP.

El formato de cada registro de recursos es el siguiente:

Propietario TTL Clase Tipo RDATA

donde:

Propietario: nombre de host o del dominio DNS al que pertenece este recurso.
Puede contener un nombre de host/dominio (completamente cualificado o no), el smbolo
"@" (que representa el nombre de la zona que se est describiendo) o una cadena vaca (en
cuyo caso equivale al propietario del registro de recursos anterior).
TTL: (Time To Live) Tiempo de vida, generalmente expresado en segundos, que un
servidor DNS o un resolver debe guardar en cach esta entrada antes de descartarla. Este
campo es opcional. Tambin se puede expresar mediante letras indicando das (d), horas
(h), minutos (m) y segundos (s). Por ejemplo: "2h30m".
Clase: define la familia de protocolos en uso. Suele ser siempre "IN", que
representa Internet.
Tipo: identifica el tipo de registro.
RDATA: los datos del registro de recursos.
A continuacin se describen los principales tipos de registros de recursos: SOA, NS,
A, PTR, CNAME, MX y SRV.

Registro de Recurso SOA

Cada zona contiene un registro de recursos denominado Inicio de Autoridad o SOA


(Start Of Authority) al comienzo de la zona. Los registros SOA incluyen los
siguientes campos (slo se incluyen los que poseen un significado especfico para el
tipo de registro):

Propietario: nombre de dominio de la zona.


Tipo: "SOA".
Persona responsable: contiene la direccin de correo electrnico del responsable
de la zona. En esta direccin de correo, se utiliza un punto en el lugar del smbolo "@".
Nmero de serie: muestra el nmero de versin de la zona, es decir, un nmero que
sirve de referencia a los servidores secundarios de la zona para saber cundo deben
proceder a una actualizacin de su base de datos de la zona (o transferencia de zona).
Cuando el nmero de serie del servidor secundario sea menor que el nmero del maestro,
esto significa que el maestro ha cambiado la zona, y por tanto el secundario debe solicitar al
maestro una transferencia de zona. Por tanto, este nmero debe ser incrementado
(manualmente) por el administrador de la zona cada vez que realiza un cambio en algn
registro de la zona (en el servidor maestro).
Actualizacin: muestra cada cunto tiempo un servidor secundario debe ponerse en
contacto con el maestro para comprobar si ha habido cambios en la zona.
Reintentos: define el tiempo que el servidor secundario, despus de enviar una
solicitud de transferencia de zona, espera para obtener una respuesta del servidor maestro
antes de volverlo a intentar.
Caducidad: define el tiempo que el servidor secundario de la zona, despus de la
transferencia de zona anterior, responder a las consultas de la zona antes de descartar la
suya propia como no vlida.
TTL mnimo: este campo especifica el tiempo de validez (o de vida) de las
respuestas "negativas" que realiza el servidor. Una respuesta negativa significa que el
servidor contesta que un registro no existe en la zona.

Hasta la versin 8.2 de BIND, este campo estableca el tiempo de vida por defecto
de todos los registros de la zona que no tuvieran un campo TTL especfico. A partir
de esta versin, esto ltimo se consigue con una directiva que debe situarse al
principio del archivo de la zona. Esta directiva se especifica as:

$TTL tiempo

Por ejemplo, un tiempo de vida por defecto de 30 minutos se establecera as:

$TTL 30m

Un ejemplo de registro SOA sera el siguiente:


admon.com. IN pc0100.admon.com hostmaster.admon.com.
(
1 ; nmero de serie
3600 ; actualizacin 1 hora
600 ; reintentar 10 minutos
86400 ; caducar 1 da
60 ; TTL 1 minuto
)

Registro de Recurso NS

El registro de recursos NS (Name Server) indica los servidores de nombres


autorizados para la zona. Cada zona debe contener registros indicando tanto los
servidores principales como los secundarios. Por tanto, cada zona debe contener,
como mnimo, un registro NS.

Por otra parte, estos registros tambin se utilizan para indicar quines son los
servidores de nombres con autoridad en subdominios delegados, por lo que la zona
contendr al menos un registro NS por cada subdominio que haya delegado.

Ejemplos de registros NS seran los siguientes:

admon.com. IN NS pc0100.admon.com.
valencia.admon.com. IN NS pc0102.valencia.admon.com.

Registro de Recurso A

El tipo de registro de recursos A (Address) asigna un nombre de dominio


completamente cualificado (FQDN) a una direccin IP, para que los clientes puedan
solicitar la direccin IP de un nombre de host dado.

Un ejemplo de registro A que asignara la direccin IP 158.42.178.1 al nombre de


dominio pc0101.valencia.admon.com., sera el siguiente:
pc0101.valencia.admon.com. IN A 158.42.178.1

Registro de Recurso PTR

El registro de recursos PTR (PoinTeR) o puntero, realiza la accin contraria al


registro de tipo A, es decir, asigna un nombre de dominio completamente
cualificado a una direccin IP. Este tipo de recursos se utilizan en la denominada
resolucin inversa, descrita en Servidores de nombres y zonas.

Un ejemplo de registro PTR que asignara el nombre


pc0101.valencia.admon.com. a la direccin IP 158.42.178.1 sera el siguiente:

1.178.42.158.in-addr.arpa. IN PTR pc0101.admon.valencia.com.

Registro de Recurso CNAME

El registro de nombre cannico (CNAME, Canonical NAME) crea un alias (un


sinnimo) para el nombre de dominio especificado.

Un ejemplo de registro CNAME que asignara el alias controlador al nombre de


dominio pc0102.valencia.admon.com, sera el siguiente:
controlador.valencia.admon.com.
IN CNAME pc0101.valencia.admon.com.

Registro de Recurso MX

El registro de recurso de intercambio de correo (MX, Mail eXchange) especifica un


servidor de intercambio de correo para un nombre de dominio. Puesto que un
mismo dominio puede contener diferentes servidores de correo, el registro MX
puede indicar un valor numrico que permite especificar el orden en que los clientes
deben intentar contactar con dichos servidores de correo.

Un ejemplo de registro de recurso MX que define al servidor pc0100 como el


servidor de correo del dominio admon.com, sera el siguiente:
admon.com. IN MX 0 pc0100.admon.com.
Registro de Recurso SRV

Con registros MX se puede especificar varios servidores de correo en un dominio


DNS. De esta forma, cuando un proveedor de servicio de envo de correo necesite
enviar correo electrnico a un host en el dominio, podr encontrar la ubicacin de
un servidor de intercambio de correo. Sin embargo, esta no es la forma de resolver
los servidores que proporcionan otros servicios de red como WWW o FTP.

Los registros de recurso de servicio (SRV, SeRVice) permiten especificar de forma


genrica la ubicacin de los servidores para un servicio, protocolo y dominio DNS
determinados.

El formato de un registro SRV es el siguiente:


servicio.protocolo.nombre TTL clase SRV
prioridad peso puerto destino

donde:

El campo servicio especifica el nombre de servicio: http, telnet, etc.


El campo protocolo especifica el protocolo utilizado: TCP o UDP.
nombre define el nombre de dominio al que hace referencia el registro de recurso
SRV.
Los campos TTL y clase ha sido definidos anteriormente.
prioridad especifica el orden en que los clientes se pondrn en contacto con los
servidores: los clientes intentarn ponerse en contacto primero con el host que tenga
el valor de prioridad ms bajo, luego con el siguiente y as sucesivamente.
peso: es un mecanismo de equilibrio de carga.
puerto: muestra el puerto del servicio en el host.
destino: muestra el nombre de dominio completo para la mquina compatible con
ese servicio.

Un ejemplo de registros SRV para los servidores Web del dominio admon.com.,
sera:
http.tcp.admon.com. IN SRV 0 0 80 www1.admon.com.
http.tcp.admon.com. IN SRV 10 0 80 www2.admon.com.

Definicin de la delegacin

Para que una zona especifique que uno de sus subdominios est delegado en una
zona diferente, es necesario agregar un registro de delegacin y, generalmente, el
denominado "registro de pegado" (glue record). El registro de delegacin es un
registro NS en la zona principal (padre) que define el servidor de nombres
autorizado para la zona delegada. El registro de pegado es un registro tipo A para el
servidor de nombres autorizado para la zona delegada, y es necesario cuando el
servidor de nombres autorizado para la zona delegada tambin es un miembro de
ese dominio (delegado).

Por ejemplo, si la zona admon.com deseara delegar la autoridad a su subdominio


valencia.admon.com, se deberan agregar los siguientes registros al archivo de
configuracin correspondiente de la zona admon.com:

valencia.admon.com. IN NS pc0102.valencia.admon.com.
pc0102.valencia.admon.com. IN A 158.42.178.2
Tipos de zonas

Aunque distintas implementaciones de DNS difieren en cmo configurar las zonas,


generalmente existe un archivo que indica sobre qu zonas tiene autoridad el
servidor, indicando para cada una el archivo que contiene la informacin de dicha
zona (si el servidor es primario para la zona), o la direccin del servidor maestro a
quien preguntar por ella (si es secundario).

En general, existen tres tipos distintos de zonas: zonas de bsqueda directa, zonas
de bsqueda inversa y zonas de "sugerencia raz". Un servidor DNS puede tener
autoridad sobre varias zonas directas e inversas, y necesita poseer informacin sobre
las "sugerencias raz" si desea responder a sus clientes sobre registros de zonas
sobre las que no posee autoridad. A continuacion se describe cada tipo brevemente.

Zona de bsqueda directa

Las zonas de bsqueda directa contienen la informacin necesaria para resolver


nombres en el dominio DNS. Deben incluir, al menos, registros SOA y NS, y
pueden incluir cualquier otro tipo de registros de recurso, excepto el registro de
recursos PTR.

Zona de bsqueda inversa

Las zonas de bsqueda inversa contienen informacin necesaria para realizar las
bsquedas inversas. La mayor parte de las consultas proporcionan un nombre y
solicitan la direccin IP que corresponde a ese nombre. Este tipo de consulta es el
descrito en la zona de resolucin directa.

Pero existen ocasiones en que un cliente ya tiene la direccin IP de un equipo y


desea determinar el nombre DNS de ese equipo. Esto es importante para los
programas que implementan la seguridad basndose en el FQDN que se conecta y
tambin se utiliza para la solucin de problemas de red TCP/IP.

Si el nico medio de resolver una bsqueda inversa es realizar una bsqueda


detallada de todos los dominios en el espacio de nombres DNS, la bsqueda de
consulta inversa sera demasiado exhaustiva como para realizarla de forma prctica.

Para solucionar este problema se cre un dominio DNS especial para realizar
bsquedas "inversas", denominado in-addr.arpa.. Este dominio utiliza un orden
inverso de nmeros en la notacin decimal de las direcciones IP. Con esta
disposicin se puede delegar la autoridad de miembros inferiores del dominio in-
addr.arpa. a las distintas organizaciones, a medida que se les asigna
identificadores de red de clase A, B o C.

Sugerencias de los servidores del Dominio Raz

El archivo de "sugerencias raz" (root hint), denominado tambin archivo de


sugerencias de cach, contiene la informacin de host necesaria para resolver
nombres fuera de los dominios en los que el servidor posee autoridad. En concreto,
este archivo contiene los nombres y las direcciones IP de los servidores DNS del
dominio punto (.) o raz.

Transferencias de zona

En aquellas zonas en las que existen diferentes servidores de nombres con autoridad
(uno principal o maestro y uno o varios secundarios o esclavos), cada vez que se
realizan cambios en la zona del servidor maestro, estos cambios deben replicarse a
todos los servidores secundarios de esa zona. Esta accin se lleva a cabo mediante
un mecanismo denominado transferencia de zona. Existen dos tipos de transferencia
de zonas: completa e incremental.

Transferencia completa de zona

En una transferencia completa de zona, el servidor maestro para una zona transmite
toda la base de datos de zona al servidor secundario para esa zona.

Los servidores secundarios siguen los siguientes pasos a la hora de realizar una
transferencia de zona:

1. El servidor secundario para la zona espera el tiempo especificado en el campo


Actualizar del registro SOA y luego le pregunta al servidor maestro por su registro SOA.
2. El servidor maestro responde con su registro SOA.
3. El servidor secundario para la zona compara el nmero de serie devuelto con su
propio nmero y si este es mayor que el suyo, solicita una transferencia de zona completa.
4. El servidor maestro enva la base de datos de la zona completa al servidor
secundario.

Si el servidor maestro no responde, el servidor secundario lo seguir intentando


despus del intervalo especificado en el campo Reintentos del registro SOA. Si
todava no hay respuesta despus del intervalo que se especifica en el campo
Caduca desde la ltima transferencia de zona, este descarta su zona.

Transferencia incremental de zona

Las transferencias completas de zona pueden consumir gran ancho de banda de la


red. Para poder solucionar este problema se define la transferencia incremental de
zona, en la cual slo debe transferirse la parte modificada de una zona.

La transferencia incremental de zona funciona de forma muy similar a la


transferencia completa. En este caso, el servidor secundario para la zona comprueba
el nmero de serie del registro SOA del maestro con el suyo, para determinar si
debe iniciar una transferencia de zona, la cual en este caso sera incremental (slo
de los cambios realizados).

Notificacin DNS

Con este proceso se pretende que el servidor maestro para la zona notifique los
cambios a ciertos servidores secundarios y de esta manera los secundarios podrn
comprobar si necesitan iniciar una transferencia de zona. De esta forma se mejora la
coherencia de los datos mantenida por todos los servidores secundarios.

Actualizaciones dinmicas

Originalmente, DNS se dise para que solamente admitiera cambios estticos. De


esta forma, slo el administrador del sistema DNS poda agregar, quitar o modificar
los registros de recursos, realizando cambios manuales sobre los archivos de
configuracin correspondientes.

El sistema de actualizaciones dinmicas, permite que el servidor principal para la


zona pueda configurarse de forma que acepte actualizaciones de recursos enviadas
desde otros equipos (habitualmente, sus clientes DNS). Este es el sistema preferido
en el caso de Windows 2000, aunque muchos administradores de DNS lo
desaconsejan por razones de seguridad.
Por ejemplo, el servidor maestro puede admitir (e incluir en su configuracin)
actualizaciones de registros A y PTR de las estaciones de trabajo de su dominio, que
le envan esa informacin cuando arrancan. Tambin sera posible recibir estas
actualizaciones de un servidor DHCP, una vez ha proporcionado la configuracin IP
a un cliente.

6.8. Servicios de comparticin de ficheros e impresoras: NFS, Samba

Introduccin al NFS
Compartiendo disco en una red local

El sistema NFS (Network File Sistem) fue desarrollado para permitir montar una
particin perteneciente a una mquina remota como si fuesa una particin local. Nos
proporciona, por tanto, un mtodo rpido y eficaz de compartir archivos y espacio
de disco entre distintos ordenadores de una red que soporte este sistema.

Este artculo relata mi experiencia personal al poner en marcha el NFS en mi mini-


red personal. Se puede encontrar ms informacin de cmo configurar NFS en el
excelente nfs-howto , que es el que yo he utilizado en la configuracin de mi
sistema y la base de este artculo.

Qu necesitamos?
Necesitaremos tener instalado portmap y el paquete nfs (nfs-utils) que se puede
encontrar en la mayora de las distribuciones en el ordenador que vaya a hacer de
servidor de disco.

El portmap nos permitir realizar conexiones RPC al servidor y es el encargado de


permitir o no el acceso al servidor a los equipos que especifiquemos.

Para saber si tenemos el portmap instalado bastar con un simple

>> ps aux | grep portmap

Deberamos tener una salida parecida a

rpc 1261 0.0 0.1 1560 568 ? S 15:48 0:00 portmap


bulconta 2544 0.0 0.1 1916 772 pts/0 S 16:04 0:00 grep portmap

Para saber si NFS est en marcha haremos una consulta al portmap para que nos
indique qu servicios tiene en marcha

>> rpcinfo -p

Que en mi servidor proporciona la siguiente salida


programa vers proto puerto
100000 2 tcp 111 portmapper
100000 2 udp 111 portmapper
100024 1 udp 1024 status
100024 1 tcp 1024 status
100011 1 udp 944 rquotad
100011 2 udp 944 rquotad
100011 1 tcp 947 rquotad
100011 2 tcp 947 rquotad
100005 1 udp 1025 mountd
100005 1 tcp 1056 mountd
100005 2 udp 1025 mountd
100005 2 tcp 1056 mountd
100005 3 udp 1025 mountd
100005 3 tcp 1056 mountd
100003 2 udp 2049 nfs
100003 3 udp 2049 nfs
100021 1 udp 1026 nlockmgr
100021 3 udp 1026 nlockmgr
100021 4 udp 1026 nlockmgr
Debemos verificar que portmap proporciona el servicio nfs. De no ser as es
normalmente porque no hemos instalado el paquete nfs-utils.

Compartiendo el disco

Una vez tenemos los servicios en marcha nicamente nos falta determinar qu
queremos compartir. En mi caso me interesaba poder acceder al directorio home y
al directorio /var/db.

Debemos editar el archivo /etc/exports e introducir


/usr/local 192.168.0.0/255.255.255.0(rw)
/var/db 192.168.0.0./255.255.255.0(rw)
Con esto estamos indicando que vamos a exportar /usr/local y /var/db permitiendo
acceso a nuestro rango de direcciones locales en modo de lectura/escritura.

Aunque en mi caso este tipo de exportacin es suficiente, podramos haber indicado


nicamente un equipo o varios de ellos. Por ejemplo, si hubiese querido dar acceso
a /tmp nicamente al equipo 192.168.0.10 en modo slo lectura, hubiese aadido
/tmp 192.168.0.10(ro)

Un poco de seguridad
La prudencia nos aconseja editar los ficheros /etc/hosts.allow y /etc/hosts.deny para
acabar de especificar qu ordenadores de la red pueden usar los servicios del
servidor. La documentacin del NFS recomienda las siguientes entradas

/etc/hosts.deny
portmap:ALL
lockd:ALL
mountd:ALL
rquotad:ALL
statd:ALL

/etc/hosts.allow
portmap:192.168.0.0/255.255.255.0
lockd:192.168.0.0/255.255.255.0
mountd:192.168.0.0/255.255.255.0
rquotad:192.168.0.0/255.255.255.0
statd:192.168.0.0/255.255.255.0

Para una red privada esto puede ser suficiente. De todos modos podramos hacer
una configuracin mucho ms fina especificando para cada servicio las direcciones
IP que tendrn acceso a l.

Iniciar la comparticin de archivos


Si hemos cambiado el fichero /etc/exports despus de iniciar el servicio NFS
deberemos indicar al sistema que releea el fichero y active los cambios. Esto lo
podemos hacer reiniciando el demonio nfsd o bien mediante

>> exportfs -ra


Configuracin de un equipo cliente NFS.

Ahora que ya tenemos el servidor funcionando vamos a acceder al espacio


compartido desde un ordenador cliente.

Como root ejecutamos

>> mount <servidor>:<directorio compartido> <punto de montaje>

En mi sistema el servidor es la mquina 192.168.0.2 y el punto de montaje lo he


dispuesto en /mnt/nfs que he creado en la mquina cliente.

As y para nuestro ejemplo bastar ejecutar como root

>> mount 192.168.0.2:/home /mnt/nfs

Un simple ls /mnt/nfs nos tendra que permitir ver que ya tenemos acceso al disco
del servidor.

Si queremos que el sistema de ficheros NFS sea montado al arrancar deberemos


aadir una entrada en el fichero /etc/fstab. En nuestro ejemplo aadiramos

192.168.0.2:/home /mnt/nfs nfs rw,hard,intr 0 0

Segn las opciones recomendadas en la documentacin.

Y para finalizar.

No es tan fiero el len como lo pintan. Tener en marcha la comparticin de archivos


en una red local Linux con un mnimo de seguridad es bastante sencillo.
Quedan fuera de este artculo temas como la optimizacin, distintas opciones de
acceso a los directorios y dems "delicatesen". Para ms informacin sobre estos
temas os remito a la documentacin original .

SAMBA
Acerca del protocolo SMB.

SMB (acrnimo de Server Message Block) es un protocolo, del Nivel de


Presentacin del modelo OSI de TCP/IP, creado en 1985 por IBM. Algunas veces
es referido tambin como CIFS (Acrnimo de Common Internet File System,
http://samba.org/cifs/) tras ser renombrado por Microsoft en 1998. Entre otras cosas,
Microsoft aadi al protocolo soporte para enlaces simblicos y duros as como
tambin soporte para ficheros de gran tamao. Por mera coincidencia esto ocurri
por la misma poca en que Sun Microsystems hizo el lanzamiento de WebNFS (una
versin extendida de NFS, http://www.sun.com/software/webnfs/overview.xml).

SMB fue originalmente diseado para trabajar a travs del protoclo NetBIOS, el
cual a su vez travaja sobre NetBEUI (acrnimo de NetBIOS Extended User
Interface, que se traduce como Interfaz de Usuario Extendida de NetBIOS),
IPX/SPX (acrnimo de Internet Packet Exchange/Sequenced Packet Exchange, que
se traduce como Intercambio de paquetes interred/Intercambio de paquetes
secuenciales) o NBT, aunque tambin puede trabajar directamente sobre TCP/IP.
Acerca de Samba.

SAMBA es un conjunto de programas, originalmente creados por Andrew Tridgell


y actualmente mantenidos por The SAMBA Team, bajo la Licencia Publica General
GNU, y que implementan en sistemas basados sobre UNIX el protocolo SMB.
Sirve como reemplazo total para Windows NT, Warp, NFS o servidores
Netware.

Sustento lgico necesario.

Los procedimientos descritos en este manual han sido probados para poder aplicarse
en sistemas con Red Hat Enterprise Linux 4, o equivalentes o versiones
posteriores, y al menos Samba 3.0.10 o versiones posteriores.

Necesitar tener instalados los siguientes paquetes, que seguramente vienen


incluidos en los discos de instalacin de su distribucin predilecta:

samba: Servidor SMB.


samba-client: Diversos clientes para el protoclo SMB.
samba- Ficheros necesarios para cliente y servidor.
common:

Consulte a la base de datos RPM del sistema si se encuentran instalados estos


paquetes, utilizando el siguiente mandato:

rpm -q samba samba-client samba-common

Si se utiliza Red Hat Enterprise Linux, solo bastar realizar lo siguiente para
instalar o actualizar la programtica necesaria:

up2date -i samba samba-client

Si utiliza CentOS 4 o White Box Enterprise Linux 4, solo bastar realizar lo


siguiente para instalar o actualizar la programtica necesaria:

yum -y install samba samba-client

Configuracin bsica de Samba.

Para la mayora de los casos la configuracin de Samba como servidor de archivos


es suficiente.

Alta de cuentas de usuario.

Es importante sincronizar las cuentas entre el servidor Samba y las estaciones


Windows. Es decir, si en una mquina con Windows ingresamos como el
usuario "paco" con clave de acceso "elpatito16", en el servidor Samba deber
existir tambin dicha cuenta con ese mismo nombre y la misma clave de acceso.
Como la mayora de las cuentas de usuario que se utilizarn para acceder hacia
samba no requieren acceso al interprete de mandatos del sistema, no es necesario
asignar clave de acceso con el mandato passwd y se deber definir /sbin/nologin o
bien /bin/false como interpete de mandatos para la cuenta de usuario involucrada.

useradd -s /sbin/nologin usuario-windows


smbpasswd -a usuario-windows
No hace falta se asigne una clave de acceso en el sistema con el mandato passwd
puesto que la cuenta no tendr acceso al interprete de mandatos.

Si se necesita que las cuentas se puedan utilizar para acceder hacia otros servicios como
seran Telnet, SSH, etc, es decir, que se permita acceso al interprete de mandatos, ser
necesario especificar /bin/bash como interprete de mandatos y adems se deber
asignar una clave de acceso en el sistema con el mandato passwd:

useradd -s /bin/bash usuario-windows


passwd usuario-windows
smbpasswd -a usuario-windows

El fichero lmhosts

Es necesario empezar resolviendo localmente los nombres NetBIOS asocindolos


con direcciones IP correspondientes. Para fines prcticos el nombre NetBIOS debe
tener un mximo de 11 caracteres. Normalmente tomaremos como referencia el
nombre corto del servidor o el nombre corto que se asigno como alias a la interfaz
de red. Este lo estableceremos en el fichero /etc/samba/lmhosts, en donde
encontraremos lo siguiente:

127.0.0.1 localhost

Debemos aadir entonces el nombre que hayamos elegido asociado a la direccin IP


que se tenga dentro de la red local. Opcionalmente podr aadir tambin los
nombres y direccin IP del resto de las mquinas que conformen la red local. La
separacin de espacios se hace con un tabulador. Ejemplo:

127.0.0.1 localhost
192.168.1.5 maquinalinux
192.168.1.6 isaac
192.168.1.7 finanzas
192.168.1.8 direccion

Parmetros principales del fichero smb.conf.

Modifique el fichero /etc/samba/smb.conf con cualquier editor de texto. Dentro de


este notar que la informacin que le ser de utilidad viene comentada con un
smbolo # y los ejemplos con ; (punto y coma), siendo estos ltimos los que
tomaremos como referencia.

Empezaremos por establecer el grupo de trabajo editando el valor del parmetro


workgroup asignando un grupo de trabajo deseado:

workgroup = MIGRUPO

Opcionalmente puede establecer con el parmetro netbios name otro nombre


distinto para el servidor si acaso fuese necesario, pero siempre tomando en cuenta
que dicho nombre deber corresponder con el establecido en el fichero
/etc/samba/lmhosts:

netbios name = maquinalinux

El parmetro server string es de carcter descriptivo. Puede utilizarse un


comentario breve que de una descripcin del servidor.

server string = Servidor Samba %v en %L


Parmetros tiles para la seguridad.

La seguridad es importante y esta se puede establecer primeramente estableciendo


la lista de control de acceso que definir que mquinas o redes podrn acceder hacia
el servidor. El parmetro hosts allow sirve para determinar esto. Si la red consiste
en la mquinas con direccin IP desde 192.168.1.1 hasta 192.168.1.254, el rango de
direcciones IP que se definir en hosts allow ser 192.168.1. de modo tal que solo se
permitir el acceso dichas mquinas. Note por favor el punto al final de cada rango.
Modifique sta de manera que quede del siguiente modo:

hosts allow = 192.168.1. 127.

El parmetro interfaces permite establecer desde que interfaces de red del sistema
se escucharn peticiones. Samba no responder a peticiones provenientes desde
cualquier interfaz no especificada. Esto es til cuando Samba se ejecuta en un
servidor que sirve tambin de puerta de enlace para la red local, impidiendo se
establezcan conexiones desde fuera de la red local.

interfaces = 192.168.1.254/24

Impresoras en Samba.

Las impresoras se comparten de modo predeterminado, as que solo hay que realizar
algunos ajustes. Si se desea que se pueda acceder hacia la impresora como usuario
invitado sin clave de acceso, basta con aadir public = Yes en la seccin de
impresoras del siguiente modo:

[printers]
comment = El comentario que guste.
path = /var/spool/samba
printable = Yes
browseable = No
writable = no
printable = yes
public = Yes

Windows NT, 2000 y XP no tendrn problema alguno para acceder e imprimir hacia
las impresoras, sin embargo Windows 95, 98 y ME suelen tener problemas para
comunicarse con Samba para poder imprimir. Por tanto, si se quiere evitar
problemas de conectividad con dichos sistemas operativos hay que agregar algunos
parmetros que resolvern cualquier eventualidad:

[printers]
comment = Impresoras.
path = /var/spool/samba
printable = Yes
browseable = No
writable = no
printable = yes
public = Yes
print command = lpr -P %p -o raw %s -r
lpq command = lpstat -o %p
lprm command = cancel %p-%j

Se pude definir tambin a un usuario o bien un grupo (@grupo_que_sea) para la


administracin de las colas de las impresoras:

[printers]
comment = Impresoras.
path = /var/spool/samba
printable = Yes
browseable = No
writable = no
printable = yes
public = Yes
print command = lpr -P %p -o raw %s -r
lpq command = lpstat -o %p
lprm command = cancel %p-%j
printer admin = fulano, @opers_impresion

Con lo anterior se define que el usuario fulano y quien pertenezca al grupo


opers_impresion podrn realizar tareas de administracin en las impresoras.

Compartiendo directorios a travs de Samba.

Para los directorios o volmenes que se irn a compartir, en el mismo fichero de


configuracin encontrar distintos ejemplos para distintas situaciones particulares.
En general, puede utilizar el siguiente ejemplo que funcionar para la mayora:

[Lo_que_sea]
comment = Comentario que se le ocurra
path = /cualquier/ruta/que/desee/compartir

El volumen puede utilizar cualquiera de las siguientes opciones:

Opcin Descripcin
guest ok Define si ser permitir el acceso como usuario
invitado. El valor puede ser Yes o No.
public Es un equivalente del parmetro guest ok, es decir
define si ser permitir el acceso como usuario
invitado. El valor puede ser Yes o No.
browseable Define si se permitir mostrar este recurso en las listas
de recursos compartidos. El valor puede ser Yes o No.
writable Define si ser permitir la escritura. Es el parmetro
contrario de read only. El valor puede ser Yes o No.
Ejemplos: writable = Yes es lo mismo que
read only = No. Obviamente writable = No
es lo mismo que read only = Yes
valid users Define que usuarios o grupos pueden acceder al
recurso compartido. Los valores pueden ser nombres
de usuarios separados por comas o bien nombres de
grupo antecedidos por una @. Ejemplo: fulano,
mengano, @administradores

write list Define que usuarios o grupos pueden acceder con


permiso de escritura. Los valores pueden ser nombres
de usuarios separados por comas o bien nombres de
grupo antecedidos por una @. Ejemplo: fulano,
mengano, @administradores
admin users Define que usuarios o grupos pueden acceder con
permisos administrativos para el recurso. Es decir,
podrn acceder hacia el recurso realizando todas las
operaciones como super-usuarios. Los valores pueden
ser nombres de usuarios separados por comas o bien
nombres de grupo antecedidos por una @. Ejemplo:
fulano, mengano, @administradores
directory mask Es lo mismo que directory mode. Define que
permiso en el sistema tendrn los subdirectorios
creados dentro del recurso. Ejemplos: 1777
create mask Define que permiso en el sistema tendrn los nuevos
ficheros creados dentro del recurso. Ejemplo: 0644

En el siguiente ejemplo se compartir a travs de Samba el recurso denominado ftp,


el cual est localizado en el directorio /var/ftp/pub del disco duro. Se permitir el
acceso a cualquiera pero ser un recurso de solo lectura salvo para los usuarios
administrador y fulano. Todo directorio nuevo que sea creado en su interior tendr
permiso 755 y todo fichero que sea puesto en su interior tendr permiso 644.

[ftp]
comment = Directorio del servidor FTP
path = /var/ftp/pub
guest ok = Yes
read only = Yes
write list = fulano, administrador
directory mask = 0755
create mask = 0644

Configuracin avanzada de Samba.

Samba fue creado con un objetivo: ser en un reemplazo definitivo para Windows
como servidor en una red local. sto, por supuesto, requiere algunos procedimientos
adicionales dependiendo de las necesidades de la red local.

Re-asignacin de grupos de Windows en Samba.

Los grupos que existen en Windows tambin se utilizan en Samba para ciertas
operaciones, principalmente relacionadas con lo que involucra un Controlador
Primario de dominio (o PDC que significa Primary Domain Controler). Estos
grupos existen de modo predefinido en Samba. Sin embargo, si se ejecuta lo
siguiente:

net groupmap list

Devolver la siguiente informacin:

System Operators (S-1-5-32-549) -> -1


Domain Admins (S-1-5-21-XXXXXXXXXX-XXXXXXXXXX-XXXXXXXXXX-512)
-> -1
Replicators (S-1-5-32-552) -> -1
Guests (S-1-5-32-546) -> -1
Domain Guests (S-1-5-21-XXXXXXXXXX-XXXXXXXXXX-XXXXXXXXXX-514)
-> -1
Power Users (S-1-5-32-547) -> -1
Print Operators (S-1-5-32-550) -> -1
Administrators (S-1-5-32-544) -> -1
Account Operators (S-1-5-32-548) -> -1
Domain Users (S-1-5-21-XXXXXXXXXX-XXXXXXXXXX-XXXXXXXXXX-513)
-> -1
Backup Operators (S-1-5-32-551) -> -1
Users (S-1-5-32-545) -> -1
Lo anterior corresponde al mapa de los grupos que, de modo predeterminado,
utilizar Samba si ste fuese configurado como Controlador Primario de Dominio.
XXXXXXXXXX-XXXXXXXXXX-XXXXXXXXXX corresponde a un nmero
generado aleatoriamente al iniciarse Samba por primera vez. Tome nota de dicho
nmero, ya que lo requerir ms adelante para re-asignar los nombres al espaol
en el mapa de grupos.

Los grupos anteriormente descritos trabajarn perfecta y limpiamente


asocindolos contra grupos en el sistema, pero solo si utiliza alguna versin de
Windows en ingles. Si utiliza alguna versin de Windows en espaol, habr que
re-asignar los nombres de los grupos a los correspondientes al espaol y
asociarles a grupos en el sistema, esto a fin de permitir asignar usuarios a dichos
grupos y de este modo delegar tareas de administracin del mismo modo que en
Windows.

Es por tal motivo que si se tiene la intencin de configurar Samba como


Controlador Primario de Dominio y al mismo tiempo poder hacer uso de los grupos
del mismo modo que en Windows, es decir, por mencionar un ejemplo, permitir a
ciertos usuarios pertenecer al grupo de administradores del dominio con privilegios
de administrador, lo primero ser entonces generar los grupos en el sistema
ejecutando como root los siguientes mandatos:

groupadd -r administradores
groupadd -r admins_dominio
groupadd -r duplicadores
groupadd -r invitados
groupadd -r invs_dominio
groupadd -r opers_copias
groupadd -r opers_cuentas
groupadd -r opers_impresion
groupadd -r opers_sistema
groupadd -r usrs_avanzados
groupadd -r usuarios
groupadd -r usuarios_dominio

Una vez creados los grupos en el sistema, solo resta re-asignar los nombres al
espaol en el mapa de grupo de Samba y asociarles a stos los grupos recin
creados en el sistema. El procedimiento se resume a ejecutar algo como lo siguiente:

net groupmap modify \


ntgroup="Nombre grupo Windows en espaol" \
sid="nmero-de-identidad-en-sistema" \
unixgroup="grupo_en_linux" \
comment="comentario descriptivo acerca del grupo"

Lo anterior establece que se modifique el registro del grupo que corresponda al sid
(identidad de sistema) definido con el nombre establecido con ntgroup, asocindolo
al grupo en el servidor con unixgroup y aadiendo un comentario descriptivo
acerca de dicho grupo con comment.

De modo tal, y a fin de facilitar las cosas a quien haga uso de este manual, puede
utilizar el siguiente guin para convertir los nombres al espaol y asociarlos a
grupos en Linux, donde solo deber definir el nmero de identidad del sistema que
corresponda al servidor:

#!/bin/sh
SIDSAMBA=XXXXXXXXXX-XXXXXXXXXX-XXXXXXXXXX

net groupmap modify ntgroup="Administradores" \


sid="S-1-5-32-544" unixgroup=administradores \
comment="Los administradores tienen acceso completo y sin restricciones al
equipo o dominio"

net groupmap modify ntgroup="Admins. del dominio" \


sid="S-1-5-21-$SIDSAMBA-512" unixgroup=admins_dominio \
comment="Administradores designados del dominio"

net groupmap modify ntgroup="Duplicadores" \


sid="S-1-5-32-552" unixgroup=duplicadores \
comment="Pueden duplicar archivos en un dominio"

net groupmap modify ntgroup="Invitados del dominio" \


sid="S-1-5-21-$SIDSAMBA-514" unixgroup=invitados \
comment="Todos los invitados del dominio"

net groupmap modify ntgroup="Invitados" \


sid="S-1-5-32-546" unixgroup=invitados \
comment="Los invitados tienen de modopredeterminado el mismo acceso que los
miembros del grupo Usuarios, excepto la cuenta Invitado que tiene mas
restricciones"

net groupmap modify ntgroup="Operadores de copias" \


sid="S-1-5-32-551" unixgroup=opers_copias \
comment="Los operadores de copia pueden sobrescribir restricciones de
seguridad con el unico proposito de hacer copias de seguridad o restaurar
archivos"

net groupmap modify ntgroup="Opers. de cuentas" \


sid="S-1-5-32-548" unixgroup=opers_cuentas \
comment="Pueden administrar cuentas de usuarios y grupos del dominio"

net groupmap modify ntgroup="Opers. de impresin" \


sid="S-1-5-32-550" unixgroup=opers_impresion \
comment="Pueden operar impresoras del dominio"

net groupmap modify ntgroup="Opers. de servidores" \


sid="S-1-5-32-549" unixgroup=opers_sistema \
comment="Pueden administrar sistemas del dominio"

net groupmap modify ntgroup="Usuarios avanzados" \


sid="S-1-5-32-547" unixgroup=usrs_avanzados \
comment="Los usuarios avanzados tienen mas derechos administrativos con
algunas restricciones. De este modo, pueden ejecutar aplicaciones heredadas
junto con aplicaciones certificadas"

net groupmap modify ntgroup="Usuarios del dominio" \


sid="S-1-5-21-$SIDSAMBA-513" unixgroup=usuarios_dominio \
comment="Todos los usuarios del dominio"

net groupmap modify ntgroup="Usuarios" \


sid="S-1-5-32-545" unixgroup=usuarios \
comment="Los usuarios no pueden hacer cambios accidentales o intencionados en
el sistema. Pueden ejecutar aplic. certificadas, pero no la mayora de las
heredadas"

exit 0

Nota: Este guin en esta incluido en el disco de Extras de curso de Linux Para Todos. Solo basta editarlo y definir la
variable SIDSAMBA y ejecutarlo como root.

Una vez hecho lo anterior, al volver a realizar lo siguiente:

net groupmap list

Se deber de mostrar ahora esto otro:

Opers. de servidores (S-1-5-32-549) -> opers_sistema


Admins. del dominio (S-1-5-21-XXXXXXXXXX-XXXXXXXXXX-
XXXXXXXXXX-512) -> admins_dominio
Duplicadores (S-1-5-32-552) -> duplicadores
Invitados (S-1-5-32-546) -> invitados
Invitados del dominio (S-1-5-21-XXXXXXXXXX-XXXXXXXXXX-
XXXXXXXXXX-514) -> invitados
Usuarios avanzados (S-1-5-32-547) -> usrs_avanzados
Opers. de impresin (S-1-5-32-550) -> opers_impresion
Administradores (S-1-5-32-544) -> administradores
Opers. de cuentas (S-1-5-32-548) -> opers_cuentas
Usuarios del dominio (S-1-5-21-XXXXXXXXXX-XXXXXXXXXX-
XXXXXXXXXX-513) -> usuarios_dominio
Operadores de copias (S-1-5-32-551) -> opers_copias
Usuarios (S-1-5-32-545) -> usuarios

De este modo, si por ejemplo, se agrega al usuario fulano al grupo


admins_dominio, se tendr el mismo efecto que si se hiciera lo mismo en Windows
agregando al usuario al grupo Admins. del dominio. Esto por supuesto solamente
tendr utilidad si Samba se configura y utiliza como Controlador Primario de
Dominio.

Alta de cuentas de usuario en Controlador Primario de Dominio.

Si se configur Samba para funcionar como Controlador Primario de Dominio, ser


necesario asignar a root una clave de acceso en Samba, la cual por supuesto puede
ser diferente a la del sistema, debido a que las estaciones de trabajo necesitan
autenticar primero con el usuario root de Samba para poder unirse dominio y poder
crear de este modo una cuenta de mquina en el sistema a travs del parmetro add
machine script ya descrito anteriormente.

Los usuarios es necesario darlos de alta de modo que queden agregados a los que
correspondan en el sistema a grupos Usuarios y Usuarios del dominio de
Windows, es decir a los grupos usuarios y usuarios_dominio.

useradd -s /sbin/nologin -G usuarios,usuarios_dominio usuario-


windows
smbpasswd -a usuario-windows

Si el usuario ya existiese, solo ser necesario agragarlo a los grupos usuarios y


usuarios_dominio con gpassswd del siguiente modo:

gpasswd -a usuario-windows usuarios


gpasswd -a usuario-windows usuarios_dominio

En teora en el directorio definido para el recurso Profiles se deben crear


automticamente los directorios de los usuarios donde se almacenarn los perfiles.
De ser necesario es posible generar stos directorios utilizando el siguiente guin:

cd /home
for user in *
do
mkdir -p /var/lib/samba/profiles/$user
chown $user.$user /var/lib/samba/profiles/$user
done

Parmetros de configuracin avanzada en el fichero smb.conf

Anunciando el servidor Samba en los grupos de trabajo.

La opcin remote announce se encarga de que el servicio nmbd se anuncie a si


mismo de forma peridica hacia una red en particular y un grupo de trabajo
especfico. Esto es particularmente til si se necesita que el servidor Samba
aparezca no solo en el grupo de trabajo al que pertenece sino tambin otros grupos
de trabajo. El grupo de trabajo de destino puede estar en donde sea mientras exista
una ruta y sea posible la transmisin exitosa de paquetes.

remote announce = 192.168.1.255/MI-DOMINIO 192.168.2.255/OTRO-


DOMINIO
El ejemplo anterior defini que el servidor Samba se anuncie a si mismo al los
grupos de trabajo MI-DOMINIO y OTRO-DOMINIO en las redes cuyas IP de
transmisin son 192.168.1.255 y 192.168.2.255 correspondientemente.

Ocultando y denegando acceso a ficheros.

No es conveniente que los usuarios acceder o bien puedan ver la presencia de


ficheros ocultos en el sistema, es decir ficheros cuyo nombre comienza con un
punto, particularmente si acceden a su directorio personal en el servidor Samba
(.bashrc, .bash_profile, .bash_history, etc.). Puede utilizarse el parmetro hide dot
files para mantenerlos ocultos.

hide dot files = Yes

En algunos casos puede ser necesario denegar el acceso a cierto tipo de ficheros del
sistema. El parmetro veto files se utiliza para especificar la lista, separada por
diagonales, de aquellas cadenas de texto que denegarn el acceso a los ficheros
cuyos nombres contengan estas cadenas. En el siguiente ejemplo, se denegar el
acceso hacia los ficheros cuyos nombres incluyan la palabra Security y los que
tengan extensin o terminen en .tmp:

veto files = /*Security*/*.tmp/

Opciones para cliente o servidor Wins.

Puede habilitar convertirse en servidor WINS o bien utilizar un servidor WINS ya


existente. Se puede ser un servidor WINS o un cliente WINS, pero no ambas cosas
a al vez.

Si se va ser el servidor WINS, debe habilitarse lo siguiente:

wins support = Yes

Si se va a utilizar un servidor WINS ya existente, debe descomentar la


siguiente lnea y especificar que direccin IP utiliza dicho servidor WINS:

wins server = 192.168.1.1

Opciones especficas para Controlador Primario de Dominio


(PDC).

Si se va a configurar Samba como Controlador Primario de Dominio, se debe


especificar todos los parmetros descritos a continuacin.

Si se quiere que las claves de acceso del sistema y Windows se mantengan


sincronizadas, es necesario descomentar las siguiente lenas:

unix password sync = Yes


passwd program = /usr/bin/passwd %u
passwd chat = *New*UNIX*password* %n\n
*ReType*new*UNIX*password* %n\n
*passwd:*all*authentication*tokens*updated*successfully*

El parmetro local master define al servidor como examinador del dominio (o


master browser); El parmetro domain master define al servidor maestro del
dominio; El parmetro preferred master define al servidor como maestro del
domino preferido en caso de haber ms servidores presentes en el mismo dominio
como controladores de dominio; El parmetro time server se utiliza para definir
que las estaciones debern sincronizar la hora con el servidor al unirse al dominio;
El parmetro domain logons define que el servidor permitir a las estaciones
autenticar contra Samba.

local master = Yes


domain master = Yes
preferred master = Yes
time server = Yes
domain logons = Yes

La configuracin de Controlador Primario de Dominio requiere adems definir


donde se almacenarn los perfiles de los usuarios. Windows 95, 98 y ME requieren
se defina con el parmetro logon home, en tanto que Windows NT, 2000 y XP
requieren se haga con el parmetro logon path. Para efectos prcticos y de
previsin, utilice ambos parmetros y defina la unidad H para dicho volumen:

logon path = \\%L\Profiles\%U


logon home = \\%L\%U\.profile
logon drive = H:

Si se va a utilizar Samba como Controlador Primario de Dominio, es necesario


establecer el guin que ejecutarn las estaciones Windows al conectarse hacia el
servidor. Esto se hace a travs del parmetro logon script el cual puede definir o
bien un guin a utilizar por cada usuario (%u.bat) o bien por cada mquina
(%m.bat) o bien de modo general para todos (logon.cmd). Para no complicar las
cosas, defina inicialmente un guin general para todos del siguiente modo:

logon script = logon.cmd

El fichero /var/lib/samba/netlogon/logon.cmd deber contener algo como lo


siguiente:

REM windows client logon script


REM

net time \\mi-servidor /SET /YES


net use H: \\mi-servidor\homes /PERSISTENT:NO

El Controlador Primario de Dominio va a necesitar tambin se definan los guiones a


ejecutar para distintas tareas como alta de mquinas, usuarios y grupos as como la
baja de estos.

add user script = /usr/sbin/useradd %u


add machine script = /usr/sbin/useradd -d /dev/null -g 100
-s /bin/false -c "Cuenta de mquina" -M %u
delete user script = /usr/sbin/userdel %u
delete group script = /usr/sbin/groupdel %g
add user to group script = /usr/bin/gpasswd -a %u %g
set primary group script = /usr/sbin/usermod -g %g %u

El parmetro add user script sirve para definir lo que se deber ejecutar en el
trasfondo en el sistema para crear una nueva cuenta de usuario. El parmetro add
machine script es particularmente importante porque es el mandato utilizado para
dar de alta cuentas de mquinas (trust accounts o cuentas de confianza) de modo
automtico. El parmetro delete user script es para definir lo propio para eliminar
usuarios, delete group script para eliminar grupos, add user to group para aadir
usuarios a grupos y set primary group script para establecer un grupo como el
principal para un usuario.

Directorio para Netlogon y perfiles en Controlador Primario de Dominio (PDC).

Si se va a utilizar Samba como Controlador Primario de Dominio, es necesario


definir los recursos donde residir netlogon y tambin donde se almacenarn los
perfiles de los usuarios:

[netlogon]
comment = Network Logon Service
path = /var/lib/samba/netlogon
write list = @administradores, @admins_dominio
guest ok = Yes
browseable = Yes

[Profiles]
path = /var/lib/samba/profiles
read only = No
guest ok = Yes
create mask = 0600
directory mask = 0700

Genere con el mandato mkdir los directorios /var/lib/samba/profiles y


/var/lib/samba/netlogon. El directorio /var/lib/samba/profiles deber pertenecer a
root y al grupo users y tener permiso 1777 a fin de permitir crear el directorio de
perfil correspondiente para cada usuario.

mkdir -p -m 1777 /var/lib/samba/profiles


mkdir -p /var/lib/samba/netlogon
chgrp users /var/lib/samba/profiles

Iniciar el servicio y aadirlo al arranque del sistema.

Si iniciar Samba por primera vez realice lo siguiente:

/sbin/service smb start

Si va a reiniciar el servicio, realice lo siguiente:

/sbin/service smb restart

Para que Samba inicie automticamente cada vez que inicie el servidor solo ejecute
el siguiente mandato:

/sbin/chkconfig smb on

Accediendo hacia Samba.

Modo texto.

Smbclient.

Indudablemente el mtodo ms prctico y seguro es el mandato smbclient. Este


permite acceder haca cualquier servidor Samba o Windows como si fuese el
mandato ftp en modo texto.
Para acceder al cualquier recurso de alguna mquina Windows o servidor
SAMBA determine primero que volmenes o recursos compartidos posee est.
utilice el mandato smbclient del siguiente modo:

smbclient -U usuario -L alguna_maquina

Lo cual le devolvera ms menos lo siguiente:

Domain=[MI-DOMINIO] OS=[Unix] Server=[Samba 3.0.7-1.3E]

Sharename Type Comment


--------- ---- -------
homes Disk Home Directories
netlogon Disk Network Logon Service
ftp Disk ftp
IPC$ IPC IPC Service (Servidor Samba 3.0.7-1.3E en
mi-servidor)
ADMIN$ IPC IPC Service (Servidor Samba 3.0.7-1.3E en
mi-servidor)
epl5900 Printer Created by redhat-config-printer 0.6.x
hp2550bw Printer Created by redhat-config-printer 0.6.x
Anonymous login successful
Domain=[MI-DOMINIO] OS=[Unix] Server=[Samba 3.0.7-1.3E]

Server Comment
--------- -------
mi-servidor Servidor Samba 3.0.7-1.3E en mi-servidor

Workgroup Master
--------- -------
MI-DOMINIO MI-SERVIDOR

La siguiente corresponde a la sintaxis bsica para poder navegar los recursos


compartidos por la mquina Windows o el servidor SAMBA:

smbclient //alguna_maquina/recurso -U usuario

Ejemplo:

smbclient //LINUX/FTP -U jbarrios

Despus de ejecutar lo anterior, el sistema solicitar se proporcione la clave de


acceso del usuario jbarrios en el equipo denominado LINUX.

smbclient //LINUX/FTP -U jbarrios


added interface ip=192.168.1.254 bcast=192.168.1.255
nmask=255.255.255.0
Password:
Domain=[miusuario] OS=[Unix] Server=[Samba 2.2.1a]
smb: \>

Pueden utilizarse virtualmente los mismos mandatos que en el interprete de ftp,


como seran get, mget, put, del, etc.

Por montaje de unidades de red.

Si necesita poder visualizar desde GNU/Linux a las mquinas con Windows e


interactuar con los directorios compartidos por ests, necesitar realizar algunos
pasos adicionales. De manera predeterminada, y por motivos de seguridad, solo
root puede utilizar los mandatos smbmnt y smbumount. Deber entonces establecer
permisos de SUID a dichos mandatos. Puede hacerlo ejecutando, como root lo
siguiente:

chmod 4755 /usr/bin/smbmnt


chmod 4755 /usr/bin/smbumount

Para acceder hacia una mquina Windows determine primero que volmenes o
recursos compartidos posee est. utilice el mandato smbclient del siguiente modo:

smbclient -N -L alguna_maquina

Lo cual le devolvera ms menos lo siguiente:

Anonymous login successful


Domain=[MI-DOMINIO] OS=[Unix] Server=[Samba 3.0.7-1.3E]

Sharename Type Comment


--------- ---- -------
homes Disk Home Directories
netlogon Disk Network Logon Service
ftp Disk ftp
IPC$ IPC IPC Service (Servidor Samba 3.0.7-1.3E en
mi-servidor)
ADMIN$ IPC IPC Service (Servidor Samba 3.0.7-1.3E en
mi-servidor)
epl5900 Printer Created by redhat-config-printer 0.6.x
hp2550bw Printer Created by redhat-config-printer 0.6.x
Anonymous login successful
Domain=[MI-DOMINIO] OS=[Unix] Server=[Samba 3.0.7-1.3E]

Server Comment
--------- -------
mi-servidor Servidor Samba 3.0.7-1.3E en mi-servidor

Workgroup Master
--------- -------
MI-DOMINIO MI-SERVIDOR

En el ejemplo anterior hay un volumen compartido llamado algn_volumen. Si


queremos montar este, debemos crear un punto de montaje. ste puede crearse en
cualquier directorio sobre el que tengamos permisos de escritura. Para montarlo,
utilizamos entonces la siguiente lnea de mandato:

smbmount //alguna_maquina/algn_volumen /punto/de/montaje/

Si la mquina Windows requiere un usuario y una clave de acceso, puede aadir a


lo anterior las opciones -username=el_necesario -password=el_requerido
-workgroup=MIGRUPO

Si la distribucin de GNU/Linux utilizada es reciente, tambin puede utilizar el ya


conocido mandato mount del siguiente modo:

mount -t smbfs -o
username=el_necesario,password=el_requerido
//alguna_maquina/algn_volumen /punto/de/montaje/

Si se genera una cuenta pcguest, similar a la cuenta nobody, podemos montar


volmenes SMB sin ingresar una clave de acceso pero con privilegios restringidos,
o aquellos que definamos a un volumen accedido por un usuario invitado. Esto sera
el mtodo por eleccin para compartir volmenes en una red de rea local. Puede
generarse una cuenta pcguest o bien dejar que el sistema tome al usuario nobody. Si
opta por lo primero, solo de de alta la cuenta NO asigne clave de acceso alguna.
Montar volmenes remotos como usuarios invitado es muy sencillo. Un ejemplo
real sera:

mount -t smbfs -o guest //LINUX/FTP //var/ftp


Lo anterior monta un volumen SAMBA de una mquina con GNU/Linux en otra
mquina con GNU/Linux.

Puede aadirse tambin una entrada en /etc/fstab de modo que slo tenga que ser
tecleado mount /punto/de/montaje. Esta lnea sera de modo similar al siguiente:

//LINUX/FTP /var/ftp smbfs user,auto,guest,ro,gid=100 0


0

Recurdese que el volumen compartido debe estar configurado para permitir


usuarios invitados:

[FTP]
comment = Programtica libre (RPMS)
path = /var/ftp/pub
public = Yes
guest ok = Yes

Modo grfico

Desde el entorno de GNOME.

Si utiliza GNOME 2.x o superior, ste incluye un mdulo para Nautilus que permite
acceder hacia los recursos compartidos a travs de Samba sin necesidad de
modificar cosa alguna en el sistema. Solo hay que hacer clic en Servidores de red
en el men de GNOME.

Desde Windows.

Por su parte, desde Windows deber ser posible acceder sin problemas hacia Samba
como si fuese hacia cualquier otra mquina con Windows. Vaya, ni Windows ni el
usuario notarn siquiera la diferencia.

Uniendo mquinas al dominio del Controlador Primario de Dominio.

El controlador de dominio permite utilizar a Samba como servidor de autenticacin


y servidor de archivos que adems permite almacenar el perfil, preferencias y
documentos del usuario en el servidor automticamente sin la intervencin del
usuario.
Creando manualmente cuentas de mquinas

Bajo algunas circunstancias ser necesario crear cuentas de mquinas (trust


accounts o cuentas de confianza) a fin de permitir unirse al dominio. el
procedimiento es simple:

/usr/sbin/useradd -d /dev/null -g 100 -s /bin/false -c "Cuenta


de mquina" -M maquina-windows$
smbpasswd -a maquina-windows$

Es de resaltar que las cuentas de mquinas deben incluir obligatoriamente un


smbolo $ al final del nombre.

Windows 95/98/ME y Windows XP Home

Ya que los sistemas con Windows 95/98/ME y Windows XP Home no incluyen una
implementacin completa como miembros de dominio, no se requieren cuentas de
confianza. El procedimiento para unirse al dominio es el siguiente:

Acceder hacia Men de inicio Configuraciones Panel de control


Red
Seleccione la pestaa de Configuracin
Seleccione Cliente de redes Microsoft
Haga clic en el botn de propiedades
Seleccione Acceder a dominio de Windows NT y especifique el dominio
correspondiente.
Clic en todos los botones de Aceptar y reinicie el sistema
Acceda con cualquier usuario que haya sido dado de alta en el servidor
Samba y que adems cuente con una clave de acceso asignada con
smbpasswd.

Windows NT
Crear manualmente la cuenta de mquina como se decribi anteriormente.
Acceder hacia Men de inicio Configuraciones Panel de control
Red.
Seleccionar la pestaa de Identificacin.
Clic en el botn de Cambiar.
Ingrese el nombre del dominio y el nombre del sistema. No selecione
Crear una cuenta de mquina en el Dominio.
Clic en Aceptar
Espere algunos segundos.
Deber mostrarse un mensaje emergente de confirmacin que dice
Bienvenido a MI-DOMINIO
Reinicie el sistema
Acceda con cualquier usuario que haya sido dado de alta en el servidor
Samba y que adems cuente con una clave de acceso asignada con
smbpasswd.
Windows 2000/2003 y Windows XP Profesional
Clic derecho en el icono de Mi PC.
Seleccionar Propiedades
Haga clic en la pestaa de Identificacin de red o Nombre del sistema.
Clic en el botn de Propiedades.
Clic en el botn Miembro de dominio
Ingrese el nombre del dominio y el nombre de la mquina y haga clic en el
botn de Aceptar
Aparecer un dilogo que preguntar por una cuenta y clave de acceso con
privilegios de administracin en el servidor. Especifique la root y la clave
de acceso que asign a la cuenta de root con el mandato smbpasswd (NO
LA CLAVE DE ACCESO DE ROOT EN EL SISTEMA).
Espere algunos segundos.
Deber mostrarse un mensaje emergente de confirmacin que dice
Bienvenido a MI-DOMINIO
Reinicie el sistema
Acceda con cualquier usuario que haya sido dado de alta en el servidor
Samba y que adems cuente con una clave de acceso asignada con
smbpasswd.

6.9. Servicio de correo : SMTP

Simple Mail Transfer Protocol (SMTP), es uno de los servicios ms importantes que
proporciona Internet. Ahora casi todas las compaas tienen o dependen del correo,
y por extensin todos los servidores SMTP. Se encuentran disponibles muchos
paquetes SMTP, siendo el ms viejo y el ms probado el Sendmail (ahora con
soporte comercial, etc.), y hay dos nuevos contendientes, Postfix y Qmail, ambos
dos escritos desde cero teniendo en cuenta la seguridad. Filtrar con el cortafuegos el
SMTP no tiene prdida, se ejecuta en el puerto 25, tcp:

ipfwadm -I -a accept -P tcp -S 10.0.0.0/8 -D 0.0.0.0/0 25

ipfwadm -I -a accept -P tcp -S un.host.fiable -D 0.0.0.0/0 25

ipfwadm -I -a deny -P tcp -S 0.0.0.0/0 -D 0.0.0.0/0 25

o bien con ipchains:

ipchains -A input -p tcp -j ACCEPT -s 10.0.0.0/8 -d 0.0.0.0/0 25

ipchains -A input -p tcp -j ACCEPT -s un.host.fiable -d 0.0.0.0/0 25

ipchains -A input -p tcp -j DENY -s 0.0.0.0/0 -d 0.0.0.0/0 25


Sendmail

Sendmail es otro de esos servicios con los que la mayora de nosotros hemos tenido
relaciones. Odiamos administrarlo y nos encantara reemplazarlo (en realidad he
empezado a eliminar el Sendmail de las mquinas que administro y lo estoy
reemplazando con el Postfix).

Sendmail se ha ganado por s mismo una muy mala reputacin en cuanto a


seguridad, sin embargo es difcil echarle la culpa al software cuando te encuentras
con sistemas ejecutando versiones antiguas del sendmail. La raz del problema (si se
me permite el mal juego de palabras) es que casi todo el mundo ejecuta el sendmail
como root (y algo as como el 70% del correo de Internet se maneja mediante
mquinas con Sendmail, de modo que hay un montn de ellas), de forma que tan
pronto se encuentra un bug, encontrar un sistema que explotar no es tan difcil. Las
ltimas versiones de sendmail han sido bastante buenas, sin hacks del root, etc, y
con las nuevas caractersticas anti spam finalmente ha alcanzado la mayora de
edad. Ms informacin en Sendmail y su cdigo fuente est disponible en:
http://www.sendmail.org/

Hacer un chroot del sendmail es una buena opcin, pero lleva demasiado trabajo, y
puesto que se ejecuta como root, algo bastante discutible en cuanto a su efectividad
(puesto que el root se puede escapar de una crcel chroot). Personalmente pienso
que es mejor invertir el esfuerzo en cambiarse a Postfix o a Qmail.

Mantener actualizado el sendmail es relativamente simple, recomendara como


mnimo la versin 8.9.3 (la serie 8.9 tiene ms caractersticas anti-spam, la 8.8.x
tiene la mayora de estas caractersticas, suponiendo que se ha configurado
correctamente el sendmail.cf). La mayora de las distribuciones vienen con la 8.8.x,
aunque las versiones ms recientes suelen venir con la 8.9.x. Se puede conseguir el
cdigo fuente desde ftp://ftp.sendmail.org/, pero compilar el sendmail no es algo
para el dbil de corazn o para aquellos que no tengan un montn de tiempo para
dedicrselo.

Sendmail slo tiene que estar accesible desde el mundo exterior si se est utilizando
para recibir correo de otras mquinas y repartirlo localmente. Si slo se quiere
ejecutar sendmail de forma que funcione el reparto local (p. ej., una estacin de
trabajo autnoma, un servidor de prueba u otros) y que se pueda enviar con
facilidad el correo a otras mquinas, simplemente filtra con el cortafuegos el
sendmail, o mejor, no lo ejecutes en modo demonio (en el cual escucha conexiones).
Sendmail se puede ejecutar en la cola de refresco de un nodo, donde simplemente se
"despierta" cada cierto tiempo y procesa el correo local, ya sea distribuyndolo
localmente o envindolo a travs de la red. Para configurar la ejecucin del
Sendmail en modo cola:

edita el script de inicio del Sendmail y cambia la lnea que contiene:

sendmail -bd -q1h

por:

sendmail -q1h

Ten en cuenta que: si utilizas el sistema para enviar mucho correo quizs prefieras
disminuir el tiempo de refresco, quizs "-q15m" (refrescar la cola cada 15 minutos),
ahora el correo saliente y el correo interno del sistema se comportarn bien, lo cual
a menos que se ejecute un servidor de correo, es perfecto.
Ahora vienen todas esas maravillosas caractersticas anti-spam del sendmail. Los
ficheros de configuracin del Sendmail consisten en (se aplica al Sendmail 8.9.x):

/etc/sendmail.cf

El fichero de configuracin principal, tambin dice dnde se encuentran el resto de


ficheros de configuracin.

/etc/mail/

Se puede definir la localizacin de los ficheros de configuracin en sendmail.cf,


generalmente la gente los coloca en /etc/ o en /etc/mail (lo cual lo la menos).

access

La base de datos de la lista de accesos, permite rechazar el correo proveniente de


ciertas fuentes (IP o dominio), y controlar con facilidad las transmisiones. Mi
fichero de acceso es as:

1. RELAY

spam.com REJECT

lo que quiere decir que a 10.0.0.* (los hosts de mi red interna) se les permite utilizar
el servidor de correo para enviar correo donde quieran, y el correo de *.spam.com
se rechaza. Hay listas en lnea de spammers conocidos, generalmente suele tener
entre 5-10.000 entradas, lo cual puede afectar seriamente el rendimiento del
sendmail (pues cada conexin se comprueba contra esta lista), por otra parte, tener
una mquina sendmail para enviar spam es incluso peor.

aliases

El fichero de alias, te permite controlar el reparto del correo local al sistema, es til
para hacer una copia de seguridad del correo entrante de un usuario a un spool por
separado. La mayora del software de servidores de listas utiliza este fichero para
enviar el correo que recibe a los programas que realmente procesan las listas.
Recuerda ejecutar el comando "newaliases" despus de editar este fichero, y
despus reiniciar el sendmail.

domaintable

la tabla de dominios (aadir dominios) que se maneja, til para hacer hosting
virtual.

majordomo

fichero de configuracin de majordomo, personalmente recomendara SmartList a


Majordomo.

sendmail.cw

fichero que contiene nombres de hosts de los que se recibe correo, til si se alberga
ms de un dominio.

sendmail.hf

situacin del fichero de ayuda (telnet al puerto 25 y escribir "HELP")


virtusertable

Tabla de usuario virtual, mapea usuarios entrantes, p. ej., mapear


ventas@ejemplo.org a john@ejemplo.org

Sendmail 8.9.x (y versiones anteriores) en realidad no tienen soporte para hacer un


log de todo el correo de una forma agradable (un requisito indispensable por
muchas compaas por motivos legales). Esta es una de las caractersticas sobre las
que se trabaja en la versin de Sendmail 8.10.x. Hasta entonces, hay dos formas de
hacer log del correo, la primera es algo agraciada, y registra un log de los correos
entrantes a usuarios segn cada usuario. El segundo mtodo no es agraciado, e
implica un simple log de todas las transacciones SMTP a un fichero, habra que
escribir algn tipo de procesador (probablemente en perl) para que el log fuese til.

El correo (o las conexiones SMTP para ser ms precisos) primero se filtra con el
fichero access, y es aqu donde se pueden RECHAZAR correos de ciertos
dominios/IPs, y TRANSMITIR correo de ciertos hosts (p. ej. tu red interna de
mquinas windows). Cualquier dominio local para el que se hospeda el correo
tendr que ir al sendmail.cw. Suponiendo que el correo cumple con las reglas y va a
la cola para reparto local, el siguiente fichero que se comprueba en virtusertable,
que es una lista de direcciones de correo mapeadas al nombre de la cuenta/otra
direccin de correo. p.ej.:

seifried@seifried.org alias-seifried

listuser@seifried.org usuariolista

@seifried.org correos-estropeados

La ltima regla es para evitar que reboten los correos estropeados, y que en lugar de
eso se enven a un buzn. Despus se comprueba el fichero de alias, si se encuentra
una entrada se hace lo que dice, y si no, se intenta entregar el correo a un buzn de
un usuario local, mi entrada seifried del fichero de alias es:

alias-seifried: seifried, "/var/backup-spool/seifried"

De esta forma mi correo se reparte a mi buzn normal, y a un buzn de copia de


seguridad (por si acaso he borrado un correo que no quisiera), o en el peor de los
casos, Microsoft Outlook decide cascar un da y cargarse mis buzones. Esto tambin
sera til en empresas, puesto que ahora se tiene una copia de seguridad de todo el
correo entrante segn cada usuario, y se les puede permitir ( o no) acceder al fichero
que contiene el correo en la copia de seguridad.

Una advertencia, cuando se est usando una regla general para un dominio ( p. ej.
@seifried.org) hay que crear un alias para CADA cuenta, y para las listas de correo.
Si no, cuando se examina la lista y no se encuentra una entrada especfica (para,
digamos, lista-correo@seifried.org) lo enviar al buzn especificado por la regla
general. Ya slo por este motivo no se debera utilizar una regla general.

El segundo mtodo es muy simple, sencillamente se arranca el sendmail con la


opcin -x y se especifica un fichero para hacer un log de todas las transacciones.
Este fichero crecer con enorme rapidez, NO recomendara utilizar este mtodo para
hacer log del correo, al menos que sea absolutamente necesario.

Qmail
Qmail (al igual que Postfix) fue creado como una respuesta directa a los fallos
percibidos en Sendmail. Qmail es GPL con una clusula sin distribucin binaria que
obliga a instalarlo desde el cdigo fuente. Muy poco del cdigo del Qmail se ejecuta
como root, y es muy modular comparado con el sendmail (el cual es un trozo de
cdigo monoltico). Se puede descargar de: http://www.qmail.org/

Postfix

El Postfix es un agente de transferencia de correo (MTA) orientado a la seguridad,


velocidad, y facilidad de configuracin, cosas en las que Sendmail suele fallar por
lo general. Recomendara encarecidamente reemplazar el Sendmail por el Postfix.
La nica parte de Postfix que se ejecuta como root es un programa de control
maestro, llamado "master", que llama a otros programas para procesar el correo a la
cola ("pickup"), un programa para gestionar la cola, espera conexiones entrantes,
repartos de correo retrasados, etc. ("qmgr"), un programa que en realidad enva y
recibe el correo ("smtpd") etc. Cada parte de Postfix est muy bien pensada, y
generalmente hace una o dos tareas, muy bien. Por ejemplo, en lugar del modelo de
sendmail, donde el correo simplemente se volcaba a /var/spool/mqueue, en Postfix
existe un directorio accesible por el mundo llamado "maildrop" el cual se
comprueba mediante "pickup", el cual alimenta los datos a "cleanup", el cual mueve
el correo (si est correctamente formateado, etc.) a un directorio seguro de cola para
el procesado real.

Los ficheros primarios de configuracin estn en /etc/postfix, y existen varios


ficheros primarios de configuracin que es necesario tener:

master.cf

Controla el comportamiento de varios programas de "ayuda", estn hechos chroot,


el mximo nmero de procesos que pueden ejecutar, etctera. Probablemente sea
mejor dejar las configuraciones por defecto en la mayora de los servidores de
correo, a menos que se necesite ajustar algo por altas cargas o asegurar el servidor
(p. ej. hacindolo chroot).

main.cf

Este fichero est muy prximo al sendmail.cf (en cuanto a propsito, en cuanto al
diseo es bastante diferente). Est bien comentado y configura todas las variables
principales, y las situaciones y formato de diferentes ficheros que contienen
informacin tal como los mapeos a usuarios virtuales e informacin relativa.

He aqu una lista de variables y localizacin de ficheros que se suele tener que
configurar, el fichero /etc/postfix/main.cf por lo general suele estar comentado
densamente. Ten en cuenta que los siguientes ejemplos de entradas main.cf no son
un main.cf completo.

# cul es el nombre de la mquina?

myhostname = correo.ejemplo.org

# cul es el nombre de dominio?

mydomain = ejemplo.org

# cmo etiqueto el "from" del correo?

myorigin = $mydomain
# en qu interfaces lo ejecuto? Por lo general, en todas.

inet_interfaces = all

# un fichero que contiene una lista de nombres de hosts y nombres de

# dominio cualificados desde los cuales recibo correo,

# generalmenteestn listados as:

# mydestination = localhost, $myhostname, etc

# pero prefiero mantener el listado en un fichero.

mydestination = /etc/postfix/mydestination

# mapa de nombres de usuarios entrantes. "man 5 virtual"

virtual_maps = hash:/etc/postfix/virtual

# mapeo de alias (como /etc/aliases en sendmail), "man 5 aliases"

alias_maps = hash:/etc/postfix/aliases

# base de datos de alias, se pueden tener diferentes configuraciones.

# "man 5 aliases"

alias_database = hash:/etc/postfix/aliases

# dnde repartir el correo, formato Mailbox o Maildir

# (el tradicional /var/spool/mail).

home_mailbox = Maildir/

# dnde guardar el correo, generalmente en /var/spool/mail/ pero se

# puede cambiar con facilidad

mail_spool_directory = /var/spool/mail

# qu comando utilizamos para repartir el correo? /usr/bin/procmail

# es el comando por defecto, pero yo utilizo scanmail que es el sello

# del software antivirus AMaViS

mailbox_command = /usr/sbin/scanmails

# para quin retransmito el correo, de nuevo se pueden listarlos o

# guardarlos en un fichero (uno por lnea).

relay_domains = /etc/postfix/relaydomains

# lista de redes locales (por defecto se retransmite el correo de


# estos hosts).

mynetworks = 10.0.0.0/24, 127.0.0.0/8

# qu se le muestra a la gente que conecte al puerto 25? Por defecto

# muestra el nmero de versin, lo cual yo no hago.

smtpd_banner = $myhostname ESMTP $mail_name

En trminos generales, cualquier fichero que simplemente liste un elemento por


lnea (como /etc/postfix/mydestination o /etc/postfix/relaydomains) se suelen
almacenar como simple texto llano. Los ficheros que contienen mapeados (p. ej.
alias, donde se tienen entradas como "root: cualquierusuario") deberan
transformarse en ficheros hash de base de datos por velocidad (se puede especificar
el tipo de fichero como hash, dbm, etc.).

Al igual que la mayora de productos de IBM, Postfix tiene una licencia bastante
curiosa, pero parece que la mayora es cdigo abierto y libre. Postfix se encuentra
disponible en: http://www.postfix.org/. Se pueden conseguir los rpms de postfix en:
ftp://contrib.Redhat.com/, y aparentemente SuSE ahora viene con Postfix.

Sendmail Pro

Sendmail Pro es una versin comercial de Sendmail con soporte, y se encuentra


disponible en: http://www.sendmail.com/. No me ha sido posible conseguir una
demo o encontrar a alguien que lo utilice, de modo que no estoy seguro al 100% de
lo cercano que se encuentra al Sendmail "original", aunque la compaa me ha
dicho que utiliza el mismo cdigo de base.

Zmailer

Zmailer es un gestor de correo GPL disponible en: http://www.zmailer.org/. Tiene


ganchos criptogrficos y por lo general parece bien construido.

DMail

DMail es un servidor de correo comercial, y no es cdigo abierto. Se puede


descargar una versin de prueba de: http://netwinsite.com/dmail_first.htm

Protocolos IMAP Y POP

El siguiente paso despues de haber instalado un servidor SMTP, es ofrecer al


usuario la posibilidad de acceder a su correo. Los clientes de correo (MUA's) sern
los encargados de proporcionar esta facilidad

Existen clientes que acceden directamente al buzn del usuario si este tiene la
posibilidad de acceder a la maquina que mantiene los buzones (elm, pine, mutt).
Pero la alternativa ms utilizada es proporcionar al usuario un acceso remoto a su
buzn, evitando de esta forma que los usuarios puedan entrar en la maquina que
mantiene el servidor de correo.

Los protocolos IMAP y POP permiten al usuario a travs de un cliente de mail que
los soporte, acceder remotamente a los buzones.
IMAP: Internet Message Access Protocol

IMAP permite a un usuario acceder remotanmente a su correo electrnico como si


este fuera local. Adems permite leer el correo desde diferentes puestos (clientes)
sin la necesidad de transferir los mensajes entre las diferentes mquinas. Por tanto
se entiende que los buzones se almacenan en el servidor.

El protocolo incluye funciones de creacin, borrado y renombrado de buzones. Es


completamente compatible con standars como MIME. Permite el acceso y la
administracin de mensajes desde ms de un computador. Soporta accesos
concurrentes a buzones compartidos. El cliente de correo no necesita conocer el
formato de almacenamiento de los archivos en el servidor.

POP: Post Office Protocol

POP fue diseado para soportar el procesamiento de correo fuera de linea. Su


funcionamiento se basa en que el cliente de mail se conecta periodicamente a un
servidor de correo y se baja (download) todo el correo pendiente a la maquina local
del usuario. Por tanto, todo el procesamiento del correo es local a la maquina del
usuario, ya que una vez obtenido el correo desde el servidor este es borrado ( si el
usuario asi lo desea ).

POP es un protocolo ms simple que IMAP y ms fcil de implementar.

Instalacin de POP e IMAP

En RedHat la instalacin de ambos servicios es una tarea sencilla, ya que en la


distribucin existe un paquete rpm que soporta ambos protocolos.

La forma de instalacin sera la siguiente:

root@mis21$ rpm -ivh imap-2002d-3.i386.rpm

Configuracin de POP e IMAP

Tanto POP como IMAP son servicios bajo demanda, es decir, el demonio
correspondiente se invoca via xinetd cuando se le requiere. Por tanto, la nica
configuracin que tenemos que tener en cuenta, hace referencia al archivo de
configuracin del superdemonio xinetd: /etc/xinetd.d/imap|pop.

Este archivo debera las entradas siguientes:


service imap
{
socket_type = stream
wait = no
user = root
server = /usr/sbin/imapd
only_from = 127.0.0.1
log_on_success += HOST DURATION USERID
log_on_failure += HOST
disable = no
}

Como podemos observar el control de acceso a ambos servicios viene definido


por el demonio xinetd y como xinetd depende de tcpwrappers el cual utiliza dos
archivos de configuracin, /etc/hosts.allow y /etc/hosts.deny , se pueden utilizar
para definir los clientes que tienen permitido el acceso a los servicios.
#
# hosts.allow This file describes the names of the hosts which
are
# allowed to use the local INET services, as decided
# by the '/usr/sbin/tcpd' server.
#
imapd ipop3d : ALL

6.10. Servicios web : HTTP (Apache)


El servidor Apache (http://www.apache.org) es el servicio que se encarga de
resolver las peticiones de pginas de Internet de los clientes utilizando el protocolo
de Internet http.

A continuacin se presentan las instrucciones de instalacin de Apache en el


servidor Linux. Es muy posible que su instalacin de Linux ya haya realizado la
instalacin del servidor por lo que se presenta un apartado para determinar si
Apache ya se encuentra instalado.

Posteriormente se presentan las instrucciones de instalacin para la versin


completa y para la versin RPM.

Usted puede copiar desde esta pgina la versin completa o RPM utilizada en
nuestra instalacin.

Si Usted dispone de Apache en RPM le recomendamos que realice la instalacin


por este mecanismo.

1-. Ya est instalado Apache en mi servidor?

Si Usted instal una distribucin de Linux como RedHat, Conectiva, Corel Linux,
Suse, Mandrake, TurboLinux, Slackware, etc, es posible que ya tenga instalado
Apache. Para verificar si est ya instalado utilice el comando whereis as:

# whereis httpd

httpd es el programa que ejecuta Apache (http deamon) Si el sistema responde:

# whereis httpd
httpd:

Apache no est instalado en su servidor.

Si responde:

# whereis httpd
httpd: /usr/local/bin/httpd

Apache est instalado en su servidor y el ejecutable se encuentra en


/usr/local/bin/httpd.

Tambin puede utilizarse el siguiente comando para verificar si el servidor est


instalado:
# httpd -v
Server version: Apache/1.3.12 (Unix) (Red Hat/Linux)
Server built: Aug 23 2000 15:44:50

Si el sistema responde como se presenta en el anterior ejemplo el servidor se


encuentra ya instalado. Adicionalmente se muestra la versin y la fecha de
instalacin.

En este caso busque el archivo httpd.conf y aada los parmetros requeridos para la
instalacin del Programa de Registro.

2-. Instalacin de Apache a travs de RPM.

RPM es la sigla para El Sistema de Manejo de Paquetes de Red Hat (Red Hat
Package Manager - RPM).

La instalacin a travs de RPM es muy sencilla. Simplemente busque en su


distribucin de Linux el paquete apache y ejecute la instalacin con el comando
rpm.

En Red Hat 7.0 este se encuentra ubicado en el Cd-rom 1 en el archivo

RedHat/RPMS/apache-1.3.12-25.i386.rpm.

Si Usted introduce el Cd-rom en la unidad de su servidor este deber activarse


automticamente, es decir, Usted deber poder acceder a su Cd-rom y al programa
Apache de la siguiente manera:

# cd /mnt/cdrom/RedHat/RPMS/

# rpm -iv apache-1.3.12-25.i386.rpm

Este comando instalar la versin de Apache en el servidor. El parmetro i


corresponde a instalar (install), el parmetro v, corresponde a mostrar informacin
de la instalacin (verbose).

3-. Instalacin de Apache desde las fuentes .Se sugiere bajar la ltima versin de
apache desde http://httpd.apache.org.

En esta pgina busque el enlace "Download Apache 1.3" y posteriormente


seleccione el archivo apache_1.3.19.tar.gz para copiar la distribucin a su
computador, o seleccione la ltima versin disponible.

Descompacte el archivo con la opcin:

# tar zxvf apache_1.3.19.tar.gz

Con este comando se crear el directorio

apache_1.3.19

Entre al directorio:

# cd apache_1.3.19

Y ejecute la instalacin as (deber esperar a que el sistema ejecute las tareas de


configuracin y compilacin):
# ./configure --enable-module=so
# make
# make install

Apache quedar instalado en el directorio

/usr/local/apache

4-. Configuracin de Apache.

Despus de realizar la instalacin es necesario configurar el servidor editando el


archivo de configuracin httpd.conf. Este archivo puede encontrarse en uno de los
siguientes directorios:

/usr/local/apache/conf

/etc/httpd/conf

En este archivo se definen los parmetros del sistema. Cada parmetro posee un
nombre al comienzo de la lnea y su valor (o valores separados por espacios pero en
una sola lnea!) en frente separado por al menos un espacio:

nombre_del_parametro valor

nombre_del_parametro valor1 valor2 valor3 valorn

Importante: Todas las lneas que comienzan en este archivo con el signo #
corresponden a comentarios dentro del archivo de configuracin.

Edite el archivo httpd.conf con su editor preferido, por ejemplo vi o pico:

Para instalacin desde las fuentes seguramente debe acceder el siguiente directorio:

# cd /usr/local/apache/conf

o, para instalacin por RPM:

# cd /etc/httpd/conf

# pico httpd.conf

y defina los siguientes parmetros:

ServerAdmin: Indique a quin llegarn los mensajes que se generen desde el


sistema (coloque su direccin electrnica!):

ServerAdmin soporte@colnodo.apc.org

ServerName: Defina en este parmetro el nombre de su servidor Web. Para el caso


de nuestro sistema de registro es mejor definir ac el nmero de la direccin IP del
servidor Linux:

ServerName 192.168.1.1
En caso de que se disponga de un enlace dedicado con una direccin IP fija y un
nombre de dominio se debera colocar en este parmetro el nombre de dominio del
servidor Linux:

ServerName cabinas.colnodo.apc.org

DocumentRoot: Define el directorio en donde quedarn alojadas las pginas en el


servidor Linux (En la distribucin de las fuentes normalmente este directorio est
ubicado en usr/local/apache/htdocs):

DocumentRoot "/var/www/html"

Opciones de directorios:

Usted encontrar en el archivo de configuracin la seccin de directorios que


incluyen los parmetros que aplican para cada directorio del servidor de pginas de
Internet. Estos parmetros deben colocarse entre los lmites de las etiquetas
<directory "/directorio"> y </directory>:

<directory "/directorio del servidor">

parmetro1 valor(es)
parmetro2 valor(es)
.....
parmetron valor(es)

</directory>

En nuestro caso se debe adicionar, el directorio del servidor para la instalacin de


RPM:

/var/www/html

o para la instalacin desde las fuentes:

/usr/local/apache/htdocs

Debe quedar as (quitando todas las lneas de comentarios del archivo de


configuracin) :

<Directory "/var/www/html">
Options Indexes FollowSymLinks MultiViews Includes
AllowOverride All
Order allow,deny
Allow from all
</Directory>

Ntese que:

Al parmetro Options se le aade el valor Includes. Este parmetro permite realizar


llamados desde las pginas del servidor de archivos que se incluyen dentro de las
pginas que se envan a las personas que consultan el sitio.

El parmetro AllowOverride se cambia de None a All.


En el directorio raiz es importante cambiar el parmetro AllowOverride de None a
All, esto con el fin de permitir la creacin de archivos .htaccess que facilitarn
posteriormente la restriccin de acceso a directorios del servidor:

<Directory />
Options FollowSymLinks
AllowOverride All
</Directory>

Opciones de ndices:

En las opciones que aparecen para el parmetro DirectoryIndex es importante aadir


los valores index.htm, index.php e index.php3. Esta seccin debe quedar as:

DirectoryIndex index.html index.htm index.php index.php3

Es posible que esta definicin se encuentre en la definicin de parmetros de la


seccin IfModule_mod_dir (en el caso de la distribucin de fuentes de Apache), en
este caso deber quedar as:

<IfModule mod_dir.c>
DirectoryIndex index.html index.htm index.php index.php3
</IfModule>

HostnameLookups. Si se dispone de un enlace a Internet permanente, activando


este parmetro ser posible realizar posteriormente anlisis estadsticos que
indicarn desde que partes de la red son consultadas las pginas que estn alojadas
en el servidor.

HostnameLookups On

*Importante: Esta opcin puede hacer que el acceso a las pginas del Sistema de
Registro sea lento si las estaciones no se encuentran registradas en el DNS de su
dominio. Si Usted tiene dudas le recomendamos que deje este parmetro como off:

HostnameLookups Off

Salve el archivo de configuracin e inicie el servidor.

Si la instalacin de Apache se realiz desde RPM (o estaba previamente instalada)


puede iniciar el servidor as:

/etc/rc.d/init.d/httpd start

Para la instalacin desde las fuentes ejecute:

# /usr/local/apache/bin/apachectl start

El servidor deber responder:

/usr/local/apache/bin/apachectl start: httpd started

Para que Apache se inicie cada vez que se prenda el servidor se puede colocar al
final del archivo /etc/rc.d/rc.local la lnea de comando que se ejecut arriba.

Importante: Esto no es necesario si se realiz la instalacin desde RPM.


Abra un navegador y escriba el nombre de su servidor o la direccin IP que se
especific en el archivo de configuracin y deber poder ver la pgina de prueba de
Apache que indica:

6.11. El Servicio DHCP en GNU/Linux

Introduccin

DHCP (Dynamic Host Configuration Protocol) o Protocolo Dinmico de


Configuracin de Equipos no es un protocolo especfico de Linux, sino que se trata
de un estndar para cualquier tipo de sistema conectado a una red TCP/IP.

La funcin bsica de este protocolo es evitar que el administrador tenga que


configurar manualmente las caractersticas propias del protocolo TCP/IP en cada
equipo. Para ello, existe en la red un sistema especial, denominado servidor DHCP,
que es capaz de asignar la configuracin TCP/IP al resto de mquinas presentes en
la red, o clientes DHCP, cuando estos arrancan.

Entre los datos que ms habitualmente proporciona el servidor a los clientes se


incluyen:

Una direccin IP por cada tarjeta de red o NIC (Network Interface Card) que posea
el cliente.
La mscara de subred.
La puerta de enlace o gateway.
Otros parmetros adicionales, como el sufijo del dominio DNS, o el propio servidor
DNS.

En una red pueden convivir equipos que sean clientes DHCP con otros cuya
configuracin se haya establecido manualmente. Aquellos que estn configurados
como clientes DHCP necesitarn encontrar en la red local un servidor DHCP para
que les proporciones los parmetros TCP/IP.

Cuando un cliente arranca por primera vez, lanza por la red un mensaje de difusin,
solicitando una direccin IP. Si en la red existe un solo servidor DHCP, cuando este
reciba el mensaje contestar al cliente asocindole una direccin IP junto con el
resto de parmetros de configuracin. En concreto, el servidor DHCP puede estar
configurado para asignar al cliente una direccin IP cualquiera de las que tenga
disponibles, o bien para asignarle una direccin en concreto (o direccin reservada),
en funcin de la direccin fsica de la tarjeta ethernet del cliente. En ambos casos,
una vez el cliente recibe el mensaje del servidor, ya tiene una configuracin IP con
la que poder acceder a la red de forma normal.

Si en la red hay ms de un servidor DHCP, es posible que dos o ms servidores


escuchen la peticin y la contesten. Entonces, el primer mensaje que recibe el
cliente es aceptado y el resto son rechazados. Es muy importante resaltar que
cuando hay varios servidores DHCP en una misma red local, estos no se comunican
entre ellos para saber qu direcciones IP debe asignar cada uno. Es responsabilidad
de los administradores que sus configuraciones sean independientes y consistentes.

Por tanto, cuando en una misma red TCP/IP existe ms de un servidor DHC, es
imprescindible que estn configurados de manera que no puedan asignar la misma
direccin IP a dos computadores distintos. Para ello basta que los rangos de
direcciones IP que puedan proporcionar no tengan direcciones comunes, o, si las
tienen, que estas sean direcciones reservadas.

En cualquiera de los casos anteriores, desde el punto de vista del cliente los
parmetros que ha recibido se consideran una concesin, es decir, son vlidos
durante un cierto tiempo. Cada vez que el cliente arranca, o bien cuando se alcanza
el lmite de la concesin (lease time) el cliente tiene que solicitar su renovacin.

El protocolo DHCP es especialmente til cuando el parque de equipos de una


organizacin se distribuye en varias subredes fsicas, y adems los equipos cambian
de ubicacin (de subred) con cierta frecuencia. En este caso, cambiar el equipo de
sitio no supone nunca reconfigurar manualmente sus parmetros de red, sino
simplemente conectarlo a la nueva red y arrancarlo.

Concesin y Renovacin

Un cliente DHCP obtiene una concesin para una direccin IP de un servidor


DHCP. Antes que se acabe el tiempo de la concesin, el servidor DHCP debe
renovar la concesin al cliente o bien este deber obtener una nueva concesin. Las
concesiones se guardan en la base de datos del servidor DHCP aproximadamente un
da despus de que se agote su tiempo. Este periodo de gracia protege la concesin
del cliente en caso de que este y el servidor se encuentren en diferentes zonas
horarias, de que sus relojes internos no estn sincronizados o en caso de que el
cliente est fuera de la red cuando caduca el tiempo de la concesin.

La primera vez que se inicia un cliente DHCP e intenta unirse a una red, se realiza
automticamente un proceso de inicializacin para obtener una concesin de un
servidor DHCP:

1. El cliente DHCP solicita una direccin IP difundiendo un mensaje DHCP Discover.


2. El servidor responde con un mensaje DCHP Offer proporcionando una direccin al
cliente.
3. El cliente acepta la oferta respondiendo con un mensaje DHCP Request.
4. El servidor enva un mensaje DHCP Ack indicando que aprueba la concesin.
5. Cuando el cliente recibe la confirmacin entonces configura sus propiedades
TCP/IP usando la informacin de la respuesta DHCP.

Si ningn servidor DHCP responde a la solicitud del cliente (DHCP Discover),


entonces el cliente autoconfigura una direccin IP para su interfaz.

En raras ocasiones un servidor DHCP puede devolver una confirmacin negativa al


cliente. Esto suele ocurrir si el cliente solicita una direccin no vlida o duplicada. Si
un cliente recibe una confirmacin negativa (DHCP Nack), entonces deber comenzar
el proceso de concesin.

Cuando se inicia un cliente que ya tena concedida una direccin IP previamente, este
debe comprobar si dicha direccin sigue siendo vlida. Para ello, difunde un mensaje
DHCP Request en vez de un mensaje DHCP Discover. El mensaje DHCP Request
contiene una peticin para la direccin IP que se le asign previamente. Si el cliente
puede usar la direccin IP solicitada, el servidor responde con un mensaje DHCP Ack.
Si el cliente no pudiera utilizarla porque ya no es vlida, porque la este usando otro
cliente o porque el cliente se ha desplazado fsicamente a otra subred., entonces el
servidor responde con un mensaje DHCP Nack, obligando al cliente a reiniciar el
proceso de concesin. Si el cliente no consigue localizar un servidor DHCP durante el
proceso de renovacin, entonces este intenta hacer un ping al gateway predeterminado
que se lista en la concesin actual, procediendo de la siguiente forma:
Si tiene xito, el cliente DHCP supone que todava se encuentra en la red en la que
obtuvo la concesin actual y la seguir usando. En segundo plano, el cliente intentar
renovar la concesin actual cuando se agote el 50\% del tiempo de la concesin asignada.
Si fall el ping, el cliente supone que se desplaz a otra red y autoconfigura su
direccin IP, intentando cada 5 minutos localizar un servidor DHCP y obtener una
concesin.

La informacin de TCP/IP que se concede al cliente, deber ser renovada por este
de forma predeterminada cuando se haya agotado el 50\% del tiempo de concesin.
Para renovar su concesin, un cliente DHCP enva un mensaje DHCP Request al
servidor del cual se obtuvo la concesin. El servidor renueva automticamente la
concesin respondiendo con un mensaje DHCP Ack. Este mensaje contiene la nueva
concesin, as como cualquier parmetro de opcin DHCP. Esto asegura que el
cliente DHCP puede actualizar su configuracin TCP/IP s el administrador de la red
actualiza cualquier configuracin en el servidor DHCP.

Concepto de Ambito

En el contexto de DHCP, un mbito (\SF{scope}) se define como una agrupacin


administrativa de direcciones IP que posee una serie de parmetros de configuracin
comunes y que se utiliza para asignar direcciones IP a clientes DHCP situados en
una misma red fsica.

Es decir, para que un servidor DHCP pueda asignar direcciones IP a sus potenciales
clientes, es necesario que defina al menos un mbito en cada red fsica en la que
haya clientes que atender. El administrador debe establecer para dicho mbito sus
parmetros de configuracin, tales como el rango de direcciones IP que puede
asignar, las direcciones excluidas, la mscara de red, el lmite de tiempo que los
equipos pueden disfrutar de la concesin, etc.

En cualquier caso, para que un servidor DHCP pueda atender varias redes fsicas
distintas interconectadas, es necesario que est conectado a dichas redes, o bien que
los encaminadores utilizados tengan la capacidad de encaminar los mensajes del
protocolo DHCP entre dichas redes. De no ser as, es necesario utilizar un servidor
DHCP distinto en cada red, o bien instalar el servicio de reenvo de DHCP en algn
host el cual est configurado para escuchar los mensajes de difusin utilizados por
el protocolo DHCP y redirigirlos a un servidor DHCP especfico. De esta manera se
evita la necesidad de tener que instalar dos servidores DHCP en cada segmento de
red.

Configuracin del servidor dhcp.

Existen varias implementaciones del protocolo DHCP para servidores con sistemas
operativos parecidos al UNIX, tanto comerciales como libres. Uno de los ms
populares servidores es DHCPd de Paul Vixie/ISC, que actualmente se encuentra en
la versin 3.0, en concreto el paquete que habra que instalar se trata del siguiente:
dhcp.

Para configurar DHCPd hay que crear el archivo /etc/dhcpd.conf. Normalmente lo


que se pretender es asignar direcciones IP de un rango definido de forma dinmica,
sin que importe que cliente coge que direccin IP (hay que redordar que DHCP es el
protocolo de configuracin dinmica de hosts).Esto se podra conseguir con una
configuracin parecida a la siguiente:
default-lease-time 600;
max-lease-time 7200;
option subnet-mask 255.255.255.0;
option broadcast-address 192.168.1.255;
option routers 192.168.1.254;
option domain-name-servers 192.168.1.1, 192.168.1.2;
option domain-name "linux.casa";

subnet 192.168.1.0 netmask 255.255.255.0 {


range 192.168.1.10 192.168.1.100;
range 192.168.1.150 192.168.1.200;
}

En este caso, el servidor DHCP otorgara una direccin IP al cliente en el rango


192.168.1.10 - 92.168.1.100 o del rango 192.168.1.150 - 192.168.1.200, y
concedera la direccin por un tiempo de 600 segundos, mientras el cliente no
marque ese tiempo, y en todo caso la concesin mxima ser de 7200 segundos.
Adems configurar el cliente para que use la mscara de red 255.255.255.0, la
direccin de difusin 192.168.1.255, el gateway 192.168.1.254, los servidores de
nombres 192.168.1.1, 192.168.1.2, y el nombre de dominio linux.casa.

Pero tambin ser necesario que en ocasiones asignemos direcciones de una forma
esttica (como lo hara el protocolo BOOTP) basndose en la direccin hardware
del cliente. El ejemplo siguiente asignar la direccin IP 192.168.1.222 a un cliente
con la direccin ethernet 08:00:2b:4c:59:23
host haagen {
hardware ethernet 08:00:2b:4c:59:23;
fixed-address 192.168.1.222;
}

Si por ejemplo estuvieramos en un entorno mixto de mquinas linux y windows


sera a lo mejor necesario asignar a los clientes windows la direccin de un servidor
WINS. La opcin netbios-name-servers resolvera nuestro problema.
option netbios-name-servers 192.168.1.1;

Existen muchas ms opciones que puede configurar un servidor DHCP. Toda la


informacin se puede encontrar en la pgina de manual de dhcpd.conf.

Arranque y parada del servidor dhcp.

Como asi siempre ocurre con todos los servicios de red que no son lanzados por
inetd, existe un script en el directorio /etc/init.d que se encarga del asunto,que
acepta los parmetros {start|stop} y que deber estar configurado para que se lance
en los niveles de ejecucin correctos.

Potrebbero piacerti anche