Está en la página 1de 195

LOC: Linux Original Courseware

LOC: Linux Original Courseware*

Correspondiente al Curso
LX1: Fundamentals and Operation LX2: System Administrator LX3: Network Administrator

(*) Originaly Developed for Premiere IT S.R.L.

Versin: 5.0a - Revisin: 2006-05-01 - 195 Pginas

LOC: Linux Original Courseware

Tabla de Contenidos
Captulo 1.................................................................................................................................................................... 5 Instalacin ............................................................................................................................................................... 5 Captulo 2.................................................................................................................................................................. 35 Administracin de Usuarios ................................................................................................................................. 35 El archivo de Passwords ................................................................................................................................... 35 Crear Usuarios .................................................................................................................................................. 36 Otros archivos importantes para la administracin de usuarios ...................................................................... 39 Borrar usuarios.................................................................................................................................................. 40 Modificar atributos de usuario ......................................................................................................................... 40 Otros comandos de usuario .............................................................................................................................. 41 Grupos................................................................................................................................................................... 41 Permisos ................................................................................................................................................................ 43 Comando chmod............................................................................................................................................... 44 Comando chgrp................................................................................................................................................. 45 Comando chown ............................................................................................................................................... 45 Sticky bit ........................................................................................................................................................... 45 Atributo SUID: (Para Archivos)....................................................................................................................... 46 Atributo SGID: (Para archivos)........................................................................................................................ 46 Atributo SGID: (Para directorios) .................................................................................................................... 46 SUID Shell Scripts............................................................................................................................................ 46 Captulo 3.................................................................................................................................................................. 47 El Sistema Operativo Linux/Unix ........................................................................................................................ 47 Qu son las consolas virtuales? ...................................................................................................................... 47 Sistema de archivos (filesystems) ........................................................................................................................ 47 Archivos y directorios ...................................................................................................................................... 47 Tipos de archivos y directorios............................................................................................................................. 49 Archivos normales (files) ................................................................................................................................. 49 Directorios (directory) ...................................................................................................................................... 49 Enlaces duros (hard-links)................................................................................................................................ 49 Enlace simblicos (soft-links) .......................................................................................................................... 50 Dispositivos de bloque (block devices)............................................................................................................ 50 Dispositivos de carcter (carcter devices) ...................................................................................................... 50 Pipes con nombre (named pipes)...................................................................................................................... 50 Comandos de Linux.............................................................................................................................................. 50 Comandos bsicos para la gestin de archivos ................................................................................................ 50 Ver el contenido de archivos ............................................................................................................................ 52 Otros comandos ................................................................................................................................................ 53 Runlevels............................................................................................................................................................... 54 Cmo arranca Linux?...................................................................................................................................... 54 Como cambiar de runlevel................................................................................................................................ 59 Procesos ................................................................................................................................................................ 62 Envo de una seal a un proceso ...................................................................................................................... 64 Control de Procesos .......................................................................................................................................... 65 Montaje y Desmontaje de Discos y de Sistemas de Archivos............................................................................. 67 El archivo /etc/fstab .......................................................................................................................................... 69 Captulo 4.................................................................................................................................................................. 71 Instalacin de Software ........................................................................................................................................ 71 Descompresin y compresin de archivos........................................................................................................... 71 Comando tar...................................................................................................................................................... 71 Comando gzip ................................................................................................................................................... 72 Comando gunzip............................................................................................................................................... 72 El comando unzip ............................................................................................................................................. 72 Comando bzip2 ................................................................................................................................................. 72 Paquetes DEB ....................................................................................................................................................... 73 Paquetes RPM....................................................................................................................................................... 78 Instalacin ......................................................................................................................................................... 79 Premiere IT S.R.L. Pgina 1

LOC: Linux Original Courseware Actualizacin .................................................................................................................................................... 79 Consulta ............................................................................................................................................................ 79 Desinstalar un paquete...................................................................................................................................... 80 Verificacin ...................................................................................................................................................... 80 Compilacin de cdigo fuente.............................................................................................................................. 81 Captulo 5.................................................................................................................................................................. 82 Qu es el kernel? ................................................................................................................................................. 82 Tipos de kernel.................................................................................................................................................. 82 Versiones del kernel (Numeracin).................................................................................................................. 82 Compilacin del kernel..................................................................................................................................... 83 Qu quiere decir compilar?............................................................................................................................. 83 Para qu compilar el kernel?........................................................................................................................... 83 Empecemos con la compilacin del kernel...................................................................................................... 83 Estructura del kernel modular .............................................................................................................................. 88 Mdulos Cargables ........................................................................................................................................... 88 Que es un mdulo cargable?........................................................................................................................... 88 El archivo /etc/modules.conf ............................................................................................................................ 88 El archivo /etc/modules .................................................................................................................................... 89 Captulo 6.................................................................................................................................................................. 90 Redes..................................................................................................................................................................... 90 Conceptos Bsicos ............................................................................................................................................ 90 LAN, WAN y enlaces........................................................................................................................................... 90 El modelo de referencia OSI ................................................................................................................................ 91 Capa 7: Capa de aplicacin .............................................................................................................................. 91 Capa 6: Capa de presentacin .......................................................................................................................... 91 Capa 5: Capa de sesin..................................................................................................................................... 91 Capa 4: Capa de transporte............................................................................................................................... 91 Capa 3: Capa de red.......................................................................................................................................... 92 Capa 2: Capa de enlace de datos ...................................................................................................................... 92 Capa 1: Capa de fsica ...................................................................................................................................... 92 Comunicacin entre capas................................................................................................................................ 92 Conjunto de Protocolos TCP/IP ........................................................................................................................... 92 Su relacin con el Modelo OSI ........................................................................................................................ 92 Direccin IP .......................................................................................................................................................... 92 Fundamentos de la direccin IP ....................................................................................................................... 93 Coordinacin de direccin IP ........................................................................................................................... 93 Organizando direcciones .................................................................................................................................. 93 Clasificacin de redes ....................................................................................................................................... 94 Direcciones especiales...................................................................................................................................... 95 Redes Privadas.................................................................................................................................................. 95 Fundamentos de subredes................................................................................................................................. 96 Porqu subredes? ............................................................................................................................................ 96 Nmeros binarios y direcciones IP................................................................................................................... 96 AND .................................................................................................................................................................. 97 Subredes............................................................................................................................................................ 97 Subredes clase B ............................................................................................................................................... 98 Subredes clase C ............................................................................................................................................... 98 Ejemplos de subredes ........................................................................................................................................... 98 Ejemplo de subredes clase C ............................................................................................................................ 98 Ejemplo de subredes clase B ............................................................................................................................ 99 Ejemplos de rangos de direccin.......................................................................................................................... 99 Ejemplo de clase C ........................................................................................................................................... 99 Otro mtodo para determinar rangos de direccin......................................................................................... 100 SuperNetting - Combinando direcciones ........................................................................................................... 101 Classless Internet Domain Routing (CIDR)....................................................................................................... 102 Captulo 7................................................................................................................................................................ 103 Configuracin de red en Linux........................................................................................................................... 103 Instalacin de la placa de red.......................................................................................................................... 103 Configuracin de una interfaz de red ............................................................................................................. 104 Encaminamiento (Routing) ................................................................................................................................ 107 Premiere IT S.R.L. Pgina 2

LOC: Linux Original Courseware Captulo 8................................................................................................................................................................ 110 Programacin en la shell de Linux ..................................................................................................................... 110 Que es la shell? ............................................................................................................................................. 110 Qu es un script?........................................................................................................................................... 110 Creacin de scripts.............................................................................................................................................. 110 Qu se escribe en un script?.......................................................................................................................... 111 Sintaxis de los scripts.......................................................................................................................................... 111 Comentarios .................................................................................................................................................... 111 Variables ......................................................................................................................................................... 111 Pasaje de argumentos...................................................................................................................................... 112 Redireccionamiento ........................................................................................................................................ 113 La orden read .................................................................................................................................................. 113 Estructuras de control ..................................................................................................................................... 114 Efectuando comparaciones............................................................................................................................. 115 La sentencia case ............................................................................................................................................ 116 La sentencia for............................................................................................................................................... 117 La sentencia while .......................................................................................................................................... 117 Depuracin...................................................................................................................................................... 118 Captulo 9................................................................................................................................................................ 119 El demonio xinetd............................................................................................................................................... 119 Cmo instalar el xinetd? ................................................................................................................................... 120 Configuracin ..................................................................................................................................................... 120 Configurando un servicio ................................................................................................................................... 121 El directorio /etc/xinetd.d/ .............................................................................................................................. 121 Captulo 10.............................................................................................................................................................. 124 Introduccin a Samba ......................................................................................................................................... 124 Servidor Samba................................................................................................................................................... 124 Instalacin de Samba .......................................................................................................................................... 124 Configuracin de Samba .................................................................................................................................... 126 Globales .......................................................................................................................................................... 126 Seguridad ........................................................................................................................................................ 127 Usuarios vlidos para Samba.............................................................................................................................. 135 Acceso a los recursos compartidos..................................................................................................................... 135 Acceso a los recursos compartidos: montaje ..................................................................................................... 136 Samba-SWAT ..................................................................................................................................................... 136 Captulo 11.............................................................................................................................................................. 139 Servidor DHCP ................................................................................................................................................... 139 Captulo 12.............................................................................................................................................................. 142 Firewalls.............................................................................................................................................................. 142 Introduccin .................................................................................................................................................... 142 Fundamentos sobre el Filtrado de Paquetes................................................................................................... 142 Y para que necesito un Firewall? ................................................................................................................. 143 Netfilter/Iptables ................................................................................................................................................. 143 Historia............................................................................................................................................................ 143 Cmo? - ipchains .............................................................................................................................................. 144 Enmascaramiento (masquerading o NAT)..................................................................................................... 146 Cerrando servicios .......................................................................................................................................... 146 Negacin ......................................................................................................................................................... 146 Consultando las reglas .................................................................................................................................... 147 Borrando reglas............................................................................................................................................... 147 Estableciendo polticas ................................................................................................................................... 147 Guardando informacin de eventos................................................................................................................ 147 Especificando una interface............................................................................................................................ 147 Guardando y recuperando las reglas .............................................................................................................. 148 Algunas consideraciones .................................................................................................................................... 148 Manipulando el Tipo de servicio (Type Of Service) ..................................................................................... 148 Filtrando el Ping de la Muerte........................................................................................................................ 149 Hand Shaking.................................................................................................................................................. 149 Cmo? - iptables ............................................................................................................................................... 149 Consultando las reglas .................................................................................................................................... 153 Premiere IT S.R.L. Pgina 3

LOC: Linux Original Courseware Borrando reglas............................................................................................................................................... 153 Guardando y recuperando las reglas .............................................................................................................. 154 Mdulos con opciones de coincidencias adicionales..................................................................................... 154 Captulo 13.............................................................................................................................................................. 155 DNS..................................................................................................................................................................... 155 Introduccin .................................................................................................................................................... 155 Clasificacin de Servidores ............................................................................................................................ 155 Servidor de solo cach.................................................................................................................................... 156 Tipos de Resolucin ....................................................................................................................................... 156 Configuracin del servidor ............................................................................................................................. 157 Servidores Raiz ............................................................................................................................................... 158 Archivos de zona ................................................................................................................................................ 159 Ejemplos ......................................................................................................................................................... 159 El registro SOA............................................................................................................................................... 160 El registro A.................................................................................................................................................... 161 El registro NS.................................................................................................................................................. 161 El registro PTR ............................................................................................................................................... 161 El registro MX ................................................................................................................................................ 161 El registro CNAME ........................................................................................................................................ 161 Configuracin del cliente.................................................................................................................................... 161 Verificaciones ..................................................................................................................................................... 162 Ejemplo de bsqueda.......................................................................................................................................... 162 Captulo 14.............................................................................................................................................................. 165 Apache ................................................................................................................................................................ 165 Introduccin .................................................................................................................................................... 165 Instalacin de Apache2....................................................................................................................................... 165 Configuracin ..................................................................................................................................................... 166 Veamos otras variables de configuracin ...................................................................................................... 167 Virtual Hosts ................................................................................................................................................... 170 Prueba de Apache ............................................................................................................................................... 170 Pginas protegidas .............................................................................................................................................. 171 Captulo 15.............................................................................................................................................................. 173 Programando tareas con at y cron ...................................................................................................................... 173 Introduccin .................................................................................................................................................... 173 Uso de at ......................................................................................................................................................... 173 Uso de cron ..................................................................................................................................................... 173 Opciones de crontab ....................................................................................................................................... 174 Crontab para los usuarios ............................................................................................................................... 175 Contol de accesos y uso de crontab................................................................................................................ 175 Apndice A ............................................................................................................................................................. 176 Utilizando vi........................................................................................................................................................ 176 Introduccin .................................................................................................................................................... 176 Invocando a vi................................................................................................................................................. 176 Cmo funciona vi ........................................................................................................................................... 176 Desplazarse por el archivo.............................................................................................................................. 177 Introducir texto ............................................................................................................................................... 177 Borrar texto ..................................................................................................................................................... 177 Reemplazar texto ............................................................................................................................................ 178 Copiar, Cortar y Pegar texto.......................................................................................................................... 178 Deshacer y Repetir.......................................................................................................................................... 178 Factor de repeticin ........................................................................................................................................ 178 Bsqueda de una cadena................................................................................................................................. 178 El men : ..................................................................................................................................................... 178 Apndice B.............................................................................................................................................................. 179 Propuesta de Laboratorio.................................................................................................................................... 179 Apndice C.............................................................................................................................................................. 180 Preguntas Exmen LPI ....................................................................................................................................... 180 Respuestas Exmen LPI ..................................................................................................................................... 191

Premiere IT S.R.L.

Pgina 4

LOC: Linux Original Courseware

Captulo 1
Instalacin
Podemos comenzar la instalacin, arrancando la PC con el CD N 1 puesto en la lectora. Recuerde setear en su BIOS que arranque desde la unidad de CD-ROM. Si su mquina tiene varios aos, puede ser que su BIOS no pueda arrancar desde CD, entonces debe hacerlo desde diskette. Paso 1. Elegir el kernel con el cual realizamos la instalacin. Ahora s comenzamos con la instalacin. Lo primero que aparece es una pantalla donde nos presenta varias opciones de arrancar. Si presionamos Enter, empezamos con la instalacin tpica que es con un kernel de la serie 2.4. Lo ideal en este paso es leer bien para elegir otro kernel, el 2.6, que es el que viene con la serie actual. Simplemente, escribimos linux26 y presionamos Enter. NOTA: El kernel es el ncleo de un sistema operativo.

Paso 2. Elegir el idioma de la instalacin. Aqu nos pide elegir el idioma de la instalacin, podemos elegir Espaol. Con las flechas (estn entre los teclados de letras y nmeros).

Premiere IT S.R.L.

Pgina 5

LOC: Linux Original Courseware Ahora nos va a pedir que configuremos la variante, dentro del espaol.

Paso 3. Configuracin del teclado.

Premiere IT S.R.L.

Pgina 6

LOC: Linux Original Courseware Despus de estas configuraciones iniciales, el sistema empieza a detectar el hardware instalado, analiza el CDROM y carga los mdulos que necesitar el instalador de Debian. Paso 4. Configuracin de la red. Este paso es til configurarlo en este momento si vamos a hacer una instalacin bsica o mnima con el 1 cd de instalacin de Debian y luego continuamos instalando el sistema desde la red, por ejemplo si vamos bajando de Internet los paquetes que queremos instalar. Lo primero que hace es buscar si en la red hay algn servidor DHCP, que nos asigne una direccin IP automticamente. Si no detecta ningn DHCP, podemos asignar la direccin IP manualmente, como vemos en la pantalla siguiente.

Luego aparecern otras pantallas para definir la mscara de red, la direccin IP del gateway, si hubiera y, por ltimo la direccin IP del servidor de nombres (DNS). Ahora decidimos el nombre de nuestra mquina. Si lo dejamos en blanco, por defecto, el nombre ser
localhost

NOTA Los servidores DNS, o servidores de nombres se escriben en la misma lnea y separados por un espacio. Esta informacin se puede obtener llamando a su compaa de Internet.

Premiere IT S.R.L.

Pgina 7

LOC: Linux Original Courseware

Luego aparece una pantalla donde nos pregunta el dominio al que pertenecemos. Si es una mquina local, en nuestra casa y no tenemos un dominio, dejamos el espacio en blanco. Paso 5. Particionamiento de disco. Llegamos a una parte crtica de la instalacin. Crear las particiones donde instalaremos el sistema. Nos aparece la pantalla que vemos abajo, con varias opciones. Veamos que significan. -Configurar RAID por software: en algunos servidores se replica la informacin, es como hacer un espejado de los discos. RAID son las siglas en ingls de Redundant Array of Inexpensive Disks, o sea, conjunto redundante de discos baratos. En Linux armar el RAID se hace a nivel de particin, por ejemplo: podremos montar un RAID 5 con 3 particiones en 3 discos diferentes (podra ser el mismo disco, pero no tendra sentido y perderamos las capacidades de redundancia y rendimiento de los dispositivos RAID ). -Configurar el Gestor Lgico de Volmenes (LVM): Esto se usa cuando queremos que una misma particin ocupe varios discos, por ejemplo.LVM es una forma de alocar espacio de disco duro en volmenes lgicos que pueden ser fcilmente redimensionados en vez de particiones. Con LVM, el disco duro o grupo de discos duros est alocado para uno o ms volmenes fsicos. Un volumen fsico no abarca ms de una unidad. Los volmenes fsicos estn combinados en grupos de volmenes lgicos, a excepcin de la particin /boot. -Particionado guiado y Ayuda del particionado: Estas 2 opciones nos ayudan en el proceso de particionamiento, mediante cuadros de dialogo, lo hacen ms automatizado. -Maestro IDE (hda) Esta ltima lnea nos muestra el disco que detect. En este caso, tenemos un solo disco duro, Maestro IDE (hda), si tuviera ms discos vera diferentes renglones con todos los discos duros de mi mquina. Ejemplo: Si tuviramos dos discos, tendramos en esta pantalla dos renglones que diran hda y hdb. En Windows existe el drive C:\, aqu se llama /dev/hda. Si tuviera discos SCSI, sera /dev/sda. Aclaracin: As se designan en Linux, los discos rgidos, hd viene de Hard Disk, sd viene de SCSI disk, y las letras a y b designan al disco segn como est enchufado en la IDE. hda: es el disco primario o master de la ranura primaria. hdb: es el disco secundario o esclavo de la ranura primaria. hdc: es el disco primario o master de la ranura secundaria. hdd: es el disco secundario o esclavo de la ranura secundaria. Premiere IT S.R.L. Pgina 8

LOC: Linux Original Courseware

Elegimos la opcin de disco: Maestro IDE (hda) 10.7 GB VMware Virtual IDE Hard Drive Ya que vamos a editar manualmente la tabla de particiones. Entonces nos muestra una pantalla de advertencia, donde confirmamos que s, lo haremos.

Premiere IT S.R.L.

Pgina 9

LOC: Linux Original Courseware

Entonces, para comenzar a crear nuestra tabla de particiones nos posicionamos sobre la lnea que nos muestra ESPACIO LIBRE Este es el espacio libre que Debian detect en nuestro disco duro.

NOTA: En esta pantalla, vera todas mis particiones en el disco duro si las tuviera. Si quisiera que Debian fuera el nico sistema operativo instalado en la mquina, debera borrar todas esas particiones una por una. Para hacer esto debemos posicionarnos en la particin que deseamos borrar y, del men que aparece en la parte inferior de la pantalla elegimos Borrar la particin. Premiere IT S.R.L. Pgina 10

LOC: Linux Original Courseware Repetimos los pasos con las dems particiones que queremos borrar. Vamos a empezar a crear las particiones. Al dar Enter sobre la lnea que nos muestra ESPACIO LIBRE nos aparece la siguiente pantalla:

Elegimos Crear una particin nueva

Premiere IT S.R.L.

Pgina 11

LOC: Linux Original Courseware La primer particin ser Primaria.

Elegimos que comience al principio del espacio libre que encuentra.

Aqu seleccionamos el tamao.

Premiere IT S.R.L.

Pgina 12

LOC: Linux Original Courseware

En esta pantalla vamos a definir varias caractersticas de la particin. Filesystem: vamos a formatear la particin, debemos decirle con qu filesystem o sistema de archivos la vamos a formatear. En este caso elegimos ext3, podra ser ext2, reiserfs,etc Punto de montaje: el filesystem o sistema de archivos debe montarse en algn directorio para funcionar. El primer filesystem a montar debe ser /. NOTA: este tema lo veremos en detalle en captulos posteriores. Opciones. Son opciones de montaje, por ejemplo si se monta como solo lectura o lectura/escritura, otra opcin puede ser qu permisos tienen los usuarios para montar dicho filesystem. En este caso, le ponemos defaults. Etiqueta: como se llama el filesystem. En este caso, /, es el directorio principal o raz. Bloques reservados. Esto lo define el administrador del sistema operativo, tiene que ver con la estructura del filesystem, Linux utiliza inodos para armar la jerarqua del rbol de directorios. Uso habitual: estndar Marca de arranque. Puede estar activada o desactivada. La activo si quiero que esa particin arranque. Tamao: es el tamao que queremos tenga la particin. Cuando terminamos de configurar estos parmetros, seleccionamos Se ha terminado de definir la particin del men abajo en la pantalla. Los cambios en las particiones no tomarn efecto hasta que no sean escritos al disco duro.

Premiere IT S.R.L.

Pgina 13

LOC: Linux Original Courseware En un disco se pueden hacer hasta cuatro particiones (1-4) primarias. Si se necesitan ms, una de ella debe ser de un tipo especial: extendida y va a contener particiones adicionales (5 en adelante). En nuestro caso, el disco (hda) tendr tres particiones primarias, y una extendida (no necesariamente debe ser la 4) que contendr tres particiones ms. Las particiones creadas dentro de la extendida se denominan particiones lgicas. Ejemplo de una tabla de particiones con tres primarias y la cuarta extendida, conteniendo adentro tres particiones ms.
Device Boot /dev/hda1 /dev/hda2 /dev/hda3 /dev/hda4 /dev/hda5 /dev/hda6 /dev/hda7 Start 1 615 1229 1843 1843 2457 2480 End 614 1027 1842 2481 2456 2479 2481 Blocks Id System 4931923+ 83 Linux 3317422+ c Win95 FAT32 (LBA) 4931955 82 Linux swap 5132767+ 5 Extended 4931923+ 83 Linux 184716 83 Linux 16033+ 83 Linux

As particionaremos nuestro disco. Crearemos 3 particiones primarias y 3 particiones lgicas que contendrn:
hda1 hda2 hda3 hda5 hda6 hda7 / /boot swap /var /tmp /usr

Debemos decidir cunto tamao darle a cada particin. La particin que vamos a usar para swap, la haremos de tamao similar al doble de la memoria RAM (siempre que tengamos menos de 256 Mb, sino conviene dejarla ms o menos del mismo tamao). Tambin es bueno crear una particin donde alojar /boot para tener en un espacio fsico separado las imgenes de booteo. El directorio /tmp conviene guardarlo en una particin porque en esa particin puede escribir todo el mundo y como consecuencia, a menos que estemos implementando quotas cualquiera nos puede llenar el disco. A /usr le damos una particin especial porque a medida que va creciendo nos saca espacio de /. Cuantos ms programas instalemos, ms crecer /usr. Para /var tenemos una consideracin parecida. Si lo que estamos instalando es un servidor de correo, por ejemplo debemos darle ms espacio. Igualmente todo esto le quedar ms claro, cuando lea ms abajo como es el rbol de directorios. Directorios
/ /tmp /lib /dev

/etc /bin /sbin /home /root /proc /usr

(barra) Se encuentra en todos las estructuras de archivos tipo Linux. De aqu comienza todo el rbol. Es el directorio raz, el principal del rbol. Aqu se guardan archivos temporales que crean los programas que son ejecutados. Libreras del sistema, algo parecido a las dll de Microsoft. Aqu se almacenan todos los archivos que representan dispositivos. Los archivos contenidos son los device drivers y se utilizan para acceder a los dispositivos del sistema y recursos, como discos duros, mdems, memoria, etc. Contiene los archivos de configuracin del sistema. stos incluyen administracin del arranque del sistema, de servicios, de usuarios, etc. Aqu encontramos los comandos principales del sistema que son fundamentales para el inicio del equipo y que los usuarios pueden utilizar. A diferencia del /bin, ac estn los comandos tambin fundamentales para el inicio del equipo, pero exclusivos del administrador del equipo. Contiene los directorios home de los usuarios. Directorio de la cuenta de usuario root. Es el /home de root, por seguridad est separado de los home de los dems usuarios. Es un directorio virtual, no existe en el disco, los archivos que contiene residen en memoria. Est ntimamente relacionado con el kernel. Aqu es donde se ubican los programas instalados, sus bibliotecas, su documentacin, sus archivos, etc. y son accesibles para los usuarios. /usr contiene la mayora de los paquetes grandes de programas y sus archivos de configuracin. Por ejemplo, /usr/share/man y /usr/share/doc contienen pginas man y documentos variados sobre el software instalado. Pgina 14

Premiere IT S.R.L.

LOC: Linux Original Courseware Contiene directorios que tienden a crecer y/o son datos voltiles. Ejemplos son: colas de impresin, colas de mail, archivos log. /media Lo utiliza los dispositivos que se montan, es el punto de montaje temporal de dispositivos removibles. Contiene cdrom y floppy como subdirectorios. /boot Contiene las imgenes de booteo para arrancar el sistema. /lost+found Aqu aparecen los archivos que luego de un corte del sistema, de un mal apagado del equipo, son restaurados por un chequeo de integridad del disco.
/var

Paso 6. Creando la particin boot.

Nos posicionamos donde dice ESPACIO LIBRE para crear una nueva particin, le indicamos el tamao 130MB

Premiere IT S.R.L.

Pgina 15

LOC: Linux Original Courseware

Aqu elegimos el filesystem /boot, y vamos a la pantalla siguiente para montarla y configurar dems caractersticas. Entre ellas, hacer esta particin, capaz de iniciar/arrancar el sistema operativo (bootable), para esto activar la opcin marca de arranque

Premiere IT S.R.L.

Pgina 16

LOC: Linux Original Courseware Cuando terminamos de configurar estos parmetros, seleccionamos Se ha terminado de definir la particin del men abajo en la pantalla.

Paso 7. Creacin de la particin de intercambio (swap) Nos posicionamos donde dice ESPACIO LIBRE, damos Enter y elegimos el tamao

Premiere IT S.R.L.

Pgina 17

LOC: Linux Original Courseware Ahora necesitamos decirle a Linux que esta particin es para utilizar como swap, de otra manera Linux no la puede usar. Esto lo hacemos en la siguiente pantalla, la relativa a los montajes y configuracin del filesystem.

Cuando terminamos de configurar estos parmetros, seleccionamos Se ha terminado de definir la particin del men abajo en la pantalla.

Premiere IT S.R.L.

Pgina 18

LOC: Linux Original Courseware Paso 8. Creacin de la particin extendida Recordemos, si creo la 4 particin como primaria, ya no puedo crear ms particiones. Por lo tanto, la 4 particin debemos crearla extendida, y as, crear luego particiones lgicas. Cuando nos posicionamos donde dice ESPACIO LIBRE, damos Enter y elegimos el tamao, nos pregunta si la particin ser lgica o extendida.

Elegimos, lgica Montamos /var Cuando terminamos de configurar estos parmetros, seleccionamos Se ha terminado de definir la particin del men abajo en la pantalla

Premiere IT S.R.L.

Pgina 19

LOC: Linux Original Courseware

Ahora crearemos otra particin lgica, para /tmp Este directorio no aparece en el listado que nos muestra, debemos tipearlo nosotros.

Premiere IT S.R.L.

Pgina 20

LOC: Linux Original Courseware

Premiere IT S.R.L.

Pgina 21

LOC: Linux Original Courseware Cuando terminamos de configurar estos parmetros, seleccionamos Se ha terminado de definir la particin del men abajo en la pantalla

Y por ltimo, creamos la particin para /usr

Paso 9. Hacer definitivos los cambios en el disco Hasta ahora, nada ha sido modificado, hasta que se escriban los cambios en el disco. Para hacer esto, seleccionamos Finalizar el particionado y escribir los cambios en el disco del men abajo en la pantalla.

Premiere IT S.R.L.

Pgina 22

LOC: Linux Original Courseware

Luego veremos el mensaje: "Desea escribir los cambios en los discos? Si estamos seguros, decimos que Si, y listo. NOTA: En caso de errores o dudas siempre tenemos en las pantallas la opcin <Volver> Paso 10. Instalacin del sistema bsico Cuando terminamos el particionado, el sistema crea la nueva tabla de particiones, y arma el filesystem. Ahora entonces empieza a instalar el sistema base Tarda unos minutos hasta que el sistema bsico sea instalado. Paso 11. Hacer el sistema arrancable (bootable) Para arrancar nuestro sistema debemos instalar GRUB Aqu nos parece una diferencia importante con la instalacin de Debian versin 2.4. Ya no nos da a elegir qu programa queremos usar para arrancar nuestro sistema, si LILO o GRUB. Esta distribucin Debian 2.6, solo permite instalar GRUB.

Premiere IT S.R.L.

Pgina 23

LOC: Linux Original Courseware

En esta pantalla nos pregunta si queremos instalar GRUB en el MBR o registro principal de arranque. Si queremos usar GRUB para arrancar todos los sistemas operativos (en caso que hubiramos tenido instalado Windows, por ejemplo) entonces, elegimos la opcin de instalar GRUB en el MBR (Master Boot Record). Si hubiera contestado que <No>, entonces me va a preguntar en que particin quiero instalarlo. En este caso despus debemos bootear con un diskette o con un CD-ROM

Premiere IT S.R.L.

Pgina 24

LOC: Linux Original Courseware Paso 12. Reiniciar la mquina Finaliz la instalacin! Despus de esta pantalla estamos listos para reiniciar el sistema. Una vez que reiniciamos, haremos una configuracin final del sistema. Asegurmonos de sacar el CD-ROM y/o diskette y seleccionamos <Continuar> para reiniciar Debian. Al arrancar nuestro sistema veremos la siguiente pantalla:

Paso 13. Configuracin de la zona horaria Vamos a definir la hora del sistema. En esta pantalla nos pregunta si la mquina est configurada con la hora Greenwich o la hora local. Elijan lo que ms les convenga.

Premiere IT S.R.L.

Pgina 25

LOC: Linux Original Courseware En la prxima pantalla, tambin titulada "Configuracin de zona horaria", muestra una lista de pases y ciudades. Escogemos la nuestra, que aparece en el listado.

Paso 14. Configuracin de la contrasea En esta pantalla es donde vamos a escribir la contrasea de la cuenta del usuario principal o superusuario root.

Premiere IT S.R.L.

Pgina 26

LOC: Linux Original Courseware Esta es la contrasea que vamos a necesitar para poder entrar al sistema como root, para poder administrar todo el sistema. Por ejemplo, necesitar entrar al sistema como root para "bajar" (descargar) e instalar paquetes y programas usando el programa apt. Por consiguiente, no queremos que cualquiera adivine mi contrasea de administrador del sistema. Por favor recuerde esta contrasea, la va a necesitar al final de estas instrucciones. Y muchas veces ms ;-) La prxima pantalla nos pide otra vez la misma contrasea para asegurarse, y si no hay error de tipeo, listo, ya tom la contrasea de root. Si hubiera error, las contraseas seran distintas, entonces el sistema nos obligar a repetir este paso. La prxima pantalla nos presenta la opcin de crear una cuenta de usuario, como no es bueno entrar siempre como root , la crearemos. Escribamos nuestro nombre completo, por ejemplo y pulsamos <Aceptar>.

Luego nos pide un nombre para la cuenta. Este ser el nombre que utilizar el usuario para entrar al sistema. Por lo tanto, tambin necesita una contrasea. Son las pantallas siguientes.

Premiere IT S.R.L.

Pgina 27

LOC: Linux Original Courseware NOTA: escriba una contrasea diferente que la de root, as si alguien se entera de su contrasea como usuario, todava no pueden entrar al sistema como root y hacer de las suyas. Paso 15. Configuracin de APT Como ya tenemos la red configurada, desde los primeros pasos de la instalacin, exactamente en el Paso 4, podemos utilizar la red para hacer la instalacin de paquetes. Si tenemos conexin a alguna red, ADSL, Cable, u otro sistema de banda ancha, nos encontramos en la pantalla de "Configuracin de apt". APT es el programa que usa Debian para administrar los paquetes, para instalar, eliminar, buscar, etc. En esta pantalla, lo que vamos a configurar es la fuente de instalacin o repositorio, o sea, a donde va apt a buscar los paquetes para instalar. Si no tenemos internet, igual nos encontramos con esta pantalla, pero en este caso, la nica fuente de instalacin que tenemos son los CD-ROMs.

Aclaracin: El software a instalar puedo traerlo desde los CD-ROM de Debian, desde internet, ya sea por http como por ftp, o tambin desde un repositorio local, una mquina especialmente destinada a esta tarea. En este caso, vamos a usar los CD-ROM de instalacin de Debian. Elegimos la opcin cdrom y presionamos <Aceptar> Luego aparece la siguiente pantalla, donde apt analiza el CD-ROM y guarda la informacin que necesita en la base de datos del programa apt

Premiere IT S.R.L.

Pgina 28

LOC: Linux Original Courseware

Si elegimos "FTP" o "HTTP" para tener acceso a los recursos de apt, nos aparece una pantalla donde pregunta si se va a usar recursos de apt NON-US. Si aceptamos, tendremos acceso a software que no se encuentra en los servidores apt de EEUU en materia de criptografa. Luego pregunta si vamos a usar recursos de apt dirigidos a software non-free (no pueden tener, compartir, o modificar el cdigo, pero son GRATIS) han sido incorporados a Debian. La prxima pantalla pregunta si se va a usar "contrib software" que es tambin gratis y depende de non-free software para funcionar. En la prxima pantalla, tenemos que elegir el repositorio de Debian al que nos vamos a conectar para bajar los paquetes. Podemos escoger un pas en el continente nuestro, por ejemplo Argentina, que hay un mirror. Entonces elegimos, y Enter. La siguiente pantalla muestra una lista de servidores y "espejos" o mirrors para bajar los paquetes de Debian. En teora, no importa cual elegimos, sin embargo, hay algunos que no funcionan. Si esto pasa, tendremos la oportunidad de repetir la operacin hasta que encontremos uno que trabaje bien. Uno seguro, es el servidor de debian.org. Seleccionamos y Enter. Conviene agregar alguno ms, de Estados Unidos o Brasil, por ejemplo, por las dudas que el primer repositorio no funcione en algn momento En la siguiente pantalla pregunta si quieren tener acceso a los recursos apt de seguridad para actualizarse. Le decimos que Si.

Premiere IT S.R.L.

Pgina 29

LOC: Linux Original Courseware

Paso 16. Tasksel En esta pantalla tenemos que tomar una decisin. Una de las ventajas que tiene Debian es que se puede instalar un sistema limpio, bsico y luego instalarle todos los programas que queramos. Tasksel es un programa que nos permite seleccionar grupos de programas y hasta paquetes individuales, Tambin puede seleccionar todo si no sabe qu es cada paquete, o quiere conocer todo lo que trae Debian

Premiere IT S.R.L.

Pgina 30

LOC: Linux Original Courseware La otra opcin es que mi sistema slo tenga las cosas que yo intencionalmente elija. Habiendo dicho esto, me salteo este paso, y luego instalo lo que quiero, terminando as con un sistema limpio y magro. Seleccionamos "No" para continuar, y luego veremos como agregar los programas que queramos. Paso 17. Aptitude Si en la pantalla anterior, elegimos la opcin seleccin manual de paquetes vamos a usar el programa aptitude. Algunos preferirn hacer esto, pero como lo veremos ms adelante ahora salteamos este tema en la instalacin. Caso contrario, si quiere elegir qu instalar, paquete a paquete seleccione la opcin seleccin manual de paquetes en tasksel. Se llamar a aptitude con la opcin --visual-preview si selecciona al mismo tiempo una o ms tareas. Lo que significa que podr revisar los paquetes que se van a instalar. Si no selecciona ninguna tarea se mostrar la pantalla habitual de aptitude. Debe pulsar g despus de haber hecho su seleccin para empezar la descarga e instalacin de los paquetes. NOTA: Aptitude es un programa moderno para gestionar paquetes. Nos permite seleccionar paquetes individualmente, conjuntos de paquetes que concuerdan con un criterio dado (para usuarios avanzados) o tareas completas. Las combinaciones de teclas ms bsicas son: Tecla Enter + D G Q F10 Accin Abre/colapsa/activa un elemento. Marca el paquete para su instalacin. Marca el paquete para su eliminacin. Muestra las dependencias del paquete. Descarga/instala/elimina paquetes. Sale de la vista actual. Activa el men.

Arriba, Abajo Mueve la seleccin arriba o abajo.

Puede consultar ms rdenes con la ayuda en lnea si pulsa la tecla ? Paso 17. Comienza la instalacin de paquetes Si han escogido instalar paquetes con tasksel o aptitude, stos sern instalados por apt ahora, lo cual tomar algn tiempo. Si no lo hicieron este paso ser rpido porque slo tienen que desinstalar un solo paquete. No se preocupen por los mensajes de alerta que reciban, no son importantes. Se ver algo de este estilo:

Premiere IT S.R.L.

Pgina 31

LOC: Linux Original Courseware

Paso 18. Exim Exim es un servidor de correo como Sendmail, Qmail, etc.

La mayora de las personas no lo van a necesitar, a menos que quieran tener un servidor de correo propio debido a su trabajo, etc.

Premiere IT S.R.L.

Pgina 32

LOC: Linux Original Courseware

Si despus lo quieren configurar, la documentacin se encuentra en: en el archivo /usr/share/doc. Paso 19. Fin de la configuracin

Esta ltima pantalla simplemente explica que han terminado la instalacin de Debian con xito. Si queremos entrar al sistema, entramos, nos logueamos, escribimos nombre de usuario, Enter. Luego nos pide password, ponemos la contrasea de usuario y pulsamos Enter.

Premiere IT S.R.L.

Pgina 33

LOC: Linux Original Courseware Ahora estaremos en una pantalla sin entorno grfico, estrictamente de consola. Bienvenidos! Hemos terminado la instalacin de Debian. Nos encontramos con la desventaja de no tener modo grfico. Para solucionar esto rpidamente, pueden decirle al sistema que lo instale. Para esto, como usuario root, escribimos:
apt-get install x-window-system

Luego nos har una serie de preguntas relativas a la configuracin de las Xs. Para esto lo ideal es consultar la pgina http:// www.xfree.org donde vamos a tener informacin completa para ayudarnos en la instalacin y configuracin.

Premiere IT S.R.L.

Pgina 34

LOC: Linux Original Courseware

Captulo 2
Administracin de Usuarios
Linux es un sistema operativo multiusuario, por lo tanto el administrador del sistema, que puede ser root o algun otro usuario con nivel de administrador, tiene que asignar un nombre de usuario (login) y una contrasea (password) a los usuarios para que puedan empezar a trabajar. Cada usuario, tiene su propio login y su propia password para acceder al sistema. Esto permite prevenir que otro usuario utilice un login que no le corresponde, pues es secreto. El archivo donde estn almacenados los passwords de los usuarios es /etc/passwd. Para que un password sea vlido debe contener como mnimo 6 caracteres, y el primero debe ser alfabtico; pero nicamente los 8 primeros son significativos. El password puede contener letras en maysculas o minsculas, caracteres numricos y caracteres especiales. Para crear un nuevo password o cambiar uno ya existente se utiliza el comando passwd, cuya sintaxis es:
# passwd [NombreUsuario]

Linux guarda la informacin de todos los usuarios junto con sus passwords (lgicamente cifrados) en un archivo. Es el archivo passwd, dentro del directorio /etc. Es muy simple en Linux leer este archivo, ya que es accesible a cualquier usuario. Tiene la siguiente forma:
ale:heJuwMrBVa6mg:1001:202:Alejandra Garcia:/home/ale:/bin/sh pepe:GezuA6krN/BsE:1002:202:Jose Alvarez:/home/pepe:/bin/sh juan:ze7EPYLjRYX9I:1003:202:Juan Jose Cao:/home/juan:/bin/ksh

El archivo de Passwords

Vamos a ver qu significa todo esto. Podemos decir que el formato de cada lnea es: campo1:campo2:campo3:campo4:campo5:campo6:campo7 donde: campo1) login del usuario campo2) password encriptado campo3) nmero UID (identificacin de usuario) campo4) nmero GID (identificacin de grupo) campo5) datos del usuario campo6) directorio de trabajo campo7) directorio del shell Nota: Los usuarios tienen su nmero de usuario (UID), tambin tienen un nmero de grupo (GID). Cada usuario debe pertenecer a un grupo. Los grupos estn numerados en el archivo /etc/group. Como el archivo passwd es accesible por cualquier usuario, lo que siempre se hace es activar el shadow. Recuerda, cuando instalamos que en una de las pantallas de instalacin nos permita habilitar MD5 y shadow?. Bueno, es el mismo shadow. Shadow quiere decir sombra en ingls, lo puedo asociar a ocultar o esconder. El archivo shadow tambin se encuentra dentro del directorio /etc, y a diferencia de passwd, ste no es visible para cualquier usuario. Comprubelo en su sistema loguendose como un usuario cualquiera y ver que no le da permiso de lectura. Este archivo no puede ser accedido por cualquier usuario, slo el superusuario o root tiene permiso de acceder a l. Veamos como es este caso, en donde el archivo de passwords est protegido con el archivo shadow. El archivo shadow es el que contiene las contraseas encriptadas, y el archivo passwd, en el campo que antes guardaba las contraseas, ahora tiene una X, significando esto que, este usuario tiene una contrasea, es una marca. La contrasea no est aqu.

Premiere IT S.R.L.

Pgina 35

LOC: Linux Original Courseware Ejemplo


ale:heJuwMrBVa6mg:11750:0:99999:7:-1:-1:134529868

Esta es una lnea del archivo shadow. Vamos a ver ahora el significado de cada campo. campo1) Nombre de usuario campo2) Contrasea encriptada campo3) Cantidad de das desde el 1/1/1970 que se habilit la contrasea campo4) Cantidad de das antes de cambiar la contrasea campo5) Cantidad de das despus, que se debe cambiar la contrasea campo6) Cantidad de das antes de que expire la contrasea, y avisa al usuario campo7) Cantidad de das despus de que expire la contrasea, y se inhabilita la cuenta. campo8) Cantidad de das despus, desde 1/1/1970, que la cuenta est deshabilitada. campo9) Campo reservado Nota: Los campos que contienen un 1, significa, que la cantidad de das es infinita.

Crear Usuarios

El comando para agregar un usuario es:


useradd [opciones] <NombreUsuario> useradd NombreUsuario

Esta es la forma ms simple del comando useradd. Como la mayora de los comandos en Linux, se puede usar con varios identificadores, las opciones ms usuales del comando useradd son:
-c comentario

para especificar un comentario para la nueva cuenta.


-d directoriodeusuario

para establecer el directorio de trabajo del usuario. Es conveniente, a fin de tener un sistema bien organizado, que este se localice dentro del directorio /home.
-e fechaexpiracion

para establecer la fecha de expiracin de la cuenta de usuario. Esta debe ingresarse en el siguiente formato: AAAA-MM-DD.
-g grupoinicial

para establecer el grupo inicial al que pertenecer el usuario. De forma predeterminada se establece como nico grupo. Nota: El grupo asignado ya debe existir.
-G grupo1,grupo2

para establecer grupos extra a los que pertenecer el usuario. Se deben separar utilizando una coma y sin espacios. Esto es muy conveniente cuando se desea que el usuario tenga acceso a determinados recursos del sistema, como acceso a la unidad de disquetes, administracin de cuentas PPP y POP. Nota: los grupos asignados deben existir.
-m

para especificar que el directorio de trabajo del usuario debe ser creado , y dentro se copiarn los archivos especificados en /etc/skel. Para cambiar esto, hay que completar la opcin -m con k <nuevodirskel> donde nuevodirskel es la carpeta de la cual se sacarn los perfiles de usuario.
-s shell

Se utiliza para establecer la shell que podr utilizar el usuario. De forma predeterminada, se establece bash como shell predeterminado.
-u uid

Se utiliza para establecer el UID, es decir, la ID del usuario, el nmero de identificacin de usuario. Este debe ser nico. Cuando se crea una cuenta de usuario por primera vez, generalmente se asignar 500 como UID del usuario. Los UID entre 0 y 99 son reservados para las cuentas de los servicios del sistema.

Premiere IT S.R.L.

Pgina 36

LOC: Linux Original Courseware Ejemplo:


# useradd -u 500 -d /home/alexa -G floppy,pppusers,popusers alexa

Nota: No crea el directorio de usuario /home/alexa . Debe existir con anterioridad Esto crear una cuenta de usuario llamada alexa, que se encuentra incluida en los grupos floppy, pppusers y popusers, que tendr un UID=500 y tendr un directorio de trabajo en /home/alexa. Otro ejemplo:
# useradd -m s /bin/bash jjlopez

Aqu crear un usuario jjlopez con su directorio de usuario /home/jjlopez y usar bash como shell. Existen ms opciones y comentarios adicionales para el comando useradd, estas se encuentran especificadas en los manuales, las pginas man. Para acceder a esta informacin, utilice el comando man useradd. Nota: Este comando lo usa solamente root. En el caso de saltar todas estas opciones, useradd va a tomar las opciones por default desde un archivo: /etc/default/useradd en caso de Redhat /etc/adduser.conf en caso de Debian Nota: En Debian nos conviene usar el comando interactivo adduser para crear usuarios. Otra forma de crear usuarios es directamente, agregar la entrada en /etc/passwd. Edite este archivo y agrguelo a mano. Tenga cuidado, no repita un nombre de usuario. Los nombres de usuario y UID deben ser nicos. Se debe especificar el GID, nombre completo y resto de informacin. Se debe crear el directorio inicial (/home/usuario, por ejemplo), y poner los permisos en el directorio para que el usuario sea el dueo. Se deben suministrar archivos de comandos de inicializacin en el nuevo directorio y se debe hacer alguna otra configuracin del sistema (por ejemplo, preparar un buzn para el correo electrnico entrante para el nuevo usuario en /var/spool/mail). Todo esto es lo que hace el comando useradd o adduser dependiendo del software que est instalado. El programa /usr/sbin/useradd usa una serie de valores por defecto. Los leer del archivo /etc/default/useradd, si este existe. Si no existe, entonces utiliza algunos valores internos por defecto, que pueden verse ejecutando /usr/sbin/useradd -D. Vamos a ver que contiene el archivo /etc/default/useradd: Grupo de usuario cuando se utilice useradd -n. Sino en RedHat, el nmero 100 significa que se crear un GID igual al UID, si no se indica lo contrario. HOME=/home Donde se guardarn los directorios de todos los usuarios INACTIVE=-1 Nmero de das a los cuales se volver inactiva la cuenta del usuario, contadas a partir del da del desactivamiento EXPIRE= Da en el que ser desactivada la cuenta SHELL=/bin/bash El shell por defecto para el usuario SKEL=/etc/skel Lugar de donde se deben copiar archivos al nuevo directorio del usuario
GROUP=100

Ejemplo:
# cat /etc/default/useradd GROUP=100 HOME=/home INACTIVE=-1 EXPIRE= SHELL=/bin/bash SKEL=/etc/skel

Si estas opciones no son de nuestro agrado debemos cambiarlas por los valores que consideremos oportunos. Si por ejemplo preferimos que el grupo por defecto sea el 100, que el password expire a fin de ao, no queremos bloquear una cuenta debido a que haya expirado el password y deseamos como shell por defecto /bin/bash, utilizaramos la siguiente orden:
# useradd -D -g100 e2006-12-31 -f0 -s/bin/bash

Premiere IT S.R.L.

Pgina 37

LOC: Linux Original Courseware Estos valores sern almacenados por defecto en el fichero /etc/default/useradd. Nota: El archivo /etc/default/useradd se puede abrir con un editor de texto y corregirlo, en vez de usar el comando anterior. Entonces, si ahora creo un usuario de esta forma:
# useradd -m -c "Usuario Invitado" invitado

Esto crear una entrada en el fichero /etc/passwd con el siguiente formato:


invitado:x:505:100:Usuario Invitado:/home/invitado:/bin/bash

Pero tambin crear una entrada en el fichero /etc/shadow con el siguiente formato:
invitado:!:0:0:60:0:0:0:0

Adems se crear el directorio de usuario (home directory) y los contenidos de /etc/skel sern copiados en l. Como no especifiqu un UID para el usuario, el sistema asumir el siguiente que tenga disponible. La cuenta del usuario invitado ha sido creada, pero todava no est disponible ya que no se le ha definido una contrasea. Para establecer la contrasea hacemos lo siguiente:
# passwd invitado Changing password for user invitado New UNIX password: Retype new UNIX password: passwd: all authentication tokens updated successfully

Veamos un ejemplo de cambio de contrasea:


# passwd alexa

Cambiar la clave de alexa. Solo root puede cambiar la clave de otro usuario de esta forma. Cada usuario puede cambiar su propia clave con passwd tambin. Nota: Cuidado! Si esta logueado como root, y al usar el comando passwd, se olvida de poner el nombre de usuario al que le desea cambiar la contrasea, lo que suceder es cambiar su propia contrasea (la del usuario root). El comando adduser que utilizamos en Debian, toma las opciones por defecto que estn configuradas en el archivo /etc/adduser.conf. Veamos:
# /etc/adduser.conf: `adduser' configuration. # See adduser(8) and adduser.conf(5) for full documentation. # The DSHELL variable specifies the default login shell on your # system. DSHELL=/bin/bash # The DHOME variable specifies the directory containing users' home # directories. DHOME=/home # If GROUPHOMES is "yes", then the home directories will be created as # /home/groupname/user. GROUPHOMES=no # If LETTERHOMES is "yes", then the created home directories will have # an extra directory - the first letter of the user name. For example: # /home/u/user. LETTERHOMES=no # The SKEL variable specifies the directory containing "skeletal" user # files; in other words, files such as a sample .profile that will be # copied to the new user's home directory when it is created. SKEL=/etc/skel # FIRST_SYSTEM_UID to LAST_SYSTEM_UID inclusive is the range for UIDs # for dynamically allocated administrative and system accounts.

Premiere IT S.R.L.

Pgina 38

LOC: Linux Original Courseware


FIRST_SYSTEM_UID=100 LAST_SYSTEM_UID=999 # FIRST_UID to LAST_UID inclusive is the range of UIDs of dynamically # allocated user accounts. FIRST_UID=1000 LAST_UID=29999 # The USERGROUPS variable can be either "yes" or "no". If "yes" each # created user will be given their own group to use as a default, and # their home directories will be g+s. If "no", each created user will # be placed in the group whose gid is USERS_GID (see below). USERGROUPS=no # If USERGROUPS is "no", then USERS_GID should be the GID of the group # `users' (or the equivalent group) on your system. USERS_GID=100 # If QUOTAUSER is set, a default quota will be set from that user with # `edquota -p QUOTAUSER newuser' QUOTAUSER="alexa"

Otros archivos importantes para la administracin de usuarios

Cuando se agrega un usuario o grupo con los comandos useradd o groupadd respectivamente, el contenido de los siguientes archivos es de inters. Nota: Ya vimos el comando useradd. No se preocupe por groupadd, lo veremos despus.
/etc/skel es un directorio, contiene todos los archivos (ejemplo: .bashrc, .kde) u otros que sern colocados

en el directorio de un usuario (home directory) al generar al usuario. El directorio /etc/skel es bastante simple de configurar y usar. Proporciona una forma de estar seguro de que todos los nuevos usuarios del sistema tienen la misma configuracin inicial. El directorio /etc/skel es usado por el programa /usr/sbin/useradd. Para empezar, creamos un directorio /etc/skel. La mejor forma de hacerlo es como usuario root. Despus copiamos en /etc/skel aquellos archivos que queremos que cada nuevo usuario tenga en su directorio home. Por ejemplo, .bash_profile, .bashrc, .bash_logout, dircolors, .inputrc, y .vimrc.
/etc/default/useradd ya lo explicamos en prrafos anteriores. /etc/login.defs (si se utilizan shadow passwords) especifica varios parmetros en la configuracin del

proceso de entrada al sistema (login), o logueo. Entre las opciones que podemos configurar en este archivo estn: permisos de los usuarios para cambiar su informacin de usuario, temas relativos a la expiracin de passwords, consolas desde la que se permite login como root, en que archivo se fijan diversas variables de entorno, valor inicial para el PATH (ruta de bsqueda de archivos), carcter de borrado, registro de entradas correctas e intentos de entrada incorrectas, tiempo de espera tras cada login fallido, etc. Suele venir bien comentado y con valores que no requieren cambios, pero es bueno darle una mirada al menos para estar al tanto de estos valores. Aqu tenemos un ejemplo de este archivo:
# *REQUIRED* # Directory where mailboxes reside, _or_ name of file, relative to the # home directory. If you _do_ define both, MAIL_DIR takes precedence. # QMAIL_DIR is for Qmail # #QMAIL_DIR Maildir MAIL_DIR /var/spool/mail #MAIL_FILE .mail # Password aging controls: # # PASS_MAX_DAYS Maximum number of days a password may be used. # PASS_MIN_DAYS Minimum number of days allowed between password changes. # PASS_MIN_LEN Minimum acceptable password length. # PASS_WARN_AGE Number of days warning given before a password expires.

Premiere IT S.R.L.

Pgina 39

LOC: Linux Original Courseware


# PASS_MAX_DAYS 99999 PASS_MIN_DAYS 0 PASS_MIN_LEN 5 PASS_WARN_AGE 7 # # Min/max values for automatic uid selection in useradd # UID_MIN 500 UID_MAX 60000 # # Min/max values for automatic gid selection in groupadd # GID_MIN 500 GID_MAX 60000 # If defined, this command is run when removing a user. # It should remove any at/cron/print jobs etc. owned by # the user to be removed (passed as the first argument). # #USERDEL_CMD /usr/sbin/userdel_local # # If useradd should create home directories for users by default # On RH systems, we do. This option is ORed with the -m flag on # useradd command line. # CREATE_HOME yes

Nota: Existe la pgina man de este archivo. Podemos consultarlo con el comando man login.defs.

Borrar usuarios

De forma parecida, borrar usuarios puede hacerse con los comandos userdel o deluser dependiendo de que software fuera instalado en el sistema. Para eliminar un usuario del sistema, debe ingresar:
userdel [opciones] nombreUsuario

Un Ejemplo:
# userdel ale

(Siendo ale el usuario que deseo eliminar.)

Este comando, al igual que la mayora de los comandos Linux, soporta varias opciones. Si lo uso as, sin ningn identificador, elimina al usuario del archivo /etc/passwd y tambin de /etc/shadow y /etc/group. A partir de ese momento el usuario en cuestin ya no puede loguearse, es decir, que ya no puede entrar al sistema. El usuario desaparece del sistema, pero no desaparecen su directorio de usuario ni su buzn de mensajes. Si quiero que un usuario se vaya con todo su bagaje, debo usar:
# userdel -r ale

Si se desea "deshabilitar" temporalmente un usuario para que no se conecte al sistema (sin borrar la cuenta del usuario), se puede prefijar con un asterisco ("*") el campo de la clave en /etc/passwd. Por ejemplo, cambiando la linea de /etc/passwd correspondiente al usuario ale:
ale:*Xv8Q981g71oKK:102:100:Alejandra Garcia:/home/ale:/bin/bash

Esto evitar que ale se conecte.

Modificar atributos de usuario

Para modificar la informacin asociada con un usuario se utiliza el comando usermod. Su sintaxis es similar a la del comando useradd. Por ejemplo si quisiramos cambiar el intrprete de comandos del usuario agarcia, deberamos utilizar algo como esto:
# usermod -s /bin/csh agarcia

El nico cambio que se producira en el archivo /etc/passwd, sera en su ltimo campo, el relativo a la shell. Si nuestra intencin fuera modificar la fecha de expiracin de la cuenta al da 9/12/2003 emplearamos el siguiente comando:
# usermod -e 12/09/2003 agarcia

Premiere IT S.R.L.

Pgina 40

LOC: Linux Original Courseware Nota: El formato de la fecha es MM/DD/YYYY En este caso el nico fichero modificado sera el /etc/shadow. Cambio de UID del usuario
# usermod -u UID usuario

Cambio el default GID de cierto usuario .Tambin podra poner un nombre de grupo.
# usermod -g GID usuario

Otros comandos de usuario


Opciones:

id: Muestra el nombre y grupo del usuario en nmeros (el UID y GID) y a que grupos pertenecen. id [opciones] [usuario] -u Muestra solo el nmero de usuario. -g Muestra solo el nmero de grupo. -G Muestra solo los grupos al que pertenece ese usuario. [usuario] es para ver la informacin de cierto usuario. su: Sirve para loguearse como otro usuario. su [opciones] [usuario]

Opciones:
-c

Obtiene un login de ese usuario. Es igual que poner -l o -login. Pasa un comando al shell con el usuario especificado. Nota: Restrinja los permisos de /bin/login y /bin/su. Vea ms adelante para la explicacin de por qu.

Aqu vemos un ejemplo de cmo debe hacerse. Antes de restringir su a un grupo privilegiado, primero debe crear ese grupo con groupadd. Por ejemplo, "redes" es el nombre de grupo que voy a utilizar. Asegrese de aadir a su usuario o a cualquier usuario privilegiado al grupo "redes" creado. Ejecute los siguientes comandos:
chmod 0700 /bin/login chgrp redes /bin/su chmod o-rx /bin/su

Grupos
El objetivo de los grupos es dar o restringir permisos sobre algunos archivos a ciertos usuarios (vea la siguiente seccin sobre Permisos en Unix). Por ejemplo un archivo apunte.txt que pertenezca al grupo profesores, que tenga permiso de lectura para el grupo y no para otros usuarios, podr ser ledo nicamente por el dueo y por usuarios que pertenezcan al grupo profesores. Cada usuario tiene un grupo principal (puede especificarse durante la creacin con la opcin GID, -g nombregrupo de useradd), puede pertenecer a diversos grupos y si conoce la clave de algn grupo con clave puede volverse miembro durante una sesin. Los programas relacionados con grupos son: groupadd Para agregar un grupo groupdel Para borrar un grupo groupmod Para modificar un grupo groupmod n Cambiar el nombre de un Grupo groupmod g Cambiar el nombre de un GID groups Un usuario puede ver los grupos a los que pertenece con este programa newgrp Para cambiarme a otro grupo (al que debo pertenecer, por supuesto) Cuando un usuario pertenece a ms de un grupo, al entrar el sistema siempre ser asignado al que aparece en el archivo /etc/passwd y para poderse cambiar a otro tendr que hacerlo con el comando: newgrp otro_grupo donde otro_grupo es otro de los grupos a los que pertenece. El archivo /etc/group es el que contiene informacin acerca de los grupos. El formato de cada lnea es:
nombre_de_grupo:clave:GID:otros miembros

El campo clave es la clave del grupo transformada con DES o MD5. Si el grupo tiene clave shadow en este archivo aparecer el carcter 'x' y la clave transformada estar en otro archivo (por defecto /etc/gshadow). Premiere IT S.R.L. Pgina 41

LOC: Linux Original Courseware Algunos ejemplos de grupos pueden ser:


root:*:0: usuarios:*:100:alexa,pepe,cor invitados:*:200: otros:*:250:sauron

El primer grupo, root, es un grupo especial del sistema reservado para la cuenta root. El siguiente grupo, usuarios, es para usuarios normales. Tiene un GID de 100. Los usuarios alexa, pepe y cor tienen acceso a este grupo. Recuerde que en /etc/passwd cada usuario tiene un GID por defecto. Sin embargo, los usuarios pueden pertenecer a ms de un grupo, aadiendo sus nombres de usuario a otras lneas de grupo en /etc/group. El comando groups lista a qu grupos se tiene acceso. El tercer grupo, invitados, es para usuarios invitados, y otros es para "otros" usuarios. El usuario sauron tiene acceso a este grupo. Como se puede ver, el campo clave de /etc/group raramente se utiliza. A veces se utiliza para dar una clave para acceder a un grupo. Pocas veces esto es necesario. Para evitar que los usuarios cambien a grupos privilegiados (con el comando newgrp), se pone el campo de la clave a "*". No es recomendable editar directamente estos archivos, sino ms bien emplear los programas presentados en esta seccin. Como hemos citado anteriormente, cada usuario pertenece a uno o ms grupos. La nica importancia real de las relaciones de grupo es la perteneciente a los permisos de archivos. Cada archivo tiene un grupo propietario y un conjunto de permisos de grupo que define de que forma pueden acceder al archivo los usuarios del grupo. Hay varios grupos definidos en el sistema, como pueden ser bin, mail, y sys. Los usuarios no deben pertenecer a ninguno de estos grupos; se utilizan para permisos de archivos del sistema. En su lugar, los usuarios deben pertenecer a un grupo individual, como usuarios. Si quiere ser detallista, se pueden mantener varios grupos de usuarios como por ejemplo estudiantes, soporte y facultad. Se pueden usar los comandos addgroup o groupadd para aadir grupos a su sistema. Normalmente es ms sencillo aadir lneas a /etc/group uno mismo, puesto que no se necesitan mas configuraciones para aadir un grupo. Para borrar un grupo, solo hay que borrar su entrada de /etc/group. Nota: Verifique que en el archivo /etc/passwd no haya usuarios perteneciendo a ese grupo que va a eliminar. Ejemplo:
contable::101:cguerra,jpaz personal::102:agarcia,jpaz

Aqu, se han creado los grupos contable, con identificador de grupo 101 y personal, con GID 102. Los miembros del grupo personal son los usuarios agarcia y jpaz, si por alguna razn quiere integrar otro usuario en cualquier grupo, solo agregue una coma despus del ltimo miembro y escriba el nombre_de_usuario que le corresponda. Es conveniente indicar que si en el sistema de archivos se encuentra un directorio como:
drwxrwx--2 root personal 1024 Abr 29 11:32 confidencial/

entonces slo: root, agarcia y jpaz tendrn acceso a l.

Premiere IT S.R.L.

Pgina 42

LOC: Linux Original Courseware

Permisos
Haga un listado largo de cualquier directorio y vera algo como lo siguiente:
[alexa@linux]$ total 13 drwxr-sr-x 2 drwxrwsr-x 4 -rw------1 -rw-r--r-1 -rw-r--r-1 -rwxrwxr-x 1 -rwxrwxr-x 1 -r-------1 -rwxrw-r-1 -rw-rw-r-1 -rwxrwxr-x 1 -rwxrwxr-x 1 ls -la alexa root alexa alexa alexa alexa alexa alexa alexa alexa alexa alexa user staff user user user user user user user user user user 1024 1024 2541 164 55 0 40 64 902 50 175 56 May Apr May Apr Apr Apr Apr Apr Apr Apr Apr Apr 2 09:04 . 17 21:08 .. 2 22:04 .bash_history 23 14:57 .bash_profile 23 14:44 .bashrc 14 19:29 a.out 30 12:14 hola.pl 29 14:04 hola 29 13:57 prueba 30 12:31 probador 30 12:30 prue.sh 23 15:08 quetal.sh

Como se puede apreciar en este listado, tambin estn el directorio actual, representado por un punto "." y el directorio padre representado por dos puntos "..". Ellos tambin poseen permisos y atributos que son mostrados. El primer campo que aparece en el listado es la mscara de permisos. Vamos a explicar qu significa esta mscara de 10 bits.

Esta mscara de 10 dgitos la puedo dividir en partes para entender mejor. Veamos unas tablas que nos esclarecern un poco mas que significa cada uno de estos caracteres. Primero vamos a ver aquellos caracteres que podran aparecer en el primer bit, que en el ejemplo anterior podemos ver que es un guin, esto nos indica que es un archivo comn. La tabla siguiente explica el significado del primer smbolo de acuerdo al tipo de archivo:

Los siguientes 9 bits se toman en grupos de tres y cada grupo pertenece a una clase de permisos. Nos quedan tres grupos, entonces. Primer grupo usuario dueo al que pertenece el archivo/directorio (u) Segundo grupo grupo al que pertenece dicho archivo/directorio (g) Tercer grupo todos los dems usuarios del sistema (o)

Premiere IT S.R.L.

Pgina 43

LOC: Linux Original Courseware Los 3 tipos de permisos, tienen una correspondencia numrica. r (en octal 4) lee (read) archivo o directorio w (en octal 2) modifica/borra (write) archivo o directorio x (en octal 1) ejecuta (execute) archivo o busca el directorio El dueo de un archivo controla que usuarios tienen permiso de acceso y de que manera pueden hacerlo; el comando ls -l despliega los permisos de acceso asociados a un archivo, el primer campo de 10 caracteres describe los permisos asociados con ese archivo, un campo tpico se ilustra a continuacin :
-rwxrw-r-- 1 alexa user 902 Apr 29 13:57 prueba

El primer smbolo nos esta indicando que el archivo es un archivo comn, generalmente de texto. El primer grupo de tres smbolos representa los permisos para el dueo del archivo (owner) que en este caso posee permisos de lectura, escritura y ejecucin. El segundo grupo de tres smbolos representa los permisos para el grupo al cual pertenece el archivo (group), que en este caso tienen permisos de lectura y escritura. El tercer grupo de tres smbolos representa los permisos para todo el resto de los usuarios (other), en este caso es solo de lectura. El numero que sigue (1) representa el numero de punteros o inodos que el archivo posee. Esto representa la cantidad de enlaces que existen a este archivo y no interesa demasiado en este momento. A continuacin est el nombre del dueo del archivo y del grupo al cual pertenece el archivo. El "902" representa el tamao del archivo expresado en bytes. Lo siguiente es la fecha y hora de modificacin del archivo e inmediatamente despus est el nombre del mismo. Para comprender exactamente la mscara de permisos en formato numrico veamos la siguiente tabla, donde tenemos la correspondencia de cada permiso con la numeracin en octal y en binario. Todo esto nos ser til cuando queramos cambiar atributos de un determinado archivo o directorio. Por ejemplo para sacar permisos de lectura a los usuarios en archivos de configuracin de un servidor. Octal Binario Nmero Nmero Permisos Descripcin 0 000 --Ningn permiso garantizado 1 001 --x Ejecutable 2 010 -wModificable 3 011 -wx Modificable/Ejecutable 4 100 r-Legible 5 101 r-x Legible/Ejecutable 6 110 rwLegible/Modificable 7 111 rwx Legible/Modificable/Ejecutable Los permisos para estos 3 tipos de usuarios puede estar dado por una cadena de 9 caracteres. Veamos estos ejemplos: Octal Dueo Grupo Otros Completo Nmero Columna Columna Columna Cdigo
777 755 700 666 rwx rwx rwx rwrwx r-x --rwrwx r-x --rwrwxrwxrwx rwxr-xr-x rwx-----rw-rw-rw-

Veamos unos detalles ms Permisos: Son bits que definen el acceso a un fichero o directorio. Los permisos para directorio tienen un sentido diferente a los permisos para archivos. Ms abajo se explican algunas diferencias. Lectura (r): Archivo: Poder acceder a los contenidos de un archivo Directorio: Poder leer un directorio, ver qu ficheros contiene Escritura (w): Archivo: Poder modificar o aadir contenido a un archivo Directorio: Poder borrar o mover ficheros en un directorio Ejecucin(x): Archivo: Poder ejecutar un programa binario o guin de shell Directorio: Poder entrar en un directorio Nota: Tenga mucho cuidado con aquellos directorios que tengan permiso de escritura. Cualquiera podra borrar un archivo, aunque no sea de su propiedad y esto puede ser un riesgo, tanto para el sistema como para los datos de los usuarios.

Comando chmod

Para cambiar la mscara de permisos de un archivo o directorio, usamos el comando chmod. La sintaxis de este comando es la siguiente:
chmod [permisos] archivo

Premiere IT S.R.L.

Pgina 44

LOC: Linux Original Courseware


[permisos] puede estar en formato numrico, o en formato alfabtico. El formato numrico es el que ya vimos, los tres nmeros en octal. El formato alfabtico contiene los tipos de permisos en letras (r,w,x), en vez de nmeros y tengo que especificar a quien o quienes se lo voy a aplicar (u,g,o). [ugo][+-=][rwx] Sera as: con letras con nmeros [0-7][0-7][0-7] El mtodo para cambiar un permiso con letras es el siguiente : Las letras u, g y o representan el Usuario, el Grupo, y Otros (todos los dems). El signo + significa que el permiso se va a conceder, mientras que el signo significa que el permiso se va a revocar. El signo = significa que se instalen los permisos como se muestra a continuacin, algunos ejemplos de cambio de permisos son: $ chmod u+x,g-w,o-w archivo1 $ chmod u=rx archivo1

El segundo mtodo interpreta el nmero puesto como su equivalente en binario (nueve dgitos binarios), activando el permiso donde se haya puesto un 1 y desactivndolo donde se haya puesto un 0; por ejemplo:
$ chmod 755 archivo1

Significa que a archivo1 se le asignaron permisos de la siguiente manera:


7 5 5 111 101 101 rwx r-x r-x

Ejercicio: Veamos la mscara de permisos de un archivo llamado estudio:


$ ls -l estudio -rw-rw-r-1 alexa alexa 57 May

Nota: En caso de duda, consulte en las tablas vistas, la correspondencia entre nmeros octales y binarios.

5 16:47

estudio

El siguiente comando elimina todos los permisos de acceso para el grupo y el resto de usuarios:
$ chmod go-rw estudio $ ls -l estudio -rw------1 alexa alexa 57 May 5 16:47 estudio

El administrador puede cambiar los permisos de todos los archivos del sistema y puede fijar una poltica inicial para la mscara de permisos que todos los usuarios tendrn.

Comando chgrp

Adems de chmod se emplean los siguientes programas para realizar estas labores:
chgrp grupo archivos

Cambia el grupo de el o los archivos especificados. Por ejemplo:


# chgrp profesores notas* tps*

cambiar todos los archivos con prefijos notas y tps al grupo profesores. Como opcin puede recibir -R para aplicar el cambio recursivamente en un directorio (es decir a subdirectorios tambin). Este programa puede ser usado por cualquier usuario para cambiar el grupo de sus archivos a otro grupo al que el mismo usuario pertenezca.

Comando chown

Cambia el usuario (y opcionalmente el grupo) de los archivos especificados.


chown usuario[:grupo] archivos

Al igual que chgrp con la opcin -R efecta el cambio recursivamente en subdirectorios. Por ejemplo
# chown -R ale:administra tpgnutella/

Pondr al usuario ale como dueo de todos los archivos y subdirectorios del directorio tpgnutella, todos quedarn con el grupo administra. Tambin puede usarse para cambiar el grupo de un archivo (si no se especifica el nombre del usuario). Adems tenemos otros bits de permisos que no podemos pasar por alto cuando estamos tratando de temas de seguridad.

Sticky bit

El sticky bit tiene significado cuando se aplica a directorios. Si el sticky bit est activo en un directorio, un usuario slo puede borrar archivos que son de su propiedad o para los que tiene permiso de escritura, incluso cuando tiene acceso de escritura al directorio. En un directorio evita que un usuario que no sea el dueo del directorio pero que tenga permiso de escritura, pueda borrar o renombrar archivos que no le pertenecen. Premiere IT S.R.L. Pgina 45

LOC: Linux Original Courseware Esto est pensado para directorios como /tmp, que tienen permiso de escritura global, pero no es deseable permitir a cualquier usuario borrar los archivos que quiera. El sticky bit aparece como 't' en los listados largos de directorios. O sea cuando se hace un ls l veremos:
drwxrwxrwt 19 root root 8192 Jun 20 11:40 tmp

Atributo SUID: (Para Archivos)

Este bit describe permisos al usuario del archivo. Cuando el atributo SUID (poner id de usuario) est activo en los permisos del propietario, y ese archivo es ejecutable, los procesos que lo ejecutan obtienen acceso a los recursos del sistema basados en el usuario que crea el proceso (no el usuario que lo lanza). Resumiendo esta explicacin, podemos decir: el bit SUID empleado con archivos ejecutables cambia la identificacin del usuario por la del dueo del archivo. Por ejemplo: /usr/bin/passwd es un ejecutable propiedad de root y con el bit SUID activo. Por qu? Este programa lo puede usar cualquier usuario para modificar su clave de acceso, que se almacena en
-rw-r--r-- 1 root root 1265 Jun 29 19:41 /etc/passwd

pero segn los permisos que vemos en este archivo, slo root puede escribir y modificarlo. Entonces sera imposible que cualquier usuario pudiera cambiar su clave si no puede modificar este archivo. La solucin para este problema consiste en activar el bit SUID para este archivo:
-r-s--x--x 1 root root 10704 Apr 19 13:15 /usr/bin/passwd

Entonces, cuando se ejecute, el proceso generado por l es un proceso propiedad de root con todos los privilegios que ello acarrea. Esto puede ser un riesgo para la seguridad. Por tal razn debemos prestar atencin, ya que en este tipo de programas se pueden producir buffer overflow, que comprometan el sistema. Este permiso puede ser til para que usuarios normales ejecuten programas que requieren ser ejecutados por root y por lo mismo debe usarse con precaucin. Con chmod se modifica empleando u y s. Por Ejemplo:
$ chmod u+s cvs

Esto indica que cuando el programa cvs se ejecute, debe cambiarse la identificacin por la del dueo de ese programa. Consejos: Asignar el bit SUID solo cuando sea estrictamente necesario. Comprobar que los programas con este bit activo no tiene ningn desbordamiento de buffer (conocido). Jams asignarlo si el programa permite salir a la shell. Si est activo en los permisos de grupo, este bit controla el estado de "poner id de grupo" de un archivo. Trabaja como SUID, pero, en vez de aplicarse al usuario, se aplica al grupo. El archivo tiene que ser ejecutable para que esto tenga algn efecto. Se establece con g y s. Por Ejemplo
$ chmod g+s cvs

Atributo SGID: (Para archivos)

Si activa el bit SGID en un directorio, los archivos creados en ese directorio tendrn puesto su grupo como el grupo del directorio. Los ficheros de configuracin del sistema (normalmente en /etc) es habitual que tengan el modo 640 (-rw-r-----), y que sean propiedad de root. Dependiendo de los requisitos de seguridad del sistema, esto se puede modificar. Nunca deje un fichero del sistema con permiso de escritura para un grupo o para otros. Algunos ficheros de configuracin, incluyendo /etc/shadow, slo deberan tener permiso de lectura para root, y los directorios de /etc no deberan ser accesibles, al menos por otros. Los scripts de shell SUID son un serio riesgo de seguridad, y por esta razn el ncleo no los acepta. Sin importar lo seguro que piense que es su script de shell, puede ser utilizado para que un cracker pueda obtener acceso a una shell de root.

Atributo SGID: (Para directorios)

SUID Shell Scripts

Premiere IT S.R.L.

Pgina 46

LOC: Linux Original Courseware

Captulo 3
El Sistema Operativo Linux/Unix
El Sistema Operativo es un conjunto de programas, cuyo objetivo final es ofrecer una interfaz entre el hardware y los usuarios, de forma que el usuario no necesite conocer las peculiaridades de utilizacin de las diferentes componentes del hardware. Su tarea consiste principalmente en gestionar los recursos del sistema informtico (memoria, procesador, dispositivos de entrada/salida, etc.). Adems de los programas propios del Sistema Operativo, uno de los programas de aplicacin ms importantes es el intrprete de comandos shell, puesto que hace las funciones de intermediario entre el usuario y el Sistema Operativo. La shell se encarga de leer, interpretar y ejecutar las rdenes de los usuarios. Por lo tanto conociendo el conjunto de comandos que sabe interpretar la shell es posible acceder a todas las prestaciones que ofrece el sistema. Linux (as como UNIX) es un sistema que soporta la multitarea esto significa que puede haber varios programas ejecutndose simultneamente, y multithreading (varios hilos de ejecucin por programa). Adems es un sistema interactivo, lo que proporciona una comunicacin directa entre el usuario y el sistema (el intermediario ser la shell) y multiusuario, lo que permite que varios usuarios trabajen simultneamente. Tambin permite que un mismo usuario trabaje en varias consolas a la vez. En este captulo veremos los comandos ms generales y tiles en lo que respecta a la administracin del sistema, los comandos elementales para la gestin de archivos y otros comandos generales. Nota: Los comandos son programas.

Qu son las consolas virtuales?

Las consolas virtuales aparecieron por primera vez en minix y en FreeBSD, proveen acceso a multiple login sessions, lo que significa que varios usuarios pueden loguearse en el sistema y cada uno de ellos pueden ejecutar diversas tareas a la vez. Con Alt + alguna de las teclas F1, F2, F3, etc. nos cambiamos a otra virtual terminal. Normalmente hay un mximo de 6 virtual terminals disponibles. Linux permite trabajar al mismo tiempo en varias consolas de texto. Para pasar de una a otra, pulse Alt + Fn donde n es el nmero de la ventana virtual y Fn una tecla de funcin (por ejemplo F1, F2, etc.). Puede configurar el nmero de ventanas en el archivo /etc/inittab. Si est usando X-Windows, la parte grfica , con la combinacin de teclas: Ctrl + Alt + Fn vuelve a la consola de texto. Para regresar a X-Windows use Alt+F7, accediendo as a la consola empleada (la primera libre, es decir no manejada por un getty). Por ejemplo, si tiene 6 consolas virtuales (de Alt+F1 hasta Alt+F6), con Alt+F7, volveremos al modo grfico.

Sistema de archivos (filesystems)


El Sistema Operativo proporciona un punto de vista lgico y uniforme de almacenamiento de la informacin. El Sistema Operativo hace abstraccin de las propiedades fsicas para definir una unidad de almacenamiento lgico, el fichero o archivo. Y es el propio Sistema Operativo quin se encarga de la relacin entre ficheros y dispositivos fsicos.

Archivos y directorios

Un archivo es una coleccin de informacin definida por su creador, relacionada y agrupada bajo un nombre comn. Todo el trabajo que hacemos est almacenado en archivos y stos pueden representar programas, textos, datos, etc. Para elegir un nombre de archivo normalmente se utiliza una secuencia de caracteres alfanumricos (letras y dgitos), un punto . y otra secuencia de letras (extensin) que representa el tipo de fichero. Por ejemplo: pract1.p, donde la extensin p indica que es un programa en Pascal. Hay que evitar utilizar caracteres en los nombres de fichero que tengan un significado especial para el intrprete de comandos (la shell), por ejemplo "/", "#", "$", etc. El sistema operativo ofrece la posibilidad de organizar los archivos en directorios. Bsicamente un directorio es un contenedor de un grupo de archivos. Adems de archivos los directorios pueden a su vez contener otros directorios, que a vez pueden contener otros y as sucesivamente.

Premiere IT S.R.L.

Pgina 47

LOC: Linux Original Courseware As es como se va armando el rbol de directorios, la jerarqua que conforma al sistema, o lo que podramos llamar filesystem. La estructura de directorios jerrquica en forma de rbol, ya la nombramos en el Captulo 1. Ya dijimos tambin que el rbol se va formando debido a que cada directorio puede bifurcar hacia otros directorios y archivos.

bin

etc

usr

dev

practicas

tmp

Cuando un usuario accede al sistema se ubica automticamente en su propio directorio, que se denomina directorio de trabajo o home directory. A travs de los comandos adecuados se puede desplazar hacia arriba o hacia abajo en el rbol de directorios, modificando el directorio actual. En Linux puedo especificar nombres de archivos incluyendo los nombres de los directorios donde estn ubicados, es decir, todo el camino (o path). Generalmente, se denomina pathname, porque representa una lista del camino a lo largo del rbol de directorios que hay que seguir desde la raz hasta llegar al archivo o directorio. El sistema de archivos comienza por la raz (/), y los nombres de directorios y ficheros en un camino se separan por slashes (/). Por ejemplo el nombre del camino desde la raz para el archivo ejem.p, sera el siguiente:

bin

etc

usr

1
dev practicas tmp

2
ad1 ad2 ad3

3
usuario1 usuario2

practica1

usuarioN

4
ejem.p

5
datos

6
pract.p

/practicas/ad1/usuario1/ejem.p

Nota: Pese a que el nombre de un archivo o directorio lo identifica unvocamente, es posible tener nombres iguales siempre que su nombre de camino desde la raz sea diferente. Premiere IT S.R.L. Pgina 48

LOC: Linux Original Courseware No siempre es necesario especificar pathnames completos para hacer referencia a archivos, se puede indicar el camino relativo a partir del directorio actual o el inmediatamente superior al actual: Si el pathname empieza por "/" se parte del directorio raz Si el pathname empieza sin "/" se parte del directorio en que estemos en ese instante Con "." se indica el directorio actual Con ".." se indica el directorio inmediatamente superior al actual. Ciertos caracteres del pathname son interpretados por la shell de una forma especial: * equivale a cualquier cadena de caracteres. ? equivale a un carcter cualquiera. [ ] indica uno de entre un conjunto de posibles caracteres. Ejemplo: suponga que tenemos un directorio con los siguientes archivos: tp1.c, tp2.c, tp3.c, tp4.c, tp1.o,
tp2.o, tp3.o, gdb. tp* * tp?.c tp1.? ??? ????? tp[123].c tp[14].c tp[1-3].c tp[1-4].c

indicara cualquier fichero salvo gdb indicara cualquier fichero indicara los ficheros tp1.c, tp2.c, tp3.c y tp4.c indicara tp1.c y tp1.o indicara gdb (es el nico compuesto de 3 caracteres) indicara cualquiera excepto gdb (el resto tiene 5 caracteres) indicara tp1.c, tp2.c y tp3.c indicara tp1.c y tp4.c indicara tp1.c, tp2.c y tp3.c indicara tp1.c, tp2.c, tp3.c y tp4.c

En el caso que se permita el acceso de mltiples usuarios a los archivos, sera deseable controlar quin y en que forma puede acceder a los mismos. Para ello LINUX asocia a cada archivo y directorio permisos de lectura, escritura y ejecucin. Nota: El tema de permisos de archivos y directorios est incluido en el captulo Administracin de usuarios.

Tipos de archivos y directorios


Bajo GNU/Linux (y en Unix), cualquier cosa se abstrae en forma de un archivo. Veamos de qu tipo pueden ser.

Archivos normales (files)

Los archivos contienen datos o son ejecutables, y el sistema operativo no hace suposiciones sobre su contenido. Ejemplo: los archivos de configuracin del sistema, archivos de texto.

Directorios (directory)

Los archivos directorios son una instancia especial de los archivos normales. Los directorios listan las localizaciones de otros archivos, algunos de los cuales pueden ser otros directorios. En prrafos anteriores encontrar una descripcin ms completa. Cada archivo en el sistema de archivos de GNU/Linux tiene su propio i-nodo. Un i-nodo guarda los atributos del archivo y su posicin en el disco. Si necesita referirse a un archivo usando dos nombres de archivos distintos, puede crear un enlace duro. El enlace duro tendr el mismo i-nodo que el archivo original y guarda el mismo aspecto y comportamiento que el original. Con cada enlace duro creado, se incrementa la cuenta de referencia. Cuando se borra un enlace duro, se decrementa la cuenta de referencia. Hasta que la cuenta de referencia no alcanza a cero, el archivo permanece en el disco. Nota: un enlace duro no puede existir entre dos archivos de particiones separadas. Esto es debido a que el enlace duro se refiere al archivo original por i-nodo y el i-nodo de un archivo difiere entre sistemas de archivos.

Enlaces duros (hard-links)

Premiere IT S.R.L.

Pgina 49

LOC: Linux Original Courseware

Enlace simblicos (soft-links)

A diferencia de los enlaces duros, que apuntan a un archivo por su i-nodo, un enlace simblico apunta a otro archivo por su nombre. Esto permite que los enlaces simblicos apunten a archivos localizados en otras particiones, discos, incluso en otras unidades de red.

Dispositivos de bloque (block devices)

Se usan como interfaz con dispositivos tales como discos. Un archivo de dispositivo de bloque tiene tres caractersticas: el major number, el minor number y el carcter identificatorio de tipo de archivo, que es una b. Ejemplo:
# ls l /dev/hda brw-rw---- 1 root disk 3 0 May 5 2006 /dev/hda

La b representa que es un dispositivo de bloques. El 3 representa al major number y el 0 al minor number. El major number de un archivo de dispositivo de bloque representa el controlador de dispositivo. Cuando se accede a este archivo, el minor number se pasa al controlador de dispositivo como parmetro que le dice a que dispositivo se accede. Por ejemplo, si hay dos puertos serie, compartirn el mismo controlador de dispositivo y de esta forma el mismo major number, pero cada puerto serie tendr un minor number nico.

Dispositivos de carcter (carcter devices)

Similares a los dispositivos de bloques, los dispositivos de caracteres son archivos especiales que le permiten acceder a dispositivos a travs del sistema de archivos. La diferencia es que los dispositivos de bloques trabajan con grandes volmenes (disco rgidos, etc.), en cambio los dispositivos de carcter trabajan a un carcter por vez (mdem, terminales, etc.). Comienzan con la letra c. Tienen tanto un major number y un minor number. Ejemplo:
# ls l /dev/ttyS0 crw------- 1 root tty 4 64 May 5 2006 /dev/ttyS0

Pipes con nombre (named pipes)

Permiten comunicacin interprocesos. Usando el comando mknod, puede crear un archivo de tipo pipe nombrado que puede abrir un proceso para lectura y otro para escribir, permitiendo a su vez que estos dos se comuniquen con un tercero. El primer carcter de los permisos de archivos es una p. Ejemplo:
# ls l mi_pipe prw-r--r-- 1 root root May 5 2006 11:55 mi_pipe

Comandos de Linux
Cuando entramos al sistema, luego de loguearnos, nos encontramos en nuestro directorio de trabajo por defecto. Si me logue en el sistema como root, estar en /root, si me logue como pepe, voy a estar en /home/pepe. El home del usuario es el camino relativo o virtual, desde la raz del rbol hasta nuestra ubicacin actual, es decir el directorio actual. Si ejecutamos la instruccin pwd (print working directory) veremos como respuesta nuestro home. A partir de ese punto podemos movernos por el rbol de directorios. Cambio de directorio (change directory): cd [pathname] Hace que el directorio actual pase a ser el especificado en el pathname que se indica como parmetro. Ejemplos: $ cd .. cambia al directorio inmediatamente superior $ cd /tmp se sita en el directorio tmp del nivel ms alto, o sea el que cuelga de / $ cd practicas se sita en el directorio practicas, que est dentro del directorio actual. Preste atencin que no lleva /, por lo tanto seguimos en la misma rama del rbol, estamos bajando en la jerarqua del rbol.
ls [opciones] [directorio ficheros] Listado de un directorio (list): Es uno de los comandos ms utilizados. Se usa para listar lo que contiene un directorio. Si ejecutamos ls sin argumentos obtendremos un listado de todos los archivos que contiene el directorio en que el usuario est posicionado. Nota: Considere que un directorio es un tipo especial de archivo. Sus opciones ms usadas son:

Comandos bsicos para la gestin de archivos

Premiere IT S.R.L.

Pgina 50

LOC: Linux Original Courseware


-a -l

-F

Ejemplo: Haciendo un ls tendremos algo similar a lo siguiente:


$ ls Shell Shell.sgml

Nos muestra tambin los archivos ocultos (los que empiezan con .) Hace un listado ms detallado, especificando para cada archivo sus permisos, el nmero de enlaces rgidos ,el nombre del propietario, el nombre del grupo al que pertenece, el tamao en bytes y la fecha de modificacin. Para una explicacin ms detallada vea Administracin de usuarios. Coloca al lado de cada nombre listado un asterisco si es un archivo ejecutable (programa), o una barra si es un directorio.

Si deseamos ver ms informacin sobre los archivos, hacemos esto:


$ ls -la total 56 drwxr-sr-x drwxr-s--drwxr-sr-x -rw-r--r-3 94 2 1 alexa alexa alexa alexa alexa alexa alexa alexa 4096 8192 4096 5888 May May May May 4 4 4 4 16:33 16:31 16:32 16:31 . .. Shell Shell.sgml

En cambio, si hacemos esto:


$ ls -l Shell total 2 -rwxrw-r-x 1 -rwxrw-r-- 1 alexa alexa 48 May 6 21:38 archivo1 alexa alexa 156 May 6 21:40 archivo2

Copiar ficheros (copy): cp [opciones] arch_origen [o archivos_origen] destino Un usuario puede copiar un archivo si tiene permiso de lectura sobre ese archivo. El comando cp puede ser usado para copiar el contenido de un archivo a otro archivo. El arch_origen y destino no pueden ser el mismo, y si destino es un archivo, entonces su contenido es destruido. Es decir, lo que est en arch_origen se copia en destino. Si destino es un directorio, entonces los archivos_origen son copiados a ese directorio destino. El comando cp es no-destructivo, porque el archivo fuente nunca es alterado. Las opciones ms comunes son: -f borra los archivos de destino ya existentes sin preguntar al usuario. -p preserva permisos usuario y grupo del archivo a copiar. -R copia recursivamente. Ejemplos:
$ cp programa.c otro.c $ cp programa* ..

el archivo otro.c pasa a tener el contenido de programa.c. El archivo programa.c no se modifica. copia todos los ficheros que empiecen por la secuencia de caracteres programa al directorio superior.

Renombrar y mover ficheros (move): mv [opciones] arch_origen arch_destino Este comando tiene dos funciones: mover archivos a otro lugar y/o cambiarles el nombre. Ejemplo: $ mv arch1 arch2 Si arch2 no existe, equivale a renombrar arch1 como arch2. Si arch2 existe, destruye arch2 y arch1 pasa a llamarse arch2. Sus opciones principales son: -f Borra los archivos de destino existentes sin preguntar al usuario. -i Lo contrario que -f. Pregunta al usuario. Ejemplo: $ mv tp.txt tpnuevo.txt el archivo tp.txt pasa a llamarse tpnuevo.txt. Si ya exista un archivo de nombre tpnuevo.txt, su contenido se pierde. $ mv tp.txt ../tp.txt traslada el archivo tp.txt al directorio situado encima del actual. Eliminar un fichero (remove): rm [opciones] archivos(s) Este comando elimina el archivo (o los archivos) mandados como parmetro. Para que este comando funcione es necesario tener permiso de escritura y, por lo tanto, de borrado sobre los archivos. Ejemplo: Premiere IT S.R.L. Pgina 51

LOC: Linux Original Courseware


$ rm datos.jj elimina el archivo de nombre datos.jj. Las opciones ms comunes son: -f Fuerza el borrado de un archivo sin pedir confirmacin. -i Forma interactiva, ahora s pide confirmacin para archivo o directorio a borrar. -r Borra los contenidos de directorios recursivamente. Esta opcin se utiliza cuando quiero eliminar un directorio que contiene informacin. Ms adelante ver la forma de borrar un directorio con otro comando. Ejemplo: $ rm webserver.c repetidor.c elimina los archivos webserver.c y repetidor.c $ rm -i webserver.c repetidor.c lo mismo, pero pide confirmacin para el borrado.

Ver el contenido de archivos

Los comandos que tenemos para mostrar contenido de archivos son: more, less y cat (del ingls concatenate: poner uno atrs del otro). Son visores de texto, no editores. Ms adelante veremos el programa editor por excelencia, el vi.
cat [opciones] [archivo1 [archivoN]]

Vuelca en pantalla el contenido de uno o ms ficheros de texto. Si hay ms de un fichero, el resultado es la concatenacin de los contenidos de cada uno de ellos. Si el fichero (o los ficheros) no existen, devuelve un mensaje de error. Si ningn archivo es proporcionado, o se encuentra el argumento - , cat lee de la entrada standard. Nota: Se pueden desplegar varios archivos en el monitor uno despus de otro separando los nombres de archivo por medio de un espacio. Si el archivo tiene ms lneas que una pantalla, sta se recorrer automticamente hasta que se haya llegado al final del archivo, para ver el contenido de un archivo por pginas se puede utilizar el comando more.
more archivo(s)

Vuelca en pantalla el contenido de uno o ms archivos, adecuando su presentacin al nmero de lneas de la terminal. Si hay ms de un archivo, el resultado es la representacin concatenada de los contenidos de cada uno de ellos. Si el archivo no existe, devuelve un mensaje de error. Con el comando more podemos ver el contenido del archivo desde el comienzo de ste, y podemos ir bajando en el texto hasta el final. Pero si queremos volver el comienzo del archivo, no nos deja. En estos casos el comando adecuado es less.
less archivo

Aqu s podemos recorrer el archivo completamente, de principio a fin, y del final al principio. Podemos scrollear el archivo. Nota: Combinando las teclas Shift y Page-Up o Page-Down se utilizan para pasearse o navegar en la pantalla, o sea, subir y bajar la pantalla. Esto funciona tambin bajo xterm. Consulta acerca del actual directorio (print working directory): pwd Indica en que directorio se encuentra el usuario en ese momento. Por ejemplo:
alexa@par:~/Seminario$ pwd /home/alexa/Seminario

Creacin de un nuevo directorio (make directory): Crea un directorio vaco con el nombre directorio Ejemplo:
$ mkdir dir1 $ ls tp.txt datos dir1 practica

mkdir directorio

Crea el directorio dir1 en el directorio actual (Para verlo hago el listado con ls). Eliminar un directorio (remove directory): Premiere IT S.R.L.
rmdir directorio

Pgina 52

LOC: Linux Original Courseware Este comando es para eliminar el directorio de nombre directorio slo si ste est ya vaco. Para borrar un directorio que contiene archivos en su interior, debe primero eliminar el contenido y luego usar rmdir para borrar el directorio. Otra forma es borrar el directorio con su contenido usando el comando rm con las opciones rf.
touch archivo Creacin de un archivo vaco: Vimos como crear un directorio, con mkdir. Ahora, Cmo se hace para crear un archivo, sin depender de un editor como el vi? Puede usar el comando touch para crear un archivo vaco. En realidad este programa tiene otras utilidades, por ejemplo para cambiar las fechas de acceso o modificacin de un determinado archivo.

Tenemos en GNU/Linux la posibilidad de concatenar comandos, de redireccionar la salida de un comando a otro, o a archivos. Esto se llama segn las traducciones al espaol, plomera o fontanera, porque para muchas de estas tareas se utiliza el smbolo pipe, tambin llamado caera o tubo. Los smbolos que se utilizan son <, >, >>, |, ;, ` `
< > >> Redireccin de E/S: A travs de la redireccin podemos tomar la salida de un programa y enviarla automticamente a un archivo. Este proceso lo maneja la propia shell en lugar del programa. Hay tres formas de redireccin: tomar de un archivo, devolver a un archivo o aadir al final de un archivo. Para recoger la salida de un programa en un archivo, finalice la lnea del comando con el smbolo mayor (>) y el nombre del archivo en el cual quiere guardar la salida redirigida. Tambin es posible desviar la salida de pantalla hacia un archivo cualquiera mediante los smbolos > y >>. Ejemplos: $ cat arch1 > arch2 vuelca el contenido de arch1, pero en lugar de hacerlo en pantalla, lo hace en arch2. $ ls -l > prueba en lugar de mostrar por pantalla el listado "largo" del directorio actual, lo vuelca al archivo prueba. Si tuviera datos en el archivo prueba, me pisa con la nueva informacin. $ ls -l >> prueba debe hacer esto si desea que la informacin nueva se agregue a lo que ya contiene el archivo prueba. $ echo Listado de Directorios y Archivos >> prueba

Otros comandos

En este ejemplo agregaremos al archivo prueba el comentario Listado de Directorios y Archivos al final del archivo. Veamos algunos ejemplos ms:
$ date > arch1 $ ls >> arch1

vuelca en arch1 la fecha actual (eso es lo que hace el comando date) y luego aade al final del fichero arch1 un listado del directorio actual.
$ cat arch1 arch2 > arch3

deja en arch3 el contenido de arch1 y arch2.


$ cat arch1 > arch3 $ cat arch2 >> arch3

es equivalente al ejemplo anterior. Tambin es posible suministrar los datos de entrada de un programa desde un archivo, y no desde el teclado, mediante <. Ejemplo:
$ grep root < /etc/passwd

Ac lo que hace es buscar en el archivo /etc/passwd si hay un usuario llamado root. (el comando grep se ver mas adelante)
$ ls > arch $ wc < arch

cuenta el nmero de palabras (wc por word count) que hay en arch, y lo que hay en arch no es ms que el resultado de hacer ls. Premiere IT S.R.L. Pgina 53

LOC: Linux Original Courseware Utilizacin de pipes: | Las pipes son un mecanismo por el cual la salida de un programa se puede enviar como entrada de otro programa. Los programas individuales se pueden encadenar juntos para convertirse en unas herramientas extremadamente potentes. Ejemplo:
$ cat /etc/passwd | less

El comando cat nos muestra el contenido del archivo /etc/passwd. El archivo se nos va de pantalla, entonces si se lo enviamos a less, podremos navegar por todo el contenido del archivo. Nota: Este pipe es muy til para abrir archivos muy grandes.
$ ls -l | more

Aqu hacemos el listado de un directorio y para ir vindolo pantalla a pantalla, envo la salida a more.
$ comando1 [argumento1] | comando2 [argumento2]

Esta lnea genera el mismo resultado que la siguiente secuencia:


$ comando1 [argumentos] > temporal $ comando2 [argumentos] < temporal $ rm temporal

Si quisiera concatenar comandos, de forma que no tenga que esperar el resultado de un comando para ejecutar el siguiente, lo que puede hacer es escribirlos todos, separndolos con el smbolo punto y coma (;). Ejemplo:
$ cd /etc ; ls l grep expresin_a_buscar archivo Filtro de bsqueda El comando grep, que apareci anteriormente se usa como filtro de bsqueda. Este programa me devuelve la lnea del archivo que contiene la cadena especificada. Ejemplo: $ grep programacion materias

busca las apariciones de la expresin programacin en el archivo materias.


$ grep -n programacin materias

adems de buscar esa expresin, la opcin n (de numerado) indica el nmero de cada una de las lneas en que aparece en el archivo materias. Apstrofes de ejecucin A veces necesitamos ejecutar algn comando que necesita de otro antes. Esto, sobre todo es muy til cuando programe scripts. Veamos ejemplos para que se entienda mejor.
var1=`ps -ax | grep $1 | cut c=1-5`

En este ejemplo, si no pusiera todo lo que est del lado derecho de la igualdad, entre apstrofes, el sistema dara error. Los apstrofes lo que hacen, es encerrar la expresin, de forma que se ejecute completa, y luego lo asigna a la variable var1. Veamos otro ejemplo:
kill -9 `cat /var/run/gdm.pid`

En este caso, quiero matar una tarea (gdm). Pero el programa kill, para terminar una tarea necesita s o s el nmero de proceso (pid). Como no lo s, lo que hago es decirle que lo saque del archivo gdm.pid. El comando cat me despliega el archivo. Este archivo solo contiene un nmero, que es lo que le llega a kill -9.

Runlevels
Cmo arranca Linux?
Al prender la PC, lo primero que inicia es el BIOS. Todo lo que tiene que ver con reconocimiento de hardware. En el setup (BIOS), el sistema lee cual es el dispositivo o el orden de dispositivos donde va a buscar el arranque. Por ejemplo: cdrom, floppy, hard disk. Si arranca el disco rgido, lo primero que lee es el MBR (master boot Premiere IT S.R.L. Pgina 54

LOC: Linux Original Courseware record) que es la primera porcin del disco que contiene informacin. En el MBR va a estar el programa LILO o GRUB, que son boot loader, programas arrancadores o booteadores. Lo enunciado anteriormente es, si en la instalacin de Linux, elegimos la opcin de instalar LILO o GRUB en el MBR. Recuerde que tenamos una segunda opcin de instalar LILO en una particin del disco. Al elegir esta opcin, para arrancar nuestro Linux, necesitamos un disco de booteo. Una vez iniciado LILO, vemos los sistemas operativos que podemos arrancar. Seleccionamos Linux. Ahora, entonces comienza la carga del kernel en memoria. El kernel se debe cargar entero en el primer megabyte de la RAM disponible. Por esto, el kernel se comprime. Podemos decir que el kernel es un archivo. La cabecera del archivo contiene el cdigo necesario para llevar a la CPU a modo protegido (as se elimina la restriccin de memoria) y entonces, se descomprime el resto del kernel. Con el kernel en memoria, entonces puede empezar la ejecucin. Ac es donde se construyen todas las funcionalidades, por ejemplo, algunos mdulos del kernel no son accesibles en este punto. Luego debern levantar a mano los mdulos deseados. Como mnimo, el kernel debe tener el cdigo para configurar el sistema de archivos raz o una imagen initrd. Una imagen initrd es, como lo es el kernel, un archivo. La particularidad de este archivo es que es un pseudo filesystem root pequeo que es montado en lugar del verdadero filesystem root y que contiene lo mnimo indispensable para que luego de ser montado por el kernel tenga las herramientas bsicas para poder cargar ms mdulos, que son necesarios para dar soporte al verdadero filesystem root. Esto se suele usar, por ejemplo, cuando queremos tener un root en un dispositivo raid, lvm o usb. Como ya dijimos, el otro filesystem primordial para arrancar nuestro sistema es el raz, el /. Una vez iniciado el kernel, vemos en la pantalla una sucesin de lneas donde va reconociendo y chequeando el hardware y determina qu controladores de dispositivos se deben inicializar. Luego de este paso, el kernel monta el sistema de archivos raz en read only. Y ahora s, se inicia un programa llamado init. El programa init tiene la funcin de iniciar todos los procesos que necesita el sistema. Los ms importantes entre stos son los programas que permiten que los usuarios puedan iniciar una sesin. Estos programas se denominan getty. Normalmente funcionar una copia de getty por cada consola virtual que tengamos habilitada y por cada terminal que est conectada al sistema. El init es el primer proceso no kernel que se inicia y siempre tiene el nmero de proceso 1 (pid=1). init para comenzar lee su archivo de configuracin, /etc/inittab, y determina el nivel de ejecucin donde debe iniciar. Veamos qu es el nivel de ejecucin, o runlevel, como generalmente se lo llama. Esencialmente un nivel de ejecucin dice como se va a comportar el sistema, describe un modo de operacin. Cada nivel (designado por un nmero entre 0 y 6) especifica un comportamiento distinto. El init busca en este archivo el runlevel indicado para arrancar. Si no hay un nivel de arranque por defecto lo pide por pantalla sino no sabe en qu runlevel arrancar, por lo tanto no arrancar. Los runlevels son los siguientes: 0 1 2 3 4 5 6 Detiene el sistema (halt) Monousuario(no est disponible la red). Multiusuario, pero sin NFS. Multiusuario completo (modo de operacin normal). Sin uso. Multiusuario completo con entorno grfico (modo de operacin normal). Reinicia el sistema.

Nota: Los runlevels del 2 al 5 son todos multiusuario y Debian , por default utiliza el runlevel 2. Cuando sabe el nivel de ejecucin, init ejecuta el script que se le indica en el archivo /etc/inittab. El nivel de ejecucin por defecto depende de lo que le haya indicado al sistema durante la fase de instalacin. Vamos a ver ahora como es el archivo /etc/inittab:
# /etc/inittab: init(8) configuration. # $Id: inittab,v 1.91 2002/01/25 13:35:21 miquels Exp $ # The default runlevel. id:2:initdefault: # Boot-time system configuration/initialization script. # This is run first except when booting in emergency (-b) mode. si::sysinit:/etc/init.d/rcS

Premiere IT S.R.L.

Pgina 55

LOC: Linux Original Courseware


# What to do in single-user mode. ~~:S:wait:/sbin/sulogin # # # # # # # /etc/init.d executes the S and K scripts upon change of runlevel. Runlevel 0 is Runlevel 1 is Runlevels 2-5 Runlevel 6 is halt. single-user. are multi-user. reboot.

l0:0:wait:/etc/init.d/rc 0 l1:1:wait:/etc/init.d/rc 1 l2:2:wait:/etc/init.d/rc 2 l3:3:wait:/etc/init.d/rc 3 l4:4:wait:/etc/init.d/rc 4 l5:5:wait:/etc/init.d/rc 5 l6:6:wait:/etc/init.d/rc 6 # Normally not reached, but fallthrough in case of emergency. z6:6:respawn:/sbin/sulogin # What to do when CTRL-ALT-DEL is pressed. ca:12345:ctrlaltdel:/sbin/shutdown -t1 -a -r now # Action on special keypress (ALT-UpArrow). #kb::kbrequest:/bin/echo "Keyboard Request--edit /etc/inittab to let this work." # What to do when the power fails/returns. pf::powerwait:/etc/init.d/powerfail start pn::powerfailnow:/etc/init.d/powerfail now po::powerokwait:/etc/init.d/powerfail stop # /sbin/getty invocations for the runlevels. # # The "id" field MUST be the same as the last # characters of the device (after "tty"). # # Format: # <id>:<runlevels>:<action>:<process> # # Note that on most Debian systems tty7 is used by the X Window System, # so if you want to add more getty's go ahead but skip tty7 if you run X. # 1:2345:respawn:/sbin/getty -f /etc/issue.linuxlogo 38400 tty1 2:23:respawn:/sbin/getty 38400 tty2 3:23:respawn:/sbin/getty 38400 tty3 4:23:respawn:/sbin/getty 38400 tty4 5:23:respawn:/sbin/getty 38400 tty5 6:23:respawn:/sbin/getty 38400 tty6 # Example how to put a getty on a serial line (for a terminal) # #T0:23:respawn:/sbin/getty -L ttyS0 9600 vt100 #T1:23:respawn:/sbin/getty -L ttyS1 9600 vt100 # Example how to put a getty on a modem line. # #T3:23:respawn:/sbin/mgetty -x0 -s 57600 ttyS3

Comentarios Como ya habr visto el archivo /etc/inittab est organizado en lneas. Cada lnea tiene el siguiente formato:
identificador:niveles_de_ejecucin:accin:programa

El identificador puede ser un nmero o una letra, o una combinacin de ambos. Premiere IT S.R.L. Pgina 56

LOC: Linux Original Courseware Ejemplo:


id:2:initdefault:

Esta lnea es muy importante, es la que setea el runlevel por defecto. El identificador es id, el runlevel es el 2 y la accin es el arranque por defecto. No tiene un programa asociado porque debe fijarse en los scripts de arranque que corresponden al runlevel 2. Ms adelante hablaremos de los scripts de arranque en cada nivel. Para cambiar el runlevel por defecto solo se debe cambiar el nmero que aparece en esta lnea por el nivel que se desee. Si tiene instalado LILO en el sistema puede iniciar en el modo que desea al momento de elegir el Sistema Operativo que iniciar, agregando el nmero del runlevel que desea precedido por el nombre con que identifica LILO a Linux. Por ejemplo: Linux 1 o Linux s o Linux single. Si tiene instalado GRUB, debe editar el arranque con la letra e, y, en la lnea que empieza con la palabra kernel, al final escriba single. Vamos a comentar algunas acciones. respawn el proceso reinicia si termina wait el proceso se inicia una vez que el runlevel se introduce, e init espera a su terminacin once el proceso se ejecuta una sola vez. Sin embargo, init no espera que termine antes de ejecutar otros programas en el runlevel particular boot el proceso se ejecuta en el arranque del sistema. En este caso, el campo runlevel se ignora bootwait el proceso se ejecuta al arrancar el sistema, e init espera su terminacin antes de continuar con el proceso siguiente ondemand el proceso se ejecuta cuando ocurre una peticin de un nivel de ejecucin determinado. No ocurre un cambio de nivel de ejecucin sysinit el proceso se ejecuta durante el arranque del sistema, antes de cualquier entrada boot o
bootwait powerwait powerfail powerokwait

ctraltdel

si init recibe una seal de otro proceso que tiene problemas con la alimentacin, se ejecutar este proceso. Antes de continuar, init espera que este proceso termine Igual que powerwait, excepto que init no espera que el proceso acabe si init recibe el mismo tipo de seal que en powerwait, y existe un archivo llamado /etc/powerstatus con la cadena OK en l, este proceso se ejecuta e init espera a su terminacin el programa se ejecuta cuando init recibe la seal indicando que el usuario ha pulsado la combinacin de teclas CTR-ALT-DEL. Tenga en cuenta que muchos servidores XWindows capturan esta combinacin de teclas, y as init no recibe esta seal si esta activo X-Windows

Una aclaracion final, en RedHat hay al final del archivo inittab una lnea como la siguiente:
x:5:respawn:/etc/X11/prefdm -nodaemon

Esta lnea lo que hace es que en el runlevel 5 arranque el modo grfico. Es decir, RedHat define al runlevel 5 exclusivamente para iniciar el modo grfico. Esto en Debian no sucede, en Debian el runlevel 1 es single user, el runlevel 2 es multiusuario. Para que arranque el modo grfico, simplemente hay que configurar el modo grfico en el runlevel 2 como cualquier otro servicio. La ventaja de esto es que si el modo grfico no est bien configurado, no va a estar eternamente intentando arrancar como en RedHat con la opcin respawn. De esta forma, si falla, simplemente tirar el error y el equipo seguir funcionando como corresponde. Sripts de arranque rc El archivo /etc/inittab especifica qu scripts ejecutar en cada nivel de ejecucin. Estos scripts son los responsables de arrancar o parar los servicios particulares de ese nivel de ejecucin. Como los servicios a manejar en cada nivel son numerosos, se usan los scripts rc. El principal, /etc/init.d/rc, es el que llama a los scripts apropiados en el orden adecuado para cada nivel de ejecucin. Para cada nivel de ejecucin, existe un subdirectorio en el directorio /etc/rcN.d. Donde N es el numero de runlevel de 0 a 6 y un S para single user en modo mantenimiento. Entonces podemos encontrar algo como lo siguiente:
alexa:/etc/default# cd /etc

Premiere IT S.R.L.

Pgina 57

LOC: Linux Original Courseware


alexa:/etc# ls -ld rc* drwxr-xr-x 2 root drwxr-xr-x 2 root drwxr-xr-x 2 root drwxr-xr-x 2 root drwxr-xr-x 2 root drwxr-xr-x 2 root drwxr-xr-x 2 root drwxr-xr-x 2 root alexa:/etc# root root root root root root root root 4096 4096 4096 4096 4096 4096 4096 4096 Mar Mar Mar Mar Mar Mar Mar Feb 8 8 8 8 8 8 8 5 03:58 03:58 03:58 03:58 03:58 03:58 03:58 14:37 rc0.d rc1.d rc2.d rc3.d rc4.d rc5.d rc6.d rcS.d

Este es el formato estandar que se usa en un sistema System V. Otras distribuciones, usan un directorio en /etc/rc.d y ah dentro guardan estos archivos. Pero el estandar sigue siendo el que usa Debian, de hecho es muy comn que hagan links simblicos al estandar o del formato de ellos al estandar. Hay varios directorios que se llaman rcN.d, donde N es un nmero de 0 a 6. Son los runlevels. En cada uno de ellos, estn los procesos que se van a ejecutar en el runlevel correspondiente. Por ejemplo, todos los scripts del nivel de ejecucin 2 estn en /etc/rc2.d. Ahora veamos que hay dentro de uno de estos directorios a modo de ejemplo:
alexa:/etc/rc2.d# ls -l total 0 lrwxrwxrwx 1 root lrwxrwxrwx 1 root lrwxrwxrwx 1 root ../init.d/bootclean.sh lrwxrwxrwx 1 root lrwxrwxrwx 1 root lrwxrwxrwx 1 root lrwxrwxrwx 1 root lrwxrwxrwx 1 root lrwxrwxrwx 1 root lrwxrwxrwx 1 root lrwxrwxrwx 1 root lrwxrwxrwx 1 root ../init.d/bootsplash.sh lrwxrwxrwx 1 root lrwxrwxrwx 1 root lrwxrwxrwx 1 root lrwxrwxrwx 1 root bootlogd

root root root root root root root root root root root root root root root root

18 Feb 22 23:50 S10sysklogd -> ../init.d/sysklogd 17 Feb 22 23:50 S11hotplug -> ../init.d/hotplug 22 Feb 22 23:50 S20bootclean.sh -> 14 17 13 13 16 13 14 18 23 13 19 19 23 Feb 22 Feb 22 Feb 22 Feb 22 Feb 22 Feb 22 Feb 22 Feb 22 Feb 22 ojo Mar 8 Feb 22 Feb 22 Feb 22 23:50 S45alsa -> ../init.d/alsa 23:50 S45makedev -> ../init.d/makedev 23:50 S45ssh -> ../init.d/ssh 23:50 S45xfs -> ../init.d/xfs 23:50 S45xinetd -> ../init.d/xinetd 23:50 S55atd -> ../init.d/atd 23:50 S89cron -> ../init.d/cron 23:50 S90vmware -> /etc/init.d/vmware 23:50 S99bootsplash.sh -> aca, un enter faltaba-------------02:37 S99kdm -> ../init.d/kdm 23:50 S99linuxlogo -> ../init.d/linuxlogo 23:50 S99rmnologin -> ../init.d/rmnologin 23:50 S99stop-bootlogd -> ../init.d/stop-

En este directorio de nivel de ejecucin 3, hay links, enlaces simblicos a los scripts del directorio /etc/rc.d/init.d. Los enlaces simblicos tienen el prefijo S que sirven para arrancar los servicios (viene de Start) o el prefijo K que sirven para parar un servicio (viene de Kill). En muchos casos, el orden en que estos scripts se ejecutan es importante (no puede usar DNS para resolver nombres de mquinas si no ha configurado primero la red). Para cumplir el orden, hay un nmero de dos dgitos como sufijo de la S o de la K. Los nmeros ms bajos se ejecutan antes que los nmeros ms altos. Por ejemplo: /etc/rc3.d/S10network se ejecuta antes que /etc/rc3.d/S80postfix. Es lgico, para arrancar los servicios que usan la red, primero debe levantar la red. Primero ejecuta los scripts que empiezan por K y despus los scripts que empiezan con S. Para los scripts que empiezan con K, se les pasa un parmetro stop y a los que empiezan con S, se les pasa un parmetro de start. Cuando se invoca K15httpd, realmente esta haciendo:
/etc/init.d/httpd stop

Y cuando se invoca S10network, realmente esta haciendo:


/etc/init.d/network start

Si quieren simplificarse la vida con respecto a la creacin de los links simblicos para agregar o sacar servicios del arranque, pueden usar una aplicacin propia de Debian que se llama rcconf.

Premiere IT S.R.L.

Pgina 58

LOC: Linux Original Courseware Ahora veamos el directorio /etc/init.d. Ac es donde estn todos los servicios, tambin llamados demonios. Aqu es donde estn apuntando los links. Los links se crearon para no tener que copiar cada script en cada directorio de runlevel. (esta muestra es parcial y a modo de ejemplo)
alexa:/etc/init.d# ls -l total 384 -rw-r--r-1 root root -rwxr-xr-x 1 root root -rwxr-xr-x 1 root root -rwxr-xr-x 1 root root -rwxr-xr-x 1 root root -rwxr-xr-x 1 root root -rwxr-xr-x 1 root root -rwx-----1 root root -rwxr-xr-x 1 root root -rwxr-xr-x 1 root root -rwxr-xr-x 1 root root -rwxr-xr-x 1 root root -rwxr-xr-x 1 root root -rwxr-xr-x 1 root root -rwxr-xr-x 1 root root -rwxr-xr-x 1 root root -rwxr-xr-x 1 root root -rwxr-xr-x 1 root root -rwxr-xr-x 1 root root -rwxr-xr-x 1 root root -rwxr-xr-x 1 root root -rwxr-xr-x 1 root root -rwxr-xr-x 1 root root

853 4687 1074 988 2136 1558 1242 652 894 4791 4939 1086 1172 749 1346 837 4665 1959 641 1573 2960 165 1602

Nov Mar Jan Dec Nov Jan Nov Jan Oct Dec Feb Jan Nov Oct Oct Nov Feb Aug Dec Sep Jan Feb Feb

3 5 18 11 4 27 2 27 5 20 26 18 28 26 1 17 25 22 20 21 30 26 6

13:36 16:40 2002 2002 11:49 01:38 09:32 02:04 2001 21:22 08:34 18:23 2002 23:09 2002 08:53 21:29 2003 21:24 09:04 15:15 2001 12:54

README alsa atd binfmt-support bootclean.sh bootlogd bootmisc.sh bootsplash.sh checkfs.sh checkroot.sh console-screen.sh cron devfsd devpts.sh etc-setserial fam fetchmail gdm halt hddtemp hdparm hostname.sh hotplug

Para poder arrancar un servicio por ejemplo samba, realizamos lo siguiente:


# /etc/init.d/smb start

Para poder parar un servicio por ejemplo samba, realizamos lo siguiente:


# /etc/init.d/smb stop

Para poder ver si esta corriendo el proceso por ejemplo samba, realizamos lo siguiente:
# /etc/init.d/smb status

Para poder restaurar el proceso por ejemplo samba, realizamos lo siguiente:


# /etc/init.d/smb restart

La opcin restart ejecuta un stop primero y luego un start.

Como cambiar de runlevel

Si mi archivo /etc/initttab tiene seteado el initdefault, por ejemplo en runlevel 2 y quisiera cambiar al modo S para realizar tareas de mantenimiento de hardware se puede usar el mismo init de la siguiente forma:
# init S

Se suele recomendar usar el telinit para esta tarea, pero no hace falta dado que es un link simblico al init. Con lo cual funciona exactamente igual y si nos acostumbramos a usar el init en lugar del telinit vamos a seguir usando una herramienta que est en todos los unix en lugar del telinit que es exclusiva de Linux y nuevamente, no es mas que un link simblico. Este comando lo que hace es cambiar el runlevel. Pasa al modo S, y para ello se fija en su script rcS.d qu servicios debe detener y qu servicios debe iniciar. Ud. Ver en la pantalla algunos mensajes del estilo de los que aparecen cuando arranca el sistema. En el caso particular del runlevel S finalmente les va a solicitar el password de root como nica posiblidad, dado que es un runlevel single user (S) y todo lo que hagamos solo debera poder hacerlo root.

Premiere IT S.R.L.

Pgina 59

LOC: Linux Original Courseware Conociendo init, alcanza con saber que queremos hacer y solo escribir init runlevel (donde runlevel es uno de los nmeros del 0 al 6 o la S) y de esta forma, reiniciar el equipo, apagarlo, entrar en modo mantenimiento, etc. Comandos de Linux (continuacin) find directorio [opciones] Bsqueda de archivos: Cuando necesitamos buscar un archivo, usamos el comando find. Este comando permite hacer bsquedas por varios criterios, por nombre, por tipo de archivo, por fecha de modificacin, etc. Donde directorio es el directorio desde el cual empieza la bsqueda. Ud. pensar qu directorio elegir para comenzar la bsqueda. Si uno ya sabe que busca un archivo de configuracin, directorio puede ser /etc, que es donde est todo lo relativo a configuracin del sistema o de usuarios. Las opciones pueden ser: -name nombre Para buscar un archivo que se llame nombre. -print Imprime los archivos que encuentra. -perm modo Los permisos del archivo son exactamente iguales a los indicados por modo. -atime n Archivos accedidos en las ultimas n*24 horas. -ctime n Archivos cambiados en las ultimas n*24 horas. -amin n Archivos accedidos en los ltimos n minutos. -cmin n Archivos cambiados en los ltimos n minutos. -empty Archivos vacos. -mmin n Archivos modificados en los ltimos n minutos. -mtime n Archivos modificados en las ultimas n*24 horas. -size n [bloque] Archivo que tiene al menos n bloques/caracteres/kilobytes. Un bloque equivale a 512 bytes. -exec comando \; Por cada archivo que encuentra, ejecuta comando. Ejemplos:
# find / -name archivo2

# find

# find # find

# find

Esto lo que hace es buscar archivo2 en el directorio / y todos los directorios que pertenecen a / (/boot, /root, /etc, /usr, etc), y muestra los archivos encontrados que coincidan con archivo2. . -name archivo2 print dem al ejemplo anterior pero esta vez busca en el directorio en que me encuentro, esto es lo que indica el punto (.), y tambin lo imprime. / -name *.conf En este caso, buscaremos todos los archivos que terminen en .conf /usr/src -name core exec rm {} \; Este ejemplo lo que hace es buscar los archivos de nombre core en el directorio /usr/src y todos los directorios que pertenezcan a este, y ejecuta el comando rm por cada archivo que encuentra. /home -iname *.jpg size 100k Este ejemplo busca cualquier archivo que termine con extensin .jpg en el directorio /home y sus directorios con un tamao inferior a 100k. Nota: Recuerde que en Linux todo es un archivo, por ejemplo, los comandos son archivos ejecutables.

Quines estn en el sistema? Una vez que algn usuario se encuentra dentro de un sistema Linux/UNIX, puede saber quien ms est usando el sistema con uno de los siguientes comandos:
who [opciones]

Este comando, utilizado sin opciones, lista el nombre del usuario, la terminal que est usando, y la hora en que el usuario entr. Las diferentes opciones de este comando despliegan ms informacin acerca de los usuarios que estn actualmente dentro del sistema. Alguna informacin disponible mediante opciones es, por ejemplo, la cantidad de tiempo que ha pasado desde que esa terminal ha tenido actividad, el identificador de procesos (PID) del proceso de login, comentarios e informacin de salida. Ejemplo:
# who root root root tty1 tty2 tty3 May 20 19:54 May 20 19:53 May 20 19:56

Premiere IT S.R.L.

Pgina 60

LOC: Linux Original Courseware Nos muestra que el administrador (root) est conectado en las terminales tty1, tty2 y tty3 el 20 de Mayo a las 19:54, 19:53 y 19:56. El comando w nos muestra todos los usuarios que estn conectados, a diferencia del comando who este da mucha ms informacin como por ejemplo: en que consola est logueado, a que hora entr, que est ejecutando, etc. Ejemplo:
# w 9:53am USER alexa root up 3 days, 16:17, 2 users, load average: 0.00, 0.00, 0.00 TTY FROM LOGIN@ IDLE JCPU PCPU WHAT tty2 9:24am 0.00s 0.11s 0.05s w tty3 9:25am 26.11 0.06s 0.06s -bash

Quin soy? Este comando muestra quienes somos (con qu usuario estamos logueados). Ejemplo:
# whoami root

Enlace de archivos El comando ln nos permite establecer enlaces duros y enlaces dbiles o simblicos. El formato general de ln es el siguiente:
# ln archivo_original archivo_nuevo

Con la opcin s, crea un enlace simblico en lugar de un enlace duro. Ejemplo:


# ln s /home/pepe pepe # ls l pepe lrwxrwxrwx 1 pepe pepe 9 May 11 2oo3 18:16 pepe -> /home/pepe

Nota: Recuerde que en este captulo ya vimos la diferencia entre hard links y symbolic links. Espacio en disco: df [opciones] El comando df se utiliza para ver el espacio libre y ocupado que tengo en el/los disco(s), pero slo en las unidades mapeadas, es decir en cada particin que tengo, y a su vez, est montada. Este comando permite utilizar opciones, entre ellas tenemos: -k Muestra la salida en bytes, como bloques de 1024. -m Muestra la salida en megabytes como bloques de 1048576. -i Muestra la informacin de i-nodos en lugar de bloques. -h Imprime los tamaos en formato legible (ej.: 1K 234M 2G) Ejemplos:
# df Filesystem /dev/md7 /dev/md6 /dev/md1 none /dev/md4 /dev/md0 /dev/md2 /dev/md3 # df -h Filesystem /dev/md7 /dev/md6 /dev/md1 none /dev/md4 /dev/md0 1k-blocks 9732968 29621 4031616 127920 2015440 7055096 3023504 3023504 Used 2122856 10579 42064 0 34032 3334440 340376 199608 Available 7115696 17513 784756 127920 1879028 3362268 2529544 2670312 Use% 23% 38% 2% 0% 2% 50% 12% 7% Mounted on / /boot /home /dev/shm /tmp /usr /var /www

Size 9.3G 29M 3.8G 125M 1.9G 6.7G

Used 2.1G 11M 42M 0 34M 3.2G

Avail 6.7G 17M 3.6G 124M 1.7G 3.2G

Use% 23% 38% 2% 0% 2% 50%

Mounted on / /boot /home /dev/shm /tmp /usr

Premiere IT S.R.L.

Pgina 61

LOC: Linux Original Courseware


/dev/md2 /dev/md3 2.9G 2.9G 333M 195M 2.4G 2.5G 12% 7% /var /www

Espacio en disco (disk usage): du [opciones] [ficheros | directorios] Este comando informa la cantidad de espacio que ocupa el directorio especificado, con los subdirectorios, si los tuviera, y los archivos contenidos. Si uso du sin argumentos muestra el espacio ocupado por el directorio actual, o sea donde estoy parado. Las opciones pueden ser: -k Muestra la salida en kbytes, como bloques de 1024. -b Muestra la salida en bytes -m Muestra la salida en megabytes como bloques de 1048576. -h Imprime los tamaos en formato legible (ej.: 1K 234M 2G) -s Muestra solo para el argumento dado, no para sus subdirectorios. Ejemplo:
# du -s -b /home/jose 16384 /home/jose # du -s -b /home/maria 36864 /home/maria

Procesos
Un proceso es una instancia de un programa en ejecucin y tambin la unidad bsica de planificacin en Linux/UNIX. Lo consideraremos como un programa en ejecucin. Tanto bajo GNU/Linux como en Unix en general, cada programa en ejecucin se compone de al menos, un proceso. Desde el punto de vista del sistema operativo, cada proceso es independiente del resto. Al menos que se le diga especficamente que comparta recursos con otros procesos, un proceso est confinado a la asignacin de memoria y CPU que se le ha hecho. Los procesos que se exceden en su asignacin de memoria (que podra corromper a otros programas en ejecucin y hacer el sistema inestable) mueren inmediatamente. Las aplicaciones de usuarios no pueden corromper otros programas de usuarios o de sistema operativo. Listar procesos:
ps [opciones]

Este comando lista todos los procesos del sistema, su estado, tamao, nombre, propietario, tiempo de CPU, tiempo de reloj y otros. Sin argumentos muestra el identificador de proceso (PID) de la shell sobre la que se est ejecutando, y tambin el propio PID del comando ps lanzado.
$ ps PID TTY TIME CMD 45 pts/0 00:00:00 bash 84 pts/0 00:00:00 ps

Tiene mltiples opciones, las ms usadas son: -a Muestra todos los procesos con consola controlada, excepto el proceso de usuario actual. -r Muestra solo los procesos en ejecucin. -x Muestra los procesos que no tienen una terminal controlada. -u Muestra los propietarios de los procesos. -f Visualiza las relaciones padre/hijo entre los procesos. -l Produce un listado en formato largo. -w Muestra los parmetros de la lnea de comandos de los procesos (hasta media lnea). -ww Muestra todos los parmetros de la lnea de comandos de los procesos, independientemente de su longitud. Ejemplo:
# ps aux | more USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 1 0.5 0.3 1368 476 ? S 19:43 0:0 init root 2 0.0 0.0 0 0 ? SW 19:43 0:00 [keventd] root 3 0.0 0.0 0 0 ? SW 19:43 0:00 [kapmd] root 4 0.0 0.0 0 0 ? SWN 19:43 0:00 [ksoftirqd_CPU0]

Premiere IT S.R.L.

Pgina 62

LOC: Linux Original Courseware


root root root root root root root root root root root root named named named named named root root root 5 6 7 8 12 91 186 187 188 563 568 624 678 680 681 682 683 703 723 760 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.4 0.3 0.3 1.8 1.8 1.8 1.8 1.8 0.7 0.8 0.3 0 0 0 0 0 0 0 0 0 1428 1364 1360 10400 10400 10400 10400 10400 2212 2400 1400 0 0 0 0 0 0 0 0 0 560 444 480 2368 2368 2368 2368 2368 924 1124 452 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? SW SW SW SW SW SW SW SW SW S S S S S S S S S Ss+ S 19:43 19:43 19:4 19:43 19:43 19:43 19:44 19:44 19:44 19:44 19:44 19:44 19:44 19:44 19:44 19:44 19:44 19:44 19:44 19:44 0:00 0:00 0:00 0:00 0:00 0:00 0:00 0:00 0:00 0:00 0:00 0:00 0:00 0:00 0:00 0:00 0:00 0:00 0:00 0:00 [kswapd] [bdflush] [kupdated] [mdrecoveryd] [kjournald] [khubd] [kjournald] [kjournald] [kjournald] syslogd m 0 klogd -x usr/sbin/apmd -p named -u named named -u named named -u named named -u named named -u named xinetd -stayalive /bin/sh /usr/bin/ gpm -t ps/2 -m /d

Veamos la primera lnea de la salida que nos muestra los ttulos de las columnas del listado. Su significado es el siguiente: USER El propietario de cada proceso. PID El numero de identificacin del proceso. %CPU Porcentaje de CPU ocupado por el proceso. Aclaracin: Para un sistema con varios procesadores, esta columna puede tener un valor mayor del 100%. %MEM Porcentaje de memoria ocupada por el proceso. VSZ Cantidad de memoria virtual ocupada por el proceso. RSS Cantidad de memoria residente ocupada por el proceso. TTY La consola controlada por el proceso. Un signo de interrogacin en esta columna significa que no est conectada a ninguna terminal. STAT El estado del proceso. Y pueden ser: S El proceso est dormido. Todos los procesos preparados para ejecutarse. R El proceso est actualmente en CPU. T El proceso est haciendo trazas por un depurador o debugger, o ha sido parado. Z El proceso est zombie. Esto significa una de las siguientes: 1. El proceso hijo muri y el proceso padre no tiene conocimiento de la muerte de su hijo. Usa la llamada al sistema wait. 2. El padre fue muerto inapropiadamente, y hasta que el padre no est muerto completamente, el proceso init no puede liberar al propio hijo. Un proceso zombie indica normalmente un software mal escrito. La entrada STAT puede tomar para cada proceso uno de los siguientes modificadores: W No residen pginas en la memoria. < Proceso de prioridad alta. N Proceso de prioridad baja. L Pginas en memoria bloqueadas (normalmente significa la necesidad de funcionalidad en tiempo real). s proceso en la consola actual + proceso en foreground START Fecha en que el proceso arranc. TIME Cantidad de tiempo que el proceso ha gastado de CPU. COMMAND Nombre del comando y sus parmetros. Mostrar una lista interactiva de procesos:
top

Premiere IT S.R.L.

Pgina 63

LOC: Linux Original Courseware El programa ps es esttico, nos muestra el listado de los procesos en el momento pedido. En cambio, top es dinmico, va refrescando el listado cada una cierta cantidad segundos. El comando top es una versin interactiva del ps.
# top

Esto es lo que muestra en pantalla

Nota: Es conveniente que solo root tenga permiso para la utilizacin de este comando, ya que si varios usuarios lo corren, se ralentiza el sistema. Recuerde como quitar permisos.
# chmod 0700 /usr/bin/top

Unos prrafos arriba, cuando explicamos los procesos zombies hablamos de seales. Ahora vamos a tratar de que se entienda mejor. Tenemos que ver las formas de comunicacin entre procesos. Pueden ser varias, entre ellas tenemos: A travs de variables de entorno: solo es posible de padres a hijos. Mediante una seal: solo indica que algo ha ocurrido y solo lleva como informacin un nmero de seal. Mediante entrada salida: es la forma ms corriente a nivel de shell. Ya hemos comentado el operador pipe '|' que conecta dos procesos. Mediante tcnicas IPC u otras: Semforos, Memoria compartida, Colas de mensajes. Mediante sockets: este sistema tiene la peculiaridad de que permite comunicar procesos que estn funcionando en mquinas distintas. No profundizamos sobre esto porque ahora no estamos interesados en la programacin. Ms adelante si comentaremos bastante sobre variables y entrada salida porque daremos nociones de programacin en shellscript.

Envo de una seal a un proceso


kill [n] nro_pid

Al comando kill se le pasa un nmero de seal. Si no se hace, la seal por defecto es TERM, la nmero 15. Donde n representa un nmero de seal y nro_pid es el nmero del proceso al que quiero mandarle la seal. La seal Hang-Up, que es la nmero 1, se utiliza para decirle a algunos servidores de aplicaciones que relean sus archivos de configuracin. Con la opcin l en el comando kill nos muestra todas las seales que hay con una breve descripcin y el nmero de seal. Para ver las seales de las que disponemos, hacemos:
# kill -l 1) SIGHUP 5) SIGTRAP 9) SIGKILL 13) SIGPIPE 18) SIGCONT 22) SIGTTOU 26) SIGVTALRM 30) SIGPWR 34) SIGRTMIN+2 38) SIGRTMIN+6 42) SIGRTMIN+10 46) SIGRTMIN+14 50) SIGRTMAX-13 2) 6) 10) 14) 19) 23) 27) 31) 35) 39) 43) 47) 51) SIGINT SIGABRT SIGUSR1 SIGALRM SIGSTOP SIGURG SIGPROF SIGSYS SIGRTMIN+3 SIGRTMIN+7 SIGRTMIN+11 SIGRTMIN+15 SIGRTMAX-12 3) 7) 11) 15) 20) 24) 28) 32) 36) 40) 44) 48) 52) SIGQUIT SIGBUS SIGSEGV SIGTERM SIGTSTP SIGXCPU SIGWINCH SIGRTMIN SIGRTMIN+4 SIGRTMIN+8 SIGRTMIN+12 SIGRTMAX-15 SIGRTMAX-11 4) SIGILL 8) SIGFPE 12) SIGUSR2 17) SIGCHLD 21) SIGTTIN 25) SIGXFSZ 29) SIGIO 33)SIGRTMIN+1 37)SIGRTMIN+5 41)SIGRTMIN+9 45)SIGRTMIN+13 49)SIGRTMAX-14 53)SIGRTMAX-10

Premiere IT S.R.L.

Pgina 64

LOC: Linux Original Courseware


54) SIGRTMAX-9 58) SIGRTMAX-5 62) SIGRTMAX-1 55) SIGRTMAX-8 59) SIGRTMAX-4 63) SIGRTMAX 56) SIGRTMAX-7 60) SIGRTMAX-3 57) SIGRTMAX-6 61) SIGRTMAX-2

Generalmente usamos la palabra kill para decir que vamos a matar procesos. En realidad, lo que hacemos es mandarle seales al proceso. Un tipo de seal s mata procesos, es decir, los termina. La seal 9, es la forma brutal de parar un proceso, en lugar de pedirle que se pare, el sistema operativo mata el proceso. Ejemplo:
# kill -9 PID

Esto lo que hace es terminar completamente con la ejecucin de un proceso. Como ya dijimos, el comando no mata procesos, sino que enva seales a los procesos en ejecucin. El sistema operativo, por defecto, proporciona a cada proceso un conjunto estndar de manejadores de seales para la gestin de las seales entrantes. Desde el punto de vista del administrador, el manejador ms importante es para las seales nmero 9 y 15. El comando kill requiere al menos un parmetro, el nmero de identificacin de proceso (PID) que se muestra en el comando ps. Cuando se pasa al comando kill solamente el PID, kill enva la seal 15. Ejemplos:
# ps f UID PID root 1736 root 1796 # kill 1736 # kill -15 1736 PPID 1733 1736 C 0 0 STIME 19:48 19:50 TTY pts/0 pts/0 TIME 00:00:00 00:00:00 CMD bash ps -f

En este ejemplo manda la seal 15 al PID 1736. dem al anterior.


# kill -15 `cat /var/run/named.pid`

dem a la explicacin anterior, en el directorio /var/run estn los nombres de los demonios que estn corriendo con su nmero. Control de procesos se refiere a la habilidad de poner procesos en background (segundo plano) y traerlos de vuelta al foreground (primer plano). Esto es como decir, que se quiere ser capaz de ejecutar algo mientras se hacen otras cosas, pero que estn ah otra vez cuando se les quiera decir algo o pararlos. En Linux/Unix, la principal herramienta para el control de procesos es la shell, seguir la pista de los procesos por Ud., si se aprende como hablar su lenguaje. Las dos palabras ms importantes en ese lenguaje son fg, para primer plano, y bg, para segundo plano. Para entender como funcionan, usaremos como ejemplo el comando yes en el indicador del sistema.
$ yes

Control de Procesos

Esto produce el maravilloso efecto de desplazar una larga columna de yes por la parte izquierda de la pantalla, tan rpido que no se pueden seguir. Hay buenas razones para que este extrao comando exista. Ciertos comandos esperan una confirmacin, un "si" ([y]es en ingls) a una pregunta. El comando yes permite al programador automatizar la respuesta a esas preguntas. Para pararlo, se podra pulsar Control+C y matarlo, pero esta vez Ud. oprimir Control+Z. Parece haberse detenido, pero habr un mensaje antes del indicador de sistema, ms o menos parecido a este:
[1]+ Stopped yes

Significa que la tarea yes se ha suspendido en el segundo plano. Se puede hacer que siga ejecutndose tipeando fg en el indicador de sistema, que lo pondr en primer plano otra vez. Si se desea, se pueden hacer otras cosas antes, mientras est suspendido. Pruebe unos cuantos ls o algo antes de ponerlo en primer plano nuevamente. Una vez que ha vuelto al primer plano, las yes empezarn a salir otra vez, tan rpido como antes. No hay que preocuparse de que si mientras ha estado suspendido ha "almacenado" ms yes para enviarlas a la pantalla, cuando un trabajo se suspende, el programa entero no se ejecuta hasta que se lo vuelva de vuelta a la vida. Ahora pulse Control-C para matarlo de verdad. Pongamos aparte el mensaje que obtuvimos del shell:
[1]+ Stopped yes

El nmero entre corchetes es el nmero de trabajo de este proceso, y se usar cuando se necesite referenciarlo especficamente. (Naturalmente, desde el momento que tengamos en ejecucin mltiples trabajos, se necesita un Premiere IT S.R.L. Pgina 65

LOC: Linux Original Courseware modo de acceder a cada uno). El "+" siguiente indica que se es el "trabajo actual", esto es, el proceso ms reciente que se ha movido del primer plano al segundo. Si tipeara fg, se pondra el trabajo con el "+" en primer plano otra vez. La palabra Stopped significa que el trabajo est parado. El trabajo no est muerto, pero actualmente no se ejecuta. Linux lo ha guardado en un estado especial de suspendido, listo para saltar a la accin cuando alguien lo solicite. Finalmente, el yes es el nombre del trabajo que se ha detenido. Antes de seguir adelante, matemos este trabajo y lo arrancamos otra vez de forma diferente.
$ kill %1 [1]+ Stopped yes

Ese mensaje sobre el proceso que indica "parado" otra vez induce a error. Para saber si an est vivo (eso es, tanto en ejecucin como congelado en un estado suspendido), tipee jobs:
$ jobs [1]+ Terminated yes

Ahora ya lo sabe: el trabajo ha terminado! Nota: Es posible que el comando jobs no muestre nada, lo que simplemente significa que no hay trabajos ejecutndose en segundo plano. Si se acaba de matar un trabajo, y al tipear jobs no muestra nada, se tiene la seguridad de que el comando kill se ha ejecutado correctamente. Normalmente indicar que el trabajo ha terminado. Ahora, ejecute yes de nuevo, de esta forma:
$ yes > /dev/null

Si lee la seccin sobre la redireccin de entrada y salida, sabr que se est enviando la salida de yes a un archivo especial llamado /dev/null. /dev/null es un agujero negro que come cualquier salida que se le enve, es como un recolector de basura, es como la nada, como mandarlo a ningn lado. Despus de tipear esto, no se recuperar el indicador de sistema, pero tampoco saldr esa columna de yes. Sin embargo la salida se est enviando a /dev/null, el trabajo an se ejecuta en primer plano. Como siempre, se puede suspender pulsando Control-Z. Hgalo ahora para volver al indicador del sistema.
$ yes > /dev/null

[Aqu yes se est ejecutando, y al pulsar Control-Z ver lo siguiente] [1]+ Stopped yes >/dev/null $ Hmm... Hay alguna forma de ponerlo en ejecucin en segundo plano, mientras deja el indicador del sistema para trabajar de forma interactiva? El comando para hacer eso es bg:
$ bg [1]+ yes >/dev/null & $

Ahora, despus de tipear bg, la tarea yes > /dev/null habr continuado con su ejecucin otra vez, pero esta vez en segundo plano. De hecho, si hace alguna cosa en el prompt, como ls u otros, se dar cuenta que su mquina se ha ralentizado un poco (Generar y descargar continuamente una cadena preparada de yes lleva algo de tiempo, al fin y al cabo!) Aparte de esto, no hay ningn otro efecto. Se puede hacer lo que se desee en el indicador del sistema, y yes continuar felizmente enviando su salida al agujero negro. Ahora hay dos formas diferentes de matarlo: con el comando kill que ya se explic, o poniendo el trabajo en primer plano de nuevo e interrumpirlo con una interrupcin, Control-C. Probemos la segunda forma, slo para entender la relacin entre fg y bg un poco mejor;
$ fg yes >/dev/null

Ahora est en primer plano. Pulsando Control-C para terminarlo: Se acab. Ahora, ejecute el siguiente comando:
$ yes > /dev/null & [1] 1024

(& = ampersand) Nota: Poner un & despus del comando indica al shell que el trabajo se ejecute en segundo plano desde el momento en que se inicia. (Es una forma

Premiere IT S.R.L.

Pgina 66

LOC: Linux Original Courseware de evitarse tener que ejecutar el programa, pulsar Control-Z, y luego teclear bg.) Tabla Resumen Comando del shell que devuelve un trabajo al primer plano. Para saber cul es ste por defecto, se tipea jobs y se busca el que tiene el +. Parmetros: nmero de trabajo opcional. El trabajo por defecto se identifica con el +. & Cuando se aade un & al final de la lnea de comandos, indica al comando que se ejecute en segundo plano automticamente. Este trabajo est entonces sujeto a todos los mtodos usuales para el control de tareas aqu detallados. bg %n_trabajo Este es un comando del shell que manda a un trabajo suspendido ejecutarse en segundo plano. Para saber cual es ste por defecto, se tipea jobs y se busca el que tiene el +. Parmetros: nmero de trabajo opcional. El trabajo por defecto se identifica con el +. kill %n_trabajo PID Comando del shell que obliga a un trabajo en segundo plano, ya sea suspendido o en ejecucin, a terminar. Se debe siempre especificar el nmero de trabajo o PID, y si se estn usando nmeros de trabajo, no hay que olvidar poner el %. Parmetros: El nmero de trabajo (a continuacin del %) o el PID (no es necesario el %). Se puede especificar ms de un proceso o trabajo en una lnea. jobs Este comando del shell lista informacin sobre los trabajos que estn en ese momento en ejecucin o suspendidos. A veces tambin dice cules son los que acaban de salir o han terminado. Control-C Este es el carcter genrico de interrupcin. Normalmente, si se pulsa mientras un programa se est ejecutando en primer plano, matar al programa (puede que haya que hacerlo varias veces). Sin embargo, no todos los programas respondern a este mtodo de terminacin. Control-Z Esta combinacin de teclas normalmente suspende un programa, puede que algunos programas lo ignoren. Una vez suspendido, el trabajo se puede reiniciar en el segundo plano o se puede matar. Nota: Es importante entender que el control de procesos lo hace el shell. No hay ningn programa en el sistema llamado fg; por eso, fg, bg, & y jobs son internos al shell. Esto es una forma lgica de hacerlo: ya que cada usuario quiere su propio espacio de control de tareas, y cada usuario ya tiene su propio shell, es ms fcil que el shell siga la pista de los trabajos usuario. Por otro lado, cada nmero de trabajo de usuario slo tiene significado para ese usuario: mi trabajo nmero [1] y su trabajo nmero [1] son probablemente dos procesos totalmente diferentes. De hecho, si se est conectado ms de una vez, cada uno de los shells tendr datos nicos sobre el control de trabajos, as como tambin un usuario puede tener dos trabajos diferentes con el mismo nmero ejecutndose en dos shells diferentes.
Comando fg %n_trabajo Explicacin

Montaje y Desmontaje de Discos y de Sistemas de Archivos


Un sistema de archivos (o filesystem) es informacin almacenada en un dispositivo de almacenamiento, organizada siguiendo una convencin, la cual permite al sistema operativo manejar la informacin cuando el usuario lo requiere, es decir, leer, escribir, consultar directorios, etc. Hay diversos tipos (o convenciones) de sistemas de archivos, Linux cuenta con controladores para varios tipos creados especficamente para Linux , por ejemplo ext2, ext3, ReiserFS, as como controladores para tipos de sistemas de archivos creados para otros sistemas operativos, como affs, hpfs, ntfs, msdos y vfat. Los tipos que pueden emplearse con Linux estn incluidos en el kernel o son mdulos en el subdirectorio fs del directorio con mdulos de su sistema (es decir, el directorio de mdulos es de la forma /lib/modules/2.6.x/kernel/fs/ reemplazando x por la versin de su kernel). Los que puede usar dependen de la forma como se haya compilado el kernel y de los mdulos que estn cargados. Puede examinar los tipos que soporta su sistema viendo el contenido de /proc/filesystems y puede emplear otros tipos de sistemas de archivos cargando los mdulos apropiados -mientras sean soportados-. Aunque toda la estructura de directorios presentada en la seccin anterior podra estar en un slo sistema de archivos, es posible distribuirla en varios. Para poder emplear un sistema de archivos primero debe montarse en algn directorio con el comando mount o debe configurarse el sistema para que lo monte automticamente Premiere IT S.R.L. Pgina 67

LOC: Linux Original Courseware durante el arranque (el primer directorio que debe montarse es la raz /). Para desmontar un sistema de archivos de un directorio se emplea el comando umount. El programa mount sin argumentos presenta los sistemas de archivos que estn montados, de cada uno presenta el dispositivo en el que reside, el directorio en el que est montado, el tipo de sistema de archivos y algunos parmetros del montaje, por ejemplo, la siguiente es una salida del comando mount:
/dev/hda1 on / type ext2 (rw,errors=remount-ro,errors=remount-ro) proc on /proc type proc (rw) devpts on /dev/pts type devpts (rw,gid=5,mode=620) /dev/hda2 on /var type ext2 (rw) /dev/hda3 on /home type ext2 (rw) En el ejemplo se muestran 5 sistemas de archivos montados en los directorios /, /proc, /dev/pts, /var y /home. Tres de ellos son de tipo ext2 y residen en tres particiones del disco rgido (/dev/hda1, /dev/hda2 y /dev/hda3), los otros dos son virtuales, es decir, no residen en dispositivo de almacenamiento alguno (son creados por el kernel). Las opciones de montaje de todos indican que pueden leerse y escribirse (rw), el sistema montado en la raz en caso de fallas ser montado con permiso de slo lectura (errors=remount-ro) y el sistema montado en /dev/pts tendr todos sus archivos como pertenecientes al grupo 5 (tty) y permisos de

escritura y lectura para el usuario y slo de escritura para el grupo (modo 620). Para montar un sistema de archivos se emplea:
mount -t tipo -o opciones dispositivoFisico dispositivoVirtual

Donde dispositivoFisico es el nombre del dispositivo que contiene el sistema de archivos (ej: /dev/hda1 o /dev/fd0), tipo es el tipo del sistema de archivos y dispositivoVirtual es la ruta donde se quiere acceder la raz del sistema montado, es un directorio (si el directorio donde se monta contiene datos, estos sern escondidos mientras el nuevo sistema de archivos permanezca montado). Por esta razn se debe cumplir la condicin de que el directorio donde se efectuar el montaje, est vaco. Las opciones de mount pueden ser: -a Monta todos los sistemas de archivos listados en /etc/fstab. -t tipo-de-sistema-archivo Especifica el tipo de sistema de archivos que se montar por ejemplo: FAT, VFAT, FAT32, ISO9660, ext2. -o opciones Especifica opciones al proceso mount. ro Monta la particin como solo lectura. rw Monta la particin como lectura y escritura. exec Permite la ejecucin de binarios (por defecto). noatime Deshabilita la actualizacin de la fecha de acceso a los i-nodos. Para particiones donde la fecha de acceso no es importante (como en los spools de noticias), esta opcin mejora su rendimiento. noauto Deshabilita el montaje automtico de esta particin cuando se especifica la opcin a (se aplica solo en el archivo /etc/fstab). nosuid Anula la aplicacin de los bits de programa setuid en la particin montada. sb=n Le dice a mount que use el bloque n como superbloque en el sistema de archivo ext2. La informacin sobre un sistema de archivos, su directorio de montaje y opciones pueden especificarse en el archivo /etc/fstab. De hacerlo puede emplear
mount dispositivoVirtual

para montar el sistema de archivos en el directorio especificado por dispositivoVirtual (el resto de informacin debe estar en /etc/fstab). Adems, por defecto, los sistemas de archivos especificados en ese archivo sern montados automticamente durante el arranque del sistema. Ms adelante nos dedicaremos a este archivo. Ejemplo:
# mount /dev/hda1 /win -t vfat

Esta lnea lo que hace es montar mi dispositivo fsico, que es una parte de disco rgido, la particin1, en un dispositivo virtual, que es el directorio /win y le digo que lo monte como filesystem vfat para que me tome los nombres largo de windows. Premiere IT S.R.L. Pgina 68

LOC: Linux Original Courseware Nota: El sistema de archivos por default es ext2. Para los tipos de filesystem con que se crearon las particiones Linux-native (82) no es necesario especificarlo. Si tengo configurado el archivo /etc/fstab con las opciones para este filesystem, puedo escribir el comando simplificado
# mount /win

En el caso de disquetes, puede montarse as :


# mount /dev/fd0 /mnt/floppy -t msdos

Aqu estamos diciendo que el formato del disco que insertamos en la lectora, que se llama /dev/fd0 es MSDOS. Nota: Tenga cuidado porque el formato de MSDOS no permite nombres de archivo muy largos como es el caso de Linux y Windows95. Por lo tanto si desea copiar un sistema de archivos a un floppy es mejor crear un disco del tipo ext2 (Linux) y luego montarlo. Para esto introduzca un disco formateado MSDOS en la lectora y haga:
# mke2fs /dev/fd0 1440

con lo cual estamos dando un formato especial (Linux native 82) al disco de 1.44 Mb, luego lo montamos con:
# mount /dev/fd0 /mnt/floppy

con:
# mount /mnt/floppy

Tenga en cuenta que los directorios usados para montar dispositivos (particiones) deben de existir y estar vacos antes de pretender usarlos. Cuando el sistema arranca inicialmente lee un archivo llamado /etc/inittab que a su vez lee el archivo /etc/rc.d/rc.S, el cual contiene una lnea para montar automticamente todos los dispositivos que se encuentren en el archivo /etc/fstab, as que despreocpese, el sistema lo har por usted, pero es bueno saber quin lo hace. Para desmontar un filesystem haga:
# umount dispositivo

donde dispositivo puede ser /dev/hda1 para desmontar la particin de 400 Megas del directorio /win, Veamos otro ejemplo:
# mount t iso9660 /dev/cdrom /mnt/cdrom

# mount /mnt/cdrom

# mount /media/cdrom

Para poder desmontar


# umount /dev/cdrom

# umount /mnt/cdrom

# umount /media/cdrom

El archivo /etc/fstab

El archivo fstab contiene informacin que describe los diferentes filesystems. Los programas slo pueden leer el fstab; por ejemplo, es el archivo que utiliza mount cuando queramos montar usando alias (vamos a hablar de esto mas adelante). El administrador del sistema es responsable de la creacin y mantenimiento de este archivo. Cada lnea describe un sistema de archivos; los campos en cada lnea estn separados por tabs o espacios. Este archivo contiene una lista de todas las particiones conocidas del sistema. Durante el proceso de arranque se lee esta lista y sus elementos se montan de forma automtica si corresponde y el sistema de archivos es estable, es decir que no contenga errores irreparables. Ejemplo: Premiere IT S.R.L. Pgina 69

LOC: Linux Original Courseware


alexa:/etc# cat /etc/fstab # /etc/fstab: static file system information. # # <file system> <mount point> <type> <options> <dump> /dev/hda1 / ext3 defaults,errors=remount-ro 0 /dev/vg00/swap none swap sw 0 proc /proc proc defaults 0 /dev/fd0 /floppy auto defaults,user,noauto 0 /dev/cdroms/cdrom0 /mnt/cdrom0 auto defaults,ro,user,noauto 0 /dev/cdroms/cdrom1 /mnt/cdrom1 auto defaults,ro,user,noauto 0 /dev/vg00/usr /usr ext3 defaults 0 /dev/vg00/var /var ext3 defaults 0 /dev/vg00/home /home ext3 defaults 0 /dev/vg00/usr_local /usr/local ext3 defaults 0 tmpfs /tmp tmpfs defaults 0 \\alexa-vm\kazaa /mnt/smbfs/alexa-vm smbfs defaults 0 /dev/sg0 /mnt/mp3player vfat defaults,noauto,sync 0 alexa:/etc#

<pass> 1 0 0 0 0 0 2 2 2 2 0 2 0

La primera columna describe el dispositivo fsico, puede ser de bloque o un sistema de archivos remoto. La segunda columna describe el punto de montaje para el sistema de archivos, lo que antes llam dispositivo virtual. Para particiones de intercambio (swap), este campo debe decir none. La tercera columna describe el tipo de filesystem. Linux soporta muchos filesystems, solo para mencionar algunos, ext3, reiserfs, jfs, ntfs, smbfs, etc. La cuarta columna describe las opciones de montaje asociadas con el sistema de ficheros. Algunas opciones (comunes a todo sistema de archivos) son: o ro para montar en modo de slo lectura o rw para montar en modo lectura y escritura o user que indica que un usuario puede montar el sistema de archivos (por defecto slo el administrador puede hacerlo) o noauto para indicar que el sistema no debe montarse durante el arranque ---note que los directorios /floppy y /cdrom no son montados automticamente durante el arranque. o defaults incluye: rw, suid, dev, exec, auto, nouser y sync La quinta columna lo utiliza el comando dump para determinar qu sistemas de archivos necesitan ser volcados (dumped), es decir con cuanta frecuencia se necesita hacer copia de seguridad del sistema de archivos. Si el quinto campo estuviera vaco, dump asume que el sistema de ficheros no necesita ser volcado. La sexta columna lo usa el programa fsck para determinar el orden en el cual se van a chequear los sistemas de archivos cuando el sistema arranca. Observe que todos los archivos se comprueban antes de montarse. El nmero que controla el chequeo con fsck indica el orden en el cual hacer chequeos, 0 (cero) indica que no se debe chequear el sistema, otros nmeros positivos especifican una prioridad (los menores son ms prioritarios y los nmeros con el mismo nmero de ser posible son chequeados en paralelo). Es conveniente emplear 1 con el sistema de archivos montado en la raz y 2 para los dems que requieran chequeo. Entonces con este archivo correctamente configurado por el administrador, un usuario solo tendr que hacer un
mount /mnt/cdrom para acceder al mismo. De esta forma, el mount lee el fstab y busca la lnea que hace referencia el /mnt/cdrom y toma los parametros y dispositivos asociados correspondientes sin tener que

completar totalmente el comando con los switchs que haran falta para montarlo sin haber creado el alias en el
/etc/fstab

Premiere IT S.R.L.

Pgina 70

LOC: Linux Original Courseware

Captulo 4
Instalacin de Software
Luego de tener nuestro sistema instalado y funcionando correctamente, vamos a querer actualizarlo con nuevos programas. O puede ser que tengamos que instalar un driver para algn dispositivo problemtico, o nos guste bajar software de Internet que queramos probar. Cmo actualizo, instalo o desinstalo software? Existen varios mtodos que dependern del formato utilizado para empaquetar los programas. En este captulo veremos la descripcin de los posibles mtodos y algunos ejemplos. La manera ms fcil de instalar software en Linux es mediante paquetes. En el mundo de Linux existen varios tipos de paquetes: .deb (distribuciones basadas en Debian), .rpm (basadas en Red Hat) y .tgz .tar.gz (usados por Slackware y Gentoo). Aos atrs era ms difcil instalar software en Linux. Al principio tenamos el cdigo fuente y tenamos que compilarlo. Cmo lo compilamos? En este captulo veremos como hacerlo. Compilar el cdigo fuente tiene sus ventajas, el software es optimizado para nuestro hardware pero la instalacin no siempre es fcil.

Descompresin y compresin de archivos


El nombre viene de Tape Archiver y era la herramienta por excelencia a la hora de hacer backups en unidades de cintas. El comando sirve para concatenar archivos en uno solo. Con este comando podemos crear un archivo que contenga una lista de archivos concatenados, sin realizar ningn tipo de compresin. Lo que hace, realmente es una agrupacin de archivos, los agrupa todos en uno. Luego veremos que podemos pasarle una serie de parmetros para que realice una compresin tanto de tipo gzip como bzip2. El formato del comando tar es:
tar <opciones> <arch1> <arch2> ...<archN> donde <opciones> es la lista de comandos y opciones para tar, y <arch1> hasta <archN>

Comando tar

es la lista de archivos a aadir o extraer del archivo. Las opciones que ms comnmente vamos a utilizar, son: c Crear un archivo tar x Extrae el contenido de un archivo v Muestra informacin en pantalla sobre lo que se est haciendo f <archivo> Dirige la salida de tar a un archivo z Entiende que el archivo que lee o escribe est comprimido con gzip Z Entiende que el archivo que lee o escribe est comprimido con compress j Entiende que el archivo que lee o escribe est comprimido con bzip2 Por ejemplo, el comando
# tar cvf backup.tar /etc

empaquetar todos los archivos de /etc en el archivo tar backup.tar. El primer argumento es el comando tar. La letra c le dice a tar que cree un nuevo archivo. La opcin v (verbose) fuerza a tar al modo detallado imprimiendo los nombres de los ficheros segn se archivan. La opcin f (file) le dice a tar que el siguiente argumento, backup.tar, es el nombre del archivo a crear. El resto de los argumentos de tar son los nombres de archivos y directorios a aadir al archivo backup.tar. Ms ejemplos:
# tar cvf log.tar /var/log # tar cvzf log.tar.gz /var/log

Luego de probar estas dos lneas, compruebe la diferencia de tamaos entre los dos archivos creados. En el primer caso, solo est agrupado. En el segundo ejemplo, est agrupado y comprimido.
# tar cf files.tar file1 file2 Crea el archivo files.tar concatenando los archivos file1, file2 que le hemos pasado. # tar xvf files.tar Extrae los archivos que se encontraban concatenados dentro de files.tar. # tar czf files.tar.gz file1 file2 Crear el archivo concatenando los archivos file1, file2 que le hemos pasado y aplica una compresin de tipo gzip creando as un archivo de salida files.tar.gz.

Premiere IT S.R.L.

Pgina 71

LOC: Linux Original Courseware


# tar cjf files.tar.bz2 file1 file2

Crear el archivo concatenando los archivos file1, file2 que le hemos pasado y aplica una compresin de tipo bzip2 creando as un archivo de salida files.tar.bz2.
# tar xvzf files.tar.gz

Realiza una descompresin de tipo gunzip para despus extraer los archivos que se encontraban concatenados dentro de files.tar.gz. Tambin puedo utilizar tar con la extensin .tgz.
# tar xvjf files.tar.bz2

Realiza una descompresin de tipo bz2 para despus extraer los archivos que se encontraban concatenados dentro de files.tar.bz2.

Comando gzip

Utilidad de compresin de archivos. El archivo comprimido tendr la extensin .gz. A diferencia de lo que estamos acostumbrados a ver en windows con este comando slo no podemos realizar la compresin de varios ficheros en un solo, para eso necesitaremos la ayuda de un segundo comando de concatenacin de ficheros que es el tar que vimos anteriormente. Nota: gzip no sirve para comprimir directorios. Por ejemplo:
$ gzip terminator.sgml Esto devuelve: terminator.sgml.gz

Si por el contrario queremos descomprimir un archivo comprimido anteriormente con este comando lo haremos de la siguiente manera:
$ gzip -d terminator.sgml.gz

Comando gunzip

Utilidad para descompresin de archivos. Realiza la accin contraria que gzip. Descomprime archivos .gz devolvindolos a su tamao original. Nota: Es equivalente a ejecutar gzip -d archivo.
$ gunzip terminator.sgml.gz

y
$ gzip -d terminator.sgml.gz

son equivalentes
$ gunzip -cd blackbox.tar.gz

Luego de aplicar el comando nos queda con el siguiente nombre: blackbox.tar Ahora debo utilizar el comando tar para abrir o desagrupar dicho archivo.
$ tar xvf blackbox.tar

Como vimos antes la opcin x descomprime el archivo, v me muestra los archivos y directorios en la pantalla y f por el archivo.

El comando unzip

Otro comando de descompresin que resulta muy til, ya que nos permite descomprimir todos aquellos .zip que los amigos de windows nos envan a travs de su winzip.
$ unzip pantallazul.zip

Existe un comando de compresin zip, pero no resulta til ya que con los formatos de compresin .gz y .bz2 nos basta incluso si queremos mandrselo a algn amigo de windows ya que se podrn abrir sin problemas con cualquier tipo de utilidad de compresin como puede ser el winzip o winrar.

Comando bzip2

Utilidad de compresin de archivos ms potente que gzip. El modo de funcionamiento es el mismo. bzip2 archivo para comprimir.
bzip2 -d archivo para descomprimir.

Los archivos comprimidos con este comando tendrn la extensin .bz2.


$ bzip2 terminator.sgml

Premiere IT S.R.L.

Pgina 72

LOC: Linux Original Courseware


$ bzip2 -d terminator.sgml.bz2

Paquetes DEB
Debian introduce el paquete DEB como formato para la administracion de sus paquetes. Un paquete .deb tiene varias virtudes sobre el rpm, el cual tiene varias limitaciones. Muchas de las ventajas que tiene mas que nada tienen que ver con la politica de Debian. En Debian es algo de todos los dias actualizar un paquete y que siga funcionando como la versino previa, en RedHat es dificultoso. Desde la version 2.1 hasta la actual, es posible mudarse y actualizar la version que tengamos a la ultima sin reiniciar el equipo ni tener problemas de dependencias. Las dependencias son un problema que solo existe en RedHat. En Debian para instalar una aplicacin simplemente hay que pedirselo al administrador de paquetes y el solo resuelve las dependencias y las instala luego de que le damos el visto bueno. El front-end principal en Debian es el apt-get. El apt-get introduce la novedad de poder decirle cuales son las fuentes de las cuales uno puede conseguir aplicaciones, paquetes deb. El archivo de configuracion principal esta en /etc/apt/sources.list y tiene un formato similar al siguiente:
azrael:/etc/apt# cat sources.list #Debian official repository deb http://ftp.debian.org/debian/ sid main non-free contrib #Debian non-us official repository deb http://non-us.debian.org/ sid/non-US main non-free contrib #Debian security updates deb http://security.debian.org/ stable/updates main non-free contrib #Mplayer official repository deb ftp://ftp.nerim.net/debian-marillat/ unstable main

Este archivo, contiene las direcciones de donde puede conseguir paquetes el apt-get. Estas direcciones pueden ser servidores ftp, servidores http, recursos compartidos de red, cdroms, dvds, o simplemente un directorio de nuestro equipo. Debian tiene una herramienta para configurar este archivo, se llama apt-setup y si la ejecutamos el menu en consola que nos muestra simplemente nos deja elegir de donde queremos instalar paquetes y luego prueba la fuente que le definimos. Por otro lado, podemos bajar tambien fuentes. En el ejemplo solo tenemos paquetes compilados, pero si quisieramos bajar las fuentes de los paquetes compilados solo hay que agregar una linea como esta:
deb-src http://ftp.debian.org/debian/ sid main non-free contrib

De esta forma, con una linea igual a la que ya habia, reemplazamos el deb por el deb-src y a partir de ahora tenemos disponibles fuentes. El tercer campo describe la version que estamos usando. Debian maneja tres versiones al mismo tiempo, stable, testing y unstable. La ideal para servidores en produccion es stable, es la que contiene todos los paquetes probados y testeados sin problemas de seguridad. La desventaja es que puede que encontremos paquetes desactualizados en cuanto a versiones, dado que para considerarse estables tienen que haber pasado una serie de pruebas y depuraciones que toman tiempo. Por otro lado, tenemos testing. En testing vamos a encontrar paquetes que si bien son estables, dependen de paquetes que todavia son inestables. Para que no haya problemas de dependencias, se los mantiene en testing hasta que sean aprobados todos los paquetes con sus dependencias. En unstable vamos a encontrar lo mas nuevo y reciente. Los paquetes son funcionales, son usables, pero mas que nada para una workstation. El motivo principal es que hay actualizaciones muy seguido y hay paquetes nuevos todo el tiempo y algunas cosas no salen 100% probadas. Las versiones de los paquetes en unstable son las mismas versiones que tiene la ultima version de RedHat o la ultima version de Mandrake. La diferencia principal es que aca Debian prueba las cosas y no las da a probar a los usuarios como hacen otras distribuciones. Si queremos buscar un paquete en la web, podemos ir a packages.debian.org donde tenemos un buscador para encontrar paquetes por version. Aca vamos a encontrar cerca de 13000 paquetes disponibles, empaquetados para Debian. Premiere IT S.R.L. Pgina 73

LOC: Linux Original Courseware Por otro lado, existe una pagina, www.apt-get.org en donde vamos a poder conseguir fuentes para agregar a este archivo. El caso puntual de la ultima fuente que tiene el ejemplo fue sacada de esta pagina. Estas fuentes aportan los paquetes para reproducir archivos de video que no son de libre distribucion y no terminan de tener una licencia del todo clara, como el caso de los divx. Para cualquier otro tipo de aplicaciones que esten en una situacion similar y no esten en los repositorios de Debian, es posible que la encontremos aca. Hay que aclarar que estos paquetes no estan probados por el proyecto Debian, con lo cual pueden traer problemas a futuro. Bueno, hasta ahora vimos solo el archivo de configuracion y como manejarlo. Ahora vamos a ver que luego de hacer un cambio en ese archivo hace falta actualizar la base de datos de paquetes. La base de datos hace falta actualizarla para poder ver que tenemos instalado y que tenemos disponible para instalar. Para realizar esta tarea se usa el comando apt-get de la siguiente forma:
azrael:~# apt-get update Hit http://mentors.debian.net unstable/main Packages Ign http://mentors.debian.net unstable/main Release Hit http://mentors.debian.net unstable/contrib Packages Ign http://mentors.debian.net unstable/contrib Release Hit http://security.debian.org stable/updates/main Packages Hit http://security.debian.org stable/updates/main Release Hit http://security.debian.org stable/updates/non-free Packages Hit http://security.debian.org stable/updates/non-free Release Hit http://security.debian.org stable/updates/contrib Packages Hit http://security.debian.org stable/updates/contrib Release Hit http://ftp.debian.org sid/main Packages Hit http://ftp.debian.org sid/main Release Hit http://ftp.debian.org sid/non-free Packages Hit http://ftp.debian.org sid/non-free Release Hit http://ftp.debian.org sid/contrib Packages Hit http://ftp.debian.org sid/contrib Release Hit http://non-us.debian.org sid/non-US/main Packages Hit http://non-us.debian.org sid/non-US/main Release Hit http://non-us.debian.org sid/non-US/non-free Packages Hit http://non-us.debian.org sid/non-US/non-free Release Hit http://non-us.debian.org sid/non-US/contrib Packages Hit http://non-us.debian.org sid/non-US/contrib Release Reading Package Lists... Done azrael:~#

Ahora podemos comprar que tenemos instalado y ver si hay algo pendiente para actualizar. Para esto podemos usar nuevamente el apt-get de la siguiente forma:
azrael:~# apt-get upgrade -u Reading Package Lists... Done Building Dependency Tree... Done The following packages have been kept back: kvim vim The following packages will be upgraded: abiword-common abiword-gnome abiword-plugins abiword-plugins-gnome console-common console-data console-tools dash debconf debconf-i18n debconf-utils e2fslibs e2fsprogs gnome-control-center gnome-pilot ksensors libaudiofile0 libblkid1 libcomerr2 libconsole libgal2.2-0 libgal2.2-common libgnome-pilot2 libkdegst0.6 libnet-perl libpcre3 libpq3 libss2 libstdc++2.10-glibc2.2 libtag1 libuuid1 libxfce4util-1 libxfcegui4-1 libxml2 libxrender1 portmap ssh ssh-askpass-gnome xfprint4 39 upgraded, 0 newly installed, 0 to remove and 4 not upgraded. Need to get 9954kB of archives. After unpacking 6302kB disk space will be freed. Do you want to continue? [Y/n]

Aca agregamos el switch -u que lo que hace es una pausa antes de comenzar a bajar las aplicaciones e instalarlas. Por otro lado, podemos ver que hay 4 aplicaciones que nos avisa que no va a actualizar, pero no nos Premiere IT S.R.L. Pgina 74

LOC: Linux Original Courseware da motivos. Seguramente no puede actualizar esas aplicaciones porque necesita a su vez paquetes que no estan disponibles todavia porque estamos usando unstable y las dependencias no se satisfacen de inmediato. La otra posiblidad es que para instalar esas aplicaciones, haya que instalar mas cosas que no tenemos. Con lo cual el switch de upgrade no nos permite instalar nuevas aplicaciones, sino solo actualizarlas. Para solucionar esto, tendriamos que paquete por paquete pedirle que los instale, de la siguiente forma:
azrael:~# apt-get install kvim vim Reading Package Lists... Done Building Dependency Tree... Done The following extra packages will be installed: vim-common Suggested packages: cscope vim-doc ctags The following NEW packages will be installed: vim-common The following packages will be upgraded: kvim vim 2 upgraded, 1 newly installed, 0 to remove and 41 not upgraded. Need to get 4677kB of archives. After unpacking 77.8kB of additional disk space will be used. Do you want to continue? [Y/n]

De esta forma, solucionamos el problema de paquetes que no podia actualizar porque en la misma operacin tenia que tambien instalar paquetes que no tenia antes. Como instalar una aplicacin? Bueno, ya vimos algo antes, para instalar una aplicacin es relativamente sencillo, el apt-get tiene varios switchs y uno de ellos es install. Luego tiene que figurar el nombre del paquete a instalar.
azrael:~# apt-get install nmap Reading Package Lists... Done Building Dependency Tree... Done The following NEW packages will be installed: nmap 0 upgraded, 1 newly installed, 0 to remove and 43 not upgraded. Need to get 438kB of archives. After unpacking 1466kB of additional disk space will be used. Get:1 http://ftp.debian.org sid/main nmap 3.50-1 [438kB] Fetched 438kB in 17s (24.7kB/s) Selecting previously deselected package nmap. (Reading database ... 104953 files and directories currently installed.) Unpacking nmap (from .../archives/nmap_3.50-1_i386.deb) ... Setting up nmap (3.50-1) ...

De esta forma, tenemos instalado el nmap. Que pasa si queremos desinstalarlo?


azrael:~# apt-get remove --purge nmap Reading Package Lists... Done Building Dependency Tree... Done The following packages will be REMOVED: nmap* 0 upgraded, 0 newly installed, 1 to remove and 43 not upgraded. Need to get 0B of archives. After unpacking 1466kB disk space will be freed. Do you want to continue? [Y/n] y (Reading database ... 104969 files and directories currently installed.) Removing nmap ... azrael:~#

Listo, no mas nmap. El switch adicional --purge le avisa al apt-get que queremos que desintale tambien los archivos de configuracion de la aplicacin, sino, por defecto no los borra. Premiere IT S.R.L. Pgina 75

LOC: Linux Original Courseware Como sabemos que paquetes tenemos disponibles? Como buscamos un paquete?
azrael:~# apt-cache search apt-get apt - Advanced front-end for dpkg apt-build - Frontend to apt to build, optimize and install packages apt-move - Maintain Debian packages in a package pool auto-apt - package search by file and on-demand package installation tool cron-apt - Automatic update of packages using apt debarchiver - Tool to handle debian package archives debwrap - Wrapper for dpkg/apt-get gnome-apt - graphical package manager jablicator - Share a set of package choices newbiedoc - Documentation by and for newbies r-base - GNU R statistical computing language and environment synaptic - Gtk GUI-frontend for APT synaptic-debtags - Gtk GUI-frontend for APT with debtags support qmail-src - Source only package for building qmail binary package azrael:~#

De esta forma, buscamos entre las bases de datos que bajamos con el apt-get update y nos muestra todas las posibles respuestas. Entre ellas, podemos ver que encontro front-ends para el apt como el gnome-apt y el synaptic. Ambas aplicaciones, son para administrar los paquetes de forma grafica, ideales para actualizar, instalar y desinstalar todo desde el modo grafico. No tiene mucho valor entrar a ver estos programas en detalle porque son bastante intuitivos por estar hechos para el modo grafico, pero si conviene que hablemos un poco del aptitude. El aptitude es un front-end para consola muy bueno. Para instalarlo, ya saben, apt-get install aptitude y con aptitude alcanza para arrancarlo. La interfaz es en consola, basada en ncurses y tiene menues, metodos de busqueda, actualizacion de paquetes, sugerencia de paquetes, etc. Una herramienta que se vuelve fundamental a corto plazo para la administracion de paquetes. Por otro lado, se nos puede presentar la necesidad de saber mas informacion del paquete que buscamos. Por hay necesitamos saber que version es o algo mas basico como averiguar para que sirve. Bueno, esto se hace de la siguiente forma.
azrael:~# apt-cache show aptitude Package: aptitude Priority: optional Section: admin Installed-Size: 2646 Maintainer: Daniel Burrows <dburrows@debian.org> Architecture: i386 Version: 0.2.14-3 Depends: libapt-pkg-libc6.3-5-3.3, libc6 (>= 2.3.2.ds1-4), libgcc1 (>= 1:3.3.2-1), libncurses5 (>= 5.3.20030510-1), libsigc++-1.2-5c102, libstdc++5 (>= 1:3.3.2-1) Filename: pool/main/a/aptitude/aptitude_0.2.14-3_i386.deb Size: 989972 MD5sum: e86011f47b49eacb69f4bd82f9564c8b Description: curses-based apt frontend aptitude is a curses-based apt frontend with a number of useful extended features, including: a mutt-like syntax for matching packages in a flexible manner, dselect-like persistence of user actions, the ability to retrieve and display the Debian changelog of most packages, and extreme flexibility and customization. . aptitude is also Y2K-compliant, non-fattening, naturally cleansing, and housebroken. azrael:~#

Finalmente, no podemos dejar de mencionar el dpkg. En sus principios, el Debian no tenia el apt-get, tenia el dpkg. Cumple funciones similares a las que el comando rpm de RedHat, pero sigue solucionando el problema de las dependencias. La limitacion que tiene el dpkg, es que no puede acceder a internet o buscar en los repositorios de Debian que definamos en el /etc/apt/sources.list como hace el apt-get. Entonces, para instalar algo tenemos que bajarlo de internet y decirle donde lo dejamos. Premiere IT S.R.L. Pgina 76

LOC: Linux Original Courseware


azrael:/usr/src# dpkg -i kernel-image-2.4.24-azrael_1.1_i386.deb Selecting previously deselected package kernel-image-2.4.24-azrael. (Reading database ... 104953 files and directories currently installed.) Unpacking kernel-image-2.4.24-azrael (from kernel-image-2.4.24-azrael_1.1_i386.deb) ... Setting up kernel-image-2.4.24-azrael (1.1) ... A new kernel image has been installed, and usually that means that some action has to be taken to make sure that the new kernel image is used next time the machine boots. Usually, this entails running a ``bootloader'' like SILO, loadlin, LILO, ELILO, QUIK, VMELILO, ZIPL, or booting from a floppy. (Some boot loader, like grub, for example, do not need to be run on each new image install, so please ignore this if you are using such a boot loader). A new kernel image has been installed at /boot/vmlinuz-2.4.24-azrael (Size: 904kB)

Symbolic links, unless otherwise specified, can be found in / LILO sets up your system to boot Linux directly from your hard disk, without the need for booting from a boot floppy.

WARNING If you are keeping another operating system or another version of Linux on a separate disk partition, you should not have LILO install a boot block now. Wait until you read the LILO documentation. That is because installing a boot block now might make the other system un-bootable. If you only want to run this version of Linux, go ahead and install the boot block here. If it does not work, you can still boot this system from a boot floppy. Would you like to create a boot floppy now? [No] You already have a LILO configuration in /etc/lilo.conf Install a boot block using the existing /etc/lilo.conf? [Yes] Testing lilo.conf ... Testing successful. Installing the partition boot sector... Installation successful. azrael:/usr/src#

El proceso de instalacion, no es solo desempaquetar y compiar archivos. En una gran cantidad de paquetes luego de desarmar el deb el paso siguiente es un mini wizard con preguntas para darle una configuracion minima a la aplicacin. En el caso del ejemplo, estamos instalando una imagen de un kernel, entonces como paso siguiente modifica el lilo y lo ejecuta para que tome los cambios. Para terminar, nos quedan un par de aclaraciones. En el /etc/apt/sources.list se configura tambien la version del Debian que estamos usando, recuerdan el stable, testing y unstable? Bueno en este archivo le definimos que version usamos. Fijense en el ejemplo siguiente.
azrael:/etc/apt# cat sources.list #Debian official repository deb http://ftp.debian.org/debian/ stable main non-free contrib #Debian non-us official repository deb http://non-us.debian.org/ stable/non-US main non-free contrib #Debian security updates deb http://security.debian.org/ stable/updates main non-free contrib

En el ejemplo, estamos usando las fuentes oficiales de Debian, paquetes non-us y actualizaciones de seguridad. Las actualizaciones de seguridad no se puede cambiar la version, estamos usando stable y solo hay Premiere IT S.R.L. Pgina 77

LOC: Linux Original Courseware actualizaciones de seguridad para stable. En cambio en los dos primeros casos, podriamos cambiar de stable por otra version de Debian, de la siguiente forma:
azrael:/etc/apt# cat sources.list #Debian official repository deb http://ftp.debian.org/debian/ unstable main non-free contrib #Debian non-us official repository deb http://non-us.debian.org/ unstable/non-US main non-free contrib #Debian security updates deb http://security.debian.org/ stable/updates main non-free contrib

Luego de hacer modificaciones, recuerden de actualizar la base de datos con apt-get update. Ahora el paso natural seria hacer apt-get update pero tengan presente que esto que vamos a hacer es actualizar TODO el sistema con todas sus aplicaciones. Entonces para hacer este tipo de procedimientos especiales hay un switch dedicado a mudarnos de una version a otra y es el apt-get dist-upgrade y asi tenemos actualizado nuestro sistema sin reiniciar el equipo y sin downtime de servicios. Obviamente, cuando le llegue el turno a un servicio, va a haber que reiniciarlo. Pero nada mas que reiniciar ese servicio y lo va a hacer automaticamente el apt-get previo consultarnos. El apt-get es una herramienta muy poderosa, hay muchas cosas que puede hacer y junto con el dpkg y el aptitude la administracion de los paquetes se hace muy sencilla. Podemos ver los archivos de configuracion a instalar en lugar de pisar los que ya hay, podemos ver que archivos instalo el paquete nuevo, tenemos un control de cambios, podemos programar actualizaciones de seguridad diariamente para estar al dia, hasta se puede hacer un proxy de los paquetes deb si tenemos muchos Debian instalados en nuestra red y de esta forma ahorrar ancho de banda y ganar velocidad. Todo esto y mucho mas lo vamos a poder encontrar en la documentacion en la pagina de Debian en varios idiomas por de mas explayado y con muchos ejemplos.

Paquetes RPM
RPM quiere decir Redhat Package Manager, o sea, que RPM es el programa administrador de paquetes de Redhat. El formato RPM guarda dentro de cada paquete informacin suficiente para que el programa de gestin conozca todo sobre l, lo que incluye la versin y los archivos y directorios donde se instala, una descripcin del mismo, y la lista de otros paquetes que son requeridos. La extensin de los paquetes es: .rpm. Note que los paquetes rpm, aparte de la extensin rpm en su nombre, tambin tienen un nmero, i386, i586 i686. Esto depende de su PC y la distribucin de Linux que use. Ese nmero corresponde al procesador en que se compil ese paquete. Nota: Si tengo un paquete i386, ste se podr instalar en cualquier procesador superior, es decir que soporta escalabilidad. En cambio si el paquete es i686 no podr instalarse en procesadores inferiores. Al RPM lo vamos a encontrar muchas distribuciones basadas en RedHat que adoptaron el RPM como sistema de paquetes. Escencialmente, el sistema RPM tiene una serie de problemas. Principalmente cuando nos ponemos a hablar de dependencias, el rpm no maneja dependencias. Esto se presenta cuando queremos instalar una aplicacin y nos avisa que la aplicacin se podria instalar si tuviera otras aplicaciones que no tiene instaladas. Para esto, tenemos que a su vez instalar esas aplicaciones que probablemente necesiten otras para funcionar y esto es un circulo interminable de cosas que necesitamos para instalar algo. En Debian, este tipo de cosas no sucede. Debian usa otro sistema de paquetes llamado (deb). Igualmente en Debian existe la posiblidad de instalar el aplicativo rpm para instalar aplicaciones rpm. Tambien esta la posiblidad de migrar un rpm a un deb con el alien. El alien es una aplicacin dedicada a generar un deb a partir de un rpm y de esta forma poder instalar un rpm en Debian sin ningun problema de compatibilidad. Esta herramienta nos permite realizar varias funciones con los paquetes. RPM tiene cinco modos bsicos de operacin (sin contar la construccin del paquete): instalacin, desinstalacin, actualizacin, consulta y verificacin. En esta seccin veremos cada modo. Para opciones y detalles completos vea la pgina man de rpm # rpm -help o pruebe: La sintaxis general del comando es:
rpm <opciones> <paquete.i386.rpm>

Premiere IT S.R.L.

Pgina 78

LOC: Linux Original Courseware Entre las opciones a utilizar, tenemos: -i Para instalar
-U -h

-v -q --force

De update, actualizar Viene de hash, tiene que ver con la base de datos donde se guardan los paquetes, guarda una marca del progreso de la instalacin. Conviene usarla con la opcin v Le dice a RPM que haga una salida en formato extendido (verbose) De query, para hacer consultas. Se puede combinar con ms opciones. Vea ms abajo. Para forzar la instalacin de un paquete

Veamos ejemplos para cada opcin.

Instalacin
# rpm vhi package.rpm Instala package.rpm, si encuentra otra versin no hace nada. La opcin i lo que hace es instalar el paquete, v muestra los archivos y directorios en la pantalla y h hace un hash.

Nota: Los paquetes RPM pueden depender de otros paquetes, lo cual significa que otros paquetes deben ser instalados para funcionar correctamente. Si intenta instalar un paquete para el cual existe una dependencia no satisfecha, usted ver:
# rpm -ivh package-1.0-1.i386.rpm failed dependencies: yoyo is needed by package-1.0-1

Para arreglar este error debemos instalar los paquetes requeridos. Si deseara forzar la instalacin de todas maneras (una mala idea ya que el paquete probablemente no funcionar correctamente), hay que usar --nodeps en la lnea de comandos.

Actualizacin
# rpm Uvh package.rpm

La opcin U nos permite actualizar el paquete. Actualiza o instala package.rpm. Sirve si tenemos otra versin inferior.
# rpm -Uvh yoyo-2.0-1.i386.rpm yoyo ####################################

Lo que usted ve es la instalacin, lo que no ve es el hecho de que RPM desinstala automticamente cualquier versin antigua del paquete yoyo. De hecho, usted quiz quiera usar siempre -U para instalar paquetes, ya que funciona bien incluso cuando no hay ninguna versin anterior del paquete instalada. Dado que RPM realiza actualizaciones inteligentes de los paquetes con archivos de configuracin, quizs vea un mensaje como:
saving /etc/yoyo.conf as /etc/yoyo.conf.rpmsave

Esto significa que sus cambios al archivo de configuracin puedan no ser reversiblemente compatibles con el nuevo archivo de configuracin en el paquete, por lo que RPM salva su archivo original, e instala uno nuevo. Usted debera investigar y resolver las diferencias entre los dos archivos tan pronto como sea posible para asegurarse de que su sistema contina funcionando adecuadamente. Dado que actualizar es realmente una combinacin de desinstalacin e instalacin, usted puede encontrar los errores de los dos modos, y uno ms: Si RPM piensa que est intentando actualizar un paquete con una versin antigua, veremos:
# rpm -Uvh yoyo-1.0-1.i386.rpm yoyo package yoyo-2.0-1 (which is newer) is already installed error: yoyo-1.0-1.i386.rpm cannot be installed Para obligar a RPM a actualizar de todas maneras, use --oldpackage en la lnea de comandos

Consulta

Consultar la base de datos de paquetes instalados se realiza mediante la opcin rpm -q. Ejemplo:
#rpm -q yoyo yoyo-2.0-1

Se imprimir el nombre, versin y nmero de desarrollo del paquete instalado yoyo. Premiere IT S.R.L. Pgina 79

LOC: Linux Original Courseware En lugar de especificar el nombre del paquete, puede usar las siguientes opciones con -q -a consulta todos los paquetes instalados. -f <file> consultar el paquete al que pertenece <file>. -p <packagefile> consulta el paquete <packagefile>. -i presenta informacin del paquete como nombre, descripcin, desarrollo, tamao, fecha de construccin, fecha de instalacin, vendedor, y otra informacin miscelnea. -l presenta la lista de archivos que el paquete posee. -d presenta un lista de archivos marcados como documentacin (paginas man, paginas info, README's, etctera). -c presenta una lista de archivos marcados como archivos de configuracin. Son los archivos que cambiamos tras la instalacin para adaptar el paquete al sistema (sendmail.cf, passwd, inittab, etctera). Para aquellas opciones que presenten listas de archivos, podemos aadir -v a la lnea de comandos para obtener la lista en el conocido formato ls -l. Ejemplos:
$ rpm -qa

Consulta la base de datos RPM y lista todos los paquetes instalados.


$ rpm -qpl package.rpm Consulta package.rpm y lista todos los archivos. $ rpm -qpi package.rpm Consulta package.rpm y muestra informacin. $ rpm -qf /some/file

Chequea en que paquetes se encuentra el archivo

Desinstalar un paquete
# rpm e package.rpm

borra package del sistema. Desinstalar un paquete es tan sencillo como instalarlo:
# rpm -e yoyo

Nota: Hemos usado el nombre yoyo para el paquete, no el nombre del paquete original yoyo-1.0-1.i386.rpm. Usted puede encontrar un error de dependencias cuando intente desinstalar el paquete si algn otro paquete instalado depende del que est intentando borrar. Por ejemplo:
# rpm -e yoyo removing these packages would break dependencies: yoyo is needed by package-1.0-1

Para hacer que RPM ignore el error y desinstale el paquete de todas maneras (que es una mala idea porque el paquete que depende de ste probablemente falle y no funcione correctamente), use --nodeps en la lnea de comandos.

Verificacin

Verificar un paquete es comparar la informacin sobre los archivos instalados desde un paquete con la misma informacin del paquete original. Entre otras cosas, verificar compara el tamao, chequeo MD5, permisos, tipo, usuario y grupo de cada archivo.
# rpm -V yoyo

Verifica un paquete. Es decir verifica que todas los archivos el paquete yoyo estn como cuando fueron originalmente instaladas. Se puede usar combinada con algunas de las opciones listadas para consultar. Por ejemplo: Para verificar que un paquete contiene un archivo en particular:
# rpm -Vf /bin/vi

Para verificar todos los paquetes instalados:


# rpm -Va

Esto puede ser til si sospecha que su base de datos de paquetes RPM esta corrupta.

Premiere IT S.R.L.

Pgina 80

LOC: Linux Original Courseware Si todo es verificado adecuadamente no habr ninguna salida en pantalla. Si hay alguna discrepancia s habr informacin presentada. El formato de la salida es una cadena de 8 caracteres, una posible letra c denotando un archivo de configuracin, y despus el nombre del archivo. Cada uno de los 8 caracteres denota el resultado de la comparacin de un atributo del archivo con el valor de ese atributo en la base de datos RPM. Un solo . (punto) significa que el test ha sido pasado. Los siguientes caracteres denotan fallo de ciertos tests: 5 Chequeo MD5 S Tamao del archivo L Enlace simblico T Modificacin de la fecha del archivo D Dispositivo U Usuario G Grupo M Modo (incluye permisos y tipos de archivo) Si tenemos alguna salida en pantalla, debo decidir si me conviene borrar o reinstalar el paquete, o alguna manera de resolver el problema.

Compilacin de cdigo fuente


Como vimos al principio del captulo, en Linux podemos obtener paquetes de software de dos formas diferentes: o bien con el cdigo fuente sin compilar, o bien paquetes precompilados a los que llamamos binarios. En este tema nos ocupa como compilar un paquete fuente. Una vez que tenemos el paquete fuente bajado lo descomprimimos como hemos aprendido anteriormente. Un vez hecho esto es muy conveniente, primero, leer siempre el README o el INSTALL que vienen habitualmente con los fuentes. Piense que todo programa que encontremos por ah fue desarrollado por diferentes personas, cada una con su propio criterio y forma de programar. All viene claramente explicado cmo se compila. En general esta compilacin la hacemos en 3 fases:
./configure

make

make install

Chequea en busca de libreras (mejor dicho, bibliotecas) y dems cosas necesarias para construir el Makefile que nos permitir compilar el paquete. Con --prefix=/directorio le diremos donde queremos que deje el resultado de la operacin. Cabe aclarar, que el configure viene con las fuentes, por eso el ./ para ejecutarlo, el configure no es un aplicacin que venga preinstalada y que esta en el path. Compilacin en s del paquete en nuestra mquina. Utiliza el Makefile creado, que est incluido en todos los software para compilar todos los .c .h ,etc, etc. Nota: En general los cdigos fuente de los programas estn escritos en lenguaje C. Por este motivo al hacer la compilacin vamos a ver en pantalla los archivos .c, y tambin los archivos .h, que son los headers y contienen las bibliotecas necesarias para que el programa pueda ejecutar. Si el fuente no compila, no ejecutar. Este paso puede tardar mucho tiempo depende del software y de la mquina que tengamos. Idealmente, este tipo de cosas no se hacen en equipos productivos dado que satura el microprocesador hasta llevarlo al 100%. Esto se debe hacer como root, ya que es la instalacin del paquete en nuestra mquina.

Si no est el archivo configure no hay problema continuaremos sin la ultima instruccin. La instalacin est completa. Qu pasa si hay errores? Si, por ejemplo, el hardware no es compatible para el software veremos algunos errores cuando haga el ./configure. Esto har que el programa falle en la compilacin. Una posible solucin es bajar otra versin de ese cdigo fuente. O aprender programacin y corregir el cdigo. Recordemos siempre que estamos en el mundo Open Source!

Premiere IT S.R.L.

Pgina 81

LOC: Linux Original Courseware

Captulo 5
Qu es el kernel?
El kernel es el ncleo del sistema operativo, tambin podemos decir que es, el sistema operativo. El sistema operativo es un programa, es software, pero es el que gestiona y administra todos los dems programas que estn en el sistema. Es el intermediario entre el software y el hardware. Interacta con los perifricos para que los programas puedan entenderse con estos dispositivos fsicos. Por lo tanto maneja la administracin de recursos, la sincronizacin entre procesos, la administracin del tiempo que ocupan el procesador, la asignacin de memoria, el control de los perifricos, etc. Es una idea errnea creer que Linux es Debian, Red-Hat, Suse, Slackware o cualquier otra distribucin, Linux es solo el kernel. Las distribuciones comnmente conocidas, tienen como ncleo a Linux, y conforman un sistema operativo, complementando con otros elementos de software, como utilidades y herramientas variadas, lo que es software GNU. Frecuentemente aparecen nuevas versiones de kernel. Para ver qu versiones de kernel se encuentran disponibles, o ver cual es la ltima versin, podemos ir a la pgina oficial: http://www.kernel.org. Esto es posible gracias a su naturaleza de cdigo abierto. sta es precisamente, la gran fortaleza del kernel de Linux, el hecho que los programadores de cualquier parte del mundo tengan acceso a las fuentes y puedan colaborar en su desarrollo.

Tipos de kernel

Kernel monoltico Todas las funcionalidades posibles estn integradas en el sistema. Se trata de un programa de tamao considerable que deberemos recompilar por completo cada vez que queramos aadir una nueva posibilidad. Esta es la estructura original de Linux. Por tratarse de una tcnica clsica y desfasada el creador de Linux fue muy criticado. Kernel modular Se trata de la tendencia actual de desarrollo. En el kernel se centran las funcionalidades esenciales como la administracin de memoria, la planificacin de procesos, etc. Sin embargo no tiene sentido que el ncleo de un sistema operativo englobe toda la parafernalia para comunicarse con todas las posibles de tarjetas de video o de sonido. En otros sistemas operativos esto se soluciona con unos archivos proporcionados por el fabricante llamados drivers. En Linux se cre una interfaz adecuada para posibilitar el desarrollo de mdulos que cumplieran esas funcionalidades. Esos mdulos pueden ser compilados por separado y aadidos al kernel en tiempo de ejecucin. Ms adelante hablaremos sobre los mdulos. Nota: La parte monoltica del ncleo es la que se carga en cada arranque y est activa en todo momento, sin embargo los mdulos nicamente se activan cuando se requiere utilizar ese dispositivo en concreto. Esto significa que podemos tener una serie de dispositivos soportados, pero que no estn cargados en memoria durante todo el tiempo, si no que se incorporan cuando se hace una llamada a ese hardware.

Versiones del kernel (Numeracin)

Cada versin de kernel est identificada con una numeracin. Est conformada por tres nmeros separados por puntos, como por ejemplo 2.6.8. El primer nmero indica la versin principal del kernel. Este nmero cambia cuando la forma de funcionamiento del ncleo ha experimentado un cambio importante. El segundo nmero tambin indica cambios, pero menos significativos. Aparte tambin informa si la versin es de produccin o desarrollo. Si el nmero es par, el ncleo corresponde a una versin estable. En cambio, una numeracin impar significa que es de desarrollo. La tercera cifra especifica nuevas versiones dentro de otra versin en la que nicamente se han modificado slo fallos de programacin, conocidos como bugs. Aclaraciones:

Premiere IT S.R.L.

Pgina 82

LOC: Linux Original Courseware Versin de produccin: es la ms estable hasta el momento. Surge como resultado final de las versiones en desarrollo o experimentales. Cuando el equipo de desarrollo del kernel experimental decide que ha conseguido que sea estable y con la calidad suficiente, aparece la versin de produccin o estable. Versin en desarrollo: es la experimental y la que utilizan los desarrolladores para programar, comprobar y verificar nuevas caractersticas y correcciones. Suelen ser inestables. La compilacin del kernel es un paso muy habitual y sencillo en la configuracin de Linux, y aunque en principio creamos que es un proceso complicado y que requiera conocimientos de programacin, veremos que es un paso casi automatizado en su totalidad, basndose en la ejecucin de comandos, sin necesidad de que nosotros hagamos nada con los archivos fuente. Compilar el kernel no tiene ningn peligro si se realiza una copia de seguridad del kernel antiguo en una unidad de diskette; o, sino al compilar el nuevo kernel guardarlo con otro nombre, de forma de no sobrescribir el actual, que ya lo tenemos funcionando. Es muy aconsejable antes de iniciar la compilacin del kernel, leer el manual y/o HOW-TO. Nota: Puede ocurrir que el kernel compilado no levante, y nos quedamos sin sistema operativo.

Compilacin del kernel

Qu quiere decir compilar?

Compilar es el mecanismo que se encarga de traducir los archivos fuente, escritos en formato texto en un lenguaje de programacin, a archivos binarios para que los pueda entender el procesador. El kernel es un programa. Como cualquier programa que quiero que ejecute, primero debe compilarse. Cuando la compilacin termina correctamente, se crean los archivos binarios. Binario es sinnimo de ejecutable. Para compilar necesito un compilador, un programa que chequea la sintaxis del cdigo. El compilador que se utiliza es el gcc. Anteriormente tambin les hablamos de Makefiles. Los Makefiles son archivos que contienen las rdenes para hacer varias compilaciones juntas, y establecer opciones especiales para la compilacin.

Para qu compilar el kernel?

Existen varias respuestas a esta pregunta. Una respuesta elegante sera: Para tener buen rendimiento entre el software y el hardware. Esto quiere decir, voy a adaptar Linux a la arquitectura de mi equipo, voy a habilitar caractersticas que necesito o deshabilitar dispositivos que no tengo instalados. Esto proporciona rapidez y optimiza el funcionamiento. A veces hay que compilar el kernel para dar soporte a algunos dispositivos que el sistema no reconoce. Es agregarle drivers. Es una forma de optimizar, tener slo los dispositivos que utilizamos, evitando as saturar el kernel con multitud de controladores innecesarios, que slo entorpecen su funcionamiento. Tambin podemos usar los mdulos, los cuales slo se cargan cuando se necesitan, con el ahorro de memoria que esto supone. Nos brinda la oportunidad de configurar manualmente nuestro sistema. Si tenemos algunos problemas y entendemos la programacin en C (el lenguaje en el que est escrito el kernel de Linux) los podemos solucionar, ya que disponemos del cdigo y libertad para modificarlo a nuestro gusto. De esta forma, al final tendremos un sistema hecho a medida, y slo con los dispositivos que necesitamos. Nota: Slo podemos compilar el kernel como superusuario o root.

Empecemos con la compilacin del kernel

En primer lugar para poder compilar el kernel necesitamos tener los fuentes del mismo. Si hemos cargado las fuentes del kernel precompilado de nuestra distribucin, tendremos las mismas en el directorio /usr/src/linux o /usr/src/linux-2.6.8 o /usr/src/kernel-source-2.6.8 Dependiendo de la distribucin. En caso de no tener los fuentes, debemos conseguirlos, ya sea de los CD-ROM de instalacin, o bajarlos de internet. Recuerde que la pgina oficial es http://www.kernel.org. Todo el proceso de compilacin debe hacerse en el directorio /usr/src/linux, que es donde estn los fuentes y se basa en una serie de comandos y configuraciones que veremos a continuacin. Los fuentes vienen en formato .tar.gz o .tar.bz2. Una vez que tenemos los fuentes en nuestra mquina debemos descomprimirlos en un directorio, lo comn es hacerlo en /usr/src/ Debemos descomprimirlos. Premiere IT S.R.L. Pgina 83

LOC: Linux Original Courseware


# tar xvzf kernel-source-2.6.8.tar.gz

# tar xvjf kernel-source-2.6.8.tar.bz2

Se crear un directorio llamado kernel-source.2-6.8. Nos conviene crear un link, con el comando
# ln s kernel-source.2-6.8 linux

Ahora ya estamos listos para empezar. Nos ubicamos en /usr/src/linux. Para modificar las opciones que debe llevar el nuevo kernel, podemos optar entre 3 formas de configuracin, cada una de las cuales es ms visual que la anterior
make config

basado en la consola en modo texto y funciona a base de preguntas a las que contestaremos y/n/m. Para compilar algo como parte del kernel hay que contestar "y", para compilarlo como mdulo, "m", y para no compilarlo se debe contestar "n".
make menuconfig

basado en modo texto, funciona a base de una ventana de menes bastante grfica y con ayudas, las opciones se seleccionan con la barra espaciadora.
make xconfig

basado en un interface muy visual en Tcl/Tk, para ser usado en X-Window. Elegimos uno de los tres tipeando el comando correspondiente, y el sistema nos preguntar el valor para las diferentes opciones para el kernel, a las que contestaremos con y (SI incluir en el kernel), n (no incluir en el kernel) o m (de mdulo: compilarlo pero no incluirlo, para poder incluirlo en cualquier otro momento mediante comandos). Los mdulos se usan para opciones que no se utilicen habitualmente, como por ejemplo una unidad zip, pero cosas como las tarjetas de sonido deberan incluirse directamente en el kernel, ocupando memoria. Las opciones se agrupan en subsecciones generales, de red, de sonido, etc. en las cuales tendremos que elegir los parmetros correspondientes al hardware instalado en nuestro PC. Si por ejemplo no tuvisemos impresora pero en el futuro pensramos adquirir una, es posible compilar el soporte para puerto paralelo como mdulo para poder insertarlo ms adelante. Por otra parte, una eleccin casi siempre imprescindible es la de Sistema de ficheros iso9660, vfat y codepages 437, 850 y NLS ISO-8859-1 para poder montar CD-ROMs y unidades con nombres largos o FAT32. Es importante una opcin llamada "loadable modules support" que nos permite agregar mdulos en el sistema. Un mdulo es una parte del kernel que se carga en la memoria slo cuando se la necesita y se descarga cuando ya no es necesaria, compilar partes del kernel como mdulos har que el sistema funcione ms rpido, sin embargo no es bueno compilar como mdulos cosas que se van a usar constantemente ya que su continua carga y descarga ralentizara el sistema. Adems, compilar como mdulos cosas que son necesarias para arrancar el sistema har que el nuevo kernel no sea capaz de arrancar, esto se debe a que los mdulos se encuentran en el sistema de archivos y no estn disponibles hasta que se montan. Por ejemplo, compilar el soporte para el sistema de ficheros ext2 o ext3 como mdulo en un sistema cuya particin raz es un sistema de ese tipo nos dejar un kernel inservible. Hay muchas opciones a las que contestar, y es posible que no sepamos lo que hacen una buena parte de ellas, la ayuda que tiene cada opcin es bastante buena y nos dar una idea de lo que debemos contestar. En cualquier opcin podemos pulsar F1 para obtener ayuda (segn el make realizado) sobre el tema en cuestin, que adems normalmente nos informar el tamao que ocupara dicha opcin en el kernel en caso de ser activado y lo que es recomendado en ese caso. Una vez marcadas todas las opciones deberemos salir guardando los cambios. Algunas de las diferentes secciones que suelen encontrarse al abrir el kernel son:
Code maturity level options: -> Opciones para permitir drivers en desarrollo. Loadable module support: -> Opciones sobre permitir la utilizacin de mdulos. General setup: -> Cosas generales: emulado de coprocesador, tipo de procesador, etc. Floppy, IDE, and other block devices: -> Unidades IDE y ATAPI. CUIDADO: El soporte para IDE o SCSI debe ir como Y (no como mdulo). Networking options: -> Opciones de red. SCSI support: -> Soporte para dispositivos SCSI. Network device support:

Premiere IT S.R.L.

Pgina 84

LOC: Linux Original Courseware


-> Propiedades de red. ISDN subsystem: -> Para tarjetas ISDN. CD-ROM drivers (not for SCSI or IDE/ATAPI drivers): -> Drivers CDROM para unidades no IDE, ATAPI o SCSI. Filesystems: -> Sistemas de ficheros: vfat, msdos, ext2, NTFS, etc... CUIDADO: El soporte para ext2, ext3 debe ir como Y (no como mdulo). Character devices: -> Configuracin de impresora, mouse no serie, etc. Sound: -> Parmetros de la tarjeta de sonido. Kernel hacking: -> Extras avanzados para desarrolladores del kernel.

Tras elegir las opciones salimos grabando, tipeamos: Save and Exit A continuacin procederemos a compilar todo aquello que acabamos de marcar. Este paso suele tardar algn tiempo. Hacemos: # make dep crea las dependencias de los mdulos. # make clean borra las configuraciones anteriores. # make bzImage este paso es muy importante ya que comprime el kernel que hemos creado. Ahora vamos a crear y a compilar los mdulos: # make modules crea los mdulos que hemos definido. # make modules_install genera los directorios e instala los mdulos creados en el paso anterior. Nota Estos pasos que vimos recin, a partir de las versiones de kernel 2.6, pueden reducirse a los siguientes:
#make

Llama al compilador y empieza a chequear todo el cdigo fuente, controla la sintaxis, las dependencias y si todo d ok, crea el kernel.
#make modules

Compila los mdulos.


#make modules_install

Una vez realizada la compilacin de los mdulos los instala. Esto colocar los mdulos en el directorio /lib/modules/2.6.8 Una vez en este punto, lo que nos queda hacer es copiar el nuevo kernel a su lugar para poder arrancarlo. La compilacin deja el kernel en el directorio /usr/src/linux/arch/i386/boot/ con el nombre de bzImage. En la mayora de distribuciones se colocan los kernels en el directorio /boot, es lo que haremos:
# cp bzImage /boot/vmlinuz-2.6.8-1

Nota: En este paso debe tener cuidado. Note que el archivo copiado a /boot tiene otro nombre, en este ejemplo, le agregamos un -1. Si lo nombramos igual que el kernel existente, sobreescribiremos el kernel que est funcionando. Ahora lo que falta para que el nuevo kernel pueda arrancar, es agregar algunas lneas en el archivo de arranque, del programa lilo o grub, el que est utilizando en mi sistema Linux. Unas lneas ms adelante lo veremos. Antes vamos a aclarar algo. Los pasos que vimos recin sirven para compilar el kernel en cualquier distribucin Linux En Debian vamos a cambiar una parte, ya que para instalar software, acurdense que usbamos el comando aptget install. Bueno, el kernel es un software, un programa, por lo tanto podemos usar este comando. La diferencia es que en el caso del kernel, como yo quiero compilarlo, no quiero el programa ejecutable, instalado y funcionando, como lo hace apt-get install, aqu quiero instalar el cdigo fuente, y nosotros lo haremos ejecutable a nuestro gusto. Para ello hacemos:

Premiere IT S.R.L.

Pgina 85

LOC: Linux Original Courseware


# # # # # # # apt-get install debhelper modutils kernel-package libncurses5-dev apt-get install kernel-source-2.6.8 cd /usr/src tar --bzip2 -xvf kernel-source-2.6.8.tar.bz2 (dentro del directorio /usr/src) cd kernel-source-2.6.8 ln s kernel-source.2-6.8 linux make menuconfig

Luego siguen los pasos como en el caso anterior Otra forma, vlida solo en Debian
# make-kpkg clean # indispensable (consultar: man make-kpkg)

Edicin del archivo de arranque


# cat /etc/lilo.conf boot=/dev/hda map=/boot/map install=/boot/boot.b prompt timeout=50 message=/boot/message linear default=linux

Primero veamos como es este archivo:

image=/boot/vmlinuz-2.6.8 label=linux initrd=/boot/initrd-2.6.8.img read-only root=/dev/hda2 other=/dev/hda1 label=dos table=/dev/hda

Lo editamos y le aadimos una nueva entrada que dir:


image=/boot/vmlinuz-2.6.8-1 label=linuxnuevo # aqu va el nombre que quiera ponerle. read-only initrd=/boot/initrd-2.6.8-1.img append=opciones # aqu van las opciones que necesiten. Por ejemplo: append="hdc=ide-scsi" (esto sera para una grabadora)

Nota: Si se construy una nueva imagen initrd hay que decirle a lilo que la use. Luego de hacer esto hay que reinstalar el lilo para ver si es tomado el nuevo kernel. Para ello tipeamos el comando lilo sin parmetros (esto har que se verifique la configuracin de lilo y adems se prepare todo para el prximo booteo de la PC).
# lilo [Enter]

Si hay error entonces ser indicado, puede ser un error de tipeo en alguna sentencia, se modifica el /etc/lilo.conf y se vuelve a ejecutar el comando lilo. Luego se reinicia la PC y se bootea con el nuevo kernel. Si todo funciona bien, entonces no habra problemas y el nuevo kernel arrancar nuestro sistema. En caso contrario o si hay duda se puede consultar el Kernel-Como o HOW-TO. Ahora cuando el sistema arranca y se pulsa Tab en la lnea de comandos de lilo boot:, las opciones disponibles se mostrarn
LILO boot: linux linuxnuevo [Pulsar Tab] dos

Premiere IT S.R.L.

Pgina 86

LOC: Linux Original Courseware Para arrancar el kernel viejo (linux) basta con presionar Enter, o esperar a que se acabe el tiempo de espera. Si que quiere arrancar con el nuevo (linuxnuevo), tipear linuxnuevo y pulsar Enter. No conviene borrar el kernel viejo ni eliminarlo del archivo de configuracin de lilo, si el nuevo kernel no funciona, lo cual es muy probable las primeras veces, siempre podremos volver a arrancar con el viejo kernel para hacer los cambios necesarios. Si el nuevo kernel es simplemente incapaz de arrancar el sistema, lo ms probable es que nos hallamos contestado "n" o "m" a alguna opcin en la que tenamos que haber dicho "y". Si lo que no funciona es otra cosa, algn perifrico, alguna aplicacin, etc. es probable que nos hayamos olvidado de compilar el soporte para ese dispositivo o que hayamos elegido una opcin equivocada. En cualquier caso no pasa nada si el kernel recin compilado no funciona como queramos, el kernel viejo seguir funcionando igual que antes. Ahora veamos como modifico el archivo de arranque si tengo instalado GRUB El archivo de configuracin es: /boot/grub/menu.lst
boot=/dev/hda default=0 timeout=10 title Debian GNU/Linux (2.6.8) root (hd0,1) kernel /boot/vmlinuz-2.6.8 ro root=LABEL=/ initrd /boot/initrd-2.6.8.img title Debian GNU/Linux (2.6.8-1) root (hd0,1) kernel /boot/vmlinuz-2.6.8-1 ro root=LABEL=/ initrd /boot/initrd-2.6.8-1.img title windows root (hd0,0) chainloader +1

Aqu se llama distinto a los dispositivos. Los discos y las particiones se numeran de esta forma: (hd0,1), que se corresponde con root=/dev/hda2 hd0 es el primer disco, lo que en lilo llamamos hda 1 es la segunda particin, la que normalmente llamamos hda2. Se numeran comenzando de 0. En el primer prrafo default=0 quiere decir que arranca el primer sistema que est listado, en este caso, el sistema viejo, el de kernel sin compilar. Reiniciamos y deberamos tener las tres opciones en el arranque. Cmo se compila un kernel en RedHat? Lo que vimos hasta ahora, es la forma tradicional de instalar un kernel desde fuentes. RedHat nos ofrece la opcin de hacer un make rpm luego de compilar el kernel y los mdulos que justamente hace eso, un rpm que luego podramos instalar con el rpm -i paquete.rpm y no habra que modificar nada en el lilo. Esto igualmente tiene una limitacin y es que solo se aplica a fuentes bajadas del sitio de RedHat dado que el Makefile esta modificado para poder hacer un rpm. Cmo se compila un kernel en Debian? En Debian en lugar del make rpm, tenemos una aplicacin dedicada a compilar fuentes, no solo del kernel y se llama make-kpkg. Esta aplicacin va a analizar el makefile y va a compilarlo (recuerden que el make rpm no lo compila) y del resultado de la compilacin va a generar un paquete deb instalable con el dpkg que har las modificaciones que correspondan en el lilo o grub. Lo bueno de este mtodo, es que con solo pasar ese archivo que nos gener a otro equipo, vamos a poder instalar este kernel en otra mquina y de esta forma poder tener un equipo dedicado a las compilaciones de todos los equipos de nuestra red y no poner en riesgo el servicio compilando kernels en nuestro servidor productivo. Premiere IT S.R.L. Pgina 87

LOC: Linux Original Courseware

Estructura del kernel modular


Mdulos Cargables
El ncleo de un sistema Linux/UNIX puede ser representado bajo la forma de un objeto monoltico. Sin embargo, tal objeto posee el inconveniente de ser grande y esttico. Cada vez que se desee agregar un nuevo dispositivo, es necesario recompilar el ncleo. Adems, si uno utiliza ciertos drivers particulares raramente, se est obligado a tenerlo en el ncleo, lo cual tiende a consumir memoria.

Que es un mdulo cargable?

Los mdulos cargables, permiten reunir lo til y lo necesario teniendo un ncleo lo ms pequeo posible, cargando bajo demanda aquello que necesita, sea de una forma manual por el super-usuario, o de una manera automtica, por medio del demonio kerneld o kmod. De esta forma, la ganancia de recursos no es nada despreciable. Una vez que la compilacin del ncleo se ha realizado, los mdulos se encuentran en el directorio /lib/modules/x.y.z donde x.y.z corresponde al nmero de versin del ncleo. En el caso nombrado anteriormente, sera por ejemplo 2.6.8. La administracin de mdulos est basada en los siguientes comandos: insmod inserta un mdulo en el ncleo. Se puede usar con opciones modprobe inserta el mdulo previa prueba. Se puede usar con opciones rmmod descarga un mdulo, si ningn proceso lo utiliza lsmod Lista los mdulos cargados, de cada uno presenta nombre, tamao, cuenta de usos y lista de mdulos que lo usan (es equivalente a cat /proc/modules) depmod permite calcular dependencias entre varios mdulos o entre todos los disponibles con la opcin -a. Un mdulo puede requerir otros, hay dependencias que deben respetarse al cargar y descargar mdulos. Por defecto depmod -a escribe las dependencias en el archivo /lib/modules/2.6.8/modules.emp. Cada lnea de ese archivo tiene el nombre de un mdulo seguido del caracter ':' y los mdulos de los cuales depende, separados por espacios.

El archivo /etc/modules.conf

Puede suceder que sea necesario configurar un ltimo archivo: el archivo /etc/modules.conf o /etc/conf.modules, segn la distribucin de Linux que est utilizando. Es el archivo que usan los comandos de mdulos nombrados anteriormente. Este archivo contiene las rutas donde se encuentran los mdulos que deben ser cargados y a continuacin los alias para los mdulos. Las lneas son de este estilo:
option nombre_modulo opt1 [opt2 .. optn]

Donde opt1, opt2, etc. son las opciones o parmetros del mdulo. Una configuracin interesante es la creacin de sobrenombre o alias a los mdulos. Sirve para no tener que recordar nombres como via82cxxx_audio y en reemplazo usar placa_sonido por ejemplo. Su sintaxis es:
alias nombre_alias nombre_modulo

Algunos scripts de configuracin del sistema tienen palabras definidas para cargar los mdulos correspondientes y es necesario que el usuario edite /etc/modules.conf y asigne alias al modulo. Un ejemplo clsico sera:
alias sound sb alias eth0 ne2k-pci

que asigna el alias sound a un mdulo de Sound Blaster y eth0 al mdulo ne2k-pci para la placa de red. Nota: Puede suceder que al momento del primer arranque obtenga este mensaje:
Cannot locate module for net-pf-3 Cannot locate module for net-pf-4 Cannot locate module for net-pf-5

No se asuste! Este mensaje significa que no encuentra los alias. Para no tenerlo ms, aada en el archivo /etc/conf.modules:
alias net-pf-3 off alias net-pf-4 off alias net-pf-5 off

Premiere IT S.R.L.

Pgina 88

LOC: Linux Original Courseware Puede suceder que ciertos dispositivos tengan necesidad de ciertos parmetros particulares. Consulte el documento Kernel HOW-TO.

El archivo /etc/modules

En este archivo, vamos a encontrar la lista de mdulos que se cargan en el arranque, con solo sacar o poner el nombre del mdulo el mismo no va a volver a cargarse en el siguiente arranque. Para administrar este archivo o tambin para cargar mdulos en el momento podemos usar una aplicacin llamada modconf.

Parches para el kernel

A veces en vez de instalar un kernel completo, nos alcanzara con solo instalar el parche que necesitamos Cuando lo tenemos, por ejemplo porque lo descargamos de internet, lo movemos al directorio /usr/src Aqu lo descomprimimos
#gunzip patch-2.6.9.test2

Luego aplicamos el comando:


#patch -po <patch-2.6.9.test2 Ahora vamos al directorio /usr/src/linux y tipeamos #make menuconfig

y seguimos con los pasos ya vistos de compilacin.

Premiere IT S.R.L.

Pgina 89

LOC: Linux Original Courseware

Captulo 6
Redes
Conceptos Bsicos
Esta seccin ofrece una mirada bsica a trminos y conceptos relacionados con TCP/IP que sern usados durante el curso. Algunos trminos y conceptos bsicos: Paquete Se denomina as a la informacin que se enva a travs de la red. Un mensaje generalmente contiene varios paquetes, que deben ser distribuidos en orden con sus datos intactos. Los niveles de protocolos superiores, TCP y UDP, son usados para ayudar a asegurar la entrega y orden apropiados. Protocolo Un protocolo es un conjunto de reglas que rigen el funcionamiento de algunas funciones de comunicacin. Por ejemplo, IP consiste en un conjunto de reglas para encaminar datos y TCP incluye reglas para la entrega fiable de datos en secuencia. Protocolo TCP Protocolo para el control de la transmisin. Protocolo de la capa de transporte orientado a conexin que provee una transmisin confiable de datos de full duplex. TCP es parte del stack de protocolo TCP/IP. Protocolo UDP Protocolo de datagrama de usuario. Protocolo sin conexin de la capa de transporte del stack (pila) de protocolo TCP/IP. UDP es un protocolo simple que intercambia datagramas sin confirmacin o garanta de entrega y que requiere que el procesamiento y retransmisin de errores sean manejados por otros protocolos. Protocolo ICMP Protocolo de mensajes de control en Internet. Protocolo Internet de capa de red que informa errores y brinda informacin relativa al procesamiento de paquetes IP. Host Tambin designado nodo final, el trmino host se refiere a los dispositivos configurados como parte de una red. Un host puede ser un mainframe, una minicomputadora, una PC hogarea, workstations, servidores de archivos, y cualquier otro dispositivo perifrico como impresoras, etc. Direccin Cada nodo debe tener una direccin nica para comunicarse va TCP/IP. La direccin debe seguir el formato de direccin IP. Los cuatros octetos de la direccin IP identifican el host y a la red donde ese host reside. Cada host tendr adems una direccin MAC (Media Access Control) de 6 bytes, que est codificada en la tarjeta de red. Nombres Cada host debe tener un nombre nico. Un mtodo comn para manejar nombres es DNS (Domain Name System). Los servidores DNS mapean direcciones IP a nombres DNS. Nota: Los servidores DNS se vern en prximos captulos. Routers Los routers conectan redes entre s, usando una parte de la direccin IP en la red para identificar la subred apropiada. Una vez localizada, habindole pasado el paquete a un router directamente conectado a la red, el paquete es entregado usando la direccin del host. Como el router encamina datos por una red, quienes escribieron las normas de TCP/IP adoptaron la palabra pasarela (Gateway). Es un conjunto de redes, locales y/o pblicas, conectadas a travs de routers en una red de rea extensa. Se refiere a la transmisin de un paquete que se recibe por cada dispositivo en la red. En la prctica, el broadcast estar limitado al llamado broadcast domain, es decir a un area lgica separada de otra por un router y a aquellos dispositivos que compartan la misma subred y gateway adres. Es el evno de paquetes a un solo destino. Unicast se deriva de la palabra broadcast. Unicast es el extremo opuesto: uno solo enva y uno solo recibe.

Internet Broadcasting (difusin)

Unicast

LAN, WAN y enlaces


Una red de rea local (LAN-Local Area Network) es una red de datos cuyo objetivo es dar servicio a un rea relativamente pequea, normalmente de unos pocos kilmetros, cuadras, o menos distancia. Una red de rea extensa (WAN-Wide Area Network) cubre una mayor rea geogrfica y normalmente se construye utilizando lneas serie telefnicas y servicios de conmutacin de paquetes. El trmino enlace es ms general, e incluye cualquier medio, de rea local o extensa, que utilizan los nodos para comunicarse mediante un protocolo de nivel de enlace. Premiere IT S.R.L. Pgina 90

LOC: Linux Original Courseware

El modelo de referencia OSI


El modelo OSI divide el problema de la comunicacin entre equipos a travs de redes en siete problemas ms simples. Estos siete problemas simples fueron elegidos debido a que son razonablemente independientes y, por lo tanto, ms sencillos de resolver. Estos siete problemas simples originan las siete capas del modelo OSI. 7 6 5 4 3 2 1 Aplicacin Presentacin Sesin Transporte Red Enlace de datos Fsica -> Proceso de red hacia las aplicaciones -> Representacin de datos -> Comunicacin entre host -> Conexiones de extremo a extremo -> Direcciones y mejor ruta -> Acceso a los medios -> Transmisin binaria Capas de host: Controlan la entrega de datos precisa entre equipos Capas de medios: Controlan la entrega fsica de mensajes a travs de la red

Las capas ms bajas del modelo (de 1 a 3) controlan la transmisin fsica de mensajes a travs de la red, a menudo se las denomina capas de medios. Por otro lado las capas superiores (de 4 a 7) se encargan de la transmisin precisa de datos entre equipos de la red, por lo cual se las denomina capas host. Breve explicacin de las capas del modelo OSI

Capa 7: Capa de aplicacin

Es la capa ms cercana al usuario, esta capa brinda servicios de red a las aplicaciones del usuario. Las aplicaciones hablan con esta capa. Ejemplo de dichos procesos de aplicacin son: SMTP - Simple Mail Transfer Protocol (Protocolo Simple de Transferencia de Mail) FTP - File Transfer Protocol (Protocolo de Transferencia de Archivos) SMB - Server Message Block (Bloque de Mensajes de Servidor)

Capa 6: Capa de presentacin

Asegura que la capa de aplicacin de un sistema pueda leer la informacin enviada por la capa de aplicacin de otro sistema. Si fuera necesario, esta capa realiza una traduccin entre varios formatos de representacin de datos utilizando un formato de representacin de datos comn. Por ejemplo realiza traduccin de datos, encriptacin, compresin, conversin de juegos de caracteres. Ejemplos pueden ser: El redirector de red SMB y FTP

Capa 5: Capa de sesin

Establece, administra y finaliza las sesiones entre aplicaciones. Cada sesin es un dilogo entre dos o ms entidades de presentacin. Esta capa brinda servicios a la capa de presentacin. Adems, la capa de sesin sincroniza el dilogo entre las entidades de la capa de presentacin y administra el intercambio de datos. Proporciona los recursos para la sincronizacin de unidades de dilogo, clase de servicio e informes de excepciones relacionados con problemas de las capas de sesin, de presentacin y de aplicacin. Ejemplos: Nombres NetBIOS Sockets TCP/IP

Capa 4: Capa de transporte

Segmenta y reensambla los datos en un flujo de datos. Es como decir, reensambla paquetes en mensajes. Anteriormente dijimos que las capas de aplicacin, presentacin y sesin estn relacionadas con asuntos de aplicacin, mientras que las cuatro capas inferiores se encargan del transporte de los datos. Esta capa suministra un servicio de transporte de datos que proteja a las capas superiores de los detalles de implementacin del transporte. Proporciona mecanismos para el establecimiento, mantenimiento y finalizacin ordenada de los circuitos virtuales, la deteccin y recuperacin de fallos de transporte y el control del flujo de informacin. Asegura que los paquetes sean: Libres de Errores, en Secuencia Correcta, No Duplicados y, por sobre todo, que No se Pierdan. Ejemplos: TCP - Transmision Control Protocol (Protocolo de Control de Transmisin) UDP - User Datagram Protocol (Protocolo de Datagramas de Usuario) SPX - Sequenced Packet eXchange (Intercambio Sequencial de Paquetes)

Premiere IT S.R.L.

Pgina 91

LOC: Linux Original Courseware

Capa 3: Capa de red

Es una capa compleja que proporciona conectividad y seleccin de ruta entre dos sistemas finales que pueden estar ubicados en redes geogrficamente distintas. Provee Ruteo y Direcciones Lgicas para traduccin a Direcciones fsicas. Ejemplos: IP - Internet Protocol (Protocolo de InterNet) IPX - Internetwork Packet eXchange (Intercambio de Paquetes entre Redes)

Capa 2: Capa de enlace de datos

Ofrece un trnsito confiable de la informacin a travs del enlace de datos pasando por un enlace fsico. Para hacerlo, la capa de enlace de datos se ocupa de direccionamiento fsico, notificacin de errores, entrega ordenada de tramas y control de flujo. Ejemplos: Ethernet Token Ring Define las especificaciones elctricas, mecnicas, de procedimiento y funcionales para activar, mantener y desactivar el enlace fsico entre sistemas finales. En esta capa se definen caractersticas tales como niveles de tensin, sincronizacin mxima, conectores fsicos y atributos similares. La capa fsica es la que traduce bits en los signos apropiados para el medio. Ejemplos: Adaptador de Red Fibra ptica Cable 10Base100 Conexin Inalmbrica

Capa 1: Capa de fsica

Comunicacin entre capas

La comunicacin entre capas se da a nivel vertical, lo que vimos anteriormente. La informacion pasa por todas las capas en orden y sin saltearse ninguna. Todas las capas son requeridas para que se d la comunicacin. Tambin hay una relacin entre capas a nivel horizontal. En los sistemas para ejecutar tareas de comunicacin, una capa debe comunicarse con su capa de igual nivel del otro sistema. El protocolo de cada capa intercambia informacin, denominada unidad de datos de protocolo (PDU), entre capas iguales. Aplicacin Presentacin Sesin Transporte Red Enlace de datos Fsica Aplicacin Presentacin Sesin Transporte Red Enlace de datos Fsica

Segmentos Paquetes Tramas Bits

Conjunto de Protocolos TCP/IP


Su relacin con el Modelo OSI
En la actualidad, las funciones propias de una red de computadoras pueden ser divididas en las siete capas propuestas por ISO para su modelo de sistemas abiertos (OSI). Sin embargo la implantacin real de una arquitectura puede diferir de este modelo. Las arquitecturas basadas en TCP/IP proponen cuatro capas en las que las funciones de las capas de Sesin y Presentacin son responsabilidad de la capa de Aplicacin y las capas de Enlace de Datos y Fsica son vistas como la capa de Interface a la Red. Por tal motivo para TCP/IP slo existen las capas Interface de Red, la de Intercomunicacin en Red, la de Transporte y la de Aplicacin. Como puede verse TCP/IP presupone independencia del medio fsico de comunicacin, sin embargo existen estndares bien definidos a los nivel de Enlace de Datos y Fsico que proveen mecanismos de acceso a los diferentes medios y que en el modelo TCP/IP deben considerarse la capa de Interface de Red; siendo los ms usuales el proyecto IEEE802, Ethernet, Token Ring y FDDI.

Direccin IP
Esta seccin introduce los fundamentos del direccionamiento IP. Se presentar la forma en que una direccin IP debe ser organizada. Los siguientes puntos son argumentados dentro de esta seccin: Fundamentos de la direccin IP Premiere IT S.R.L. Pgina 92

LOC: Linux Original Courseware Coordinacin de la direccin IP Organizando direcciones Clasificacin de redes Direcciones especiales Fundamentos de subredes

Fundamentos de la direccin IP

Cada host es asignado a una direccin IP nica para cada conexin de red (placa de red instalada). La direccin IP se utiliza para identificar un origen de paquetes y hosts de destino. Una direccin IP es un valor de 32 bits escrito en forma de cuatro octetos. Un octeto es un byte, por lo tanto los valores que puede tomar cada octeto varan de 0 a 255. La forma correcta de escribir la direccin IP es poniendo puntos separando los 4 octetos. Por Ejemplo: 192.168.67.2 Cada direccin tendr adems una mscara de red o subred asociada, dividiendo la direccin en el prefijo de su red y el sufijo del host. Por ejemplo: 255.255.255.0 La mscara de subred se utiliza para identifica las porciones de red y host de la direccin. Red 255.255.255 Host 0

La porcin de red identifica dnde est localizado el host, y la porcin del host identifica el dispositivo conectado a esa red. La asignacin de direcciones IP en Internet debe ser cuidadosamente coordinada. Con millones de hosts operando en miles de redes, el problema de duplicar direcciones es significativo. Una red conectada a Internet debe obtener una clase de direccin oficial y, recin entonces una direccin de red nica. Oficialmente, las direcciones se obtienen de DDN-NIC (Defense Data Network - Network Information Center). En realidad, prcticamente usted recibir su direccin de su proveedor de Internet (ISP Internet Service Provider). A una organizacin se le asigna una direccin de red. La organizacin puede en un futuro dividirla en sus propias subredes asignando direcciones de host. La razn principal para esto se relaciona con el funcionamiento de la red y el ancho de banda disponible. Sin separar las redes, cada transmisin sera un broadcast a travs de la red interna, esperando que el sistema de destino responda. A medida que la red crece, el trfico se incrementa hasta que excede al ancho de banda disponible. Cuando una red est dividida en subredes, todos los miembros de la subred tendrn el mismo prefijo de red. Los routers dividen las redes y proveen comunicaciones entre redes. Los paquetes dirigidas a un destino dentro de la red local son mantenidos dentro. Slo los paquetes dirigidos a otras redes son propagados a travs de la red, movindose de router a router. Los niveles totales de trfico son reducidos.

Coordinacin de direccin IP

Organizando direcciones

Antes de ver cmo se implementan direcciones IP, veamos algunos lmites tericos. Si todos los bits disponibles en una direccin fueran usados para direcciones de hosts, una direccin de 32 bits debera soportar ms de 4 billones de hosts (2 elevado a la 32). hhhhhhhh.hhhhhhhh.hhhhhhhh.hhhhhhhh El problema es que el total de los sistemas deberan estar en una red simple. Esto resultara en una situacin similar a 4 billones de personas hablando al mismo tiempo. Ya hemos mencionado, TCP/IP logra algo como esto mediante subredes. Si el primer octeto fuera dado a direcciones de redes, usted podra, en teora, direccionar 256 redes y alrededor de 16 millones de hosts en cada una. nnnnnnnn.hhhhhhhh.hhhhhhhh.hhhhhhhh Esto podra causar algunos problemas obvios, uno es el muy limitado nmero de redes y el otro es el alto nmero de hosts en cada red.

Premiere IT S.R.L.

Pgina 93

LOC: Linux Original Courseware El tamao de cada red puede ser disminuido dedicndole por ejemplo dos octetos a la direccin del host. Con esta configuracin, se pueden direccionar 65.536 redes con 65.536 hosts cada una. nnnnnnnn.nnnnnnnn.hhhhhhhh.hhhhhhhh Las grandes organizaciones encontraran en esto una solucin apropiada, pero para muchos negocios, esto producira muchas ms direcciones de host de las necesarias. Llevando el proceso a un paso ms, los primeros tres octetos podran estar dedicados a la direccin de red. nnnnnnnn.nnnnnnnn.nnnnnnnn.hhhhhhhh Potencialmente, esto soportara hasta 16 millones de redes con 256 hosts en cada una. Recuerde que estas son frmulas tericas. Los valores del mundo real son menores. Obviamente, ninguna solucin cubre las necesidades de cada empresa. Las direcciones IP han sido clasificadas para diferenciar los niveles de direccionamiento.

Clasificacin de redes

Para definir la clase de red, debemos ver en qu rango se encuentra el primer octeto de la direccin. Pero para que la clase de red est totalmente determinada, lo que debo conocer adems de la direccin IP, es su mscara (netmask). Clase A B C D: Multicast E: Experimental Direcciones de Red Inicio Fin 0.0.0.0 127.255.255.255 128.0.0.0 191.255.255.255 192.0.0.0 223.255.255.255 224.0.0.0 239.255.255.255 240.0.0.0 254.255.255.255 Mascara de Red 255.0.0.0 255.255.0.0 255.255.255.0 Cantidad Redes Nodos 128 16777214 16384 65534 2097152 254

Red Clase A En una red clase A, el primer octeto define la porcin de direccin para la red (de 0 a 127). Los ltimos tres octetos son usados para realizar subneting y la direccin de host. En el primer octeto, el primer bit (llamado tambin el ms importante o de alta categora) debe ser seteado como cero. Slo los ltimos siete bits significativos son usados para direccionar y pueden ser seteados como cero o como uno. Esto define 128 redes clase A con direcciones de red que van de 0 a 127. Fuera de esto, slo 126 son direcciones utilizables, 0 y 127 se reservan. Una mscara de subred por defecto 255.0.0.0 se asigna a redes clase A. Esto significa que usted no debera cambiar el valor de ningn nmero posicionado en el primer octeto, el asignado a direccin de red. El primer octeto siempre determina al menos una porcin de la direccin de red ya que este nmero no puede ser cambiado una vez asignado. Las redes clase A direccionan hasta 16.777.214 (224-2) hosts. No se puede usar .0.0.0 o .255.255.255 como la parte de la direccin para el host. La direccin de host de todos ceros representa esta red, y una direccin de host de todos unos representa difusin a todos los nodos (broadcast). Red Clase B En una red clase B, los primeros dos octetos son usados para la direccin de red. Los ltimos dos octetos son usados para subredes y direcciones de host. El bit ms importante del primer octeto debe ser seteado como uno. El segundo ms importante debe ser seteado como cero. Los siguientes 14 bits son utilizados para determinar la direccin de red. Esto nos da 16.384 (214) redes clase B, que se extiende de 128.0 a 191.255. Una mscara de red por defecto 255.255.0.0 es asignada a una red clase B. Esto significa que no podemos cambiar el valor de un nmero posicionado en los primeros dos octetos. Las redes clase B direccionan 65.534 (216-2) hosts. El valor de todos ceros o todos unos no puede ser usado como valor para una direccin. A direccin de host de todos ceros representa esta red, y una direccin de host de todos unos representa difusin a todos los nodos.

Premiere IT S.R.L.

Pgina 94

LOC: Linux Original Courseware Red clase C En una red clase C los tres primeros octetos son usados para la direccin de red. El ltimo octeto es usado para las subredes y direcciones de host. Los primeros dos bits del primer octeto deben ser seteados como uno y el bit siguiente debe ser un cero. Los ltimos 5 bits del primer octeto, ms los 16 bits de los prximos 2 octetos son usados para determinar la direccin de red. Esto nos provee 2.097.152 (221) redes clase C, extendindose desde 192.0.0 a 223.255.255. Una mscara de red por defecto 255.255.255.0 es asignada a una red clase C. Esto significa que no podemos cambiar el valor de un nmero posicionado en los primeros tres octetos. Las redes clase C direccionan 254 (28-2) hosts. El valor cero o 255 no puede ser usado como valor para una direccin en el ltimo octeto. El nmero cero representa esta red, y el nmero 255 representa difusin a todos los nodos. Red Clase D Este tipo de red se usa para transmisiones multicast, por ejemplo para transmitir voz y datos, o video y datos. Se usa en casos especiales que no corresponden al nivel de este curso. Red clase E Se usan direcciones IP dentro de esta categora para desarrollo de nuevas tecnologas, protocolos, etc. Es experimental.

Direcciones especiales

Hay varias estructuras de direcciones especiales sobre las que tiene que conocer. Esto se rige bajo ciertas pautas de principios generalmente aceptados. Estas convenciones estn documentadas y utilizados en Internet y son parte del Protocolo de Internet. Destino Host en esta red Difusin local Difusin dirigida Loopback Red Todos CEROS Todos UNOS ID de la red 127 Host ID del host Todos UNOS Todos UNOS Cualquier cosa

Como estas direcciones se definieron para un uso especfico, no estn disponibles para ser direcciones de hosts. Otras direcciones invlidas seran las siguientes: Mscara de subred inapropiada Direcciones clase D Direcciones clase E Direcciones duplicadas Dos sistemas, separados por un router, con la misma direccin de red. Dos sistemas, en la misma red fsica, con diferentes direcciones de red. Una direccin vlida es nica, genere una direccin de red en la clase correspondiente, y tendr una mscara de subred apropiada.

Redes Privadas

Una red interna privada es una red que no estar directamente conectada a Internet, el trmino Intranet es comnmente usado para definir redes de este tipo. Los dos ejemplos ms comunes de Intranet son: Redes que no necesitan conectarse a Internet Redes conectndose a Internet a travs de aplicaciones gateway (como servidores proxy) que remapean direcciones IP. La IANA (Internet Assigned Numbers Authority) ha apartado tres grupos de direcciones para utilizar en intranets: 10.0.0.0 10.255.255.255 172.16.0.0 172.31.255.255 192.168.0.0 192.168.255.255 Premiere IT S.R.L. Pgina 95

LOC: Linux Original Courseware Hay algunas desventajas obvias al usar estas direcciones, la primera sera que es imposible conectarse directamente a Internet o referenciar estas direcciones desde Internet. No tienen ningn significado en la comunidad global de Internet. Los routers que se conectan a Internet deberan filtrar cualquier referencia a estas direcciones.

Fundamentos de subredes

Antes de adentrarnos en subredes, reveamos las configuraciones de direcciones y redes. Cada red debe tener su propia direccin de red. Las redes estn ligadas por routers. Las mscaras de subred identifican a la red y las direcciones de host. Una clase de direccin asignada, utilizando la mscara de subred por defecto, provee una direccin de red simple. Si usted est limitado a las definiciones de la mscara de subred provistas con clases de direcciones, debera posicionar todos sus hosts en una sola red. Mientras se puede realizar esto con algunas configuraciones clase C, es realmente inverosmil hacerlo con configuraciones clase A o B. En realidad, muchas empresas hasta encuentran necesario subdividir una direccin clase C en dos o ms subredes. Se puede utilizar la mscara de subred para identificar las direcciones de su propia subred dentro de la direccin de red que le ha sido asignada. Esto se logra agregando bits adicionales a la mscara de subred por defecto. Los bits adicionales, son entonces utilizados para identificar la subred fsica.

Porqu subredes?

Por qu es necesario definir subredes adicionales a una Intranet? Con el uso apropiado de las subredes usted puede mejorar la eficiencia de su red y disear mejor por ejemplo una Intranet para resolver requisitos particulares. En el diseo deber: Mantener el trfico local como local: Esto se hace seteando las subredes y manteniendo juntos los sistemas que necesitan compartir informacin. Localizar exactamente los hosts remotos: En una red bien organizada, es mucho ms fcil setear y administrar routers. Hacer el mejor uso de las direcciones asignadas: Usted puede organizar la red para resolver mejor los requisitos de su negocio. En el momento en que usted se quiera comunicar con un host remoto en una Intranet, necesitar estos tres tipos de informacin: Direccin IP: Para identificar al host. Mscara de subred: Esto identifica a la red o subred donde est localizado el host. Gateway por defecto (Default Gateway): Esta es la ruta que debe ser usada si se est comunicando con un host en una subred diferente y la ruta no est especficamente identificada. Nota: Con la direccin IP y la mscara de subred ya podemos localizar un host en una subred local. Un nmero binario est formado por una serie de bits, o dgitos binarios. Cada bit puede ser seteado como 0 (cero) o como 1 (uno). Los valores de los nmeros binarios estn basados en potencias de 2 y en la posicin de cada dgito. Las direcciones IP estn agrupadas en octetos, o grupos de 8 bits Octeto (8 bits) Binario Base 2 Decimal 27 2 6 2 5 2 4 2 3 2 2 2 1 2 0 Octeto (8 bits) 27 26 25 24 23 22 21 20 Octeto (8 bits) 27 26 25 24 23 22 21 20 Octeto (8 bits) 27 26 25 24 2 3 22 21 20

Nmeros binarios y direcciones IP

1 1 0 0 0 0 0 0

1 0 1 0 1 0 0 0

0 1 1 0 1 1 1 0

0 0 0 1 0 1 1 1

192.

168.

110.

23

Como el sistema de numeracin binaria se basa en las potencias del nmero 2, cada posicin dentro de cada octeto representa una potencia de 2 diferente. Para determinar la potencia de 2 que utilizaremos para representar cada lugar en el nmero binario, comenzamos por el extremo derecho del nmero binario y nos fijamos a qu valor corresponden las posiciones seteadas en 1. Para obtener el nmero binario, debemos sumar estos valores. Premiere IT S.R.L. Pgina 96

LOC: Linux Original Courseware Ejemplo: El nmero binario 11000000 corresponde al 192 decimal. Se calcula as: 0 valores de 20 (1) 0 valores de 21 (2) 0 valores de 22 (4) 0 valores de 23 (8) 0 valores de 24 (16) 0 valores de 25 (32) 1 valores de 26 (64) 1 valores de 27 (128) => 0 => 0 => 0 => 0 => 0 => 0 => 64 => 128

11000000 = 128+64 => 192 128 1 64 1 32 0 16 0 8 0 4 0 2 0 1 0

AND

Otro concepto que necesitamos comprender es el AND lgico. Es una operacin matemtica, especficamente lgica y es para comparar dos valores. Los siguientes son los posibles resultados: Valor 1 AND Valor 2 Resultado 0 0 0 1 0 0 0 1 0 1 1 1

El AND se utiliza para encontrar direcciones de subred desde una direccin IP. La operacin AND lgico la utilizaremos para calcular direcciones de principio y fin de subredes. Para ms simplicidad veamos un ejemplo con el ltimo octeto de una direccin. Usted tiene una direccin IP 199.121.30.67 y una mscara de subred de 255.255.255.192. La siguiente tabla apunta al ltimo octeto. Decimal 192 en Binario Decimal 67 en Binario Resultado Operacin AND 1 0 0 1 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0

Esto da un valor de 64, o una subred completa de 199.121.30.64. Esto quiere decir que el host 199.121.30.67 se encuentra en la subred que comienza en la IP 199.121.30.64 y termina en 199.121.30.127.

Subredes

Supongamos que se le ha asignado una direccin clase B 155.110.0.0, que tiene una mscara de subred por defecto 255.255.0.0. Esto le brinda un potencial de 65.534 hosts, pero todos los hosts deben estar conectados a la misma red fsica. Que pasara si necesitara ms redes con menos clientes por red? Puede hacerse especificando una mscara de subred con la mscara por defecto. Por ejemplo, puede usar lo siguiente:
255.255.255.0

Esto le brinda 254 subredes disponibles, cada una capaz de direccionar hasta 254 sistemas de host. Recuerde que todos ceros y todos unos (255) no son valores de una direccin vlida. Utilizando una mscara de subred para dividir una direccin asignada es comn con direcciones clase A y clase B y est llegando a ser ms comn en redes clase C. Cuando usamos subredes, puede ser til pensar en la direccin de esta manera: Direccin de red Premiere IT S.R.L. Redes fsicas Sufijo del host Pgina 97

LOC: Linux Original Courseware La mscara de red por defecto identifica la porcin de la direccin de red en la direccin IP. La porcin de la mscara que ha agregado identifica la subred. La porcin sin mscara es utilizada para direcciones de host. Este tipo de direccionamiento a veces se refiere a direccionamientos jerrquicos.

Subredes clase B

Con una direccin clase B, las siguientes combinaciones se encuentran disponibles para definir subredes: Mscara de subred 255.255.192.0 255.255.224.0 255.255.240.0 255.255.248.0 255.255.252.0 255.255.254.0 255.255.255.0 255.255.255.128 255.255.255.192 255.255.255.224 255.255.255.240 255.255.255.248 255.255.255.252 ID de subred Longitud en bits 2 3 4 5 6 7 8 9 10 11 12 13 14 ID del host Longitud en bits 14 13 12 11 10 9 8 7 6 5 4 3 2 Mximo de subredes 2 6 14 30 62 126 254 510 1.022 2.046 4.094 8.190 16.382 Mxima cantidad de Hosts por cada subred 16.382 8.190 4.094 2.046 1.022 510 254 126 62 30 14 6 2

Como puede verse en la tabla, tanto el tercer octeto, como el tercer y cuarto octeto pueden ser utilizados para definir subredes. A medida que el nmero de subredes crece, hay un decrecimiento proporcionado en el nmero de direcciones de host disponibles.

Subredes clase C

Si se presenta la necesidad, es posible dividir en subredes una red clase C. Las siguientes combinaciones seran correctas: Mscara de subred 255.255.255.192 255.255.255.224 255.255.255.240 255.255.255.248 255.255.255.252 ID de subred Longitud en bits 2 3 4 5 6 ID del host Longitud en bits 6 5 4 3 2 Mximo de subredes 2 6 14 30 62 Mxima cantidad de Hosts por cada subred 62 30 14 6 2

Como en el ejemplo Clase B, el nmero disponible de direcciones de host decrece a medida que el nmero de subredes crece.

Ejemplos de subredes
Volviendo al primer ejemplo, pongamos algunos nmeros juntos. Necesita direccionar cinco subredes con hasta veinte hosts en cada una. Ya tiene determinado que puede usar una licencia clase C para cubrir sus necesidades, as que, elijamos una direccin.
198.214.7.0

Ejemplo de subredes clase C

Su mscara de subred por defecto sera:


255.255.255.0

Necesita cambiar su mscara de subred para direccionar 5 (cinco) subredes. Para lograr esto necesitar 3 bits para la direccin de subred. En binario esto sera algo as:
11111111.11111111.11111111.11100000

Convirtiendo esto nuevamente a decimal, obtendra lo siguiente:


255.255.255.224

Premiere IT S.R.L.

Pgina 98

LOC: Linux Original Courseware Esto da 6 (seis) (23-2) posibles subredes y 30 (treinta) (25-2) direcciones de host. Recuerde que ninguna direccin puede contener todos ceros ni todos unos.

Ejemplo de subredes clase B


131.142.0.0

Para el siguiente ejemplo, necesita direccionar veinte subredes con hasta 300 hosts en cada una. Esto puede ser realizado utilizando una direccin clase B, as que, elegimos una. La mscara de subred por defecto para esta direccin es la siguiente:
255.255.0.0

Tiene 16 bits disponibles para definir las direcciones de subred y host. Se necesita un mnimo de 14. 20 = 10100 (5 bits) 300 = 100101100 (9 bits) Esto le deja dos bits adicionales para usar a su gusto. Esto significa que se tiene cierta flexibilidad al setear la mscara de subred. Para maximizar la posible expansin de hosts, debera seleccionar la cantidad mnima posible de subredes. Los valores binarios y decimal son los siguientes:
11111111.11111111.11111000.00000000 255.255.248.0

Esto le da una mscara de subred de 21 bits total. Esto direcciona hasta 30 (25-2) subredes y hasta 2.046 (211-2) hosts. Tambin est la opcin de partir la diferencia entre ellos, como se muestra abajo:
11111111.11111111.11111100.00000000 255.255.252.0

Esto le ofrece hasta 62 (26-2) subredes y 1.022 (210-2) direcciones de host. Finalmente, puede elegir maximizar el potencial de crecimiento de las subredes en sus redes.
11111111.11111111.11111100.00000000 255.255.252.0

Esto direcciona 126 (27-2) subredes y 510 (29-2) hosts.

Ejemplos de rangos de direccin


Veamos algunos ejemplos de cmo se calcula el rango de direcciones. Supongamos que se tiene una direccin clase C de 193.25.141.0 y una mscara de subred de 255.255.255.192. Como slo el ltimo octeto va a cambiar a clase C, slo necesita calcular esa porcin de la direccin. Primero determinamos las direcciones vlidas para subredes seteando los bits de la direccin de host en cero. Obtendramos lo siguiente: 01000000 o 64 decimal y 10000000 o 128 decimal La siguiente tabla nos muestra los valores vlidos de direcciones de host para la red: Direccin de host mnima 01000001 10000001 Direccin de host Comienzo de direccin mxima (decimal) 01111110 65 10111110 129 Final de direccin (decimal) 126 190

Ejemplo de clase C

Subred 64 Subred 128

Su rango completo de direccin para cada subred debera ser 193.25.141.65 a travs de 193.25.141.126 para la subred 64, y 193.25.141.129 a travs de 193.25.141.190 para la subred 128.

Premiere IT S.R.L.

Pgina 99

LOC: Linux Original Courseware Tambin necesita calcular la direccin de distribucin de la subred (Subnetwork Broadcast Address). Esto significa que la distribucin de una subred ser siempre calculada de la siguiente forma:
Subnetwork_Broaqdcast_Address = Maximum_Host_Address + 1

En el caso de estas dos subredes, la direccin de distribucin sera 193.25.141.127 y 193.25.141.191, respectivamente.

Otro mtodo para determinar rangos de direccin

Veamos un mtodo alternativo para determinar rangos de direcciones vlidos. Se asume que se tiene una direccin de clase C 200.200.201.0 y hemos determinado que la mscara de subred ms apropiada es 255.255.255.224. En binario, el ltimo octeto sera el siguiente:
11100000

Tres bits, el nmero en la mscara de subred, direcciona hasta 32 valores diferentes (256/8). No se preocupe todava por las direcciones invlidas. Para determinar el rango de direcciones de subred simplemente cuente hasta 32, comenzando desde cero. 0-31 128-159 32-63 160-191 64-95 192-223 96-127 224-255 El primer y ltimo rango deben ser dejados de lado, ya que son invlidos. En el primero, el valor de subred son todos ceros, y en el ltimo, el valor es todos unos. Esto nos deja lo siguiente: 32-63 128-159 64-95 160-191 96-127 192-223 Desafortunadamente, este resultado todava contiene valores no vlidos. El primero es la direccin de red, con la direccin de host de todos ceros. EL ltimo es la direccin de distribucin de red, con la direccin de host seteada a todos unos. Nuestro rango vlido final sera: Direccin de red 32 64 96 128 160 192 Rango de direcciones 33 - 62 65 - 94 97 - 126 129 - 158 161 - 190 193 - 222 Distribucin 63 95 127 159 191 223

Probemos otra ms. Se asume que se tiene una direccin de clase C 220.136.17.0 y hemos determinado que la mscara de subred ms apropiada es 255.255.255.240. En binario, el ltimo octeto sera el siguiente:
11110000

Cuatro bits, el nmero en la mscara de subred, direcciona hasta 16 valores diferentes. Para determinar el rango de direcciones de subred (no se preocupe todava por las direcciones invlidas) simplemente cuente hasta 16, empezando desde cero. 0-15 64-79 128-143 192-207 16-31 80-95 144-159 208-223 32-47 96-111 160-175 224-239 48-63 112-127 176-191 240-255 El primer y ltimo rango deben ser dejados de lado, ya que son invlidos. En el primero, el valor de subred son todos ceros, y en el ltimo, el valor es todos unos. Esto nos deja lo siguiente: 16-31 32-47 48-63 64-79 80-95 96-111 112-127 128-143 144-159 160-175 176-191 192-207 208-223 224-239

Premiere IT S.R.L.

Pgina 100

LOC: Linux Original Courseware Recuerde que esto todava contiene valores no vlidos. El primero es la direccin de red, con la direccin de host de todos ceros. EL ltimo es la direccin de distribucin de red, con la direccin de host seteada a todos unos. Nuestro rango vlido final sera: Direccin de red 16 32 48 64 80 96 112 128 144 160 176 192 208 224 Rango de red 17 - 30 33 - 46 49 - 62 65 - 78 81 - 94 97 - 110 113 - 126 129 - 142 145 - 158 161 - 174 177 - 190 193 - 206 209 - 222 225 - 238 Distribucin 31 47 63 79 95 111 127 143 159 175 191 207 223 239

SuperNetting - Combinando direcciones


Hasta ahora, este captulo se ha concentrado en quebrar una direccin en subredes. El proceso tambin trabaja en otra direccin, Usted tiene la habilidad de combinar direcciones consecutivas mediante el uso de mscaras de subred, una tcnica conocida cono Supernetting. No es poco comn tener ms de un host que usted pueda direccionar con una simple direccin clase C, pero muy pocos justificaran una direccin clase B. Una solucin sera combinar dos o ms direcciones clase C dentro de una simple subred. Para hacer esto necesita dos o ms direcciones clase C consecutivas. Por ejemplo:
200.23.217.0 200.23.218.0 200.23.219.0

El primer paso es convertir el tercer octeto a binario para cada direccin, como se muestra abajo:
217 => 11011001 218 => 11011010 219 => 11011011

Busque la porcin de la direccin que no cambia. Esto se convierte en su mscara de subred. En el ejemplo, los seis bits ms importantes no cambian, brindndole una mscara de subred para el tercer octeto de lo siguiente:
11111100

Esto se convierte en el valor decimal de lo siguiente:


252

Su mscara de subred completa debera ser:


255.255.252.0

Es importante recordar que, an cuando las estamos tratando como subredes en una direccin clase B con el propsito de definir una subred, estas todava son direcciones clase C. Usted tiene slo el cuarto octeto disponible para definir direcciones de hosts.

Premiere IT S.R.L.

Pgina 101

LOC: Linux Original Courseware

Classless Internet Domain Routing (CIDR)


Es un esquema de direccionamiento IP (IP addressing) posterior al sistema de clase A, B, C, D y E. El direccionamiento usando CIDR tambin usa el modelo tradicional para representar al nmero IP (Ejemplo: 200.400.12.6) pero destaca cual es la parte de la red usando un slash (/) seguido de un nmero: 192.168.3.15/26 172.21.165.1/19 El nmero que sigue al slash es el nmero de bits que representan la parte de la red del nmero IP. CIDR se desarroll para incrementar la eficiencia de la alocacin de direcciones y para aliviar a los routers. Usndolo, las tablas de rutas se simplifican.

Premiere IT S.R.L.

Pgina 102

LOC: Linux Original Courseware

Captulo 7
Configuracin de red en Linux
Compramos una placa de red, la instalamos. Veamos ahora como hacemos para que el sistema la reconozca. A veces no tenemos diskette de instalacin o cdrom; los drivers ya estn incluidos en el kernel. Hasta que el controlador del dispositivo inicializa la tarjeta y la registra con el kernel, el sistema no sabe de la existencia de la tarjeta. Normalmente, el dispositivo Ethernet se registra como ethX, donde X es el nmero de dispositivo. El primer dispositivo es eth0, el segundo es eth1, etc. Los controladores de dispositivo o drivers de las placas de red se pueden compilar como mdulo. Recuerde que lo describimos en el captulo sobre kernel. Para la mayora de las aplicaciones, este es el mecanismo por defecto, ya que as es ms fcil subir y bajar los drivers. Si el controlador se configura como mdulo, y tambin seteamos en el kernel la opcin de mdulos cargables automticamente, necesitamos decirle al kernel el mapeo entre los nombres de dispositivos y el mdulo a cargar en el archivo /etc/modules.conf. Por ejemplo, si mi dispositivo eth0 es una tarjeta Ethernet 3Com 3C905, debera aadir la lnea siguiente en el archivo /etc/modules.conf.
alias eth0 3c59x

Instalacin de la placa de red

Donde 3c59x es el nombre del controlado de dispositivo.


alias eth0 ne2k-pci

as sera si la placa es una ne2000 (o ne2000 compatible)

El prximo paso es levantar el mdulo a memoria. Esto se hace con el comando modprobe, su sintaxis es:
# modprobe nombreModulo

Seguramente Ud. se estar preguntando: Y cul es el nombre del mdulo? Cmo hago para saber el nombre del dispositivo que reconoce el kernel? Si yo compr mi placa marca/modelo Realtek 8139. Cmo hago para buscar en Linux esa marca/modelo? Lo ideal en estos casos es usar el comando lspci. Este nos va a devolver la lista de hardware conectado a nuestro equipo.
arwen:/etc# lspci 00:00.0 Host bridge: nVidia Corporation nForce2 AGP (different version?) (rev c1) 00:00.1 RAM memory: nVidia Corporation nForce2 Memory Controller 1 (rev c1) 00:00.2 RAM memory: nVidia Corporation nForce2 Memory Controller 4 (rev c1) 00:00.3 RAM memory: nVidia Corporation nForce2 Memory Controller 3 (rev c1) 00:00.4 RAM memory: nVidia Corporation nForce2 Memory Controller 2 (rev c1) 00:00.5 RAM memory: nVidia Corporation nForce2 Memory Controller 5 (rev c1) 00:01.0 ISA bridge: nVidia Corporation nForce2 ISA Bridge (rev a4) 00:01.1 SMBus: nVidia Corporation nForce2 SMBus (MCP) (rev a2) 00:02.0 USB Controller: nVidia Corporation nForce2 USB Controller (rev a4) 00:02.1 USB Controller: nVidia Corporation nForce2 USB Controller (rev a4) 00:02.2 USB Controller: nVidia Corporation nForce2 USB Controller (rev a4) 00:04.0 Ethernet controller: nVidia Corporation nForce2 Ethernet Controller (rev a1) 00:05.0 Multimedia audio controller: nVidia Corporation nForce MultiMedia audio [Via VT82C686B] (rev a2) 00:06.0 Multimedia audio controller: nVidia Corporation nForce2 AC97 Audio Controler (MCP) (rev a1) 00:08.0 PCI bridge: nVidia Corporation nForce2 External PCI Bridge (rev a3) 00:09.0 IDE interface: nVidia Corporation nForce2 IDE (rev a2) 00:0c.0 PCI bridge: nVidia Corporation nForce2 PCI Bridge (rev a3) 00:0d.0 FireWire (IEEE 1394): nVidia Corporation nForce2 FireWire (IEEE 1394) Controller (rev a3) 00:1e.0 PCI bridge: nVidia Corporation nForce2 AGP (rev c1)

Premiere IT S.R.L.

Pgina 103

LOC: Linux Original Courseware


01:07.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL-8139/8139C/8139C+ (rev 10) 02:01.0 Ethernet controller: 3Com Corporation 3C920B-EMB Integrated Fast Ethernet Controller (rev 40) 03:00.0 VGA compatible controller: nVidia Corporation NV34 [GeForce FX 5200] (rev a1) arwen:/etc#

Para distinguir una placa de red, tenemos que buscar donde diga Ethernet controller. Luego de esto, podemos ver marca, modelo. Con estos datos, vamos a la documentacin del kernel y verificamos que mdulo corresponde a que placa. En principio, el cdigo fuente del kernel tiene su documentacin en el subdirectorio Documentation y de no encontrar lo que buscamos ah lo ideal es arrancar el entorno de configuracin de las fuentes del kernel y leer la ayuda de los mdulos de red para ver cual corresponde a nuestro hardware. Los mdulos del kernel son archivos objeto, tienen la extensin .o y se encuentran en el directorio
/lib/modules/versin/kernel/drivers/net.

Si listamos los mdulos vemos que existen dos que pueden ser para la placa Realtek 8139, uno es 8139too y el otro 8139cp. Uno de esos dos debe ser el correcto. En este ejemplo probaremos el 8139too. Hacemos:
# modprobe 8139too

Este comando prueba si un determinado mdulo funcionar con el dispositivo, si es as, lo instala. Nota: Tambin podemos utilizar el comando insmod para insertar mdulos Con el comando lsmod veremos una lista de los diferentes mdulos instalados. Si el mdulo se instal debe aparecer en el listado
# lsmod Module nfs lockd sunrpc binfmt_misc autofs 8139too ipchains imm parport_pc parport usb-uhci usbcore ext3 jbd Size 79872 53168 64816 6448 11584 16480 39392 9712 17808 25856 21696 51808 62480 41056 Used by 4 (autoclean) 1 (autoclean) [nfs] 1 (autoclean) [nfs lockd] 1 2 (autoclean) 1 (autoclean) 0 1 1 (autoclean) 1 (autoclean) [imm parport_pc] 0 (unused) 1 [usb-uhci] 7 7 [ext3]

Configuracin de una interfaz de red

Al decir configurar una interfaz de red nos referimos al proceso de asignar direcciones IP apropiadas a un dispositivo y asignar valores adecuados a otros parmetros configurables. El programa ms usado para hacer esto es la orden ifconfig (interface configure). La sintaxis del comando ifconfig es:
ifconfig dev num-ip netmask num-mascara broadcast num-broadcast accion

Veamos las opciones


up down [-]arp [-]promisc [-]allmulti

esta opcin activa una interfaz (y es la opcin por defecto). esta opcin desactiva una interfaz. esta opcin activa o desactiva el uso del protocolo de resolucin de direccin (Address Resolution Protocol) sobre la interfaz habilita o no el modo promiscuo de la interfaz. Si se activa, todos los paquetes sern recibidos por esta interfaz. esta opcin activa o desactiva multicast por hardware. El multicast por hardware permite que varios grupos de interfaces reciban Pgina 104

Premiere IT S.R.L.

LOC: Linux Original Courseware paquetes remitidos a destinos especiales. Esto puede ser de importancia si est usando aplicaciones como videoconferencia, pero normalmente no se usa. este parmetro le permite especificar la MTU del dispositivo. (MTU = Maximum Transfer Unit). este parmetro permite asignar la mscara de red a la que pertenece el dispositivo. este parmetro slo trabaja con ciertos tipos de hardware, y permite especificar la IRQ del dispositivo. este parmetro le permite activar y asignar la recepcin de datagramas destinados a la direccin de difusin, o desactivarla por completo. permite asignar la direccin de la mquina en el otro extremo de un enlace punto a punto, como en SLIP o PPP. 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 X.25.

mtu N netmask <direc> irq <direc> [-]broadcast [direc] [-]pointopoint [direc] hw <tipo> <direc>

Ejemplos:
# ifconfig eth0 192.168.1.4 netmask 255.255.255.0 broadcast 192.168.1.255 # ifconfig eth0 192.168.0.1 netmask 255.255.255.0 up

En este ultimo 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 a la 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

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. Si ejecutamos el comando ifconfig sin parmetros, veremos algo como lo siguiente:
# ifconfig eth0 Link encap:Ethernet HWaddr 00:D0:59:10:6C:B5 inet addr:192.168.0.1 Bcast:192.168.0.255 Mask:255.255.255.0 UP BROADCAST MULTICAST MTU:1500 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:4 errors:0 dropped:0 overruns:4 carrier:0 collisions:0 txqueuelen:100 RX bytes:0 (0.0 b) TX bytes:168 (168.0 b) Interrupt:11 Base address:0x5000 lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 UP LOOPBACK RUNNING MTU:16436 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)

Veamos que significa cada cosa: El primer prrafo o bloque, eth0, representa la interfaz fsica de hardware para Ethernet de 100 Mbps. El segundo, lo, es la interfaz de ciclo de retorno, que se utiliza principalmente para comunicacin interna y diagnsticos. La interfaz de loopback (ciclo de retorno) se usa para determinar si el software TCP/IP esta operando correctamente a nivel local. Entre los datos volcados encontramos la direccin IP, la direccin de broadcast y la mscara, y la direccin fsica de la placa, comnmente llamada MAC, que da el fabricante de la placa. Lo que sigue es informacin especfica de la transmisin y los paquetes. Premiere IT S.R.L. Pgina 105

LOC: Linux Original Courseware Teniendo asignada la IP, vamos a probar si funciona correctamente. El comando ms simple para hacer una prueba es el ping. Ejecutamos:
# ping 192.168.0.1

Y veremos lo siguiente:
PING 192.168.0.1 (192.168.0.1) from 192.168.0.1: 56(84) bytes of data. 64 bytes from 192.168.0.1: icmp_seq=1 ttl=255 time=0.042 ms 64 bytes from 192.168.0.1: icmp_seq=2 ttl=255 time=0.034 ms 64 bytes from 192.168.0.1: icmp_seq=3 ttl=255 time=0.032 ms

Presionamos Ctrl-C para detenerlo. Lo que dar como resultado:


--- 192.168.0.1 ping statistics --3 packets transmitted, 3 received, 0% loss, time 1998ms rtt min/avg/max/mdev = 0.032/0.036/0.042/0.004 ms

Esto indica que todo funciona bien. A partir de ahora podemos conectar este host con otro/s. Nota: La asignacin de la direccin IP tambin se puede hacer directamente en un archivo de configuracin. En Debian el archivo principal de la configuracin de las interfaces de red se encuentra en
/etc/network/interfaces # Used by ifup(8) and ifdown(8). See the interfaces(5) manpage or # /usr/share/doc/ifupdown/examples for more information. auto lo iface lo inet loopback auto eth0 iface eth0 inet static address 10.0.0.1 netmask 255.255.255.0 auto eth1 iface eth1 inet static address 192.168.1.1 netmask 255.255.255.0

En esta configuracion, definimos tres interfaces. Una interfaz de loopback y dos interfaces ethernet. A estas interfaces les asignamos las direcciones 192.168.1.1 y 10.0.0.1 con la mascara de subred en 255.255.255.0. Aparte, con el tag auto le estamos pidiendo que esta interfaz arranca cuando inicia el equipo. Para realizar modificaciones avanzadas podemos consultar el man del archivo interfaces que nos da varios ejemplos concretos. En RedHat los archivos de configuracin de red se encuentran en el directorio:
/etc/sysconfig/network-scripts/

Aqu es donde debemos entrar para cambiar la direccin IP de una mquina. Por ejemplo, el archivo ifcfg-eth0 contiene:
ONBOOT=yes DEVICE=eth0 BOOTPROTO=static IPADDR=192.168.1.4 NETMASK=255.255.255.0 BROADCAST=192.168.1.255 NETWORK=192.168.1.0

En este directorio tambin estn los scripts ifdown e ifup, que se usan para reiniciar la configuracin de la red. Por ejemplo: ifdown ifcfg-eth0

Premiere IT S.R.L.

Pgina 106

LOC: Linux Original Courseware En el directorio /etc/init.d/ se encuentran todos los demonios o servicios. Por ejemplo: network, xinetd, httpd, smb. Recordar que se ejecutan con ./network start, por ejemplo para levantar el servicio de red.

Encaminamiento (Routing)
El encaminamiento o ruteo es un tema amplio. Comencemos con una definicin. Qu es el encaminamiento IP? El Encaminamiento IP es el proceso por el que una mquina con mltiples conexiones de red decide por dnde dirigir un datagrama IP que haya recibido. Sera til ilustrar esto con un ejemplo. Imagine una oficina con el encaminamiento tpico, que podra constar de un enlace PPP con Internet, varios segmentos Ethernet alimentando las estaciones de trabajo, y un enlace PPP hacia otra oficina. Cuando el encaminador recibe un datagrama en cualquiera de sus conexiones de red, el mecanismo que usa para determinar qu interfaz debera enviar el datagrama, es el encaminamiento. Las estaciones sencillas tambin necesitan encaminar. Todas las estaciones en Internet tienen dos dispositivos de red: uno es la interfaz de pruebas descrita anteriormente (loopback), y la otra es la que usa para comunicarse con el resto de la red, quiz una Ethernet, quiz una interfaz serie PPP o SLIP. Entonces, cmo funciona el encaminamiento? Cada mquina tiene una lista de reglas, llamada tabla de encaminamiento o de ruteo. Esta tabla contiene columnas que suelen contener al menos tres campos: 1. es una direccin de destino 2. es el nombre de la interfaz a la que se va a encaminar el datagrama 3. es (opcionalmente) la direccin IP de otra mquina que tomar el datagrama en su siguiente paso a travs de la red En Linux puede ver esta tabla usando la siguiente orden:
# /sbin/route n

# /bin/netstat -r Destination 192.168.1.0 127.0.0.0 default Gateway * * 192.168.1.254 Genmask 255.255.255.0 255.0.0.0 0.0.0.0 Flags U U UG Metric 0 0 0 Ref 0 0 0 Use 0 0 0 Iface eth0 2 lo 1 eth0 3

Veamos que significa cada columna. Columna Descripcin Flags Estado de conexin. Cada letra tiene un significado: U : la conexin est activa.(up) H : el destino es una mquina.(host) G : el destino es la pasarela.(gateway) Metric El costo de una ruta, medida en saltos. Los sistemas que tienen varias rutas para llegar a un destino, cada una tiene un costo. Generalmente se prefiere una ruta sobre el resto, la que tiene mtrica baja. El kernel de Linux no usa esta informacin, pero s lo hacen algunos protocolos de enrutamiento avanzados. Ref El nmero de referencias de la ruta. Esto no se usa en el kernel Linux. Est aqu debido a que la propia herramienta route es de plataformas cruzadas. As se muestra este valor, pues otros sistemas operativos lo usan. Use El nmero de bucles de cache de rutas utilizados con xito. Para ver este valor, use la opcin F cuando invoque route. La instruccin route toma sus argumentos en lnea de rdenes y los convierte en llamadas al sistema del kernel, que le piden que aada, borre o modifique entradas en la tabla de encaminamiento. Como ya dijimos, el proceso de encaminado es relativamente simple: se recibe un datagrama que llega, se examina la direccin de destino (para quin es) y se compara con cada entrada en la lista. Se selecciona la entrada que ms se parezca y se reenva el datagrama a la interfaz especificada. Si el campo de pasarela (gateway) est descrito, el datagrama se reenva a esa mquina mediante la interfaz especificada, y si no, se asume que la direccin de destino est en la red a la que se accede mediante la interfaz correspondiente. Premiere IT S.R.L. Pgina 107

LOC: Linux Original Courseware En el caso donde una mquina ni siquiera tiene una pista sobre donde enviar el paquete, se usa una ruta por defecto. Este camino apunta a un enrutador, que idealmente tiene idea de donde debera ir el paquete o, al menos, sabe por otra ruta que pueda tomar. Una maquina tpica Linux conoce al menos tres rutas: Ruta de bucle local que simplemente apunta a su dispositivo de loopback Ruta a la red de rea local de forma que los paquetes destinados a las mquinas de esa misma red se envan directamente a ellas Ruta por defecto esta ruta se usa para paquetes que necesitan abandonar la red de rea local para comunicarse con otras redes Ejemplo: Imagine que tiene una red Ethernet. Le han dicho que pertenece a una red clase C con direccin 192.168.1.0. Le han dado la direccin IP 192.168.1.10 para su uso y tambin le han informado que 192.168.1.1 es un encaminador conectado a Internet. El primer paso es configurar la interfaz como se describi anteriormente. Puede usar una orden como:
# ifconfig eth0 192.168.1.10 netmask 255.255.255.0 up

la orden abreviada siguiente:


# ifconfig eth0 192.168.1.10

Ahora necesita aadir una entrada en la tabla de ruteo para decirle al ncleo que los datagramas destinados a todas las mquinas con direcciones que se ajusten a 192.168.1.*, debern ser enviados al dispositivo Ethernet. Debera usar una orden similar a:
# route add -net 192.168.1.0 netmask 255.255.255.0 eth0

Fjese en el uso del parmetro -net para especificar al programa route que esta entrada es una regla para una red completa. Otra opcin es -host, que indica una va especfica a una direccin IP en particular. Esta ruta le permitir establecer conexiones IP con todas las estaciones de su segmento Ethernet. Pero qu pasa con todas las mquinas con direccin IP que no estn en su segmento Ethernet? Sera bastante engorroso, por no decir imposible, tener que aadir caminos para cada red de destino posible, por lo que existe un truco que se usa para simplificar la tarea. A este truco se le llama camino por defecto. El camino por defecto se ajusta a todo destino posible, pero con prioridad mnima, por lo que si existe cualquier otra entrada que se ajuste a la direccin requerida, ser la que se use en lugar del camino por defecto. La idea del camino por defecto es como decir: y todo lo dems debera ir por aqu. En el ejemplo anterior podra usar una orden como:
# route add default gw 192.168.1.1 eth0

El parmetro gw le dice a la orden route que lo que le sigue es la direccin IP, o nombre, de una pasarela, gateway u otra mquina enrutadora a la que se deberan enviar todos los datagramas que se ajusten a esta entrada para futuro encaminamiento. Por lo tanto, la configuracin completa debera parecerse a:
# ifconfig eth0 192.168.1.10 netmask 255.255.255.0 up # route add -net 192.168.1.0 netmask 255.255.255.0 eth0 # route add default gw 192.168.1.1 eth0

Veamos ahora como qued la tabla de ruteo


# route Kernel IP routing table Destinatio Gateway n 10.10.2.0 * 192.168.1. 0 127.0.0.0 default * * 192.168.1.1 Genmask 255.255.255. 0 255.255.255. 0 255.0.0.0 0.0.0.0 Flag s UH U U UG Metric Ref 0 0 0 0 0 0 0 0 Use Iface 0 0 0 0 eth1 eth0 lo eth0

Premiere IT S.R.L.

Pgina 108

LOC: Linux Original Courseware Como resumen, la sintaxis tpica del comando route es de esta forma:
# route cmd tipo direccion netmask masc gw gatew dev destino

Parmetro
cmd tipo direccin netmask masc gw gatew dev destino

Descripcin Puede ser add o del dependiendo de si aade o borra una ruta. Si elimina una ruta, solo necesita otro parmetro, la direccin. net o host dependiendo si direccin representa una direccin de red o una direccin de un enrutador. La red destino a la que quiere enrutar. Configura la mscara de red de la direccin direccin a masc. Configura la direccin de enrutador para direccin a gatew. Normalmente se usa como ruta por defecto. Enva todos los paquetes destinados a direccin a travs de la red del dispositivo destino segn se configura con ifconfig. Nota: La mquina gateway debe tener una direccin por cada red, debemos ejecutar el siguiente comando para poder intercambiar paquetes de una red a otra.
# echo 1 > /proc/sys/net/ipv4/ip_forward

Para la Red-1 debemos agregarle una ruta por defecto por cada mquina:
# route add default gw 192.168.1.1

Y para la Red-2 debemos agregarle una ruta por defecto por cada mquina:
# route add default gw 192.168.2.1

Premiere IT S.R.L.

Pgina 109

LOC: Linux Original Courseware

Captulo 8
Programacin en la shell de Linux
La programacin en shell o tambin llamada shellscripting, se basa en el uso de las herramientas del sistema. GNU/Linux y UNIX son sistemas operativos que cuentan con bastantes herramientas de proceso, filtrado de textos y control de procesos. Por esta razn, los procesos repetitivos, que hechos a mano seran engorrosos y lentos, se pueden automatizar. Para programar scripts en shell hay que tener acceso a una shell compatible con la Bourne SHell (sh). Tambin hay que tener cierta experiencia con sistemas GNU/Linux y UNIX (saber que son los permisos de archivos, conocer las rdenes bsicas, etc.), y tener cierta idea de las cosas que ofrece la shell, como sustitucin de caracteres especiales por nombres de archivos, redirecciones de las entradas y salidas, etc.

Que es la shell?

Una shell es un intrprete de comandos, es la aplicacin que permite al usuario comunicarse con el sistema operativo y darle rdenes. Podemos decir que es el intermediario entre el sistema operativo y el usuario. Existen varias shells, algunas son: Bourne SHell (sh) La shell clsica que se encuentra en todos los sistemas UNIX. Korn SHell (ksh). C SHell (csh). Bourne-Again SHell (bash) La shell de GNU que se encuentra en todos los sistemas Linux y en muchos otros UNIX. Es la que vamos a utilizar. Nota: Para ver las shells que tenemos soportadas en nuestro sistema Linux, hacemos:
# cat /etc/shells

Qu es un script?

Un script es un archivo de texto ejecutable. Lo que contiene es uno o ms comandos de Linux que son los mismos que ejecutamos en la shell o lnea de comandos. Un script es de gran utilidad cuando tengo que ejecutar varios comandos seguidos. El nico requisito es que ese archivo de texto tenga permiso de ejecucin para la persona que intenta ejecutarlo. Si conoce DOS, puede pensar que la programacin en shell es algo parecido a los archivos .bat, aunque la diferencia entre ellos es ms o menos igual de grande que la existente entre los sistemas UNIX y el DOS (por versatilidad, potencia, diseo, etc.). Las instrucciones contenidas en el shellscript se procesarn por orden, como si alguien las escribiera en el mismo orden en la lnea de comandos. Cuando se ejecuta un script de shell, se intenta ejecutar como un binario normal, pero al darse cuenta el sistema operativo de que no es un binario vlido, pero que es un archivo de texto, ejecuta un shell hijo y empieza a interpretar el archivo de texto. Si fuera un archivo con un texto cualquiera, tarde o temprano (probablemente en la primera lnea) habra un error de sintaxis (no reconocera el comando) y se abortara la ejecucin del programa. Los scripts de shell son muy tiles para ciertos tipos de tareas: Tareas administrativas: algunas partes de los sistemas UNIX son scripts de shell, para poder entenderlos y modificarlos es necesario tener alguna nocin sobre la programacin de scripts. Tareas tediosas que solo se van a ejecutar una o dos veces, no importa el rendimiento del programa resultante pero s conviene que su programacin sea rpida. Hacer que varios programas funcionen como un conjunto de una forma sencilla. Pueden ser un buen mtodo para desarrollar prototipos de aplicaciones ms complejas que posteriormente se implementarn en lenguaje ms potentes. Conocer a fondo la shell aumenta tremendamente la rapidez y productividad a la hora de usarla, incluso fuera de los scripts.

Creacin de scripts
Como en todo aprendizaje de un lenguaje de programacin, nuestro primer script ser el famoso Hello World!. Abrimos nuestro editor de texto favorito, por ejemplo el vi. Premiere IT S.R.L. Pgina 110

LOC: Linux Original Courseware


# vi holamundo.sh

Nota: Debido a que en GNU/Linux-UNIX la ejecucin de programas no depende de las extensiones sino de los permisos, no es obligatorio agregarle la extensin .sh a los scripts. Solo se ponen a modo de prolijidad. Agregamos la sentencia echo Hola Mundo , grabamos el archivo, y le ponemos permiso de ejecucin.
# chmod +x holamundo.sh

Ahora lo ejecutamos, para lo cual hacemos


# ./holamundo.sh

Esto nos mostrar un hermoso Hola Mundo en la pantalla. Nota: echo es una orden simple para mostrar texto por pantalla, escribe la salida de un programa sobre la salida estndar. La opcin -n nos mantiene el cursor en la misma lnea, sin que pase al prximo rengln. Como ya explicamos antes, los scripts son simplemente sucesiones de comandos, tal y como si usted los estuviera escribiendo uno por uno. De esta forma podemos utilizar todos y cada uno de los comandos del sistema operativo. Esto es lo que hace tan poderosos a los scripts. Los programadores de scripts usan una tcnica muy sencilla para especificar qu programa (en este caso la shell) debe interpretar el script. La tcnica es colocar en la primera lnea del script qu shell hay que invocar para su interpretacin. Cuando el kernel abre el archivo para ejecutarlo, lee la primera lnea y entonces le pasa el archivo a la shell (#!/bin/sh #!/bin/bash). Veamos un ejemplo de otro script:
#!/bin/sh clear echo "ahora estan en el sistema" who echo " y hoy que dia es?" date

Qu se escribe en un script?

Sintaxis de los scripts


Como en todo lenguaje de programacin, hay un caracter o combinacin especial de caracteres para escribir comentarios. Este texto es ignorado por la shell al interpretar el script, y slo sirven para que una persona, cuando edite el script, pueda entender cmo funciona. Este carcter especial es el signo sharp (numeral) #, y denota que desde ah hasta el final de la lnea, el resto de los caracteres son un comentario del programador (como el // de C++). Ejemplo:
#!/bin/sh # Este script muestra usuarios del sistema y la facha actual clear echo "ahora estan en el sistema" who echo " y hoy que dia es?" date

Comentarios

Digamos que diariamente un programa nos genera una cantidad de archivos temporales (cuyo nombre es tmpalgo) en el directorio ~/home y entonces queremos borrar los que guardamos ayer, y guardar los de hoy en el directorio ~/home/tmp. Veamos un ejemplo de otro script:
#!/bin/sh rm -r $HOME/tmp mkdir $HOME/tmp mv $HOME/tmp-* $HOME/tmp # borramos los de ayer # creamos el directorio # almacenamos los de hoy

Variables

Premiere IT S.R.L.

Pgina 111

LOC: Linux Original Courseware


echo Actualizacin terminada.

Como explicamos anteriormente, todo lo que est entre el # y el final de la lnea es un comentario. Seguramente usted debe estar preguntndose que es eso de $HOME. La shell como todo buen lenguaje de programacin permite utilizar variables. Para crear una variable solo tenemos que hacer:
VARIABLE="valor"

Para ver el contenido de VARIABLE usamos:


echo $VARIABLE

Es decir, creamos a VARIABLE cuando le asignamos un valor y utilizamos ese valor cuando le aadimos el caracter "$" (es decir, $VARIABLE). Las variables en el bash son todas cadenas de caracteres (strings). Hay dos tipos de variables, las variables de usuario y las variables especiales. Las variables de usuario son las que creamos en el script, y las variables especiales son aquellas que la shell (u otros programas) crea automticamente al arrancar, tambin llamadas variables de entorno o de ambiente. En el siguiente ejemplo, mail es una variable creada por el usuario:
#!/bin/sh clear mail=masinfo@cortech.com.ar echo "mi mail es $mail"

Algunas variables de entorno del sistema operativo son: $HOME Especifica el directorio inicial del usuario. $PATH Es la ruta donde se buscarn los ejecutables. $SHELL Guarda la ubicacin del shell que se est utilizando, usualmente /bin/bash. $PS1 Especifica el prompt que se est utilizando. Algunas variables del ambiente de ejecucin de la shell son: $$ Contiene el nmero de proceso (PID) de la shell. $! Contiene el nmero de proceso (PID) del ltimo proceso. $? Contiene el valor que regres la ltima orden ejecutada. (0=Exitosa, 1=Fall) Hay otras variables importantes que contienen los argumentos que recibe el script. Vea la siguiente seccin. Como cualquier programa, los scripts pueden recibir parmetros en la lnea de comandos, los parmetros recibidos se guardan en una serie de variables que el script puede consultar. Estas variables tienen los siguientes nombres: $0 Contiene el nombre con el que se ha invocado al script. $1 - $20 Contiene los valores de los parmetros/argumentos recibidos con la invocacin. $* Contiene todos los parmetros juntos en una nica cadena. $# Contiene el nmero de parmetros que ha recibido el script. $? Devuelve 0 si la ejecucin fue correcta. Ejemplo: Crear un shell script llamado argus.sh (con vi argus.sh) conteniendo los siguientes comandos y establecerle permisos de ejecucin (con chmod +x argus.sh)
#!/bin/sh echo El nombre del script es echo Cantidad de argumentos echo El primer argumento es echo El segundo argumento es echo El tercer argumento es echo Todos sus argumentos son : : : : : : $0 $# $1 $2 $3 $*

Pasaje de argumentos

Ejecutarlo de la siguiente manera:


# ./argus.sh Hola que tal 99

Premiere IT S.R.L.

Pgina 112

LOC: Linux Original Courseware La salida que vemos por pantalla es:
El nombre del script es Cantidad de argumentos El primer argumento es El segundo argumento es El tercer argumento es Todos sus argumentos son : : : : : : argus.sh 3 Hola que tal 99 Hola que tal 99

En el caso de usar ms de 9 (nueve) parmetros, existen dos opciones para poder manejarlos: Usar las llaves ({ y }) para encerrar el nmero de parmetro, por ejemplo ${10}, ya que al usar simplemente $10 se producen efectos inesperados en la manipulacin de las variables. Usar el comando shift, que mueve todos los parmetros una posicin a la izquierda, esto hace que el parmetro que haya en $1 desaparezca, y sea reemplazado por el que haba en $2. Igual que cualquier ejecutable, un script permite redireccionamientos de la entrada y de las salidas. Las redirecciones de la entrada, salida estndar, errores estndar, y todas las salidas se realizan con los caracteres <, > y &> como ya vimos en captulos anteriores (depende de la shell, as son las de la bash). Algo que quiz no vimos es que existe un archivo-dispositivo, estndar a todos los UNIX y sus clones (Linux, etc.), que es el /dev/null. Cualquier cosa que se escriba en ese dispositivo virtual va a parar a un agujero negro, es decir, se ignora completamente. Para qu sirve esto? Si queremos comprobar si un programa devuelve un error, pero no quiero que la salida estndar aparezca en pantalla (porque al usuario no le interesa, por ejemplo), entonces redirecciono la salida total (con &>) a /dev/null. Ejemplo del script secu.sh que usa redireccin:
#!/bin/sh # este script muestra redireccin a archivo # y tambin redireccin desde un archivo a un comando find / -perm -4000 > secu.txt mail -s seguridad root < secu.txt

Redireccionamiento

La orden read

Permite insertar en la ejecucin del script, lo que el usuario tipea en la lnea de comandos. read slo lee una lnea de la entrada del usuario y la asigna a una o ms variables de la shell. La orden read detiene la ejecucin del script. Hasta que por lnea de comandos no entre un valor, el programa estar detenido. La variable REPLY se utiliza por defecto si no se especifica ningn valor. Ejemplo del script nombre.sh:
#!/bin/sh echo Ingrese su nombre : read nombre clear echo Su nombre es : $nombre

Ahora lo ejecutamos, para lo cual hacemos


# chmod +x nombre.sh # ./nombre.sh

Vemos que el script nos pide el nombre, y luego nos dice nuestro nombre. Podemos pedir varias entradas de datos con un solo read. Ejemplo del script datos_alumno.sh:
#!/bin/sh echo Ingrese su nombre y su legajo : read nombre legajo clear echo Su nombre es : $nombre y su numero de legajo es : $legajo

Premiere IT S.R.L.

Pgina 113

LOC: Linux Original Courseware Ahora lo ejecutamos, para lo cual hacemos


# ./datos_alumno.sh

Estructuras de control

Como todo buen lenguaje de programacin la shell posee estructuras de control (if-then-else, case, etc.) y ciclos (for, while, etc.). La sintaxis de la sentencia if tiene la forma:
if comando1 then comandos2 else comandos3 fi comando1 comandos2 comandos3

siempre se ejecuta (normalmente se ejecuta el comando test) solamente se ejecutan si comando1 finaliza exitosamente (devuelve cero) solamente se ejecutan si comando1 NO finaliza exitosamente (devuelve un valor distinto de cero)

El else es opcional, cuando no se encuentra nos queda as:


if comando1 then comando2 comando3 fi

Si comando1 se ejecuta exitosamente, se ejecutarn los comandos que se encuentran entre el then y el fi (comando2, comando3, etc.), Si comando1 no se ejecuta exitosamente, los comandos entre el then y el fi no se ejecutarn y la shell continuar con la ejecucin de comandos que se encuentren despus del fi. Nota: El fi marca el final del if y no debe faltar. Pero el if de la shell solo puede evaluar comandos por lo que no podramos evaluar los valores de las variables, para esto se usa el comando test (que pertenece a la shell). test devuelve 0 ,en caso verdadero 1 si es falso.
if test $HOME = "/home/agarcia" then echo "Hogar dulce hogar" else echo "Dnde estoy?, Quiero ir a mi directorio home!" fi

Esta vez test revisa que el directorio $HOME del usuario sea "/home/agarcia" y escribe "Hogar dulce hogar" y sino escribe otro mensaje. Tenga en cuenta que la expresin que va a evaluar test debe estar separada por espacios ya que la expresin es, en realidad los argumentos con que se va a ejecutar test. Otra forma de escribir el if, abreviando la sintaxis de test, es poner entre corchetes la condicin a evaluar, y la sintaxis sera igual a la mostrada anteriormente. Ahora si quisiera poner el then en la misma lnea, despus de la expresin del test debemos poner un ;. Esto es muy comn en los scripts (para ahorrar espacio), pero aun ms comn es esta forma de usar el comando test:
if [ "$PREFIJO" = "" ]; then PREFIJO="/usr/local/bin" fi

En este caso, cuando el bash encuentra los [ ] los reemplaza por el comando test sin que nosotros tengamos que pensar en ello siquiera. Premiere IT S.R.L. Pgina 114

LOC: Linux Original Courseware Nota: Tenemos que dejar espacios entre el if, los [ ] y la condicin.

Efectuando comparaciones
Comprobaciones de cadenas
-z cadena -n cadena cadena1 = cadena2 cadena1 = cadena2 cadena1

Verdadero si la longitud de cadena es cero. Verdadero si la longitud de cadena no es cero, es decir si existe cadena. Verdadero si cadena1 y cadena2 son idnticos. Verdadero si cadena1 y cadena2 no son idnticos. Verdadero si cadena1 no es la cadena nula.

Ejemplo con script primer_nombre.sh:


#!/bin/sh echo Escriba su primer nombre : read nombre if [ -z $nombre ]; then echo No ha ingresado su primer nombre else echo Su primer nombre es : $nombre fi

Otro ejemplo: script cadena.sh


#!/bin/bash echo "ingrese la cadena 1" read cadena1 echo "Ingrese la cadena 2" read cadena2 if [ $cadena1 = $cadena2 ] then echo "las cadenas son iguales" else echo "las cadenas son distintas" fi

Comprobaciones de enteros n1 -eq n2 Verdadero si los enteros n1 y n2 son iguales. n1 ne n2 Verdadero si los enteros n1 y n2 no son iguales. n1 gt n2 Verdadero si el entero n1 es mayor que el entero n2. n1 ge n2 Verdadero si el entero n1 es mayor o igual que el entero n2. n1 lt n2 Verdadero si el entero n1 es menor que el entero n2. n1 le n2 Verdadero si el entero n1 es menor o igual que el entero n2. Para recordar el significado de las comparaciones, es fcil si sabemos de donde viene la palabra a usar: eq de equal (igual); ne de not equal (no igual); gt de greater than (mayor que); ge de greater or equal (mayor o igual), lt de less than (menor que) y le de less or equal (menor o igual). Otro ejemplo: script numero.sh
#!/bin/sh clear var1=4 echo -n "Ingrese una variable : " read var2 if [ $var2 -ge $var1 ]; then echo $var2 else echo $var1 fi

Comprobaciones de archivos -a archivo Verdadero si existe archivo. -r archivo Verdadero si existe archivo y puede leerse. Premiere IT S.R.L. Pgina 115

LOC: Linux Original Courseware


-w -x -f -d -h -c -b -p -s archivo archivo archivo archivo archivo archivo archivo archivo archivo

Verdadero si existe archivo y puede escribirse. Verdadero si existe archivo y es ejecutable. Verdadero si existe archivo y es un archivo regular. Verdadero si existe archivo y es un directorio. Verdadero si existe archivo y es un enlace simblico. Verdadero si existe archivo y es un archivo de caracteres especiales. Verdadero si existe archivo y es un archivo especial de bloque. Verdadero si existe archivo y es un cauce con nombre. Verdadero si existe archivo y tiene un tamao mayor que cero.

Ejemplo con script verificar_archivo.sh:


#!/bin/sh echo n Escriba el archivo que desea verificar : read archivo if [ -a $archivo ]; then echo Existe el archivo. if [ -r $archivo ]; then echo el archivo se puede leer fi if [ -w $archivo ]; then echo El archivo se puede escribir fi if [ -x $archivo ]; then echo El archivo se puede ejecutar fi if [ -d $archivo ]; then echo El archivo es un directorio fi else echo No existe el archivo : $archivo fi

La sentencia case

La sentencia case se utiliza cuando tenemos que usar varios if para hacer una misma comparacin. Un uso tpico es para comparar (usando comodines del shell como * y ?) una cadena dada con varias posibilidades. La estructura es la siguiente:
case $variable in valor1 ) comandos1;; valor2 ) comandos2;; *) comandos3;; esac

La variable a evaluar ingresa en case $variable in Si cumple valor1, se ejecutan comandos1 Si cumple valor2, se ejecutan comandos2 Si ninguna opcin se cumple, la shell toma como por valor por default a * y ejecutar comandos3. Ejemplo con script verificar_archivo.sh:
#!/bin/sh # Ejemplo de case echo n Escriba un valor : read valor case $valor in 1) echo La variable es 2) echo La variable es 3) echo La variable es *)echo Fin;; esac

1;; 2;; 3;;

Nota: El case es la herramienta que utilizaremos a menudo para crear menes personalizados, que el usuario cuando se loguee, solo pueda acceder a l. Esta es una lnea del archivo /etc/passwd: Premiere IT S.R.L. Pgina 116

LOC: Linux Original Courseware


genio:x:506:509::/home/genio:/usr/bin/menu.sh

El bucle for toma una lista de cadenas y las asigna a una variable. Es una estructura que permite dos sintaxis: La primera, la del for ms o menos tradicional, dar el nombre de una variable y los valores por los que tiene que "pasar", es la siguiente:
for variable in expreg1 expreg2 ... do comandos done

La sentencia for

Hay una pequea diferencia respecto a los bucles normales for de otros lenguajes, como C y Pascal, y sta es que los valores por los que pasa la variable variable tenemos que especificarlos uno a uno (mediante expresiones regulares). Las expresiones regulares se intentarn hacer coincidir con los nombres de los archivos del directorio actual. Nota: Las expresiones regulares, tambin pueden considerarse lista de valores. Ejemplo con script archivos.sh:
#!/bin/sh for i in `ls *.sh`; do # ` son las comillas simples de ejecucin. if [ -x $i ]; then echo el fichero $i es ejecutable. fi done

La segunda sintaxis que permite el bucle for es una sintaxis sin lista. Si utilizamos esta sintaxis, el shell interpretar que la lista que queremos es la de todos los parmetros dados al script desde la lnea de comandos (u otro script o programa). La sintaxis queda:
for variable do comandos done

La sentencia while

El bucle while se ejecutar mientras la condicin que evaluamos sea verdadera. Se puede usar la palabra clave break para abandonar el bucle en cualquier punto de la ejecucin. Con la palabra clave continue el bucle contina con la siguiente iteracin y se salta el resto del cuerpo del bucle. Para escapar de este bucle sin utilizar los breaks, la sentencia while deber dejar de ser cierta. La estructura es la siguiente:
while [ condicion ] do comandos done

Ejemplo con script variable.sh:


#!/bin/sh clear i=0 var1=4 echo -n "Ingrese una variable : " read var2 while [ $var2 -ge $var1 ]; do echo $var2 i=`expr $i + 1` if [ $i -eq 4 ]; then break fi done

Premiere IT S.R.L.

Pgina 117

LOC: Linux Original Courseware

Depuracin

La shell tambin tiene un modo de depuracin real o debugger. Si hay un error en nuestro script se puede depurar de la siguiente forma:
# sh x nombre_de_script

Esto ejecutar el script y mostrar todas la sentencias que se ejecutan con las variables y comodines ya expandidos. La shell tambin tiene un modo para comprobar errores de sintaxis sin ejecutar el shellscript. Se utiliza de la siguiente forma:
# sh n nombre_de_script

Si no retorna nada entonces su programa no tiene errores de sintaxis.

Premiere IT S.R.L.

Pgina 118

LOC: Linux Original Courseware

Captulo 9
El demonio xinetd
xinetd es el Demonio de Servicios Extendidos de Internet . Eso es lo que quiere decir sus siglas en ingls, es un superdemonio, maneja varios servicios simultneamente, por eso es llamado un superdemonio o superserver. Su funcin es ayudar a controlar las conexiones de red en un sistema. Cuando llega una peticin al puerto administrado por xinetd, ste verifica su configuracin controlando una lista de control de accesos y si es autorizado el trfico, se levanta el demonio que realmente tiene que escuchar la peticin.
xinetd ofrece ms capacidades de control de acceso similares a las proporcionadas por tcp_wrapper, algunas

son: control de acceso para los servicios TCP, UDP y RPC control de acceso basado en intervalos de tiempo prevencin efectiva contra ataques del tipo Negacin de Servicios (DoS) que bloquean una mquina saturando sus recursos: o limitacin del nmero de servidores del mismo tipo ejecutndose en forma simultnea. o limitacin del nmero total de servidores o limitacin del tamao de los archivos log. anexin de un servicio a una interface determinada permitiendo, por ejemplo, hacer accesibles los servicios en una red privada pero no en el entorno ajena a ella. puede oficiar de proxy para otros sistemas lo cual resulta muy prctico en el caso del ip_masquerading (o NAT) a fin de acceder a mquinas situadas en una red interna.

El principal inconveniente, como ya se mencion, est relacionado con la administracin de las llamadas RPC que an no se encuentran bien soportadas. Sin embargo, portmap y xinetd se complementan perfectamente. Toda esta primera parte dio una introduccin a los usos de xinetd. Ahora nos dedicaremos a la configuracin general de este demonio y algunos servicios dependientes de l. A partir del kernel 2.4 tenemos xinetd, anteriormente, en kernel 2.2 se usaba inetd. As era inetd, para ver algunas diferencias con el actual, xinetd.
#vi /etc/inetd.conf #finger #systat #netstat #telnet tftp stream stream stream stream dgram tcp tcp tcp tcp udp nowait nowait nowait nowait wait nobody nobody root root nobody /usr/sbin/tcpd in.fingerd -w /usr/sbin/tcpd /bin/ps -auwwx /usr/sbin/tcpd /usr/sbin/tcpd in.telnetd /usr/sbin/tcpd in.tftpd /tftpboot

Veamos que significa cada columna de este archivo: - Nombre del servicio, (tftp, telnet, etc) - Tipo de socket. (stream, dgram, etc) - Protocolo. (tcp, udp) - wait/nowait - usuario con el que se ejecutar el servicio. (root, nobody, etc) - programa que brindar el servicio. (/usr/sbin/tcpd /usr/sbin/in.telnetd) Nota: la ltima columna, la que contiene al programa que brindar el servicio, siempre es de la forma: /usr/sbin/tcpd y el path del programa correspondiente al servicio.

Vamos a ver que xinetd ofrece ms controles sobre los puertos, tiene ms opciones de configuracin, por lo tanto asumimos, que es ms seguro tambin.

Premiere IT S.R.L.

Pgina 119

LOC: Linux Original Courseware Nota: Antes de iniciar xinetd no es necesario deshabilitar inetd. No obstante si no se toma en cuenta esta precaucin puede originarse un comportamiento bastante impredecible de ambos demonios.

Cmo instalar el xinetd?


Fcil, como ya vimos apt-get es amigable para este tipo de cosas. Solo hace falta hacer:
apt-get install xinetd

y el apt-get har su magia. Al finalizar el proceso de instalacin nos va a aclarar que va a migrar la configuracin de inetd al nuevo formato de xinetd. Si quisiramos hacer este proceso a mano, podemos realizarlo de la siguiente forma.
# /usr/local/sbin/xconv.pl < /etc/inetd.conf > /etc/xinetd.conf

Luego, debemos agregarlo al runlevel correspondiente para que se ejecute cada vez que reiniciemos nuestro sistema. Tambin debemos deshabilitar inetd, para que no cargue al arrancar. Si lo dejamos, el inetd en realidad no va a arrancar, porque en el proceso de instalacin del xinetd, el script de arranque de inetd que est ubicado en /etc/init.d fue renombrado a inetd.real.

Configuracin
Los archivos de configuracin para xinetd son los siguientes: /etc/xinetd.conf El archivo de configuracin global de xinetd. /etc/xinetd.d/directory El directorio que contiene todos los archivos especficos al servicio. El archivo /etc/xinetd.conf es el archivo de configuracin por defecto del demonio xinetd. Si bien la configuracin de xinetd no es muy complicada, es bastante extensa y su sintaxis difiere de la empleada por su predecesor inetd. El archivo de configuracin comienza con una seccin por defecto cuyos atributos utilizarn todos los servicios administrados por xinetd. A continuacin, se encuentran tantas secciones como servicios existan. En cada una de ellas se pueden redefinir las opciones especficas que vienen por defecto. Los valores por defecto de cada seccin se escriben de la siguiente manera:
defaults { atributo atributo2 ... atributoN } operador valor [ valor1 ] operador valor2 operador valorN

Ejemplo:
defaults { instances log_type log_on_success log_on_failure cps } includedir /etc/xinetd.d

= = = = =

60 SYSLOG authpriv HOST PID HOST 25 30

Estas lneas controlan varios aspectos de xinetd:

Premiere IT S.R.L.

Pgina 120

LOC: Linux Original Courseware


instantes

Configura el mximo nmero de peticiones que xinetd

puede manejar simultneamente.


log_type Configura xinetd para usar la facilidad de registro authpriv, el cual escribe las entradas de registro al archivo /var/log/secure. Al agregar una directiva tal como FILE /var/log/xinetdlog aqu, crear un archivo de registro personalizado llamado xinetdlog en el directorio /var/log/. log_on_success Configura xinetd para registrar si la conexin es exitosa. Por defecto, la direccin IP del host remoto y el PID del servidor procesando la peticin son grabados. log_on_failure Configura xinetd para registrar si hay una falla de

conexin o si la conexin no est permitida. Configura xinetd para no permitir ms de 25 conexiones por segundo a cualquier servicio dado. Si se alcanza este lmite, el servicio es retirado por 30 segundos. Esto es en el caso del ejemplo, de forma genrica, limita el nmero de conexiones entrantes. El primer argumento es precisamente este nmero. Cuando se supera este lmite, se desactiva el servicio con un retraso (expresado en segundos) proporcionado por el segundo argumento. includedir /etc/xinetd.d/ Incluye las opciones declaradas en los archivos de configuracin especficos del servicio localizados en el directorio /etc/xinetd.d/.
cps

Configurando un servicio
El directorio /etc/xinetd.d/
Los archivos en el directorio /etc/xinetd.d/ contienen los archivos de configuracin para cada servicio manejado por xinetd y los nombres de los archivos que se correlacionan con el servicio. Como sucede con xinetd.conf, este archivo es de slo lectura cuando el servicio xinetd es arrancado. Para que los cambios tengan efecto, el administrador debe reiniciar el servicio xinetd. Nota: Recuerde como se reinicia un demonio o servicio.
#/etc/rc.d/init.d/xinetd restart

El formato de los archivos en el directorio /etc/xinetd.d/ usan las mismas convenciones que /etc/xinetd.conf. La configuracin para cada servicio se almacena en archivos separados para hacer ms fcil la personalizacin y que sea menos probable afectar otros servicios. Veamos como es la estructura de estos archivos:
service nombre_del_servicio { atributo operador valor(es) ... }

Existen tres operadores: '=', '+=' y '-='. La mayora de los atributos slo soportan el operador '=' que fija un valor a un determinado atributo. El operador '+=' agrega un elemento a una lista de valores en tanto que el operador '-=' lo elimina. Ejemplo:
service telnet { flags socket_type wait user server log_on_failure disable }

= REUSE = stream = no = root = /usr/sbin/in.telnetd += USERID = yes

Estas lneas controlan varios aspectos del servicio telnet: Define el nombre del servicio, usualmente coincide con un servicio listado en el service archivo /etc/services. Premiere IT S.R.L. Pgina 121

LOC: Linux Original Courseware


flags Configura cualquier nmero de atributos para la conexin. REUSE instruye xinetd a reutilizar el socket para una conexin Telnet. socket_type Configura el tipo de socket. Puede ser stream (TCP), dgram (UDP), raw (acceso directo a IP) o seqpacket. wait Define si el servicio es de un slo hilo (yes) o de mltiples hilos (no). Si es de mltiples hilos o multithread, por cada servicio nuevo solicitado, xinetd arranca un nuevo servidor de acuerdo al lmite

mximo definido. Nota: Por defecto este lmite es infinito.


user Define bajo qu ID de usuario se ejecutar el proceso. server Define el binario ejecutable a lanzar. server_args Argumentos que se deben pasar al servidor. log_on_failure Define los parmetros de registro para log_on_failure adems de aquellos ya definidos en xinetd.conf. USERID Registra el usuario remoto que est usando el mtodo definido en RFC 1413 para todos los servicios de multiprocesos (log_on_failure y log_on_success). disable Define si el servicio est activo o no. port Define el puerto asociado al servicio. Tambin est definido en el archivo /etc/services. redirect permite enviar la solicitud de un servicio hacia un determinado puerto de otra

mquina. Aqu tenemos algunos atributos ms. Para ampliar la lista, vea la pgina man de xinetd.conf.
Atributo

flags


log_type

no_access only_from protocol


type

max_load

Valores y descripcin Estos son los valores ms comunes. Ver la documentacin para descubrir los restantes. IDONLY: nicamente acepta conexiones de clientes que tengan un servidor de identificacin. NORETRY: en caso de fracasar evita que se desdoble el proceso. NAMEINARGS: para pasar argumentos al servidor. Esto permite usar tcpd ponindolo en el atributo del server. Se escribe el nombre del servidor y sus argumentos tal como server_args, al igual que se hara con inetd. xinetd usa por defecto syslogd y el selector daemon.info. SYSLOG selector [nivel]: permite elegir entre daemon, auth, user local0-7 de syslogd. FILE [tamao_max [tamao_max_absoluto]]: el archivo especificado recibe la informacin. Las dos opciones fijan los lmites del tamao del archivo. Cuando se alcanza el primero, se enva un mensaje a syslogd; en tanto cuando se alcanza el segundo, se interrumpe el registro de los logs del servicio (si se trata de un archivo compartido o fijo por defecto pueden verse afectados diversos servicios). Lista los clientes que no tienen acceso al servicio. Lista a los clientes autorizados. Si este atributo carece de valor, se deniega el servicio. El protocolo especificado debe existe en el archivo /etc/protocols. Si no se proporciona un protocolo se emplea el asociado por defecto. xinetd puede administrar 3 tipos de servicios: RPC: para aquellos definidos en el archivo /etc/rpc. INTERNAL: para los servicios directamente administrados por xinetd (echo, time, daytime, chargen y discard). UNLISTED: para los servicios que no estn definidos en el archivo /etc/rpc ni en el /etc/services. Nota: Es posible combinar distintos valores como lo veremos con los servicios internos servers, services y xadmin. Define la carga mxima del servidor (por ejemplo, 2 2.5). Ms all de este lmite las solicitudes que se realizan al servidor se rechazan. Pgina 122

Premiere IT S.R.L.

LOC: Linux Original Courseware


per_source nice rpc_version rpc_number

Restringe el nmero de conexiones al servidor que tienen un mismo origen. Es un entero o bien UNLIMITED. Cambia la prioridad del servidor, como lo hace el comando nice. Todos los servicios RPC. Todos los servicios RPC que no se encuentran en /etc/rpc.

Los atributos max_load, per_source, instances y cps permiten controlar los recursos que dependen de un servidor. Esto es de gran utilidad para protegernos de manera eficaz de ataques del tipo Negacin de Servicios (DoS) cuyo objetivo consiste en colgar una mquina usando todos sus recursos. Este ejemplo muestra cmo se definen los servicios:
service ntalk { socket_type wait user server only_from } service ftp { socket_type wait user server server_args instances access_times nice only_from } = = = = = dgram yes nobody /usr/sbin/in.ntalkd 192.168.1.0/24

= = = = = = = = =

stream no root /usr/sbin/in.ftpd -l 4 7:00-12:30 13:30-21:00 10 192.168.1.0/24

Note que estos servicios estn nicamente autorizados en la red local (192.168.1.0/24). En cuanto al FTP, debe prever restricciones suplementarias: el nmero de instancias se limita a 4 y slo ser posible su uso en ciertos intervalos de tiempo. Otro Ejemplo:
service telnet { disable flags socket_type wait user server log_on_failure no_access log_on_success access_times } = no = REUSE = stream = no = root = /usr/sbin/in.telnetd += USERID = 10.0.1.0/24 += PID HOST EXIT = 09:45-16:15

En este ejemplo, cuando un sistema cliente desde la red 10.0.1.0/24, tal como 10.0.1.2, intenta accesar el servicio telnet, recibir un mensaje indicando lo siguiente:
Connection closed by foreign host.

Adems, su intento de conexin es registrado en /var/log/secure como sigue:


Jul 2 17:38:49 boo xinetd[16252]: START: telnet pid=16256 from=10.0.1.2 Jul 2 17:38:49 boo xinetd[16256]: FAIL: telnet address from=10.0.1.2 Jul 2 17:38:49 boo xinetd[16252]: EXIT: telnet status=0 pid=16256

Premiere IT S.R.L.

Pgina 123

LOC: Linux Original Courseware

Captulo 10
Introduccin a Samba
Samba es una herramienta que permite a los equipos GNU-Linux/UNIX interactuar con sistemas Windows. Utiliza el protocolo SMB (Session Message Block, Bloque de Mensajes de Sesin) para permitir a aquellos sistemas compartir archivos. Para un administrador esto significa que puede instalar un servidor GNU-Linux/UNIX sin tener que instalar NFS en todos los clientes Windows, porque estos van a utilizar su protocolo nativo SMB. Samba es soportado por la mayora de las variantes UNIX, por GNU-Linux y por algunos sistemas no UNIX. Es gratuito, est ampliamente documentado y por sus caractersticas facilita la administracin de los servidores de archivos. Todo esto lo hace muy popular. Aunque naci como tal en 1995, su historia arranca realmente en 1992, cuando Andrew Tridgell se vio en la necesidad de acceder a archivos en una mquina Unix desde un PC. El cliente NFS (Network File System, Sistema de Archivos de Red es el protocolo nativo de comparticin de archivos Unix-Linux) que utilizaba, trabajaba perfectamente, pero necesitaba tambin una aplicacin que usaba la API de NetBIOS. Dada la problemtica de usar protocolos mltiples bajo DOS, decidi adoptar un enfoque alternativo y utilizar la ingeniera inversa. Mediante un sniffer monitore los paquetes transmitidos mediante SMB, desentra el protocolo y lo implement en su sistema Unix, capaz de manejar sin problemas varios protocolos de forma simultnea. Y eso fue el comienzo. Una vez depurado el cdigo, dado que el objetivo se haba alcanzado, su desarrollo se detuvo. Este parntesis dur hasta unos aos despus, cuando pens en conectar el PC con Windows de su esposa con su propia mquina Linux. Dado que lo tena a mano, prob su propio cdigo que, para su gran sorpresa, funcion perfectamente. Desde entonces, la esposa de Andrew se ha convertido en el primer test al que se someten las nuevas versiones de Samba, que es el nombre que se adopt para el paquete, buscando en un diccionario palabras con la combinacin de letras smb.

Servidor Samba
Samba es una emulacin de NetBIOS, corriendo sobre Linux. Como tal, es un servicio que queda a la escucha sobre el puerto TCP/IP, 139. Para realizar el camino inverso, es decir que Linux vea archivos compartidos por los servidores Windows, se utiliza la utilidad smbclient que forma parte del paquete Samba.

Instalacin de Samba
Para tener samba funcionando, estos son los paquetes que debemos instalar:
apt-get install samba smbfs smbclient samba-common

Nos van a aparecer algunas pantallas de configuracin, recordemos que apt-get install nos deja el paquete instalado, listo para ejecutarlo. Por ejemplo, nos va a preguntar si queremos ejecutar samba como demonio independiente o dentro del superdemonio inetd. En este caso, por razones de rendimiento, elegimos la opcin demonios Nota: inetd y xinetd se tratan en otro captulo.

Premiere IT S.R.L.

Pgina 124

LOC: Linux Original Courseware

Tambin nos puede preguntar, si no lo encontr, el nombre del workgroup o dominio donde se encuentra el servidor. En otra pantalla nos puede preguntar si somos clientes de un servidor DHCP. Otra opcin a configurar tiene que ver con el tema de las claves y la encriptacin. Vamos a configurar un servidor que realiza validacin de usuarios en diferentes sistemas operativos. Podemos tener usuarios windows que impriman en impresoras conectadas a un Linux, o compartan recursos en un servidor Linux. Por lo tanto los usuarios debern poder loguearse tanto en sistemas windows como Linux. Estos sistemas utilizan diferentes formas de administracin de usuarios y passwords. Por tal motivo nos pregunta si queremos utilizar cifrado de contraseas.

Al contestar afirmativamente la pantalla anterior, debemos contestar que s a la prxima, para crear un archivo
/var/lib/samba/passdb.tdb, que es donde se almacenarn las contraseas encriptadas.

Premiere IT S.R.L.

Pgina 125

LOC: Linux Original Courseware

Configuracin de Samba
El archivo principal de configuracin es /etc/samba/smb.conf. Segn las distribuciones puede cambiar la ubicacin de este archivo. Este archivo est dividido en secciones, cada seccin est separada de la siguiente por una cadena de caracteres encerrada entre corchetes. Esa cadena es el nombre del recurso a compartir. A continuacin explicaremos los contenidos del archivo. Nota: Recuerde que, en un archivo de configuracin, los comentarios pueden comenzar con el signo numeral (#), o con punto y coma (;).

Globales

En la primera seccin, como en todo archivo de configuracin, lo primero a setear es el entorno global o general. Por ejemplo, nombres, seguridad, logueos, protocolos de impresin. Luego seguiremos con opciones particulares en las prximas secciones.
# ================== G l o b a l [global] workgroup = centraltech S e t t i n g s =========================

Esta variable workgroup, es el nombre de grupo de trabajo. Aqu debemos poner el nombre de workgroup o dominio que estemos utilizando. La siguiente lnea ser comentario de nuestro servidor, en ste lugar podemos poner lo que queramos.
# server string is the equivalent of the NT Description field server string = h% server (Samba %v) En esta lnea %h ser reemplazado por el nombre de host y %v ser reemplazado por la versin de

Samba. Podemos dejarlo as o ponemos la descripcin deseada


server string = mi h% server (Samba %v)

Si la red utiliza WINS


# Windows Internet Name Serving Support Section: # WINS Support - Tells the NMBD component of Samba to enable its WINS Server ; wins support = no

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. Configuro la IP del servidor WINS
# WINS Server - Tells the NMBD components of Samba to be a WINS Client # Note: Samba can be either a WINS Server, or a WINS Client, but NOT both ; wins server = w.x.y.z

Si tengo un proxy.
# WINS Proxy - Tells Samba to answer name resolution queries on # behalf of a non WINS capable client, for this to work there must be # at least one WINS Server on the network. The default is NO. ; wins proxy = yes # DNS Proxy - tells Samba whether or not to try to resolve NetBIOS names # via DNS nslookups. The built-in default for versions 1.9.17 is yes, # this has been changed in version 1.9.18 to no. dns proxy = no

Le decimos como debe resolver los nombres, si debe buscar en el archivo lmhost (mapea IPs con nombres NETBIOS), en el archivo hosts o servidor de nombres, en wins o por broadcast.
# what naming service and in what order should we use to resolve host names # to IP addresses ; name resolve order = lmhosts host wins bcast

La siguiente lnea permite indicar el rango de direcciones IP de clientes autorizados a conectarse con el servidor, pero como esta comentado por defecto, compartir toda la red.
; hosts allow = 192.168.1. 192.168.2. 127.

Premiere IT S.R.L.

Pgina 126

LOC: Linux Original Courseware Ahora vamos a ver como definir archivos de log, como generarlos. En el caso que necesitemos tener un archivo de logueo distinto por cada mquina que se conecte, podemos usar %m para incluir la mquina en el nombre del archivo de log.
#### Debugging/Accounting #### # this tells Samba to use a separate log file for each machine # that connects log file = /var/log/samba/log.%m

Se le puede especificar el tamao mximo de cada uno de esos archivos (es recomendable dejar la configuracin por default)
# Put a capping on the size of the log files (in Kb). max log size = 1000 # If you want Samba to only log through syslog then set the following # parameter to `yes`. ;syslog only = no

Nota: Los archivo de log son los que guardan un registro de actividades.
# We want Samba to log a minimum amount of information to syslog. Everything # should go to /var/log/samba/log.{smbd,nmbd} instead. If you want to log # through syslog you should set the following parameter to something higher. syslog = 0 # Do something sensible when Samba crashes: mail the admin a backtrace panic action = /usr/share/samba/panic-action %d

Samba permite cuatro tipos de seguridad: share, user, server y domain. La autentificacin de nivel de recurso compartido (share) requiere que cada usuario tenga una cuenta de SMB en el servidor de Samba o que se defina ese recurso compartido concreto de forma que permita el acceso de usuarios annimos. Estos requisitos son las nicas restricciones de nivel de recurso compartido para acceder a los recursos compartidos; si los usuarios tienen cuentas de SMB, Samba, en la seguridad de nivel de recurso compartido, no podr restringir el acceso de esos usuarios a los recursos compartidos. Estas restricciones limitadas difieren del acceso de nivel de recurso compartido de Windows 9x, que permite asignar contraseas a los recursos compartidos. El acceso de nivel de usuario (user) es ms potente y ms seguro, y permite que los administradores especifiquen una lista de usuarios o grupos de usuarios que pueden acceder a un recurso compartido (la seguridad de nivel de recurso compartido otorga acceso al servidor, mientras que la seguridad de nivel de usuario otorga acceso a los recursos compartidos). Para la autorizacin de usuarios, Samba subdivide el acceso de nivel de usuario en dos: user (usuario) y domain (dominio). Si se especifica el acceso de nivel de usuario user, para autorizar al usuario Samba lo buscar en su base de datos de cuentas de usuario. Si se especifica domain, Samba autorizar a los usuarios dependiendo del PDC del dominio. Los administradores que usan Windows NT preferirn sin duda la seguridad de nivel de usuario para poder utilizar las infraestructuras de dominios de Windows NT ya existentes. As y todo, configurar el acceso de nivel de usuario con Samba es ms complicado que configurar el acceso de nivel de recurso compartido. Resumiendo
share user

Seguridad

server domain

Comparacin con cuenta guest. Todos pueden compartir. Indica que no se exige por parte del servidor ningn tipo de autenticacin por lo que se mostrarn todos los recursos compartidos. Comparacin a nivel grupo. Solo comparten usuarios vlidos. Es el tipo de seguridad por defecto e indica la necesidad de autenticar el usuario para acceder al servidor. La autenticacin se hace en el servidor Samba. permite la autenticacin en otro servidor, en caso de que esta falle se har en el servidor Samba. permite la autenticacin en un PDC siempre y cuando haya sido aadido el servidor Samba a este dominio (ms adelante se indica como hacer esto).

Como utilizaremos la seguridad a nivel workgroup, cuenta guest, lo dejaremos as.


####### Authentication #######

Premiere IT S.R.L.

Pgina 127

LOC: Linux Original Courseware


# # # # "security = user" is always a good idea. This will require a Unix account in this server for every user accessing the server. See /usr/share/doc/samba-doc/htmldocs/ServerType.html in the samba-doc package for details. security = user

Si quisiramos tener la seguridad del tipo server deberamos poner aqu el nombre del Dominio (Controlador de Dominio) que queramos usar para las autenticaciones.
# ; # # ; ; Use password server option only with security = server password server = <NT-Server-Name> Password Level allows matching of _n_ characters password for all combinations of upper and lower case. password level = 8 username level = 8

Este es un punto muy importante del archivo de configuracin. A partir de Windows 95 OSR2, los passwords estn encriptados. Anteriormente, esto no era as. As que ahora, lo que debemos hacer es descomentar esto. Ms informacin encontramos en la ayuda del paquete Samba.
# You may wish to use password encryption. See the section on # 'encrypt passwords' in the smb.conf(5) manpage before enabling. encrypt passwords = true # If you are using encrypted passwords, Samba will need to know what # password database type you are using. passdb backend = tdbsam guest # # # # # # This parameter control whether or not Samba should obey PAM's account and session management directives. The default behavior is to use PAM for clear text authentication only and to ignore any account or session management. Note that Samba always ignores PAM for authentication in the case of encrypt passwords = yes. obey pam restrictions = yes

Si queremos tener que evitar el registro de Windows en todas las mquinas de la red local, debemos des-comentar las siguientes lneas de arriba
# This is a username which will be used for access to services which # are specified as "guest ok" guest account = guest # This is a list of users that should not be allowed to login to this service. invalid users = root # This boolean parameter controls whether Samba attempts to sync the Unix # password with the SMB password when the encrypted SMB password in the # passdb is changed. unix password sync = yes # # # # ; For Unix password sync to work on a Debian GNU/Linux system, the following parameters must be set (thanks to Augustin Luton <aluton@hybrigenics.fr> for sending the correct chat script for the passwd program in Debian Potato). passwd program = /usr/bin/passwd %u passwd program = /usr/local/sbin/smbldap-passwd -o %u passwd chat = *Enter\snew\sUNIX\spassword:* %n\n *Retype\snew\sUNIX\ \spassword:* %n\n . # This boolean controls whether PAM will be used for password changes # when requested by an SMB client instead of the program listed in # 'passwd program'. The default is 'no'. pam password change = no

La directiva include, indica que puedo llamar a otro archivo desde este archivo principal de configuracin. Premiere IT S.R.L. Pgina 128

LOC: Linux Original Courseware


# Using the following line enables you to customise your configuration # on a per machine basis. The %m gets replaced with the netbios name # of the machine that is connecting ; include = /etc/samba/smb.conf.%m # Configure Samba to use multiple interfaces # If you have multiple network interfaces then you must list them # here. See the man page for details. ; interfaces = 192.168.12.2/24 192.168.13.2/24

A continuacin estableceremos cierto nivel de seguridad. Primero especificando por cuales interfaces del sistema se escucharan peticiones. Cualquier interfaz omitida significar que Samba no responder a peticiones provenientes de esa interfaz. 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.
# Configure remote browse list synchronisation here # request announcement to, or browse list sync from: # a specific host or from / to a whole subnet (see below) ; remote browse sync = 192.168.3.25 192.168.5.255

Podemos hacer transmisin (Broadcast) hacia la red local, y hacer un anuncio remoto, con el siguiente parmetro:
# Cause this host to announce itself to local subnets here ; remote announce = 192.168.1.255 192.168.2.44

Podemos indicarle a Samba que utilice las impresoras definidas en el archivo /etc/printcap. En ese archivo estn definidas las impresoras y mdulos.
########## Printing ########## # if you want to automatically load your printer list rather # than setting them up individually then you'll need this load printers = yes

Linux usa el sistema de impresin bsd, o tambin puede ser lprng. Debemos descomentar la siguiente lnea.
# lpr(ng) printing. You may wish to override the location of the # printcap file ; printing = bsd ; printcap name = /etc/printcap # CUPS printing. See also the cupsaddsmb(8) manpage in the # cupsys-client package. printing = cups printcap name = cups # When using [print$, root is implicitly a 'printer admin, but you can # also give this right to other users to add drivers and set printer # properties printer admin = @ntadmin ######## File sharing ######## # Name mangling options ; preserve case = yes ; short preserve case = yes ############ Misc ############ # Using the following line enables you to customise your configuration # on a per machine basis. The %m gets replaced with the netbios name # of the machine that is connecting ; include = /home/samba/etc/smb.conf.%m

Premiere IT S.R.L.

Pgina 129

LOC: Linux Original Courseware


# # # # # Most people will find that this option gives better performance. See smb.conf(5) and /usr/share/doc/samba-doc/htmldocs/speed.html for details You may want to add the following on a Linux system: SO_RCVBUF=8192 SO_SNDBUF=8192 socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192

# The following parameter is useful only if you have the linpopup # package installed. The samba maintainer and the linpopup maintainer # are working to ease installation and configuration of linpopup and # samba. ; message command = /bin/sh -c '/usr/bin/linpopup "%f" "%m" %s; rm %s' & #### Domain Controller #######

En esta seccin le decimos si el servidor va a ser el master browser o master domain.


# This integer value controls what level Samba advertises itself as # for browse elections. The value of this parameter determines whether # nmbd(8) has a chance of becoming a local master browser for the # WORKGROUP in the local broadcast area. os level = 80

Por default, este parmetro acepta todos los sistemas operativos de Microsoft.
# This boolean parameter controls if nmbd(8) is a preferred master browser for its workgroup. preferred master = yes

Lo que sigue tiene que ver con el dominio principal, puede especificar que el servidor sea el Maestro del dominio, y tambin sobreponerse a cualquier otro en la red.
# Domain Master specifies Samba to be the Domain Master Browser. If # this machine will be configured as a BDC (a secondary logon server), # you must set this to 'no'; otherwise, the default behavior is # recommended. domain master = yes # This option allows nmbd(8) to try and become a local master browser # on a subnet. local master = yes

En el caso que Samba deba autenticar dominios, hay que configurar lo siguiente:
# If set to yes, the Samba server will act as a Primary Domain # Controller (PDC) for the workgroup it is in. domain logons = yes # This parameter specifies the home directory where roaming profiles # (NTuser.dat etc files for Windows NT) are stored. logon path = \\%L\profiles\%u # This parameter specifies the local path to which the home directory # will be connected and is only used by NT Workstations. logon drive = H: # This parameter specifies the home directory location when a # Win95/98 or NT Workstation logs into a Samba PDC. logon home = \\%L\%u\.profile # This parameter specifies the batch file (.bat) or NT command file # (.cmd) to be downloaded and run on a machine when a user # successfully logs in. ; logon script = logon.cmd logon script =

Premiere IT S.R.L.

Pgina 130

LOC: Linux Original Courseware

# Be very careful with case sensitivity - it can break things! ; case sensitive = no # Users and groups allowed to be 'Domain Admins' ; domain admin group = @domainadmins # Some defaults for winbind (make sure you're not using the ranges # for something else.) idmap uid = 10000-20000 idmap gid = 10000-20000

Aqu comienza otra seccin. El recurso compartido se llama homes, y son los directorios home de los usuarios
#=====================Share Definitions ============================== [homes] comment = Home Directories browseable = no # By default, the home directories are exported read-only. Change next # parameter to 'yes' if you want to be able to write to them. writable = yes # File creation mask is set to 0700 for security reasons.If you want # to create files with group=rw permissions,set next parameter to0775. create mask = 0700 # Dir creation mask is set to 0700 for security reasons.If you want to # create dirs with group=rw permissions, set next parameter to 0775. directory mask = 0700

Lo anterior define que cada usuario mantiene su profile en el home que indique su entrada en el archivo /etc/passwd. Tambin hay que especificar si el recurso compartido es de escritura o slo de lectura. De forma predeterminada, Samba configura todos los recursos compartidos de disco como slo de lectura. Para que los usuarios puedan escribir en los recursos compartidos habr que utilizar el parmetro writeable (de escritura) para reemplazar el valor predeterminado. Se puede dejar que Samba aplique el valor predeterminado de slo lectura (para recursos compartidos de disco que guarden controladores u otros archivos que no deban modificar los usuarios, por ejemplo) asignando a este parmetro el valor no o, simplemente, no definindolo. Sigue otra seccin, la de impresoras
# NOTE: If you have a BSD-style print system there is no need to # specifically define each individual printer [printers] comment = All Printers path = /tmp browseable = no # Set public = yes to allow user 'guest account' to print guest ok = no writable = no printable = yes use client driver = no printer admin = root, @domainprintoperators ; create mask = 0700

Con esto le hemos dicho a Samba que queremos compartir las impresoras, pero que no le permita el acceso a las mismas al usuario guest. El parmetro guest ok, dice si admiten invitados. Se utiliza para permitir el acceso annimo a un recurso compartido. Si no se permite el acceso annimo, los usuarios que se conecten al recurso compartido necesitarn tener una cuenta de SMB en la base de datos local de contraseas de Samba. Si se permite el acceso annimo, (esto es para el caso de seguridad=share.), tambin habr que especificar la cuenta de usuario de Linux con la que los usuarios accedern a los archivos del recurso compartido de disco (esta cuenta de usuario tambin puede especificarse en la seccin global. En tal caso, esta sera la configuracin predeterminada, que podra modificarse dependiendo del recurso compartido). Este paso es necesario, porque todos los accesos tienen que cumplir con los requisitos de autorizacin tanto de Samba como de Linux. Utilice la Premiere IT S.R.L. Pgina 131

LOC: Linux Original Courseware cuenta de invitado para especificar la cuenta de usuario nobody (la cuenta originalmente propietaria del directorio):
guest ok = yes guest account = nobody # Windows clients look for this share name as a source of downloadable # printer drivers [print$] comment = Printer Drivers path = /var/lib/samba/printers browseable = yes guest ok = no read only = yes write list = root, @domainprintoperators ;[cdrom] ; comment = Samba server's CD-ROM ; writable = no ; locking = no ; path = /cdrom ; guest ok = yes

Lleg el momento de definir nosotros un recurso compartido. Lo llamaremos compartir.


[compartir] # este es el nombre con el cual visualizaremos el recurso por NetBIOS comment = esta es la carpeta creada de ejemplo # Ubicacin fsica del directorio compartido path = /home/samba/ # Control de accesos al share valid users = agarcia, gddlab, acarna

Con lo anterior compartimos el directorio local /home/samba, con el nombre de compartir, al que tendrn acceso los usuarios agarcia, gddlab y acarna. Si quisiramos permitir que el grupo Profesores acceda al recurso, lo haramos de la siguiente manera:
valid users = @Profesores

Por ultimo, decimos que no sea un directorio pblico.


public = no

El archivo de configuracin del servidor Samba est listo. Hacemos algunos ajustes adicionales. La primer tarea ser crear en el servidor Linux el directorio que utilizar Samba para compartir archivos. Tanto en Linux como en Windows, el proceso es el mismo: crear el directorio y confirmar que su propietario es el usuario o el grupo adecuado. Entonces, como usuario root, hacemos en el sistema de archivos de Linux:
# mkdir /home/samba

Observe que el directorio se crea en el directorio inicial de Samba. Linux asigna a casi todos los servicios una cuenta de usuario y un directorio inicial. Una prctica habitual en Linux es que los directorios de los recursos compartidos de disco estn en el directorio inicial de Samba, aunque el recurso compartido puede ponerse en otro disco e incluso en un dispositivo de almacenamiento de red montado. La ubicacin del directorio es irrelevante si el soporte de almacenamiento es fiable. Vamos a configurar como propietario de este directorio de Linux a nobody (una cuenta que Linux crea automticamente durante la instalacin). Los administradores de Linux normalmente asignan la cuenta de usuario utilizada para acceder de forma annima a "nobody" (nadie).
# chown nobody /home/samba

Despus de guardar el archivo y salir del editor debemos ejecutar el programa testparm de Samba, para que haga una comprobacin de la sintaxis, por ejemplo que no hayamos ingresado cadenas que no sean reconocidas por Samba (por Ej.: suers en lugar de users) Premiere IT S.R.L. Pgina 132

LOC: Linux Original Courseware Adems, para determinar la causa de un problema puede utilizar los dos archivos de registro de Samba, log.smb y log.nmb, que se encuentra en /var/log/samba. El archivo log.smb registra la actividad de compartimiento de archivos e impresin. El archivo log.nmb registra la activacin de servidores de nombres, como el registro del servidor WINS.
# testparm Load smb config files from /etc/samba/smb.conf Processing section "[homes]" Processing section "[printers]" Processing section "[print$]" Processing section "[compartir]" Loaded services file OK. Press enter to see a dump of your service definitions

Si existen errores de sintaxis nos lo ir diciendo, van a aparecer ac. Presionamos Enter y nos mostrar el archivo listo para ejecutar, sin ningn comentario. Ya configuramos el archivo, pero Samba no esta corriendo todava. Para hacer funcionar el servicio debemos hacer lo siguiente:
# /etc/rc.d/init.d/smb start StartingSMBservices: smbd nmbd

Para asegurarnos que el servicio est funcionando podemos ejecutar lo siguiente. Recordar que Samba escucha en el puerto 139.
# telnet localhost 139 Trying 127.0.0.1... Connected to localhost.

Nota: Cuando el servidor est en produccin no es conveniente reiniciar Samba; durante el proceso de reinicio se pierde la conexin con el cliente, lo que puede provocar que el archivo se corrompa. Parar Samba cuando se est alojando un recurso compartido de disco es equivalente desde el punto de vista del cliente a desconectar el cable de red del servidor. Recin configuramos el servidor, ahora necesitamos conectarnos como clientes, para ver si ha quedado bien. Para ver nuestro servidor, utilizamos la herramienta smbclient
dragon:~# smbclient L dragon

Nos pide un password, presionamos Enter para ejecutar un login annimo, y muestra:

Premiere IT S.R.L.

Pgina 133

LOC: Linux Original Courseware

Como vemos, la configuracin es correcta, vemos el servidor y a que workgroup pertenece. Tambin vemos los recursos compartidos del servidor. Asegrese de que puede acceder al recurso compartido de disco archivos a travs de la red. Para ver los archivos del recurso compartido en \\<nombreservidorsamba> puede hacer la prueba siguiente:
C:\> net view \\<nombreservidorsamba>

La salida del mandato debera ser parecida a esta:


Recursos compartidos en \\<nombreservidorsamba> Samba 3.0.14 Recurso Tipo Uso Comentario ----------------------------------------------------------Archivos Disco Archivos de red El comando se ha completado correctamente.

Si el mandato se ejecuta correctamente, significa que es posible acceder al nuevo recurso compartido de disco. Para ver el servidor tambin puede utilizarse el Entorno de red. Nota: Si el mandato no se ejecuta correctamente, es probable que tenga un problema de acceso al servidor. Intente verlo con el mandato net view y la direccin IP del servidor. Si el mandato con la direccin IP funciona y con el nombre de NetBIOS no, verifique que los parmetros correspondientes al servidor WINS y al grupo de trabajo son correctos. Si utilizando el mandato con la direccin IP tampoco funciona, vuelva a comprobar que Samba est funcionando y que Linux est configurado correctamente. Tambin, hay que determinar si es posible conectarse al recurso compartido y si se tiene acceso de escritura. Utilice el mandato net use para verificar que se tiene acceso y, a continuacin, realice una operacin de escritura en el recurso compartido para comprobar el acceso de escritura. En el ejemplo siguiente se comprueba el acceso creando un directorio:
C:\> net use Z: \\<nombreservidorsamba>

La salida del mandato nos devuelve:


El comando se ha completado correctamente.

Para crear el directorio utilice estos mandatos:


C:\> Z: Z:\> mkdir prueba Z:\> dir

Premiere IT S.R.L.

Pgina 134

LOC: Linux Original Courseware Como resultado de estos mandatos ver la salida siguiente:
El volumen de la unidad Z es Archivos El nmero de serie del volumen es 2DE3-053C Directorio de Z:\ 13/06/06 11:02 <DIR> . 13/06/06 11:02 <DIR> .. 13/06/06 11:02 <DIR> prueba

Usuarios vlidos para Samba


Para validar los usuarios, Samba necesita adems de que existan como usuarios de sistema. Debemos sincronizar las cuentas entre el servidor Linux y las estaciones Windows. Ejemplo: si en una mquina Windows ingresa como usuario agarcia con contrasea venus, en el servidor Linux debe existir tambin dicha cuenta con ese mismo login y esa misma contrasea. Para agregar las cuentas se pueden usar los comandos adduser y passwd, tambin smbadduser y smbpasswd. Veamos, si el usuario agarcia no existe en el sistema, lo podemos crear con useradd. Luego, para crear la cuenta de usuario agarcia en Samba, lo puedo hacer con smbadduser, como dije antes, o sino directamente con smbpasswd. Vea el ejemplo.
# smbadduser unixid:winid

Donde primero coloco el nombre de usuario Linux y luego el nombre del usuario Windows. Otra forma es:
# useradd -m agarcia # smbpasswd -a agarcia NewSMBpassword: Retype newSMBpassword: Added user agarcia. Password changed for user agarcia

Acceso a los recursos compartidos


El programa cliente que vamos a usar se llama smbclient. Este permite acceder hacia cualquier servidor Samba o Windows como si fuese el comando ftp en modo texto.
# smbclient -U agarcia -L dragon

Veremos lo siguiente en pantalla:


Anonymous login successful Domain=[CENTRALTECH] OS=[Unix] Server=[ Samba 3.0.14a-Debian] Sharename --------print$ compartir IPC$ Server --------DRAGON Workgroup --------CENTRALTECH Type ----Disk Disk IPC Comment ------Printer Drivers esta es la carpeta creada de ejemplo IPC Service ( mi dragon (Samba 3.0.14a-Debian))

Comment ------mi dragon(Samba 3.0.14a-Debian) Master ------DRAGON

En general, el comando es :
smbclient -L host -U usuario

donde host es la maquina Windows o el servidor Samba y usuario es el usuario de la mquina o el dominio, y va a pedir la password del usuario del dominio Windows NT. Premiere IT S.R.L. Pgina 135

LOC: Linux Original Courseware Si no quiero que pida la password:


smbclient -L host -N

donde -N significa que no pida password para ver los recursos. Para navegar los recursos compartidos por una mquina Windows o el servidor Samba:
smbclient //DRAGON/compartir -U agarcia

Al ejecutar esto, el sistema pedir que se proporcione la contrasea del usuario agarcia en el equipo denominado DRAGON.
smbclient //DRAGON/compartir -U agarcia Password: Domain=[DRAGON] OS=[Unix] Server=[Samba 3.0.14a-Debian] smb: \>

En este prompt que nos aparece, pueden utilizarse los mismos comandos que en la consola del comando ftp, como seran get, mget, put, del, etc.

Acceso a los recursos compartidos: montaje


En el ejemplo anterior hay un recurso de disco compartido que se llama compartir. Si queremos montarlo, para verlo, usarlo, etc, debemos crear un punto de montaje. ste puede crearse en cualquier directorio sobre el que tengamos permisos de escritura. Luego, para montarlo, utilizamos la siguiente lnea de comando:
smbmount //dragon/compartir /mnt/cdrom

Nota: El directorio para montar, recuerde que debe cumplir la condicin de ser un directorio vaco. Conviene crear un directorio particular para montar Samba. Tambin puede utilizar el siguiente comando: En este caso creamos un directorio /samba para montar all nuestros recursos compartidos.
mount -t smbfs -o username=agarcia,password=agarcia //dragon/compartir /samba

Nota: Puede ser que necesite realizar algunos pasos adicionales para utilizar el comando smbmount. Por default, y por motivos de seguridad, solo root puede utilizar los comandos smbmount y smbumount. Entonces debemos establecer permisos de SUID a dichos comandos. Lo hacemos ejecutando, como root:
chmod 4755 /usr/bin/smbmount chmod 4755 /usr/bin/smbumount

Para poder imprimir un archivo, lo mandamos la impresora remota. No debemos olvidar volver a iniciar el demonio lpd de impresin para que reconozca a la nueva impresora.
lpr -P Sambaprinter oraconnpool.jsp

Nota: Para que Sambaprinter sea la impresora utilizada por defecto, recuerde sustituir en el archivo /etc/printcap donde diga impreSamba:\ por lp|impreSamba:\

Samba-SWAT
A partir de la versin 2 del kernel de Linux se incorpor SWAT (Samba Web Administration Tool), que es una herramienta de administracin de Samba va Web. Este programa consta de una interfase GUI (Graphic User Interface) donde la configuracin del servidor Samba la podemos hacer editando directamente el archivo smb.conf. Es una herramienta para configurar Samba utilizando el entorno grfico. Al instalar el paquete samba, este incluye la aplicacin SWAT, que podr acceder desde cualquier navegador Web desde cualquier mquina de su red local.

Premiere IT S.R.L.

Pgina 136

LOC: Linux Original Courseware Otra forma de habilitar samba-swat es editando /etc/xinetd.d/ y habilitar el servicio swat. Recuerde reiniciar el demonio xinetd. Nota: Por las dudas, conviene guardar una copia del archivo de configuracin original, ya que SWAT va a eliminar las lneas que no son necesarias en el archivo smb.conf, dejando solo aquellas requeridas para la configuracin Para poder utilizar Samba-SWAT debemos abrir nuestro navegador web y en la barra de URL ingresar la siguiente direccin (para acceder al servidor Samba instalado en el servidor local, si lo hacemos desde la red, debemos utilizar la URL correspondiente para ubicar al servidor desde la red):
http://localhost.localdomain:901

Nos va a aparecer una ventana pidiendo nombre de usuario y contrasea. Ingresamos los de root, Y veremos una pantalla como la de la figura 23:

Figura 23

Como vemos, aqu tenemos las mismas opciones que nos aparecan en el archivo de configuracin, y algunas ms, como por ejemplo, la administracin de usuarios, impresoras y dems secciones que vimos antes en el archivo.

Figura 24

Hasta dnde se puede llegar a partir de este sencillo servicio de archivos depende de cuanto quiera ahondar en su investigacin sobre Samba y Linux. Samba se puede integrar en el dominio de Windows NT para ofrecer Premiere IT S.R.L. Pgina 137

LOC: Linux Original Courseware seguridad a los usuarios, por ejemplo. Otra potente caracterstica de Samba es que puede hacer funciones de PDC de dominios. Tambin puede servir para habilitar el servidor Linux (u otro Sistema Operativo UNIX) como servidor de impresin para los clientes Windows. Samba permite que los usuarios controlen totalmente los trabajos de impresin (pueden cancelar y supervisar los trabajos de impresin, cambiar de impresora, etc), y puede configurar Samba para que ejecute programas externos para supervisar y registrar el uso de las impresoras o incluso para enviar faxes. Las posibilidades de uso de Samba son muchas. A medida que vaya explorando la aplicacin, ir descubriendo toda su potencia y flexibilidad. Nota: Bibliografia relacionada: Usando Samba, Robert Eckstein, David Collier-Brown, Peter Kelly. Links relacionados para buscar en la Web: http://www.samba.org http://www.insflug.org/COMOs/Samba-Como/Samba-Como-6.html

Premiere IT S.R.L.

Pgina 138

LOC: Linux Original Courseware

Captulo 11
Servidor DHCP
DHCP es un protocolo de configuracin dinmica de nodos (en ingles: Dynamic Host Configuration Protocol). Hemos visto en captulos anteriores como asignar direcciones IP a los hosts de nuestra red, usando el comando ifconfig. Esta forma es til y muy fcil mientras nuestra red est compuesta de unos pocos servidores y/o terminales. Imagine que tiene que configurar una empresa de varios pisos (o varios edificios/sucursales), sera una tarea complicada asignar las direcciones IP manualmente a cada mquina. As vemos la utilidad del protocolo de configuracin dinmica. Configuramos un servidor que ser el que asigne automticamente las direcciones IP a los hosts que lo soliciten. Los pedidos incluyen mquinas temporales y porttiles. El protocolo DHCP es una ampliacin del protocolo BOOTP, su predecesor, que arrancaba las mquinas que se conectaban a l porque no tenan disco rgido. Nota: DHCP es un protocolo estndar. Cualquier sistema operativo que se conecte al servidor ser configurado con una direccin IP. El servidor DHCP permite asignacin dinmica de IPs por ciertos perodos de tiempo. En realidad, hay tres tipos de asignacin de direcciones: Esttica Dinmica por tiempo limitado Dinmica por tiempo ilimitado. La asignacin de IPs se configurar de una forma u otra, segn el tipo. Puede ser que nos interese un direccionamiento esttico para clientes sin disco o para mquinas que brindan algn servicio especfico (es ms fcil para el administrador configurar un servidor, que cada cliente). El direccionamiento dinmico por tiempo ilimitado se usa cuando la cantidad de clientes no vara demasiado. El direccionamiento dinmico por tiempo limitado, o arrendamiento de direcciones es til para racionar las IPs, minimizando el costo administrativo. Segn sea la frecuencia de levantar o bajar hosts y de la cantidad de direcciones IPs disponibles se conceder un mayor o menor tiempo de arrendamiento. El tiempo ser bajo, por ejemplo 15 minutos si los clientes se conectan y desconectan muy seguido y nos interesa que est disponible la mxima cantidad de IPs. Cada vez que arranca un cliente, vuelve a solicitar una direccin. El servidor recuerda si el cliente ya tena una IP asignada para reasignrsela. Para instalar el servicio de DHCP, en Debian, hacemos: apt-get install dhcp El DHCP se ejecuta en el puerto 67, con protocolo UDP, porque las cantidades de datos involucradas son pequeas, y la rapidez en la respuesta es crtica. Esto es para el servidor, en el cliente, el puerto es el 68. Para configurar este servicio debemos editar el archivo /etc/dhcpd.conf:
server-identifier option subnet-mask default-lease-time max-lease-time option broadcast-address option domain-name option domain-name-servers option netbios-name-servers option routers 192.168.1.207; 255.255.255.0; 600; 7200; 192.168.1.255; "dragonale.com.ar"; 192.168.1.10; 192.168.1.10; 192.168.1.1;

subnet 192.168.1.0 netmask 255.255.255.0 { range 192.168.1.200 192.168.1.225; option routers 192.168.1.1; option domain-name centraltech.com.ar; } server-identifier

especifica la direccin IP del servidor. Parte de la respuesta del servidor DHCP es esta direccin IP. En sistemas que tengan varias placas, el servidor DHCP concede la IP a traves de la primera interfaz. Pero, esta interfaz no puede ser alcanzada por todos los clientes a veces. Pgina 139

Premiere IT S.R.L.

LOC: Linux Original Courseware Entonces, en estos casos, server-identifier se usa para enviar la IP de la interfaz apropiada para que el cliente se comunique con el servidor.
option subnet-mask

indica la mscara de la red, en este caso es una clase C.

default-lease-time y max-lease-time

son los tiempos de contrato, arrendamiento o de asignacin de la direccin IP. Se expresan en segundos. indica la direccin de broadcast.

option broadcast-address option domain-name

indica el dominio que se usar en las bsquedas DNS.

option domain-name-servers

indica el servidor DNS que usarn los clientes DHCP. Podra ser que el propio servidor Linux tambin trabaje como servidor DNS.

option netbios-name-servers

indica el servidor WINS. Si, por ejemplo, tengo la necesidad que las mquinas Windows consulten un servidor WINS (para hacer la traduccin NetBIOS-Name a IP) indico aqu su direccin IP. Nota: Recuerde que incluso un servidor Samba puede actuar de servidor WINS, con solo agregar las siguientes lneas al smb.conf:
wins support = yes domain master = yes

si tuviera Samba y quiero que las mquinas Windows consulten el servidor Linux para hacer la traduccin NetBIOS-Name a IP.
option routers

indica cul es la direccin IP del gateway que nos permite salir al exterior de

nuestra subnet. Hasta aqu, vimos todo el primer prrafo, que especifica la configuracin global del servidor DHCP. Lo que sigue son configuraciones particulares, para cada red o subred.
subnet X.Y.Z.A range X.Y.Z.B netmask M.N.P.Q

define la red que vamos a configurar.

X.Y.Z.C Especifica el rango de direcciones que brindar el servidor, por supuesto deben estar dentro de la subred indicada. 192.168.1.225, una Ejemplo: si yo especifico como rango: 192.168.1.200 mquina cliente que pida una IP se le podr dar 192.168.1.220, pero no 192.168.1.100.

Una vez hecho esto nos queda reiniciar el dhcpd y configurar los clientes para que usen el servidor. Para esto tenemos dos opciones. En primera instancia podramos probarlo de la siguiente forma:
dragon:~# dhclient eth0 Internet Software Consortium DHCP Client 2.0pl5 Copyright 1995-2002 Internet Software Consortium. All rights reserved. For info, please visit http://www.isc.org/dhcp-contrib.html Listening on LPF/eth0/00:0c:6e:39:44:4e Sending on LPF/eth0/00:0c:6e:39:44:4e Sending on Socket/fallback DHCPREQUEST on eth0 255.255.255.0 port 67 interval 3 DHCPNAK from 192.168.1.107 DHCPDISCOVER on eth0 to 255.255.255.255 port 67 interval 3 DHCPOFFER from 192.168.1.107 DHCPREQUEST on eth0 to 255.255.255.255 port 67 DHCPACK from 192.168.1.107 bound to 192.168.1.201 -- renewal in 300 seconds. dragon:~#

Premiere IT S.R.L.

Pgina 140

LOC: Linux Original Courseware Como se puede ver, el equipo consult y le contest nuestro servidor, que le asign la IP 192.168.1.201. De esta forma, comprobamos que el servidor DHCP est funcionando OK y asignando IPs como corresponde. Ahora lo que tendramos que hacer es fijar la configuracin para que en el prximo inicio vuelva a configurar la placa va DHCP. Para esto tenemos que configurar el archivo /etc/network/interfaces
dragon:~# cat /etc/network/interfaces # /etc/network/interfaces -- configuration file for ifup(8), ifdown(8) # The loopback interface auto lo iface lo inet loopback iface eth0 inet dhcp

Si por algn motivo es necesario que una de las mquinas de la red/subred tuviera una IP fija, es posible hacerlo. En este caso voy a configurar una IP esttica. La nica forma de diferenciar una mquina de otra, antes de asignar direcciones IP, es por la direccin fsica, por la placa de red, ms conocida como MAC-ADDRESS. Esta direccin est grabada en el dispositivo, y es nica para cada placa de red. Las siguientes son las lneas que debemos agregar al archivo de configuracin:
host www { hardware ethernet 00:e0:7d:ad:2d:80; fixed-address 192.168.1.20; option domain-name "otrocentraltech.com.ar"; option host-name "www"; }

Soporte para IPV6

Debe instalarse un paquete llamado radvd. Su configuracin es muy simple. Veamos el siguiente archivo /etc/radvd.conf
Interface eth0 { AdvSendAdvert on; Prefix 0:470:1f00:296::/64 { }; };

Luego debemos levantar el demonio radvd


dragon:~# /etc/init.d/radvd restart

Premiere IT S.R.L.

Pgina 141

LOC: Linux Original Courseware

Captulo 12
(Parte de lo expuesto en la introduccin de este captulo fue extrado de www.tldp.org)

Firewalls
Internet puede ser un ambiente muy hostil. Conectados a la gran red hay gente que puede estar interesada en la informacin que usted tiene almacenada (personal, financiera, empresarial). Aunque usted suponga que, por no guardar informacin comprometedora (nmeros de tarjetas de crdito los secretos de su xito), su computadora no es interesante para los hackers; esto no es completamente cierto. Uno de los objetivos de los hackers son las computadoras en si. En efecto, si el hacker quiere realizar ataques manteniendo oculta su propia identidad, puede poner las computadoras de otras personas a trabajar para l. Se puede dar el caso de que su PC este atacando el sitio Web de algn organismo sin que usted lo sepa. Se han dado casos de redes que estaban siendo utilizadas por extraos como depsitos de software ilegal, por supuesto, sin el consentimiento de los legtimos propietarios de la red. Un firewall es un sistema de seguridad que acta como una frontera de proteccin entre una red (o PC) y el mundo exterior. Los Firewalls pueden ser por hardware o por software y son el equivalente a un guardia de seguridad, slo que en este caso est apostado en la entrada/salida de su red. Existen cuatro tipos bsicos de firewalls, y estos son: Packet filtering (Filtrado de paquetes) Un Firewall de este tipo acepta o deniega el paso del trfico basado en los encabezados (headers) TCP/IP. Son los ms baratos y tambin los que menos proteccin brindan. Operan en la capa de red, capa 3 del modelo OSI, no realizan chequeo del contenido de los paquetes y, como ventaja, casi no afectan la performance de la red. Circuit-level gateway (Gateway a nivel de circuito) Estos Firewalls operan en la capa de sesin (dos niveles ms arriba que los Packet-filtering). En ste tipo, todas las conexiones (sesiones) son monitoreadas y solo a las que son consideradas vlidas, por configuracin se les permite el paso. Esto generalmente quiere decir que un cliente Circuit-level gateway detrs del Firewall podr iniciar cualquier tipo de sesin, pero los clientes externos no podrn conectarse a la mquina protegida. Application-level Proxy (Proxy a nivel de aplicacin) Un Proxy es un representante, intermediario en la operacin de comunicacin. Estos Firewalls fuerzan a todas las aplicaciones de las estaciones de trabajo protegidas a que usen el Firewall como un Proxy. Para el cliente su servidor es el Proxy y el servidor ve al Proxy como su cliente. Entonces el Firewall puede autorizar cada paquete de cada protocolo en forma independiente. Sus desventajas son una prdida considerable en la performance de la red, y que aquellas aplicaciones que no puedan ser configuradas para utilizar un Proxy server, no funcionarn. La ventaja es el alto grado de seguridad que brinda. Stateful Firewall (completo) Estos Firewalls proveen un seguimiento y control del flujo de datos (entradas y salidas) de cada sesin. La informacin relativa a cada conexin se almacena en memoria y, a medida que cada paquete llega al filtro, el Firewall toma la decisin de pasarlo o bloquearlo usando la informacin histrica almacenada y una serie de reglas simples. El siguiente ejemplo del programa iptables causar que se bloquee el paso a cualquier paquete del protocolo ICMP que sea recibido desde la interface loopback:
iptables -A INPUT -s 127.0.0.1 -p icmp j DROP

Introduccin

Nota: ms adelante, en este mismo captulo hablaremos de iptables Todo el trfico a travs de una red se enva en la forma de paquetes. Por ejemplo, al descargar un archivo de internet, que dice 50k de tamao, podra suceder que reciba algo como 36 paquetes de 1460 bytes cada uno (por poner nmeros al azar). En el comienzo de cada paquete dice donde va, de donde viene, el tipo del paquete, y otros detalles administrativos. Esta parte del paquete se llama encabezado o header. El resto del paquete, contiene los datos reales que se estn transmitiendo, lo que normalmente es llamado cuerpo. Premiere IT S.R.L. Pgina 142

Fundamentos sobre el Filtrado de Paquetes

LOC: Linux Original Courseware Algunos protocolos, como TCP, que se usa para trfico de la web, correo y logins remotos, usan el concepto de conexin. Esto significa que antes de que cualquier paquete de datos reales se enve, varios paquetes de configuracin (con encabezados especiales) son intercambiados diciendo Quiero conectarme, OK y Gracias. Luego, se intercambian paquetes normales. El filtrado de paquetes es una porcin de software, del sistema operativo, que analiza el encabezado de los paquetes cuando ellos lo atraviesan, y decide el destino del paquete entero, basndose en un conjunto de reglas. Si permite pasar al paquete, se lo enva a la aplicacin. Si no permite pasar al paquete, puede lanzar una respuesta de fallo al remitente o, simplemente lo tira como si nunca hubiera llegado. Bajo Linux, el filtrado de paquetes est implementado en el kernel, y hay unas cosas ms complicadas que podemos hacer con paquetes, pero el principio general es el de mirar los encabezados y decidir el destino del paquete.

Y para que necesito un Firewall?

Control. Seguridad. Vigilancia. Control: Cuando conecta una mquina Linux de su red interna a otra red (digamos, Internet) usted tiene la oportunidad de permitir ciertos tipos de trfico, y desaprobar otros. Por ejemplo, el encabezado de un paquete contiene la direccin del destino del paquete, as que usted puede prevenir paquetes que van a una cierta parte de la red externa. Como otro ejemplo, uso Mozilla para acceder a los archivos de Dilbert. Hay anuncios de doubleclick.net en la pgina, y Mozilla alegremente pierde mi tiempo descargndolos. Diciendo al filtro de paquetes que no se permita ningn paquete hacia o desde las direcciones propiedad de doubleclick.net ese problema se resuelve (aunque hay maneras mejores de hacerlo). Seguridad: Cuando su mquina Linux es la nica barrera entre el caos de Internet y su red, es bueno conocer que puede restringir lo que viene a su puerta. Por ejemplo, usted podra permitir que algo salga de su red, pero podra preocuparse por el muy conocido 'Ping de la Muerte' que llega desde los intrusos malvados. Como otro ejemplo, usted podra no querer que los intrusos hagan ssh a su mquina Linux, simplemente no permitiendo a nadie conectarse. Esto se hace configurando al filtro de paquetes para que rechace los paquetes entrantes que levantan las conexiones. Vigilancia: A veces una mquina mal configurada en la red local decidir arrojar paquetes al mundo externo. Es bueno decirle al filtro de paquetes que le permita saber si algo anormal ocurre, quizs pueda hacer algo, o simplemente quizs, usted es curioso por naturaleza.

Netfilter/Iptables
(CentralTech ha contribuido a wikipedia.org con la traduccin del material que sigue). Netfilter es el conjunto de hooks (ganchos) dentro del Kernel Linux diseados para interceptar y manipular los paquetes de red. El componente ms conocido construido encima de netfilter es el firewall que filtra paquetes. Pero los hooks son tambin usados por un componente que realiza NAT (Network Address Translation) y por cualquier otro que provea compatibilidad con ipchains. Estos componentes son llamados kernel modules (mdulos del kernel). Iptables es el nombre de la herramienta del user space (espacio de usuario) por medio de la cual el administrador crea reglas para mdulos de filtrado de paquetes y NAT. Mientras que tcnicamente iptables es solamente la herramienta que controla estos componentes dentro del kernel, el nombre iptables se utiliza muchas veces para referirse a toda la infraestructura, incluyendo a netfilter, connection tracking y NAT, como tambin a la herramienta propiamente dicha. iptables es una parte standard de todas las distribuciones Linux actuales.

Historia

El proyecto netfilter/iptables fue comenzado en 1998 por Rusty Russel, tambin autor del proyecto que precedi: ipchains. A medida que el proyecto creci, fund el Netfilter Core Team (o simplemente el coreteam) en 1999. El software que ellos produjeron (lo llamaremos netfilter desde aqu en adelante) est licenciado bajo la licencia GPL (GNU General Public License), y fue incorporado al kernel Linux 2.3 en Marzo del 2000. En agosto del 2003 Harald Welte fue designado chairman del Coreteam. En abril del 2004, se produjo una ruptura del proyecto por aquellos que lo usaban embedded en routers sin ajustarse a GPL. Premiere IT S.R.L. Pgina 143

LOC: Linux Original Courseware Antes de iptables los paquetes ms usados para crear firewalls en Linux eran ipchains en Linux 2.2 e ipfwadm en Linux 2.0 que se basaba en el ipfw de BSD. Tanto ipchains como ipfwadm alteran el cdigo de networking de modo de poder manipular los paquetes, ya que no exista un entorno general para el manejo de paquetes hasta la aparicin de netfilter. iptables mantiene la idea bsica introducida en Linux con ipfwadm: lista de reglas con qu matchear dentro de un paquete y qu hacer con el paquete. Ipchains agreg el concepto de cadenas de reglas (chains) e iptables extendi sto a la idea de tablas: una tabla era consultada cuando se decida NAT-ear un paquete, y otra cuando se deba decidir si filtrar el paquete. Adicionalmente, los tres puntos en los que se realiza el filtrado en el viaje de un paquete fue modificado, de modo que un paquete slo pasa por un punto de filtrado. Mientras que ipchains e ipfwadm combinan filtrado de paquetes y NAT (especificamente tres tipos de NAT, llamado masquerading, port forwarding y redirection), netfilter hace posible separar las operaciones sobre los paquetes en tres partes: packet filtering, connection tracking, y Network Address Translation. Cada parte se conecta a los hooks netfilter en diferentes puntos para acceder a los paquetes. Los subsistemas de connection tracking y NAT son ms generales y poderosos que los que realizaban ipchains e ipfwadm. Esta divisin permite a iptables, en su momento, usar la informacin que la capa de connection tracking ha determinado acerca del paquete: esta informacin estaba antes asociada a NAT. sto hace a iptables superior a ipchains ya que tiene la habilidad de monitorear el estado de una conexin y redirigir, modificar o detener los paquetes de datos basados en el estado de la conexin y no solamente por la fuente, destino o contenido del paquete. Un firewall que utilice iptables de este modo se llama firewall statefull contrario a ipchains que slo puede realizar firewalls stateless (con excepcin en muy pocas ocaciones). Es posible decir que ipchains no est al tanto del contexto completo del cual un paquete surge, mientras que iptables s. Por tanto iptables puede hacer mejores decisiones sobre el futuro de los paquetes y las conexiones. Iptables, el subsistema NAT y el subsistema de connection tracking son tambin extensibles, y muchas extensiones estn incluidas en el paquete bsico de iptables, tal como la extensin ya mencionada que permite la consulta del estado de la conexin. Extensiones adicionales se distribuyen junto a la utilidad iptables, como patches al cdigo fuente del kernel junto con una herramienta llamada patch-o-matic. Una versin de iptables para IPv6 ya fue escrita, llamada ip6tables al igual que la herramienta de administracin.

Cmo? - ipchains
Esta herramienta reemplaza a ipfwadm usado en el antiguo cdigo de Ip firewall. A partir del kernel 2.2.x podemos correr ipchains. Y a partir de kernel 2.4.x tenemos ipchains e iptables. El paquete ipchains tambin contiene un shell script llamado ipfwadm-wrapper el cual le permitir hacer filtrado tal como se haca antes. No debe usar este script a menos que desee una manera rpida de actualizar un sistema que use ipfwadm (es ms lento, y no verifica argumentos, etc). Nota: ipchains tambin se usa para controlar enmascaramiento (masquerading) y proxy transparente, a pesar de que son dos conceptos del filtrado de paquetes totalmente separados (la implementacin actual de Linux los opaca, dando la impresin de que se relacionan estrechamente). Lo primero es ver si tenemos cargado el mdulo de ipchains. Si tiene un kernel 2.2.x, no necesita cargarlo. Para ver los mdulos que estn levantados use el comando lsmod. Si no est ipchains, debemos cargarlo; para ello:
# modprobe ipchains

Esto cargar el programa que nos permitir editar las cadenas de filtrado. Hacemos:
# ping -c 1 127.0.0.1 PING 127.0.0.1 (127.0.0.1): 56 data bytes 64 bytes from 127.0.0.1: icmp_seq=0 ttl=64 time=0.2 ms --- 127.0.0.1 ping statistics --1 packets transmitted, 1 packets received, 0% packet loss round-trip min/avg/max = 0.2/0.2/0.2 ms

Premiere IT S.R.L.

Pgina 144

LOC: Linux Original Courseware Esto quiere decir que la interface de loopback est respondiendo. 127.0.0.1 es la interface de retorno (loopback) que tendr aun cuando no tenga ninguna conexin real de red. Usted puede usar el programa ping para generar tales paquetes (enva un ICMP de tipo 8 (echo request) al que todos los host deben obligatoriamente responder con un paquete ICMP de tipo 0 (echo reply)). Esto es til para probar. Este comando djelo corriendo y vayamos a otra consola. Aqu escribimos la siguiente regla de filtrado:
# ipchains -A input -p icmp -s 0/0 -d 127.0.0.1 j DENY

Nota: ipchains es case-sensitive (sensible a maysculas y minsculas). Nota: haciendo man ipchains tenemos acceso al manual de ipchains. Si lo ejecuta (activa una regla en el Firewall), ver que los ping al localhost no sern respondidos. Vaya a la consola anterior, donde dej corriendo el ping y ver que se fren
PING 127.0.0.1 (127.0.0.1): 56 data bytes --- 127.0.0.1 ping statistics --1 packets transmitted, 0 packets received, 100% packet loss

Qu significa todo lo que escribimos en la regla de filtrado? Lo primero que tenemos que saber es que hay diferentes tipos de cadenas a ser reconocidas por el kernel. Los tres tipos de cadenas son llamadas entrada (input), salida (output) y traspaso (forward). Cuando un paquete entra (digamos, a travs de la tarjeta Ethernet) el kernel usa la cadena input para decidir su destino. Si sobrevive este paso, entonces el kernel decide dnde enviar el paquete (esto se llama enrutamiento -routing-). Si el destino es otra mquina, consulta la cadena forward. Finalmente, justo antes de que el paquete salga, el kernel consulta la cadena output. Una cadena es una lista (de chequeo - checklist) de reglas. Cada regla dice si el encabezado del paquete se ve como esto, entonces esto es lo que deseo hacer con el paquete. Si la regla no concuerda con el paquete, entonces se consulta la prxima regla en la cadena. Finalmente, si no hay ninguna regla ms por consultar, entonces el kernel mira la poltica de la cadena para decidir qu hacer. En un sistema de seguridad consciente, esta poltica normalmente le dice al kernel que rechace o deniegue el paquete. Ahora veamos que podemos hacer con las cadenas. En la tabla siguiente tenemos las acciones. -A Add, agregar nuevas reglas -D Delete, borrar reglas -N New, nueva regla definidas por el usuario -X Delete user Rule, borra regla definida por el usuario. Debe estar vaca. -L List, lista reglas -I Insert, inserta una regla -P Policies, setea Polticas -F Flush, borra todas las reglas -p indica el protocolo cuyos paquetes sern analizados por sta regla. En el ejemplo el protocolo es icmp (Internet Control Messages Protocol). Puede ver los protocolos en el archivo /etc/protocols. establece la direccin de origen (source) de los paquetes a ser filtrados. 0/0 usado en el ejemplo indica TODAS las direcciones. Esta direccin de origen puede ser, el nombre o la IP. Para IP, puede ser la de un nico host, por ejemplo: -s 192.168.4.2 o la de una red o subred, y sera as: -s 192.168.4.0/24, formato IP/Mask. Note que la mscara se escribe en forma CIDR, es decir que 24 es lo mismo que decir 255.255.255.0. Tambin se puede dar la mscara completa, es decir 192.168.4.0/255.255.255.0. establece el destino (destination) que debe tener un paquete para ser analizado bajo esta regla. En nuestro ejemplo 127.0.0.1, es la direccin de la interface de loopback. Las mismas consideraciones que para el caso anterior (-s). establece la accin a ejecutar sobre los paquetes que cumplan con la regla. DENY indica que el Firewall NO dejar pasar los paquetes que cumplan con los requisitos establecidos en la regla. Otras acciones posibles son: ACCEPT, REJECT y MASQ. La opcin MASQ es slo vlido para la cadena forward. REJECT es parecido a DENY, tambin rechaza paquetes, pero lo hace de una

-s

-d -j

Premiere IT S.R.L.

Pgina 145

LOC: Linux Original Courseware forma ms amable, enva un mensaje ICMP al remitente. En cambio DENY rechaza el paquete sin aviso. Otras opciones que se pueden agregar al comando ipchains son: --source-port especificar el puerto o rango de puertos sin tener que especificar una direccin IP. --destination-port igual que el caso anterior pero para el puerto de destino.

Enmascaramiento (masquerading o NAT)

El Firewall tambin puede enmascarar las direcciones IP de los clientes dentro de nuestra red, de esa manera todos los hosts de su red exhibirn una nica direccin pblica, aunque dentro de la intranet mantengan sus direcciones privadas, esto esconde su red, esto tambin se llama NAT (Network Address Translation-Traduccin de direcciones de red). El comando es
# ipchains -A forward -s 192.168.1.0/24 -j MASQ

Esto indica que los paquetes provenientes de la red 192.168.1.0 con mscara de subred 255.255.255.0 (obviamente dentro de su red por tratarse de direcciones privadas) sern enviados a Internet mostrando cmo direccin de origen la direccin del servidor que provee el acceso a la Web. Nota: Cuando use esta regla le aparecer un mensaje que le recuerda habilitar el forwardeo de paquetes. Si no lo hizo debe hacerlo de esta forma:
# echo 1 > /proc/sys/net/ipv4/ip_forward

Cerrando servicios

Puertos y servicios: En el archivo /etc/services, encontraremos los puertos ms comunes que utiliza TCP por ejemplo: ftp-data 20 ftp 21 ssh 22 23 telnet http 80 110 pop Nota: Es bueno recorrer este archivo para tener presente que puertos utilizan nuestro servicios. Si se quisiera cerrar el acceso a un servicio determinado, pero no a todo el protocolo, lo que se debe hacer es cerrar el acceso al PUERTO que ese servicio utiliza:
# ipchains -A input -p tcp -s superhackers.com -d 200.200.200.200 21 -j DENY

Donde superhackers.com es el origen a bloquear, 200.200.200.200 es la direccin del servidor a proteger y 21 es el puerto a controlar. 21 es el puerto por defecto de ftp. Lo que se conseguir con este comando, es evitar que desde la direccin superhackers.com se obtenga acceso por ftp a 200.200.200.200. Tambin se puede cerrar un conjunto de puertos, determinando un rango en la regla. As
# ipchains -A input -p tcp -s superhackers.com -d 200.200.200.200 21:80 -j DENY

Establecera la regla para los puertos desde el 21 hasta el 80. El puerto especificado o rango de puertos puede estar precedido por ! para indicar lo contrario. As, para especificar todos los paquetes TCP excepto los WWW, lo indicar as:
-p tcp -d 0.0.0.0/0 ! www -p tcp d 0.0.0.0/0 ! 80

Negacin

Es importante comprender que la especificacin


-p tcp -d ! 192.168.1.1 www

es muy diferente de
-p tcp -d 192.168.1.1 ! www

Premiere IT S.R.L.

Pgina 146

LOC: Linux Original Courseware La primera especifica cualquier paquete de TCP al puerto de WWW en cualquier mquina excepto 192.168.1.1. El segundo especifica alguna conexin de TCP a cualquier puerto en 192.168.1.1 excepto el puerto de WWW. Finalmente, este caso significa que no a los de puerto WWW y no a los de direccin 192.168.1.1:
-p TCP -d ! 192.168.1.1 ! www

Nota: tambin puede negar interfaces y protocolos.

Consultando las reglas

Para listar las reglas que tenemos aplicadas en nuestro Firewall, el comando es simple:
# ipchains L

El resultado de este comando puede parecerse a lo siguiente:


Chain input (policy ACCEPT): Target prot opt source destination ports DENY icmp ------ anywhere localhost any -> any Chain forward (policy ACCEPT): Target prot opt source destination ports MASQ all ------ 192.168.1.0/24 anywhere n/a Chain output (policy ACCEPT):

Borrando reglas

Hay tres formas de borrar reglas. Una forma de borrar reglas es cambiar la accin A por D en la regla original. Por ejemplo:
# ipchains -D input -p icmp -s 0/0 -d 127.0.0.1 -j DENY

Este comando borrar la primera regla que estableci en este tutorial (aquella que denegaba la recepcin de paquetes dirigidos a localhost), es decir que a partir de este momento, si hace ping localhost o ping 127.0.0.1, tendr respuesta. Otra forma de borrar reglas, es especificando el nmero de regla:
# ipchains D input 1

Esta borrar la primera regla de input que tenga en la lista de reglas. Y una tercer forma de borrar reglas es con la opcin F, pero en este caso borrara todas las reglas, flush, vaco la lista.
# ipchains -F

Estableciendo polticas

Establecer las polticas del firewall es indicar de qu modo se comportar por defecto frente a los diferentes tipos de trfico. Por ejemplo:
# ipchains P input DENY

Le dir al Firewall que deniegue TODO el trfico entrante, menos lo explcitamente establecido (por otras reglas). Hacer que el Firewall guarde un Log (registro de eventos) de lo que est ocurriendo es til para saber que estn accediendo o tratando de acceder los usuarios. Puede ser que se descubra que un usuario que tiene algn acceso denegado est tratando de usarlo (siendo rechazado por el Firewall), o que hay recursos que estn siendo accedidos y que se ha olvidado de proteger. Los logs sern almacenados en /var/log/messages. La forma de iniciar el logueo es, por ejemplo:
# ipchains A input j DENY l # ipchains A output j ACCEPT l # ipchains A forward j DENY -l

Guardando informacin de eventos

Esto causar que desde ste momento se comiencen a loguear los paquetes recibidos que fueron bloqueados, los salientes que fueron autorizados y aquellos a los que se les neg el forward. La opcin -i especifica el nombre de una interface para comparar. Una interface es el dispositivo fsico por el cual un paquete llega o sale. Puede usar el comando ifconfig para listar las interfaces activas. La interface para los paquetes entrantes (paquetes que atraviesan la cadena input) es considerada la interface por donde Premiere IT S.R.L. Pgina 147

Especificando una interface

LOC: Linux Original Courseware ellos entran. Lgicamente, la interface para los paquetes salientes (paquetes que atraviesan la cadena output) es la interface por donde ellos saldrn. La interface para que los paquetes atraviesen la cadena forward es tambin la interface por donde ellos saldrn. Es absolutamente legal especificar una interface que actualmente no existe; la regla no emparejar nada hasta la interface sea activada. Esto es sumamente til para enlaces telefnicos ppp (normalmente interface ppp0) y similares. El nombre de la interface puede ir precedido por un signo de admiracin ! para indicar un paquete que no empareja con la(s) interface(s) especificada(s).

Guardando y recuperando las reglas

Todo lo que se ha hecho fue trabajo en memoria, si ahora apago la PC, todo esto se elimina, es decir que al arrancar la mquina nuevamente no tendr ninguna regla. Si se desea contar con las reglas en sucesivos inicios del servidor, se deben guardar las reglas en un archivo y esto se logra con:
# ipchains-save > /sbin/firewall.myrules

Lo cual guardar la configuracin del Firewall en el archivo /sbin/firewall.myrules. La forma de recuperar esta configuracin es:
# ipchains-restore < /sbin/firewall.myrules

A continuacin se muestra un Firewall sencillo implementado en un script usando ipchains:


echo 1 > /proc/sys/net/ipv4/ip_forward MAXI="192.168.0.201" IPCHAINS="/sbin/ipchains" $IPCHAINS -F input $IPCHAINS -F output $IPCHAINS -F forward $IPCHAINS -A output -p tcp -d 0/0 www -t 0x01 0x10 $IPCHAINS -A output -p tcp -d 0/0 telnet -t 0x01 0x10 $IPCHAINS -A output -p tcp -d 0/0 ftp -t 0x01 0x10 $IPCHAINS -A output -p tcp -d 0/0 ftp-data -t 0x01 0x08 $IPCHAINS -A input -p tcp -s 0/0 -d 0/0 1023:65535 j ACCEPT $IPCHAINS -A input -p udp -s 0/0 -d 0/0 1023:65535 -j ACCEPT $IPCHAINS -A input -p tcp -s $MAXI -d 0/0 20 j ACCEPT $IPCHAINS -A input -p tcp -s 192.168.0.231 -d 0/0 20 -j ACCEPT $IPCHAINS -A input -p tcp -s $MAXI -d 0/0 21 j ACCEPT $IPCHAINS -A input -p tcp -s 192.168.0.231 -d 0/0 21 -j ACCEPT $IPCHAINS -A input -p tcp -s $MAXI -d 0/0 23 j ACCEPT $IPCHAINS -A input -p tcp -s $MAXI -d 0/0 25 j ACCEPT # Reglas ICMP $IPCHAINS -A output -i eth0 -p icmp -s 0/0 -d 0/0 j ACCEPT $IPCHAINS -A input -i eth0 -p icmp -s 0/0 -d 0/0 j ACCEPT $IPCHAINS -A input -j DENY $IPCHAINS -A output -j ACCEPT $IPCHAINS -A forward -j DENY

Como ven aqu, es mas sencillo utilizar variables, por si nos cambia una IP, no debera afectar a todo el firewall.

Algunas consideraciones
Manipulando el Tipo de servicio (Type Of Service)
Hay cuatro bits en el encabezado IP, llamados bits del Tipo de Servicio (TOS). Afectan a la forma como son tratados los paquetes. Los cuatro bits son "Retraso mnimo", "Mximo Throughput", "Fiabilidad Mxima" y "Costo Mnimo". Solo es permitido setear uno de estos bits. Rob van Nieuwkerk, autor del cdigo TOSmangling, dice: Especialmente el "Retraso Mnimo" es importante para m. Lo cambio a "interactivo" en mi router (Linux). Estoy tras un enlace de modem de 33kb. Linux prioriza paquetes en 3 colas. De esta forma obtengo un rendimiento interactivo aceptable mientras se hace descargas pesadas al mismo tiempo. (Incluso podra ser mejor si no hubiese semejante cola en el driver serial, excepto que la latencia se mantiene por debajo de 1.5 segundos). El uso ms comn es poner las conexiones telnet a "Retraso Mnimo" y los datos FTP a "Mximo Throughput." Esto se hara como sigue:
ipchains -A output -p tcp -d 0.0.0.0/0 telnet -t 0x01 0x10

Premiere IT S.R.L.

Pgina 148

LOC: Linux Original Courseware


ipchains -A output -p tcp -d 0.0.0.0/0 ftp -t 0x01 0x10 ipchains -A output -p tcp -s 0.0.0.0/0 ftp-data -t 0x01 0x08

La marca -t' toma dos parmetros extras, ambos en hexadecimal. stos permiten un juego completo de los bits de TOS: la primera mscara es con AND con el TOS actual de los paquetes, y luego la segunda mscara es XOR. Si esto lo confunde, simplemente use la siguiente tabla: Nombre del TOS Valor Usos tpicos
Minimum Maximum Maximum Minimum Delay Throughput Reliability Cost 0x01 0x01 0x01 0x01 0x10 0x08 0x04 0x02 ftp, telnet ftp-data snmp nntp

Las mquinas Linux ahora son inmunes al famoso Ping de la Muerte. Pero puede que se encuentre con algn sistema un tanto viejo, entonces debe protegerse. El Ping de la Muerte se produce enviando un paquete de ICMP ilegalmente grande que causa desbordamiento en los buffers en la pila TCP en el receptor y causa estragos. Si est protegiendo mquinas que podran ser vulnerables, podra simplemente bloquear fragmentos de ICMP. Los paquetes de ICMP normales no son tan grandes como para requerir fragmentacin, as que usted no interrumpir nada excepto los pings grandes. La invocacin para hacer esto es:
# ipchains A input p icmp j DENY f

Filtrando el Ping de la Muerte

Se usa para conexiones preestablecidas. A veces es til permitir conexiones de TCP en un sentido, pero no en el otro. Por ejemplo, podra permitir conexiones hacia un servidor de WWW externo, pero no las que provienen desde l. El acercamiento ingenuo sera bloquear paquetes de TCP que vienen del servidor. Desafortunadamente, para que trabajen las conexiones de TCP requieren paquetes que van en ambos sentidos. La solucin es bloquear slo los paquetes de peticin de conexin. A estos paquetes se les llama paquetes SYN -tcnicamente son aquellos paquetes con la marca SYN activada (SYN flag) y las marcas FIN y ACK limpias, pero nosotros los llamaremos paquetes SYN. Impidiendo slo estos paquetes, podemos detener los intentos de conexin. La marca -y se usa para esto: es slo vlida para reglas que especifican TCP como su protocolo. Por ejemplo, especificar intentos de conexin TCP desde 192.168.1.1:
-p TCP -s 192.168.1.1 -y

Hand Shaking

Ej.: testeo de un paquete TCP-SYN desde 192.168.1.1 puerto 60000 al puerto www de 192.168.1.2, entrando la cadena input (Esta es una clsica iniciacin de conexin WWW):
# ipchains -C input -p tcp -y -s 192.168.1.1 60000 -d 192.168.1.2 www packet accepted

Observe que esta regla tiene la opcin -C y aparte no tiene qu accin tomar frente a esta regla. Este modificador se usa para testear un paquete TCP-SYN, usando exactamente las mismas rutinas que el kernel usa para diagnosticar paquetes reales. Luego del modificador -C, debe especificar qu cadena probar el paquete. Considerando que el kernel siempre empieza atravesando las cadenas input, output y forward, le permite atravesar cualquier cadena para estos propsitos. La opcin y se usa con los paquetes que tengan activado el bit SYN, pero no el bit ACK o FIN. El bit SYN de la cabecera TCP se usa para iniciar conexiones. Normalmente esta opcin se usa para bloquear conexiones entrantes, pero permite conexiones salientes. Puede preceder esta opcin con ! para invertirlo, as todos los paquetes coincidentes con el bit SYN activo no se enven y se enven slo los que tengan activos los bits ACK o FIN.

Cmo? - iptables
Como dijimos al principio de este captulo, a partir de kernel 2.4.x tenemos ipchains e iptables. iptables (tambin llamado netfilter), es similar a ipchains pero expande enormemente el mbito y el control disponible para el filtrado de paquetes de red. Para ver si tenemos cargado el mdulo de iptables ejecutamos el comando lsmod. Si no est, debemos cargarlo; para ello:
# modprobe iptables

Premiere IT S.R.L.

Pgina 149

LOC: Linux Original Courseware Esto cargar el programa que nos permitir editar las cadenas de filtrado. Hacemos:
# ping -c 1 127.0.0.1 PING 127.0.0.1 (127.0.0.1): 56 data bytes 64 bytes from 127.0.0.1: icmp_seq=0 ttl=64 time=0.2 ms --- 127.0.0.1 ping statistics --1 packets transmitted, 1 packets received, 0% packet loss round-trip min/avg/max = 0.2/0.2/0.2 ms

Esto quiere decir que la interface de loopback est respondiendo. 127.0.0.1 es la interface de retorno (loopback) que tendr aun cuando no tenga ninguna conexin real de red. Usted puede usar el programa ping para generar tales paquetes (enva un ICMP de tipo 8 (echo request) al que todos los host deben obligatoriamente responder con un paquete ICMP de tipo 0 (echo reply)). Esto es til para pruebas. Este comando djelo corriendo y vayamos a otra consola. Aqu escribimos la siguiente regla de filtrado:
# iptables -A INPUT -p ICMP -s 0/0 -d 127.0.0.1 j DROP

Nota: iptables es case-sensitive (sensible a maysculas y minsculas). Nota: haciendo man iptables tenemos acceso al manual de iptables. Si lo ejecuta (activa una regla en el Firewall), ver que los ping a localhost no sern respondidos. Vaya a la consola anterior, donde dej corriendo el ping y ver que se fren
PING 127.0.0.1 (127.0.0.1): 56 data bytes --- 127.0.0.1 ping statistics --1 packets transmitted, 0 packets received, 100% packet loss

Qu significa todo lo que escribimos en la regla de filtrado? Lo primero que tenemos que saber es que hay diferentes tipos de cadenas a ser reconocidas por el kernel. Los tres tipos de cadenas son llamadas entrada (input), salida (output) y traspaso (forward). Cuando un paquete entra (digamos, a travs de la tarjeta Ethernet) el kernel usa la cadena INPUT para decidir su destino. Si sobrevive este paso, entonces el kernel decide dnde enviar el paquete (esto se llama enrutamiento -routing-). Si el destino es otra mquina, consulta la cadena FORWARD. Finalmente, justo antes de que el paquete salga, el kernel consulta la cadena OUTPUT. Una cadena es una lista (de chequeo - checklist) de reglas. Cada regla dice si el encabezado del paquete se ve como esto, entonces esto es lo que deseo hacer con el paquete. Si la regla no concuerda con el paquete, entonces se consulta la prxima regla en la cadena. Finalmente, si no hay ninguna regla ms por consultar, entonces el kernel mira la poltica de la cadena para decidir qu hacer. En un sistema de seguridad consciente, esta poltica normalmente le dice al kernel que rechace o deniegue el paquete. Conclusin, las reglas se van verificando una a una de arriba hacia abajo Nota: A diferencia de ipchains, en iptables no todos los paquetes atraviesan INPUT Ahora veamos las acciones, qu podemos hacer con las cadenas: -A Add, agregar nuevas reglas. La agrega al final. -D Delete, borrar reglas -C Verifica una regla en particular antes de aadirla en la cadena especificada por el usuario. -N New, nueva regla definidas por el usuario -E Renombra una cadena definida por el usuario. Esto no afecta la estructura de la tabla. -X Delete user Rule, borra regla definida por el usuario. Debe estar vaca. -L List, lista reglas -I Insert, inserta una regla -P Policies, setea Polticas -F Flush, borra todas las reglas -Z Inicializa en cero los contadores de byte y de paquete en todas las cadenas de una tabla en particular.

Premiere IT S.R.L.

Pgina 150

LOC: Linux Original Courseware Veamos opciones de parmetros: -p Indica el protocolo cuyos paquetes sern analizados por sta regla. En el ejemplo el protocolo es ICMP (Internet Control Messages Protocol). Puede ver los protocolos en el archivo /etc/protocols. -s Establece la direccin de origen (source) de los paquetes a ser filtrados. 0/0 usado en el ejemplo indica TODAS las direcciones. Esta direccin de origen puede ser, el nombre o la IP. Para IP, puede ser la de un nico host, por ejemplo: -s 192.168.4.2 o la de una red o subred, y sera as: -s 192.168.4.0/24, formato IP/Mask. Note que la mscara se escribe en forma CIDR, es decir que 24 es lo mismo que decir 255.255.255.0. Tambin se puede dar la mscara completa, es decir 192.168.4.0/255.255.255.0. especifica el puerto o rango de puertos sin tener que especificar una direccin IP. Es lo mismo que --sport -d Establece el destino (destination) que debe tener un paquete para ser analizado bajo esta regla. En nuestro ejemplo 127.0.0.1, es la direccin de la interface de loopback. Las mismas consideraciones que para el caso anterior (-s). --destination-port igual al anterior pero para el puerto de destino. Es lo mismo que sport
--source-port

-i

Configura la interfaz de red entrante, ejemplo eth0 o ppp0. Nota: El signo de exclamacin ! invierte la orden, es decir, se excluye de esta regla cualquier interfaz especificada. Si aparece un signo suma +, significa que aplico la orden a todas las interfaces que coincidan con la cadena especificada. Por ejemplo, el parmetro -i eth+ aplicar esta regla a cualquier interfaz Ethernet pero excluir cualquier otra interfaz, tal como, ppp0.

-o -j

Configura la interfaz de red de salida para una regla. Las mismas consideraciones que para el caso anterior (-i). establece la accin a ejecutar sobre los paquetes que cumplan con la regla. Es el target, el objetivo particular cuando un paquete coincide con una regla particular. Los target pueden ser: ACCEPT, DROP, QUEUE y RETURN y opciones extras, como LOG, MARK y REJECT, entre otros.
-ACCEPT Acepta el paquete, deja que se mueva hacia su destino (o hacia otra cadena, si no ha sido configurado ningn destino para seguir a esta cadena). -DROP Rechaza el paquete sin responder al solicitante. -QUEUE El paquete se pone en una cola para ser manejado por una aplicacin en el espacio de usuario. -RETURN Se utiliza en caso de verificacin del paquete contra las reglas de la cadena actual. Si el paquete con un destino RETURN cumple alguna regla de una cadena llamada desde otra cadena, el paquete es devuelto a la primera cadena para retomar la verificacin de la regla all donde se dej. Si la regla RETURN se utiliza en una cadena predefinida, y el paquete no puede moverse hacia la cadena anterior, se define con la cadena actual el objetivo a llevar a cabo. -LOG Genera un log de todos los paquetes que coinciden con esta regla. Como el kernel registra los paquetes, debe configurarse el archivo /etc/syslog.conf para decirle donde debe escribir. Por defecto, escribe en el archivo /var/log/messages. Opciones adicionales para el objetivo LOG: --log-level Para configura el nivel de prioridad del log. --log-ip-options Guarda todas las opciones de encabezado de paquetes IP. --log-prefix Coloca un prefijo, un string de hasta 29 caracteres antes de escribir la lnea de log. --log-tcp-options Guarda todas las opciones de encabezado de paquetes TCP. --log-tcp-sequence Escribe el nmero de secuencia TCP del paquete en el log. -REJECT Rechaza el paquete y enva un paquete de error al sistema remoto solicitante. -MASQUERADE Para hacer NAT.

-f

Aplica esta regla slo a los paquetes fragmentados, o sea a partir del segundo paquete. Si lleva adelante un signo de exclamacin !, se refiere al primer paquete, que est sin fragmentar --syn Provoca que todos los paquetes de TCP, llamados paquetes SYN, cumplan esta regla. Cualquier paquete que est llevando un payload de datos no ser tocado, Pgina 151

Premiere IT S.R.L.

LOC: Linux Original Courseware solo los syn. Si aparece un signo de exclamacin ! tras la opcin --syn especifica que todos los paquetes no-SYN sean seleccionados. --tcp-flags Chequea bits especficos o banderas de los paquetes TCP que coincidan con la regla. Esta opcin acepta dos parmetros. Usando el signo de exclamacin ! despus de --tcp-flags invierte el efecto de la opcin de coincidencia. --tcp-option Selecciona opciones especficas de TCP que pueden estar activas en el paquete. Esta opcin se puede revertir con el signo de exclamacin !. --icmp-type Selecciona el nombre o el nmero del tipo ICMP que coincida con la regla. Nota: puede obtener una lista de nombres vlidos ICMP con el comando
iptables -p icmp h

Como se hace el filtrado de paquetes

Para filtrar paquetes el kernel puede ejecutar varias acciones, aceptar algunos de ellos, interceptar y analizar o modificar o rechazar. Para ello, netfilter tiene tres tablas o listas de reglas incorporadas. Estas son: filter se encarga del filtrado y es la tabla por defecto para el manejo de paquetes de red. nat se usa para alterar encabezados de paquetes, tambin se utiliza para NAT. mangle aqu se pueden cambiar otros campos especficos de los paquetes Nota: cada tabla contiene sus propias cadenas. Ya vimos en apartados anteriores, generalidades sobre cadenas, ahora veremos qu tipo de cadenas soporta cada tabla en particular. Tabla filter INPUT paquetes que llegan para nuestro sistema. FORWARD paquetes enrutados a travs de nuestro sistema. OUTPUT paquetes generados en nuestro sistema y que son enviados. Tabla nat PREROUTING se utiliza para alterar paquetes segn entren. OUTPUT para alterar paquetes generados localmente antes de enrutar POSTROUTING para alterar paquetes a salir. Tabla mangle PREROUTING altera paquetes recibidos por una interfaz de red antes de que sean dirigidos. POSTROUTING altera los paquetes de red cuando estos son enviados. Nota: Las tablas no se verifican en orden. El orden depende del origen y destino de cada paquete en particular.

Sintaxis completa del comando iptables

Como ya conocemos todas las tablas, opciones, parmetros y objetivos, les presento la sintaxis
iptables [-t nombre_tabla] accion cadena <parametro-1> <opcion-1> <parametro-n> <opcion-n>

Ejemplos:
# iptables -A INPUT -i ippp0 -p ICMP -j ACCEPT

En este caso dejamos pasar los paquetes ICMP que llegan por la interfaz ippp0. Aqu no aparece ninguna tabla, por lo tanto, es la tabla por defecto, filter.
# iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -j MASQUERADE

Aqu habilito el NAT, en la tabla correspondiente, para los paquetes que salen. Nota: Recordemos que para hacer forwardeo de paquetes, tenemos que tener activada esta opcin en el kernel. Si no lo hizo debe hacerlo de esta forma: # echo 1 > /proc/sys/net/ipv4/ip_forward
# iptables -A INPUT -i ippp0 -p TCP --dport 22 -m state --state NEW -j ACCEPT

Permito conexiones al puerto 22, SSH y las acepto a las conexiones nuevas. Un poco ms adelante hablaremos de la opcin m, que es un mdulo extra. Premiere IT S.R.L. Pgina 152

LOC: Linux Original Courseware

Consultando las reglas

Para listar las reglas que tenemos aplicadas en nuestro Firewall, el comando es simple:
# iptables L

El resultado de ste comando puede parecerse a lo siguiente:


Chain INPUT (policy ACCEPT): Target prot opt source DROP icmp -- anywhere ACCEPT tcp -- anywhere Chain FORWARD (policy ACCEPT): Target prot opt source Chain OUTPUT (policy ACCEPT): Target prot opt source destination anywhere anywhere destination destination

tcp dpt:ssh state NEW

# iptables L -v

Muestra la salida por pantalla en modo verbose, con detalles, como el nmero de paquetes y bytes que cada cadena ha visto, ha encontrado y qu interfaces se aplican a una regla en particular.
# iptables L -x

Expande los nmeros o contadores en sus valores exactos. En un sistema ocupado, el nmero de paquetes y bytes vistos por una cadena en concreto o por una regla.
# iptables L -n

Muestra las direcciones IP y los nmeros de puertos en formato numrico, en lugar de utilizar el nombre del servidor y la red tal y como se hace por defecto.
# iptables L -line-numbers

Proporciona una lista de cada cadena junto con su orden numrico en la cadena. Esta opcin puede ser til cuando est intentando borrar una regla especfica en una cadena o localizar dnde insertar una regla en una cadena.
# iptables L -t

Especifica un nombre de tabla. Si ejecuto # iptables L t nat n ver lo siguiente:


destination destination 0.0.0.0/0 destination

Chain PREROUTING (policy ACCEPT): Target prot opt source Chain POSTROUTING (policy ACCEPT): Target prot opt source MASQUERADE all 192.168.1.0/24 Chain OUTPUT (policy ACCEPT): Target prot opt source

Borrando reglas

Hay tres formas de borrar reglas. Una forma de borrar reglas es cambiar la accin A por D en la regla original. Por ejemplo:
# iptables -D INPUT -p icmp -s 0/0 -d 127.0.0.1 -j DROP

Este comando borrar la primera regla que estableci en este manual (aquella que denegaba la recepcin de paquetes dirigidos a localhost), es decir que a partir de este momento, si hace ping localhost o ping 127.0.0.1, tendr respuesta. Otra forma de borrar reglas, es especificando el nmero de regla:
# iptables D INPUT 1

Esta borrar la primera regla de INPUT que tenga en la lista de reglas. Y una tercer forma de borrar reglas es con la opcin F, pero en este caso borrara todas las reglas, flush, vaco la lista.
# iptables -F

Premiere IT S.R.L.

Pgina 153

LOC: Linux Original Courseware

Guardando y recuperando las reglas

Todo lo que se ha hecho fue trabajo en memoria, si ahora apago la PC, todo esto se elimina, es decir que al arrancar la mquina nuevamente no tendr ninguna regla. Si se desea contar con las reglas en sucesivos inicios del servidor, se deben guardar las reglas en un archivo y esto se logra con:
# ipctables-save > /sbin/firewall.myrules

Lo cual guardar la configuracin del Firewall en el archivo /sbin/firewall.myrules. La forma de recuperar esta configuracin es:
# iptables-restore < /sbin/firewall.myrules

Nota: como vimos en ipchains, con iptables tambin podemos utilizar variables, por si nos cambia una IP, por ejemplo, no afectar a todo el firewall.

Mdulos con opciones de coincidencias adicionales

Estas opciones adicionales se usan con la opcin -m, como vimos en el ejemplo anterior
# iptables -A INPUT -i ippp0 -p TCP --dport 22 -m state --state NEW -j ACCEPT

Veamos una lista de los mdulos usados ms comnmente: Mdulo limit Permite colocar un lmite a la cantidad de paquetes que coinciden con una regla particular. Esto es til cuando se usa en conjunto con el objetivo LOG, pues puede prevenir que una inundacin de paquetes coincidentes sobrecarguen el registro del sistema con mensajes repetitivos o usen los recursos del sistema. El mdulo limit habilita las opciones siguientes:
--limit Configura el mximo nmero de coincidencias en un intervalo de tiempo, por ejemplo, si usamos --limit 5/hour slo dejaremos que una regla sea efectiva cinco veces a la hora. Valor por defecto: 3/hour. --limit-burst Configura un lmite en el nmero de paquetes capaces de cumplir una regla en un determinado tiempo. Esta opcin deber ser usada junto con la opcin --limit, y acepta un nmero para configurar el intervalo de tiempo. Si no se especifica ningn nmero, tan slo cinco paquetes sern capaces inicialmente de cumplir la regla.

Mdulo state Habilita la coincidencia de estado. Tiene las siguientes opciones:


--state tiene que ver con los estados de conexin: ESTABLISHED El paquete seleccionado se asocia con otros paquetes en una conexin

establecida.
INVALID El paquete seleccionado no puede ser asociado a una conexin conocida. NEW El paquete seleccionado o bien est creando una nueva conexin o bien forma parte

de una conexin de dos caminos que antes no haba sido vista.


RELATED El paquete seleccionado est iniciando una nueva conexin en algn punto de la

conexin existente. Nota: Estos estados de conexin se pueden utilizar combinados separndolos mediante comas. Mdulo mac Habilita la coincidencia de direcciones MAC de hardware. El mdulo mac activa la siguiente opcin: --mac-source Busca la coincidencia de una direccin MAC a la tarjeta de red que envi el paquete. Para excluir una direccin MAC de la regla, coloque un signo de exclamacin ! despus de la opcin --mac-source. Nota: para buscar otras opciones disponibles a travs de los mdulos, consulte la pgina man de
iptables.

Premiere IT S.R.L.

Pgina 154

LOC: Linux Original Courseware

Captulo 13
DNS
El archivo hosts, est formado por columnas donde se relaciona la direccin IP con el nombre de dominio y con el nombre de mquina. Este archivo es una base de datos primitiva para resolver nombres. El concepto de su funcionamiento es centralizado. Este archivo debe actualizarse a mano cada vez que se agrega un nuevo dominio/mquina a la red. Con el crecimiento de internet, esta metodologa se hace imposible de mantener. Nace entonces un nuevo sistema de resolucin de nombres a direcciones IP, el BIND (Berkeley Internet Name Domain-Dominio de Nombres de Internet de Berkeley), para reemplazar el mtodo anterior. El DNS (Domain Name System-Sistema de Nombres de Dominio), constituye la base de datos que proporciona a sus clientes la informacin acerca de las direcciones y los nombres de las mquinas de la red. El DNS tiene una orientacin cliente servidor y todas las mquinas que queden bajo l pueden ser consideradas como archivos en una estructura de rbol de directorio. El DNS es un sistema jerrquico. La raz o root es el punto (.). Debajo hay cierto nmero de TLDs (Top Level Domains-Dominios de Nivel Superior), los ms conocidos son org, com, edu, gov y net, pero hay muchos ms. El servicio de nombres en Linux, es manejado por un demonio llamado named o bind, segn las distribuciones, y est ubicado en el directorio /usr/sbin. Este captulo se ha desarrollado empleando la versin 9 de BIND. Para saber qu versin tiene instalada alcanza con hacer
# named -v

Introduccin

y la salida va a ser la versin de bind. Sino lo tuviera instalado, hacemos:


# apt-get install bind9 dnsutils bind9-doc bind9-host

Clasificacin de Servidores

Existen tres tipos de servidores DNS: primarios, secundarios y de cach. Los servidores primarios son los nicos que estn considerados como autorizados para un dominio en particular. Un servidor autorizado es el nico en el que residen los archivos de configuracin del dominio. Cada vez que ocurra una actualizacin de tablas de dominio de DNS, se har en este servidor. Los servidores secundarios actan como respaldo y como distribuidores de carga de los servidores de nombres primarios. Los servidores primarios conocen la existencia de los secundarios y les envan constantemente actualizaciones de sus tablas. Cuando un cliente busca en un servidor de nombres secundario, el secundario responde con autoridad. Sin embargo, debido a que es posible que el secundario devuelva su bsqueda antes de que el primario le haya avisado de sus ltimos cambios, algunas personas se refieren a los servidores secundarios como no autorizados lo suficiente. En realidad, puede confiar en que los secundarios tienen la informacin correcta (adems, a menos que sepa cual es cual, no podr distinguir la diferencia entre una respuesta a una bsqueda, hecha por un primario por uno secundario). Nota: Un servidor DNS puede configurarse para acte con un nivel determinado de autoridad. Por ejemplo, puede ser primario para un dominio y secundario para otro. Los servidores de cach no contienen archivos de configuracin de ningn dominio. En su lugar, cuando una mquina cliente realiza un pedido a un servidor de cach para que resuelva un nombre, este servidor comprueba su propia cach local primero. Si no la encuentra, buscar un servidor primario y le preguntar. Su respuesta pasar a cach. En la prctica, los servidores de cach trabajan bastante bien debido a la naturaleza temporal de las peticiones DNS. Por ejemplo, si pregunta por la direccin IP de yahoo.com es probable que la pida de nuevo en un futuro prximo. Los clientes pueden diferenciar entre una respuesta de un servidor de cach y uno primario o secundario. Cuando responde un servidor de cach, la respuesta es no autorizada. Premiere IT S.R.L. Pgina 155

LOC: Linux Original Courseware Nota: Todos los servidores DNS actan como servidores de cach, aunque sean primarios o secundarios de otros dominios.

Servidor de solo cach

Por defecto, la configuracin de bind es como un servidor de solo cach, el cual es muy til para los usuarios de conexiones telefnicas. Este servidor obtendr las respuestas a solicitudes de nombre provenientes de su red preguntando a servidores externos, recordando la respuesta para la prxima vez que lo necesite. Un servidor de nombres de este tipo es til porque disminuye el trfico de peticiones de resolucin de nombres en la red.

Tipos de Resolucin
Resolucin de Nombres de Host a Direcciones IP Este tipo de resolucin, tambin llamada Resolucin Directa, es la ms conocida, ya que permite, mediante una estructura jerrquica (como la que vemos reflejada mas abajo), poder encontrar la direccin IP especfica de un host de la red (o de internet).
. (root) com. net. org. [] ar.

(TLDs)
net.ar. []

yahoo.com. ns1.yahoo.com. (66.218.71.198) www.yahoo.com. (138.109.118.70) mail.yahoo.com. (138.109.127.60)

com.ar.

yahoo.com.ar. ns2.yahoo.com.ar. (138.136.232.195) www.yahoo.com.ar. (138.136.232.196) Mail.yahoo.com.ar. (138.136.232.197)

Resolucin de Direcciones IP a Nombres de Host Este tipo de resolucin, tambin llamada Resolucin Reversa, tiene la misma estructura jerrquica que la resolucin directa, y nos permite determinar el FQDN de un host, del cual solamente conocemos su direccin IP.
arpa.

in-addr.arpa.

66.in-addr.arpa.

136.138.in-addr.arpa.

218.66.in-addr.arpa.

232.136.138.in-addr.arpa. 196.232.136.138.in-addr.arpa. (www.yahoo.com.ar) 197.232.136.138.in-addr.arpa. (mail.yahoo.com.ar)

[]

71.218.66.in-addr.arpa. 198.71.218.66.in-addr.arpa. (ns.yahoo.com) 223.71.218.66.in-addr.arpa. (smtp.otraempresa.com)

Para lograr esta tarea, los servidores se acomodan en la estructura jerrquica siguiendo el orden de preponderancia de los octetos de una direccin IP. Como vemos en el grfico, los octetos de las direcciones IP estn escritos en orden inverso.

Premiere IT S.R.L.

Pgina 156

LOC: Linux Original Courseware

Configuracin del servidor


named.conf Este es el archivo principal de configuracin de un servidor de nombres, que es ledo por el demonio bind cuando inicia para saber a qu dominios va a servir y dnde encuentra las tablas de mquinas y direcciones IP, entre otras cosas. Este archivo est ubicado en /etc/bind/named.conf. Un ejemplo tpico de este archivo, configurado como un servidor de slo cach, es el siguiente:
// // // // // // // This is the primary configuration file for the BIND DNS server named. Please read /usr/share/doc/bind9/README.Debian.gz for information on the structure of BIND configuration files in Debian, *BEFORE* you customize this configuration file. If you are just adding zones, please do that in /etc/bind/named.conf.local

include "/etc/bind/named.conf.options"; // prime the server with knowledge of the root servers zone "." { type hint; file "/etc/bind/db.root"; }; // be authoritative for the localhost forward and reverse zones, and for // broadcast zones as per RFC 1912 zone "localhost" { type master; file "/etc/bind/db.local"; }; zone "127.in-addr.arpa" { type master; file "/etc/bind/db.127"; }; zone "0.in-addr.arpa" { type master; file "/etc/bind/db.0"; }; zone "255.in-addr.arpa" { type master; file "/etc/bind/db.255"; }; zone "com" { type delegation-only; }; zone "net" { type delegation-only; }; // From the release notes: // Because many of our users are uncomfortable receiving undelegated answers // from root or top level domains, other than a few for whom that behaviour // has been trusted and expected for quite some length of time, we have now // introduced the "root-delegations-only" feature which applies delegation-only// logic to all top level domains, and to the root domain. An exception list // should be specified, including "MUSEUM" and "DE", and any other top level // domains from whom undelegated responses are expected and trusted. // root-delegation-only exclude { "DE"; "MUSEUM"; }; include "/etc/bind/named.conf.local"; }; zone "4.168.192.in-addr.arpa" { type master; file "db.4.168.192.in-addr.arpa";

Premiere IT S.R.L.

Pgina 157

LOC: Linux Original Courseware


}; zone "centraltech.com.ar" { type master; file "db.centraltech.com.ar"; };

Cada lnea significa: corresponde a la definicin de un dominio conocido. Ms adelante veremos como se configura cada dominio. El valor encerrado entre comillas le indica a bind donde encontrar las definiciones de dominios y hosts para esa zona. zone "." es la raz de todas las bsquedas. Se va a fijar en el archivo etc/bind/db.root. zone "0.0.127.in-addr.arpa" resuelve reversa para localhost. La resolucin inversa se usa para encontrar el nombre de la mquina a partir de su direccin IP. zone "4.168.192.in-addr.arpa" se usa para efectuar la resolucin inversa de direcciones IP a nombres dentro de la red 192.168.4.0. La zona centraltech.com.ar la utilizamos en este ejemplo para mostrar como agregar un dominio propio.
zone file include

indica el nombre del archivo que contiene las definiciones particulares de la zona. se utiliza para llamar a otro archivo. En este caso /etc/bind/named.conf.options

Servidores Raiz
/etc/bind/db.root El archivo db.root describe los servidores de nombre raz en el mundo y cambiar a lo largo del tiempo por lo

que tiene que ser mantenido y actualizado con cierta regularidad. Bsicamente su contenido es el siguiente:
; This file holds the information on root name servers needed to ; initialize cache of Internet domain name servers ; (e.g. reference this file in the "cache . <file>" ; configuration file of BIND domain name servers). ; ; This file is made available by InterNIC ; on server FTP.INTERNIC.NET ; -ORRS.INTERNIC.NET ; ; last update: Jan 29, 2004 ; related version of root zone: 2004012900 ; ; ; formerly NS.INTERNIC.NET ; . 3600000 IN NS A.ROOT-SERVERS.NET. A.ROOT-SERVERS.NET. 3600000 A 198.41.0.4 ; ; formerly NS1.ISI.EDU ; . 3600000 NS B.ROOT-SERVERS.NET. B.ROOT-SERVERS.NET. 3600000 A 192.228.79.201 ; ; formerly C.PSI.NET ; . 3600000 NS C.ROOT-SERVERS.NET. C.ROOT-SERVERS.NET. 3600000 A 192.33.4.12 ; ; formerly TERP.UMD.EDU ; . 3600000 NS D.ROOT-SERVERS.NET. D.ROOT-SERVERS.NET. 3600000 A 128.8.10.90 ; ; formerly NS.NASA.GOV ; . 3600000 NS E.ROOT-SERVERS.NET.

Premiere IT S.R.L.

Pgina 158

LOC: Linux Original Courseware


E.ROOT-SERVERS.NET. 3600000 ; ; formerly NS.ISC.ORG ; . 3600000 F.ROOT-SERVERS.NET. 3600000 ; ; formerly NS.NIC.DDN.MIL ; . 3600000 G.ROOT-SERVERS.NET. 3600000 ; ; formerly AOS.ARL.ARMY.MIL ; . 3600000 H.ROOT-SERVERS.NET. 3600000 ; ; formerly NIC.NORDU.NET ; . 3600000 I.ROOT-SERVERS.NET. 3600000 ; ; operated by VeriSign, Inc. ; . 3600000 J.ROOT-SERVERS.NET. 3600000 ; ; operated by RIPE NCC ; . 3600000 K.ROOT-SERVERS.NET. 3600000 ; ; operated by ICANN ; . 3600000 L.ROOT-SERVERS.NET. 3600000 ; ; operated by WIDE ; . 3600000 M.ROOT-SERVERS.NET. 3600000 ; End of File A 192.203.230.10

NS A

F.ROOT-SERVERS.NET. 192.5.5.241

NS A

G.ROOT-SERVERS.NET. 192.112.36.4

NS A

H.ROOT-SERVERS.NET. 128.63.2.53

NS A

I.ROOT-SERVERS.NET. 192.36.148.17

NS A

J.ROOT-SERVERS.NET. 192.58.128.30

NS A

K.ROOT-SERVERS.NET. 193.0.14.129

NS A

L.ROOT-SERVERS.NET. 198.32.64.12

NS A

M.ROOT-SERVERS.NET. 202.12.27.33

Archivos de zona
Aqu vamos a ver como se crean los archivos para cada zona o dominio. Una zona no es lo mismo que un dominio, pero para explicar como armar el archivo de zona, no hay diferencias. Aqu disponemos de un servidor de nombres secundario de seguridad y estn enunciadas las diferentes mquinas dentro de la red.

Ejemplos
/etc/bind/db.centraltech.com.ar
$TTL @ 86400 IN SOA alexa.centraltech.com.ar. root.centraltech.com.ar. ( 2006060901 ; serial 10800 ; refresh 3600 ; retry 86400 ; expire 3600) ; default IN IN NS MX alexa.centraltech.com.ar. 0 alexa.centraltech.com.ar.

Premiere IT S.R.L.

Pgina 159

LOC: Linux Original Courseware


alexa.centraltech.com.ar. dragon.centraltech.com.ar. pumita.centraltech.com.ar. viktor.centraltech.com.ar. ojeda.centraltech.com.ar. www.centraltech.com.ar. mail.centraltech.com.ar. IN IN IN IN IN IN IN A A A A A CNAME CNAME 192.168.4.30 192.168.4.3 192.168.4.12 192.168.4.11 192.168.4.16 alexa.centraltech.com.ar. alexa.centraltech.com.ar.

/etc/bind/db.4.168.192.in-addr.arpa Este es el archivo de resolucin inversa de nuestro ejemplo.


$TTL @ 86400 IN SOA alexa.centraltech.com.ar. root.centraltech.com.ar. ( 2006060901 ;serial 10800 ; refresh 3600 ; retry 86400 ; expire 3600) ; default alexa.centraltech.com.ar. alexa.centraltech.com.ar. dragon.centraltech.com.ar. pumita.centraltech.com.ar. viktor.centraltech.com.ar. ojeda.centraltech.com.ar.

30 3 12 11 16 $TTL 86400

IN IN IN IN IN IN

NS PTR PTR PTR PTR PTR

es una directiva obligatoria a partir de la versin 9 de BIND (RFC1035 y RFC2308), indica el TTL (Time To Live-Tiempo de Vida) de la informacin contenida en el archivo. Es decir, el tiempo mximo de validez, tras el cual deber refrescarse o actualizarse, para comprobar que no haya cambiado. Por defecto se usan segundos, pero pueden usarse tambin semanas ($TTL 1w), das ($TTL 7d), horas ($TTL 168h) y minutos ($TTL 10080m). Un TTL pequeo permitir que la informacin sea consistente casi siempre, pues los datos expirarn rpidamente obligando a descargarlos del cach y a obtener los nuevos valores de los servidores autorizados.

Estos tipos de archivo se llaman archivos de zona y a su dominio asociado, origen. Cada nombre de dominio o de mquina que aparezca en estos archivos es considerado relativo a este origen a menos que termine con un punto. Esta regla no debe ser tomada a la ligera: todos los nombres en un archivo de zona son expandidos agregndoles el origen a menos que terminen en un punto. Para hacer referencia al origen en s es necesario usar el smbolo "@''. Los archivos de zonas estn hechos con registros (Resource Records) que tienen un tipo asociado. Por ejemplo, un registro para asociar un nombre de mquina con una direccin IP tiene el tipo A, y uno para asociar un nombre corto o alias a una mquina a la que ya se le asoci un IP es de tipo CNAME. En general, los registros o RRs tienen la forma siguiente:
[dominio] [ttl] [clase] tipo datos

Cada campo del registro se separa mediante espacios o tabuladores. Los campos entre corchetes son opcionales. Un campo puede ocupar ms de una lnea siempre y cuando aparezca un parntesis antes del primer salto de lnea y otro parntesis de cierre despus del ltimo campo del registro en la ltima lnea. Al igual que en el archivo principal, en el named.conf, es posible introducir comentarios en un archivo de zona mediante un punto y coma: todo lo que aparece despus de este signo es ignorado.

El registro SOA

SOA (Start Of Authority-Comienzo de Autoridad) indica que todos los registros de recursos que le siguen estn autorizados a dicha zona. Es la mquina que contiene la informacin de la zona, la que tiene alojado el DNS. Los datos asociados con un registro SOA son los siguientes: origin Es el nombre cannico del servidor de nombres primario para este dominio, y generalmente se da como absoluto, es decir, con un punto al final. contact Es el nombre de la persona responsable para este dominio. Es parecido a una direccin de correo electrnico normal, a excepcin que la arroba se remplaza con un punto. Tambin termina con un punto. Premiere IT S.R.L. Pgina 160

LOC: Linux Original Courseware


serial Es un nmero que indica la versin del archivo de zona, y debe ser incrementado cada vez que el archivo se modifique. Es importante porque los servidores secundarios solicitan el registro SOA en ciertos intervalos (ver refresh, ms abajo), para verificar el serial. Si ste ha cambiado, entonces transfieren el archivo completo para actualizarse. Una prctica muy comn es utilizar la fecha en el formato aaaammdd y agregarle dos dgitos ms para los cambios que se hacen al archivo en el mismo da. De tal manera, un serial tpico podra ser 2006062201. refresh Es el intervalo, en segundos, para las revisiones que hacen los servidores secundarios del registro SOA, con el fin de verificar si la informacin del dominio ha cambiado. retry Es el tiempo que un servidor secundario debe esperar para reintentar una conexin por refresh que ha fallado. expire Si un servidor secundario no ha podido comunicarse con su servidor primario para verificar que no haya habido cambios a la zona (mediante su registro SOA), descartar la informacin que tiene despus de este perodo. minimum o default Este es el tiempo empleado en los registros del archivo que no especifican su campo TTL.

El registro A

Este registro sirve para asociar un nombre de mquina con una direccin IP. El nico dato para este tipo de registro es la direccin IP en su forma estndar, por ejemplo 192.168.4.3. Debe haber slo un registro A por cada direccin IP en el archivo, aunque es posible asignarle a una mquina ms de una direccin mediante varios registros A. Mediante un registro NS es posible designar un servidor que deber responder para todas las peticiones que involucren un determinado subdominio. Esto es importante porque permite delegar la asignacin de nombres y facilita el manejo de dominios complejos. Designar un servidor de nombres, sin embargo, no basta. Se necesita definir en alguna parte del archivo la direccin de este servidor (mediante un registro A por supuesto). A este registro se le llama en ingls glue record. Un registro PTR se utiliza para relacionar una direccin IP con un nombre de mquina, exactamente al revs que un registro tipo A. Estos registros aparecen en los archivos de zonas para la resolucin inversa, los que en named.conf aparecen en una lnea zone con el dominio in-addr.arpa.. Ntese que en cada registro slo aparece una fraccin de la direccin IP: la direccin se completa porque, como explicamos antes, a cada nombre que no termina en un punto se le agrega el origen. Los nombres de mquinas aparecen siempre en los registros PTR en su forma cannica, es decir, con el dominio completo. El punto es necesario porque de no aparecer se le agregara errneamente el origen.

El registro NS

El registro PTR

El registro MX

Los registros MX sirven para anunciar a los programas de intercambio de correo (sendmail, por ejemplo), una mquina que se encarga de administrar el correo de un determinado dominio.

El registro CNAME

Los registros CNAME (Canonical Name-Nombre Cannico) es una forma de dar a cada mquina nombres alternativos o aliases adicionales. Por tanto www y mail son alias para alexa, el nombre del servidor. Es importante observar que los registros A, MX, CNAME y SOA nunca deben hacer referencia a registro CNAME, slo pueden referirse a registros A. Luego de configurar los archivos del servidor o cada vez que cambie el archivo named.conf, se debe reiniciar el demonio bind. Recuerde, se hace con el siguiente comando:
# /etc/init.d/bind9 restart

Configuracin del cliente


En el directorio /etc se encuentran dos archivos, los cuales se emplean para configurar la biblioteca del resolvedor de la mquina.

Premiere IT S.R.L.

Pgina 161

LOC: Linux Original Courseware /etc/host.conf Probablemente contiene varias lneas, una de ellas debe comenzar con order, indicando el orden en que se prueban los distintos mecanismos de resolucin de nombres. Por ejemplo:
order hosts,bind

En este caso indica a las rutinas de resolucin de nombres que busquen primero en /etc/hosts y pregunte luego al servidor de nombres. /etc/resolv.conf Este archivo le dice al cliente como utilizar DNS para resolver nombres de servidor. Indica los servidores de nombre DNS que deben contactarse y el orden en que se debe contactarlos. Por ejemplo:
search centraltech.com.ar nameserver 192.168.4.30

La lnea search especifica en qu dominios se buscara para cualquier nombre de mquina a la que se quiera conectar. La lnea nameserver especifica la direccin del servidor de nombres. Si se quiere una lista de varios servidores se debe poner una lnea nameserver para cada uno. Es importante saber que bind nunca lee este archivo, lo hace el cliente que usa bind.

Verificaciones
Para probar si nuestro servidor de nombres est funcionando correctamente haremos uso de la utilidad nslookup. Este programa se utiliza comnmente para verificar la instalacin de un servidor de nombres. Puede utilizarse interactivamente o como un comando cualquiera. Esto ltimo se hace de la siguiente manera:
# nslookup maquina nslookup consultar al servidor de nombres especificado en el archivo /etc/resolv.conf acerca de la

mquina que se desea encontrar y devolver su direccin IP. En modo interactivo, nslookup puede hacer mucho ms que slo encontrar direcciones IP, puede preguntarle al servidor de nombres por cualquier clase de registros (no slo A) e incluso puede mostrar la informacin referente a una zona entera. Para entrar en el modo interactivo tipee:
# nslookup

El programa contestar con un prompt > indicando que est listo para ejecutar comandos. Entonces puede indicarle cualquier nombre de dominio y nslookup buscar por registros de tipo A. Para cambiar el tipo de registro que queremos encontrar es posible indicar set type=tipo, donde tipo puede ser cualquiera de los que ya mencionamos o incluso any, que indica cualquier tipo de registro. Si se usa nslookup para indagar por la mquina dragon, el programa entrega lo siguiente:
Server: alexa.centraltech.com.ar Address: 192.168.4.30 #53 >dragon .centraltech.com.ar Name dragon.centraltech.com.ar Address: 192.168.4.3

En algunas ocasiones aparece la lnea "Non-authoritative answer"; esto significa que bind no sale de la red para preguntar por un equipo, en su lugar mira en su cach y lo encuentra all. El nmero 53 que aparece en al direccin IP del servidor es el puerto que usa por protocolo TCP/IP.

Ejemplo de bsqueda
Cuando se busca una mquina, la pregunta procede recursivamente en la jerarqua comenzando desde arriba. Si quiere localizar la direccin de prep.ai.mit.edu, su servidor de nombres ha de encontrar primero un servidor de nombres que sirva a edu. Pregunta al servidor (ya conoce los servidores, es para lo que se utiliza el archivo db.root), y el servidor proporcionar una lista de servidores edu:
$ nslookup Default Server: localhost Address: 127.0.0.1

Premiere IT S.R.L.

Pgina 162

LOC: Linux Original Courseware Comienza preguntando a un servidor raz.


> server c.root-servers.net. Default Server: c.root-servers.net Address: 192.33.4.12

Pone el tipo de peticin (Query) a tipo de registro NS


set q=ns

Pregunta por edu.


edu.

El punto (".") final aqu es significativo, indica al servidor que le pedimos un edu que est justo debajo de ".", y esto reduce la bsqueda un poco.
edu nameserver edu nameserver edu nameserver edu nameserver edu nameserver edu nameserver edu nameserver edu nameserver edu nameserver A.ROOT-SERVERS.NET H.ROOT-SERVERS.NET B.ROOT-SERVERS.NET C.ROOT-SERVERS.NET D.ROOT-SERVERS.NET E.ROOT-SERVERS.NET I.ROOT-SERVERS.NET F.ROOT-SERVERS.NET G.ROOT-SERVERS.NET = = = = = = = = = A.ROOT-SERVERS.NET H.ROOT-SERVERS.NET B.ROOT-SERVERS.NET C.ROOT-SERVERS.NET D.ROOT-SERVERS.NET E.ROOT-SERVERS.NET I.ROOT-SERVERS.NET F.ROOT-SERVERS.NET G.ROOT-SERVERS.NET internet address internet address internet address internet address internet address internet address internet address internet address internet address

= = = = = = = = =

198.41.0.4 128.63.2.53 192.228.79.201 192.33.4.12 128.8.10.90 192.203.230.10 192.36.148.17 192.5.5.241 192.112.36.4

Esto nos dice que *.root-servers.net sirve a edu., y as podemos seguir preguntando por ejemplo a C. Ahora queremos saber quin sirve el siguiente nivel del nombre de dominio: mit.edu.
> mit.edu. Server: c.root-servers.net Address: 192.33.4.12 Non-authoritative answer: mit.edu nameserver = strawb.mit.edu mit.edu nameserver = w20ns.mit.edu mit.edu nameserver = bitsy.mit.edu Authoritative answers can be found strawb.mit.edu internet address = w20ns.mit.edu internet address = bitsy.mit.edu internet address = from: 18.71.0.151 18.70.0.160 18.72.0.3

strawb, w20ns y bitsy sirven a mit.edu., selecciona uno y pregunta por ai.mit.edu. server W20NS.mit.edu.

Los nombres de mquina no son sensibles a maysculas/minsculas, pero como podemos usar el mouse para cortar y pegar, obtengo una copia tal y como aparece en la pantalla.
Server: W20NS.mit.edu Address: 18.70.0.160 > ai.mit.edu. Server: W20NS.mit.edu Address: 18.70.0.160 Non-authoritative answer:

Premiere IT S.R.L.

Pgina 163

LOC: Linux Original Courseware


ai.mit.edu ai.mit.edu nameserver = WHEATIES.AI.MIT.EDU nameserver = TRIX.AI.MIT.EDU

Authoritative answers can be found from: AI.MIT.EDU nameserver = WHEATIES.AI.MIT.EDU AI.MIT.EDU nameserver = TRIX.AI.MIT.EDU WHEATIES.AI.MIT.EDU internet address = 128.52.32.13 WHEATIES.AI.MIT.EDU internet address = 128.52.35.13 TRIX.AI.MIT.EDU internet address = 128.52.32.6 TRIX.AI.MIT.EDU internet address = 128.52.38.6

Entonces wheaties.ai.mit.edu es un servidor de nombres para ai.mit.edu.


> server WHEATIES.AI.MIT.EDU. Default Server: WHEATIES.AI.MIT.EDU Addresses: 128.52.32.13, 128.52.35.13

Ahora cambia el tipo de solicitud; ha encontrado el servidor de nombres y va a preguntar todo lo que queremos saber sobre prep.ai.mit.edu.
> set q=any > prep.ai.mit.edu. Server: WHEATIES.AI.MIT.EDU Addresses: 128.52.32.13, 128.52.35.13 prep.ai.mit.edu CPU = dec/decstation-5000.25 OS = unix prep.ai.mit.edu inet address = 18.159.0.42, protocol = tcp #21 #23 #25 #79 prep.ai.mit.edu preference = 1, mail exchanger =life.ai.mit.edu prep.ai.mit.edu internet address = 18.159.0.42 ai.mit.edu nameserver = wheaties.ai.mit.edu ai.mit.edu nameserver = mini-wheats.ai.mit.edu ai.mit.edu nameserver = trix.ai.mit.edu ai.mit.edu nameserver = count-chocula.ai.mit.edu ai.mit.edu nameserver = life.ai.mit.edu ai.mit.edu nameserver = mintaka.lcs.mit.edu life.ai.mit.edu internet address = 128.52.32.80 wheaties.ai.mit.edu internet address = 128.52.35.13 wheaties.ai.mit.edu internet address = 128.52.32.13 mini-wheats.ai.mit.edu internet address = 128.52.32.11 mini-wheats.ai.mit.edu internet address = 128.52.54.11 mintaka.lcs.mit.edu internet address = 18.26.0.36

De esta forma comenzando en . ha encontrado los sucesivos servidores de nombre para el siguiente nivel en el nombre de dominio. Si ha usado su propio servidor DNS en lugar de usar todos esos otros servidores, su bind, desde luego, habr almacenado en el cach toda la informacin que haya encontrado mientras profundizaba en la bsqueda, y en consecuencia no tendr que preguntar de nuevo durante un tiempo.

Premiere IT S.R.L.

Pgina 164

LOC: Linux Original Courseware

Captulo 14
Apache
Introduccin
Apache comenz siendo un demonio servidor de HTTP, el NCSA httpd. Posteriormente, algunos usuarios de este programa formaron un grupo para desarrollar un servidor GNU a partir del trabajo que haba realizado Rob McCool. As, en abril de 1995 nace la primera versin de Apache, la 0.6.2. Apache es un software de libre distribucin bajo la GPL de GNU, y es el servidor web ms utilizado. Segn estadsticas de NetCraft Ltd. Apache tiene ms del 60% del mercado de servidores de Internet. Esto se debe a las siguientes ventajas: El programa completo y mdulos relacionados son open source. Es estable y muy verstil. Es multiplataforma. Aparte de funcionar con Linux, funciona sobre Unix y tambin sobre Microsoft.

Instalacin de Apache2
Por defecto, al instalar apache2 bajo Debian se instalar el mdulo apache2-mpm-worker Este mdulo provee un modelo de ejecucin por hilos para Apache2. Es considerablemente ms rpido que el modelo tradicional sin hilos de MPM. Pero en vez de este mdulo, nos conviene instalar apache2-mpm-prefork Este Mdulo de Multi-Procesamiento (MPM) implementa un modelo sin hilos, que realiza pre-forking. Maneja los pedidos de manera similar a Apache 1.3. Es el apropiado para sitios que deben implementar libreras con problemas de compatibilidad con threads (hilos), o que podran llevar a problemas de seguridad, por desbordamiento de pila. Entonces hacemos:
#apt-get instal install apache2 #apt-get install apache2-mpm-prefork

Esto nos instalar varios paquetes dependientes, entre ellos: openssl y ssl-cert Luego, debemos correr el script apache2-ssl-certificate
# apache2-ssl-certificate

que nos pedir la siguiente informacin, y generar el certificado con el que va a firmar las comunicaciones seguras entre el cliente y el servidor:
Creating self-signed certificate replace it with one signed by a certification authority (CA) enter your ServerName at the Common Name prompt If you want your certificate to expire after x days call this programm with -days x Generating a 1024 bit RSA private key ..........................................++++++..........++++++ writing new private key to '/etc/apache2/ssl/apache.pem' ----You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ----Country Name (2 letter code) [GB]: State or Province Name (full name) [Some-State]: Locality Name (eg, city) []: Organization Name (eg, company; recommended) []: Organizational Unit Name (eg, section) []: server name (eg. ssl.domain.tld; required!!!) []: Email Address []:

Premiere IT S.R.L.

Pgina 165

LOC: Linux Original Courseware Luego, debemos correr el script a2enmod ssl
# a2enmod ssl

Este script automticamente genera un link simblico entre los directorios mods- available y mods enabled, correspondiente al archivo ssl.load. Dentro de este archivo podremos encontrar informacin sobre qu mdulo debe cargar Apache, y dnde buscarlo, esto es lo que hay en el archivo:
LoadModule ssl_module /usr/lib/apache2/modules/mod_ssl.so

Luego, debemos generar la configuracin para el sitio seguro. Para esto, hacemos una copia del archivo /etc/apache2/sites-available/default a /etc/apache2/sites-available/ssl. Dentro del directorio /etc/apache2/sites-available se guardan archivos de configuracin, en general uno para cada sitio que se quiera habilitar. La ventaja de esta configuracin es que nos permite servir o dejar de servir un sitio sin reiniciar Apache2.
# cp /etc/apache2/sites-available/default /etc/apache2/sites-available/ssl

Como en el caso de los mdulos, mediante un script generamos un link simblico al archivo disponible en /etc/apache2/sites-available/ssl y lo colocamos en el directorio /etc/apache2/sites-enabled:
#a2ensite ssl

Ahora vamos a editar parmetros del servidor en el archivo principal de configuracin.

Configuracin
Para cambiar cualquier parmetro bsico del funcionamiento del servidor web, debemos editar el archivo /etc/apache2/apache2.conf. Como en los archivos de configuracin ya vistos, recuerde que las lneas que comienzan con uno o ms caracteres "#" son comentarios, es decir, que no se ejecutan. Si se desea cambiar el directorio en el cual se almacenan los archivos del sitio (por defecto es /var/www), debemos editar el parmetro DocumentRoot en /etc/apache2/sites-available/default y reiniciar el servidor. DocumentRoot: Esta directiva especifica el directorio donde se alojarn las pginas que estn en el servidor, es decir que cuando un cliente conecte con nuestro servidor, este mostrar por defecto los archivos de este directorio, as, los directorios que cuelguen de este sern accedidos especificando en el cliente la ruta relativa desde este punto, tambin son vlidos los enlaces simblicos y los alias. Ejemplo: DocumentRoot "/var/www/html". Ahora debemos agregar el puerto 443 a los puertos en los que queremos que escuche Apache2, editando
/etc/apache2/ports.conf. Por defecto, Apache2 escucha en el puerto 80 pero ya que adems estamos

instalando soporte SSL debemos agregar el puerto 443


Listen 443

Ahora debemos editar el archivo /etc/apache2/sites-available/ssl y cambiar el puerto 80 en el nombre del sitio a 443. Debemos agregar las dos lneas siguientes al archivo /etc/apache2/sites-available/ssl
SSLEngine On SSLCertificateFile /etc/apache2/ssl/apache.pem

Debemos cambiar el parmetro SSLCertificateFile /etc/apache2/ssl/apache.pem por la ruta al archivo de certificado generado al principio. Este parmetro, junto a la firma digital, controla cmo se genera el tnel seguro entre un cliente y el servidor, y adems la forma en la que el cliente autentica la identidad del servidor: Premiere IT S.R.L. Pgina 166

LOC: Linux Original Courseware


SSLCertificateFile /etc/apache2/ssl/online.test.net. SSLCertificateKeyFile /etc/apache2/ssl/online.test.net.key

Debemos colocar ServerSignature con valor off, para evitar revelar informacin sobre nuestro servidor. Poniendo ServerTokens a ProductOnly limitaremos la cantidad de informacin que se revela en cada conexin:
ServerSignature Off ServerTokens ProductOnly

Si adems se quiere habilitar el soporte para CGI y PHP, se deben instalar los siguientes paquetes:
libapache2-mod-php4,php4-cli,php4-common,php4-cgi # apt-get install libapache2-mod-php4 php4-cli php4-common php4-cgi

Debemos editar entonces el archivo /etc/apache2/apache2.conf y cambiar la lnea


DirectoryIndex index.html index.pl index.xhtml index.shtml

a
DirectoryIndex index.html index.cgi index.pl index.php index.xhtml index.shtml

Para que el servidor busque esos archivos y los sirva de manera automtica cuando se le pide una ruta que incluya slo un directorio, por ejemplo, www.centraltech.com.ar/alumni/. Hay que tener cuidado, porque el orden en el que se buscan esos archivos es el que se utiliza para buscarlos, por lo que si se tienen dos archivos, uno index.php y otro index.html, se entregar al cliente el segundo, ya que se lo list primero en la directiva DirectoryIndex. Luego, debemos reiniciar el servidor, para que los cambios tengan efecto:
/etc/init.d/apache2 restart

Veamos otras variables de configuracin

ServerType: hay dos formas de correr el servidor web, solo (standalone) o como parte del superdemonio xinetd. En el primero de los casos, el que se encuentra configurado por defecto, el servicio se lanza

mediante un script en forma independiente, mientras que con la segunda opcin, el demonio es lanzado desde el xinetd. ServerRoot: le decimos a apache2 cual es el directorio donde estn todos los archivos de configuracin, de logs, errores, etc. Ejemplo: ServerRoot /etc/apache2 LockFile: esta lnea debe descomentarse si corremos el servidor desde una unidad montada mediante NFS (network file system), y especifica donde se alojar el archivo de bloqueo, ya que este debe encontrarse siempre en una unidad local. Ej:LockFile /var/lock/apache2/accept.lock PidFile: indica en que archivo se almacena el PID (nmero de identificacin del proceso) del servidor. Por ejemplo: PidFile /var/run/apache2.pid Timeout: es el tiempo en segundos que esperar entre pedidos y respuestas. Por defecto: Timeout 300 KeepAlive: si est en On, permite ms de una peticin por conexin, por defecto: KeepAlive On. MaxKeepAliveRequests: es el nmero mximo de peticiones durante una conexin Se aconseja tener un nmero alto para aumentar la performance del servidor. El valor recomendado es: MaxKeepAliveRequests 100. Si est en 0, quiere decir que es ilimitado. KeepAliveTimeout: es el tiempo mximo en segundos que va a esperar la siguiente peticin de un mismo cliente en una misma conexin, por defecto: KeepAliveTimeout 15

<IfModule prefork.c> StartServers 5 MinSpareServers 5 MaxSpareServers 10 MaxClients 20 MaxRequestsPerChild 0 </IfModule>

Premiere IT S.R.L.

Pgina 167

LOC: Linux Original Courseware


<IfModule worker.c> StartServers MaxClients MinSpareThreads MaxSpareThreads MaxRequestsPerChild </IfModule> 2 150 25 75 0

<IfModule perchild.c> NumServers 5 StartThreads 5 MinSpareThreads 5 MaxSpareThreads 10 MaxThreadsPerChild 20 MaxRequestsPerChild 0 AcceptMutex fcntl </IfModule>

MinSpareServers y MaxSpareServers: es la cantidad mnima y mxima de procesos de Apache en

espera de peticiones, los valores por defecto son adecuados en la mayora de los casos.
MinSpareThreads y MaxSpareThreads, igual al anterior, pero en vez de procesos, es la cantidad de

hilos.
StartServers: es la cantidad de servidores que arrancan inicialmente, debe estar entre la cantidad mxima

y mnima definida en el tem anterior.


MaxClients: es la cantidad de peticiones o conexiones que atiende simultneamente. Esta opcin ayuda a prevenir algunos tipos de ataques. Est OK dejarlo en un valor no mayor a 250. MaxRequestsPerChild: es la cantidad mxima de peticiones que un proceso hijo puede atender. No es

necesario en los sistemas Linux, se recomienda usarlo en Solaris.


User/Group: Nombre o nmero del usuario y del grupo que ejecutar el demonio apache2, normalmente: User www-data Group www-data. Otra forma: user apache y group apache LogFormat: como es el formato de escritura de archivos de log. ErrorLog: Se usa para asignar la ubicacin y nombre del archivo donde se registrarn los errores que se

produzcan durante la operacin del servidor. En el caso de los hosts virtuales, en caso de no asignarles archivos de log de errores sern almacenados en este. El archivo y ruta por defecto son: ErrorLog /var/log/apache2/error_log. LogLevel: La cantidad y nivel de los mensajes de error que nos interesa registrar se especifican con esta directiva, los valores posibles son: debug, info, notice, warn, error, crit, alert, emerg. Y el valor por defecto es: LogLevel warn.
Include Include Include Include Include /etc/apache2/mods-enabled/*.load /etc/apache2/mods-enabled/*.conf /etc/apache2/httpd.conf /etc/apache2/ports.conf /etc/apache2/conf.d/[ ^.#]*

Alias /icons/ /usr/share/apache2/icons/ <Directory /usr/share/apache2/icons> Options Indexes Multiviews AllowOverride None Order allow,deny Allow from all </Directory>

Customizable Error Response: se refieren a la configuracin de respuestas de error de Apache, tenemos tres opciones: o Texto: Se visualiza en texto plano, ejemplo: ErrorDocument 404 "No se encontr el archivo".

Premiere IT S.R.L.

Pgina 168

LOC: Linux Original Courseware


Redireccionamiento local: Se visualiza un documento en el mismo servidor, ejemplo: ErrorDocument 404 /missing.html. o Redireccionamiento externo: Se visualiza un archivo en otro servidor, ejemplo: ErrorDocument 404 http://otro.server.com.ar/missing.html. Luego aparecen todos los cdigos de error, dentro del mdulo mod-negotiate.c DirectoryIndex: Con esta directiva se fija el o los nombres de los archivos que Apache intentar servir en primera instancia, por defecto se asigna index.html, pero es bueno especificar otras opciones,

esta lnea podra quedar de la siguiente manera:


DirectoryIndex index.html index.htm index.cgi principal.html principal.htm UserDir: Con esto se fija el nombre del directorio que es agregado dentro del directorio home de los

usuarios si se recibe un requerimiento de este tipo del usuario. AccessFileName: Este es el nombre del archivo donde se definirn las caractersticas de acceso a los directorios protegidos con claves, dejar como est: AccessFileName .htaccess. UseCanonicalName: Esta es una caracterstica incorporada a partir de las versiones 1.3.x en adelante, cuando est activada (On) el servidor usa el nombre "cannico" en el caso de que tenga que hacer un autoreferencia a si mismo, son las referencias a los DNS que vimos en el captulo anterior. Cuando est deshabilitada, Apache usa la configuracin hostname:port que el cliente provey con la peticin de su navegador. Esta opcin tambin afecta SERVER_NAME y SERVER_PORT en los scripts CGI. TypesConfig: especificamos con esta directiva donde se encuentra el archivo mime.types o su equivalente. Por defecto es: TypesConfig /etc/httpd/conf/mime.types DefaultType: En caso de que el servidor no pueda determinar el tipo MIME de algn archivo, Apache asignar lo que ac definamos, si la mayora de sus documentos son binarios la opcin adecuada sera, application/octet-stream, sino dejamos la lnea como est: DefaultType text/plain. HostnameLookups: Esta directiva se usa para que Apache resuelva los nombres para loguear los accesos o solo almacene los nmeros de IP, por defecto su conducta es esta ltima: HostnameLookups Off. IndexOptions: Directiva usada para optar por el sistema de visualizacin de los directorios con Apache, puede ser normal o indexado, la configuracin clsica es: IndexOptions FancyIndexing VersionSort. AddIcon*: Las directivas de este tipo asignan un icono para cada tipo de archivo que ser visualizado, solo son usados en el caso de que IndexOptions est seteado como FancyIndexing. DefaultIcon: Esto determina el icono que ser usado por defecto en el caso de los archivos que no tengan un tipo definido. Por defecto es: DefaultIcon /icons/unknown.gif. ReadmeName: Nombre del archivo "Leeme" que el servidor visualizar por defecto con el listado del directorio. Valor: ReadmeName README. HeaderName: Nombre del archivo "Cabecera" que el servidor visualizar por defecto con el listado del directorio. Valor: HeaderName HEADER. IndexIgnore: Mscaras de nombres de archivos y nombres de archivos que sern ignorados por el listado de directorios servido por apache. Valor por defecto: IndexIgnore .??* *~ *# HEADER*
README* RCS CVS *.v *.t AddEncoding: Usando esta directiva, algunos navegadores descomprimen la informacin en tiempo de

servicio, es decir, que se sirve al navegador en forma descomprimida, esto es til solo en caso de cliente UNIX. Las opciones por defecto son: AddEncoding x-compress Z y AddEncoding x-gzip gz. AddLanguage: Algunos navegadores pueden negociar con el servidor el lenguaje en el que los documentos sern servidos. En el caso de disponer de traducciones, en este caso, debemos agregar la lnea: AddLanguage es .es para los archivos en castellano. Para que esto funciones los archivos en castellano tienen que tener como ultima extensin ".es". LanguagePriority: Prioridad de lenguajes, usando dos caracteres especificamos cual ser el primero, segundo y tercera opcin para servir los documentos, por defecto es: LanguagePriority en fr de, pero podra ponerlo en: LanguagePriority es en fr. AddDescription: esta directiva es muy til para que en los listados de directorios servidos por Apache, se agregue al final de la lnea una descripcin del formato del archivo. Esta opcin es solo vlida para el caso de que IndexOptions est seteado como FancyIndexing. El formato de esta directiva es: AddDescription "descripcin" extensin_archivo. Un ejemplo es: AddDescription "Documento comprimido con GZIP" .gz. AddType: Asigna tipos sin necesidad de editar el archivo mime.types. Pgina 169

Premiere IT S.R.L.

LOC: Linux Original Courseware


AddHandler: Directiva usada para asignar determinada extensiones de archivos a manejadores del servidor, por ejemplo la extensin .cgi como un Script, AddHandler cgi-script .cgi. BrowserMatch: Permite especificar comportamientos segn el navegador que solicite servicios, por ejemplo: BrowserMatch "Mozilla/2" nokeepalive o BrowserMatch "MSIE 5\.0b2;" nokeepalive downgrade-1.0 force-response-1.0. BindAddress: tambin para dar soporte de hosts virtuales. Puede poner una IP, un nombre de dominio. Dejar comentado. ServerAdmin: Direccin de correo del administrador del servidor. En caso de problemas el servidor usar esta direccin para contactar con el administrador, coloque aqu su direccin de correo. Ejemplo: ServerAdmin webmaster@centraltech.com.ar. Directory: Los Servicios y caractersticas que sern permitidas y negadas a cada directorio a los que Apache d acceso se habilitan y deshabilitan desde ac, por defecto la configuracin es muy restrictiva con estos permisos, se debe dejar como est: <Directory /> Options FollowSymLinks AllowOverride None </Directory>

Luego de denegar todo en la secuencia anterior se habilitan los directorios con las caractersticas que se desean asignar a cada uno. Observe el ejemplo de abajo:
<Directory "/var/www/html"> Options Indexes FollowSymLinks AllowOverride None Order allow,deny Allow from all </Directory>

CacheNegotiatedDocs: Esta opcin es necesaria si queremos acceder al servidor con proxys, en cuyo caso no es necesario que el mismo guarde en cache los documentos. Si queremos deshabilitar esta caracterstica debemos descomentar la lnea, por defecto est comentada. Aliases: Directiva usada para poner alias a los recursos del servidor. El formato es: Alias nombre_alias nombre_verdadero. Ejemplo: Alias /icons/ "/var/www/icons/" ScriptAlias: Usando esta directiva, asignamos un alias al directorio que contiene los scripts CGI, el valor por defecto es: ScriptAlias /cgi-bin/ "/var/www/cgi-bin/".

Virtual Hosts

Esta opcin de Apache un muy til en el caso de que tengamos ms de un dominio en nuestro host, es decir hosts virtuales. NameVirtualHost: Es necesario definir un nmero de IP y puerto para el host virtual, para eso usamos esta directiva, ejemplo: NameVirtualHost 12.34.56.78:80 A continuacin daremos un ejemplo sobre como configurar un host virtual:
<VirtualHost www.centraltech.com.ar> ServerAdmin webmaster@centraltech.com.ar ServerName www.cortech.com.ar DocumentRoot /www/docs/hostvirtual ErrorLog logs/host_virtual.log CustomLog logs/host_virtual_access.log common </VirtualHost> <VirtualHost _default_:*> </VirtualHost>

Prueba de Apache
Para probar el servidor de web debemos lanzar el demonio:
# /etc/init.d/apache2 restart

Premiere IT S.R.L.

Pgina 170

LOC: Linux Original Courseware Abrimos nuestro navegador preferido. Le pedimos en la barra de URL la direccin de nuestra mquina. (http://localhost). Si todo qued bien configurado, nos tiene que aparecer la pgina de Bienvenida de Apache. Para nuestra prxima prueba, debemos crear una pgina web simple en HTML y guardarla en el directorio que especificamos en DocumentRoot del VirtualHost. Luego iniciamos nuestro servidor DNS (si no esta iniciado an) y repetimos la prueba desde el navegador, pero esta vez utilizamos el nombre cannico que especificamos en VirtualHost (http://www.centraltech.com.ar)

Pginas protegidas
En algunas ocasiones es necesario restringir algunas pginas a los usuarios, de manera de permitir el acceso slo a usuarios autorizados. Las razones para esto pueden ser varias, por ejemplo, que la informacin o servicio ofrecido sea pago, o que sea de carcter privado o confidencial. Cualquiera sea el caso, veremos como se hace con Apache para proteger directorios, no confundir esto con pginas seguras por encriptacin (https). Para limitar el acceso a una pgina HTML o directorio, solo a las personas que estn registradas por el webmaster, debemos crear un nuevo directorio, debajo del directorio de documentos de Apache (en nuestro ejemplo: /var/www/html), en el cual alojaremos las pginas que estarn protegidas por clave. Dentro del directorio deber crear un archivo llamado .htaccess, el punto antes del nombre sirve para que este archivo sea oculto. El contenido de este archivo es el siguiente:
<Directory> AuthUserFile /var/www/html/privado/.htpasswd AuthGroupFile /var/www/html/privado/.htgroups AuthName Pagina de acceso restringido AuthType Basic <limit GET POST> require group nombregrupo require user usuario1 require user usuario2 require valid-user </limit> </Directory>

En el archivo /var/www/html/privado/.htpasswd se encuentran los nombres de usuarios y las claves o passwords de los clientes con acceso permitido. Junto con apache se provee una aplicacin con la que se podr crear su propio archivo de passwords. Hay otro archivo llamado .htgroups en el mismo directorio (/var/www/html/privado/) o en la ruta que se indique en AuthGroupFile, que sirve para relacionar los login de los usuarios a un determinado grupo, y que va a ser el que se use en require group nombregrupo para limitar el acceso a ese grupo nicamente. Para limitar el acceso por usuarios lo indica esta lnea: require user usuario1. De esta forma solo los usuarios indicados tendrn acceso a la pgina. Si indica require valid-user, slo los usuarios que aparezcan en el archivo .htpasswd, podrn tener acceso. Se puede indicar por separado o de forma conjunta cada una de estas opciones. Nota: Es importante indicar siempre la ruta completa al archivo de claves
.htpasswd y de grupos .htgroups.

Podemos crear la cantidad de grupos que queramos, siempre teniendo en cuenta que el nombre del grupo debe ser el mismo que el usado para dar acceso a su pgina (require group nombregrupo). Puede utilizar el archivo de claves que mostrado antes indicando AuthUserFile, o bien crear su propio archivo de claves, donde podr crear las cuentas y claves que desee. Para hacer esto, disponemos de la aplicacin htpasswd. Este comando se genera junto con los otros ejecutables del servidor durante la compilacin (y la instalacin). Para usarlo por primera vez es necesario invocarlo con el parmetro -c, ejemplo:
# htpasswd -c .htpasswd cuenta

El programa inmediatamente solicita que ingresemos la clave dos veces, luego encripta la clave y la almacena en el archivo creado. Si desea aadir nuevos usuarios deber hacer lo siguiente:
# htpasswd .htpasswd cuenta

Premiere IT S.R.L.

Pgina 171

LOC: Linux Original Courseware Nota: Observe que en esta ocasin no se usa el parmetro -c que indica que se cree un nuevo archivo. Si crea su propio archivo de passwords, estos login sern los que se usen para el archivo de grupos. Ejemplo: Veamos ahora paso a paso un ejemplo de como crear un directorio privado. Nos ubicamos en el directorio raz que contiene los documentos del servidor apache. 1. Creamos el directorio que tendr acceso limitado. mkdir secret 2. Ingresamos al nuevo directorio. cd secret 3. Creamos y editamos el archivo .htacess vi .htpasswd 4. Agregamos el siguiente contenido al archivo httpd.conf:
AuthUserFile /var/www/html/secret/.htpasswd AuthGroupFile /var/www/html/secret/.htgroups AuthName Acceso Restringido a Miembros AuthType Basic <limit GET POST> require valid-user </limit> Creamos y editamos el archivo .htgroups vi .htgroups Agregamos el siguiente contenido a .htgroups pub: publico Creamos el archivo de claves con la primera cuenta htpasswd -c .htpasswd alexa Agregan las dems cuentas htpasswd .htpasswd agarcia

5. 6. 7. 8.

Nota: el programa htpasswd lo ejecuto del directorio a proteger.


9. Finalmente modificar la configuracin de apache httpd.conf en la lnea AllowOverride colocar el valor "All"

Con esto terminamos de configurar nuestro directorio protegido secret. Con nuestro navegador pedimos por la direccin http:/127.0.0.1/secret y si todo funciona correctamente, al hacer este pedido, el servidor nos va a solicitar ingresar el nombre de usuario y la clave para acceder al directorio y sus documentos. Nota: La lnea AuthName Acceso Restringido a Miembros del archivo httpd.conf especifica la frase que aparecer al pedir el password.

Premiere IT S.R.L.

Pgina 172

LOC: Linux Original Courseware

Captulo 15
Programando tareas con at y cron
Los demonios (daemons) son, programas que se encargan de gestionar y administrar el sistema. Son varios y permiten automatizar muchas tareas del sistema operativo Linux. Estos programas son llamados as porque se ejecutan (o corren) en segundo plano, y una vez configurados no necesitan la intervencin del usuario para hacer tal o cual operacin, esto incrementa la velocidad del sistema. El comando at se utiliza para planificar la ejecucin (en el futuro y por una vez) de ciertas tareas. Por ejemplo, dejar para el horario nocturno los trabajos que, por su empleo de recursos o su duracin, representen una gran carga para el sistema. En el momento deseado, at se encargar de ejecutar esas tareas. Su sintaxis es:
at [-V] [-q queue] [-f file] [-m] fecha_y_hora at -c tarea [tarea...]

Introduccin

Uso de at

Podemos especificar varios formatos para especificar la fecha y hora en que at debe activarse. El tiempo puede especificarse en formato HHMM o HH:MM de 24 hs, o colocar el sufijo am o pm, si uso 12 hs. Tambin se puede especificar midnight (medianoche), noon (medioda) o teatime (4 de la tarde). Si las tareas deben ejecutarse otro da distinto al que me encuentro, hay que especificarle la fecha en la forma mes da, por ejemplo, May 27, e incluso, de ser necesario, tambin puede especificarse el ao, en la forma MM/DD/AA o MM.DD.AA. Otra manera de que at sepa el momento en que tiene que actuar es darle la fecha y hora en forma de un signo '+' seguido de un nmero de unidades de tiempo, ya sean weeks (semanas), days (das), hours (horas) o minutes (minutos). Por ejemplo 6pm+4 days dentro de 4 das a las 6 de la tarde 8pm tomorrow maana a las 8 de la tarde
at devuelve un nmero, un identificador de tarea, al ser invocado. Este identificador lo usaremos ms tarde si

necesitara informacin acerca de la tarea concreta, se hace con la opcin -c. Nota: No se puede utilizar at cuando los usuarios compiten por los recursos.

Uso de cron

Este demonio tambin se utiliza para automatizar tareas y es una de las mejores armas de Linux para agendar, contra fecha y hora, la realizacin de una actividad repetitiva. Su uso es un poco ms complicado que at, ya que permite realizar tareas especificando hora, da, semana, mes y con cierto intervalo de das, segn como est configurado, siempre y cuando ste se encuentre en modo multiusuario. Para esto, debe leer los archivos llamados crontab, que se localizan en /etc. El nombre de los archivos y/o su ubicacin puede ser diferente, dependiendo de que distribucin de Linux est manejando. La estructura es de esta forma:
SHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin MAILTO=root HOME=/ # # check scripts in cron.hourly, cron.daily, cron.weekly, and cron.monthly # # run-parts 01 * * * * root run-parts /etc/cron.hourly 02 4 * * * root run-parts /etc/cron.daily 22 4 * * 0 root run-parts /etc/cron.weekly 42 4 1 * * root run-parts /etc/cron.monthly

Las primeras cuatro lneas son las variables de entorno que utiliza. La variable MAILTO lleva el nombre de usuario a quien se le manda el correo de notificacin de lo realizado (la salida estandar y la salida de error del programa ejecutado); puede ser root o algn otro usuario, o tambin podra dejarlo en blanco para que no enve Premiere IT S.R.L. Pgina 173

LOC: Linux Original Courseware ningn mail. Los siguientes renglones muestran como se deben configurar las acciones para que crontab las realice peridicamente. El formato para programar las acciones es:
Minuto Hora Dia_del_Mes Mes Dia_de_Semana [programa o comando]

Donde
Minuto Hora Dia_del_Mes Mes Dia_de_Semana [programa o comando]

Minuto en que se ejecuta el proceso. (0-59) Hora en que se ejecuta el proceso. (0-23) Da del mes en que se ejecuta el proceso. (0-31) Mes en que se ejecuta el proceso. (1-12, los nombres) Da de la semana, va del 0 (domingo) al 6 (sbado) Aquello que va a ejecutarse al llegar el momento especificado.

Nota: si en vez de especificar un programa en particular, especificamos runparts directorio, cron ejecutara todos los scripts contenidos en directorio. Para los valores de tiempo (Minuto, Hora, Dia_del_Mes, Mes y Dia_de_Semana) puedo especificar valores puntuales o conjuntos de valores, para reiterar la ejecucin en secuencias regulares. En este ltimo caso, puedo hacer una lista de valores separados por coma (1,3,6,11) o un rango de valores separados por un guin (4-12). Otro valor de tiempo que puede tomar es el asterisco (*). El asterisco, es como un comodn, se usa para especificar todos los valores posibles. Veamos algunos ejemplos: Para ejecutar el programa randsig a las 12:30 (del medioda), todos los das (cualquier da de la semana, cualquier da del mes y cualquier mes):
30 12 * * * /usr/bin/randsig

El mismo caso anterior, pero ejecutando a las 12:30 (de la medianoche)


30 0 * * * /usr/bin/randsig

Nota: Para disponer del PATH estndar para la ejecucin de los comandos (y no tener que aadirlo en todos, debe incluirse la variable de entorno en el archivo:
PATH=/usr/local/bin:/usr/bin:/bin:(etc...)

Nota: si quisieramos evitar el mail con la salida estndar y/o la salida de error de nuestro comando, podemos usar 1>/dev/null y/o 2>/dev/null, o ambos combinados en >/dev/null 2>&1. Por ejemplo:
30 12 * * * /usr/bin/randsig >/dev/null 2>&1

Otra forma de administrar tareas con cron es guardar directamente las tareas a realizar en los directorios /etc/cron.daily, /etc/cron.weekly y /etc/cron.monthly. Esto es vlido si tiene una tarea para ejecutar diaria, semanal o mensualmente y quiere independizarla de un usuario en particular (sern ejecutados con permisos de root). Los scripts contenidos en estos directorios se llaman desde /etc/crontab, y se ejecutarn en orden alfabtico.

Opciones de crontab

Veamos algunos parmetros que pueden acompaar al comando crontab: crontab l lista el archivo crontab. crontab e permite editar el crontab, utilizando el editor seteado por defecto (vi) crontab r borra el archivo crontab. crontab -u usuario permite modificar el crontab del usuario Los parmetros pueden usarse combinados, por ejemplo: crontab -u carlos -e editar directamente el crontab del usuario carlos Nota: Para mayor informacin, vea las pginas man.

Premiere IT S.R.L.

Pgina 174

LOC: Linux Original Courseware

Crontab para los usuarios

Si los dems usuarios del sistema necesitan ejecutar acciones, bajo el esquema de tareas programadas, tambin podrn utilizar crontab. Dada la estructura de permisos de Linux, la posibilidad de que el usuario realice una accin daina es baja, ya que los comandos invocados por cron identificarn quin (que usuario) los est invocando y Linux delimitar el acceso siguiendo la politica de permisos establecida para ese usuario. Entonces, como usuario ejecutamos:
$ crontab -e

Esto busca si tenemos un archivo de crontab, en caso de existir lo abre, y si no, lo crea. Editamos sus contenidos y guardamos los cambios realizados, los cambios surten efecto inmediatamente. De acuerdo a la distribucin que Linux que tengamos, el archivo se guarda en diferentes ubicaciones, en el caso de RedHat se ubica en /tmp. Nota: Slo el superusuario (root) puede ver y editar los archivos de cron de todos los usuarios, el resto tiene acceso exclusivamente al que le pertenece.

Contol de accesos y uso de crontab

Mediante los archivos /etc/cron.allow y /etc/cron.deny, el administrador puede decidir qu usuarios tendrn acceso a crontab. Si no existe un archivo cron.deny, todos los usuarios lo pueden utilizar. Una forma muy sencilla de editarlo es directamente desde la lnea de comandos, recordando que esto lo debe realizar root.
# echo ALL >> /etc/cron.deny

Esto limita el acceso a TODOS los usuarios, es decir que ningn usuario podr utilizar crontab. Si un usuario cualquiera tipea:
$ crontab -l

Ver como respuesta:


You (usuario) are not allowed to use this program (crontab) See crontab(1) for more information

Nota: Esto es extensivo incluso a root. Para otorgar permisos, ejecutamos lo siguiente:
# echo usuario >> /etc/cron.allow

Premiere IT S.R.L.

Pgina 175

LOC: Linux Original Courseware

Apndice A
Utilizando vi
Introduccin
En Linux podemos configurar un servidor editando los correspondientes archivos de configuracin. Entonces, necesitamos una herramienta para modificarlos; por tal razn vamos a estudiar como funciona el vi, uno de los editores de texto ms potentes y ms importantes tanto en Linux como en UNIX.

Invocando a vi

Para abrir el archivo que desea corregir o editar, debemos llamar al programa as:
# vi ejemplo.txt

Si el archivo no existiera, de esta forma lo creamos, es decir, se crea un archivo vaco de nombre ejemplo.txt que se encuentra en el directorio donde estoy ubicado. Nota: si el archivo que nos interesa editar no se encuentra en el directorio donde estamos ubicados, tenga la precaucin de nombrar el archivo con su pathname completo. Si el archivo ejemplo.txt es nuevo, vi nos muestra uno de los mensajes siguientes en la lnea de estado (que aparece en la parte inferior de la pantalla) de la terminal (o sesin) para indicar que se est creando y editando un archivo nuevo.
ejemplo.txt New File ejemplo.txt No such file or directory. ejemplo.txt ERROR

Cuando se edita un archivo existente, vi despliega las primeras lneas del archivo y da informacin del estado de ste en la lnea de estado. Nota: Cuando se le da vi un mandato, es importante distinguir entre letras maysculas o minsculas.

Cmo funciona vi

Antes de comenzar a escribir, debemos saber que vi tiene 2 modos de operacin: modo comando y modo edicin. Para entender el porqu de estos dos modos, veamos un poco de historia. Cuando aparecieron los UNIX, all por los aos 70, los teclados que tenan las mquinas y/o terminales que se conectaban a servidores no eran como los que utilizamos actualmente, eran ms pobres en la cantidad de teclas. No tenan, por ejemplo el teclado medio donde aparecen las teclas Insert, Supr, Inicio, Fin, RePag, etc. Esta situacin oblig a utilizar una misma tecla para hacer cosas diferentes y, para hacer la diferencia se pens en tener modos de operacin distintos. Veamos un ejemplo para entenderlo mejor. Si estoy en modo edicin, la letra w tiene su significado implcito del alfabeto, cada vez que la tipeo, aparece en el texto que estoy editando. Si estoy en modo comando la letra w adopta el significado de word (palabra), me permite realizar acciones referidas a palabras completas y no caracteres individuales, por ejemplo avanzar hasta la siguiente palabra a lo largo del texto. Y si estoy trabajando con comandos globales w tambin significa write (escribir), para guardar los cambios realizados. Modo comando permite aplicar acciones o comandos sobre el texto. Cuando estamos ubicados en este modo cada pulsacin de una tecla (o combinacin de teclas) se toma como comando. Algunos comandos nos permiten pasar al modo edicin y otros comandos nos permiten navegar (o desplazarnos) por el documento. permite modificar los contenidos el archivo. Para volver al modo edicin, utilizamos la tecla Esc.

Modo edicin

En ambos modos se trata de interpretar las pulsaciones de teclas, pero en el primero como rdenes y en el segundo como datos de entrada. Nota: luego de pulsar alguna de las teclas que lo llevan a modo edicin vi no emite ninguna seal notoria para indicar que se encuentra en modo edicin (salvo las versiones nuevas que muestran INSERT en la base de la Premiere IT S.R.L. Pgina 176

LOC: Linux Original Courseware pantalla). Si no est seguro de encontrarse en modo edicin o comando, pulse un par de veces la tecla Esc y escuchar un aviso (un sonido agudo o campanita), esto le confirmar que se encuentra en modo comando.

Desplazarse por el archivo

Mientras vi est en modo de comando, puede colocar el cursor encima de cualquier caracter de la pantalla. Nos podemos mover por el archivo que estemos editando de diferentes y prcticas maneras. Dependiendo de la precisin o el rango de desplazamiento deseado, podemos pulsar: h un carcter a la izquierda j un rengln hacia abajo k un rengln hacia arriba l (ele minscula) un carcter hacia la derecha 0 (cero) para ir al comienzo de la linea donde estoy ubicado $ ir al final de la linea donde estoy ubicado ctrl.+B una pantalla hacia arriba ctrl.+F una pantalla hacia abajo b una palabra hacia la izquierda B una palabra hacia la izquierda (delimitada por blancos) w una palabra hacia la derecha W una palabra hacia la derecha (delimitada por blancos) Enter principio de siguiente lnea ( principio de frase ) fin de frase { principio de prrafo } fin de prrafo }} fin de archivo

Introducir texto

Desde el modo comando de vi podemos usar una serie de teclas, para introducir texto en un archivo, dependiendo de donde deseamos ingresarlo, podemos pulsar: i (de insert) para insertar texto, los caracteres que se encontraban en la posicin del cursor se desplazaran hacia la derecha (en las versiones tambien se puede pulsar la tecla Insert) I igual que i pero desde el principio de la lnea a (de append) para insertar texto detrs de la carcter que est en la posicin del cursor. A para insertar texto detrs del ltimo carcter de la lnea o (de open) abre una nueva lnea en blanco debajo de la lnea actual e inserta texto en ella O abre una nueva lnea en blanco arriba de la lnea actual e inserta texto en ellla Mientras vi se encuentra en modo insercin, puedo utilizar las teclas @, #, ctrl.+H, ctrl.+W y BackSpace para corregir el texto que estoy ingresando. Al terminar de introducir el texto, se oprime la tecla Esc para devolver vi al modo de comando.

Borrar texto

Para borrar texto, hay que salir del modo edicin y ubicarse en modo comando, dependiendo de la cantidad de texto que deseemos borrar, podemos pulsar: x (equis) para borrar el carcter que se encuentra en la posicin del cursos, (los caracteres que se encuentren a la derecha de este, se desplazarn hacia la izquierda) X para borrar el carcter que se encuentra a la izquierda del cursor. d para borrar ms de un carcter, debo indicar con una segunda letra hasta donde deseo borrar, la segunda letra puede ser una de las siguientes: w desde el cursor hasta el fin de la palabra (inclusive el blanco que la divide de la prxima palabra) d toda la lnea 0 (cero) desde el principio de la lnea hasta el cursor $ desde el cursor hasta el fin de la lnea G desde el cursor hasta el fin del archivo

Premiere IT S.R.L.

Pgina 177

LOC: Linux Original Courseware

Reemplazar texto

En caso de necesitar reemplazar texto escrito (para no hacer las acciones de borrar y luego las de insertar), podemos utilizar, desde el modo comando, las siguientes teclas: r (de replace) reemplaza el carcter donde est ubicado el cursor por el siguiente que tipeemos (y regresa automticamente al modo comando) s (de substitute) reemplaza el carcter donde esta ubicado el cursor por los siguientes caracteres que tipeemos (hasta que apretemos Esc para volver al modo comando) ~ cambia de mayscula a minscula (y viceversa) la letra sobre la que estemos situados

Copiar, Cortar y Pegar texto

El mandato yy guarda en el buffer la lnea que voy a copiar. Luego me posiciono en el lugar donde deseo hacer la copia y presiono p para pegarla (de paste). Y ah aparece la lnea que guard en el buffer. Estos mismos pasos se pueden hacer con el comando dd, si lo que deseo hacer es cortar y pegar. El mandato u (de undo), deshace lo que acaba de hacerse. Ya sea restaurar texto insertado, borrado o cambiado por error. El mandato u slo arregla el ltimo comando. Si se borra una lnea y despus se cambia una palabra, el mandato u slo restaura la palabra cambiada, no la lnea borrada. El mandato U restaura la lnea actual a la forma en la que estaba antes de empezar a cambiarla, aunque se hayan realizado muchos cambios. El mandato . (punto) vuelve a hacer el ltimo comando realizado. Es ms, este ltimo comando se repetir tantas veces como pulsemos el . (punto).

Deshacer y Repetir

Factor de repeticin

Para los comandos de borrar, reemplazar, copiar, cortar y pegar texto, podemos especificar la cantidad de veces que deseemos hacer dichos comandos. Esto simplemente se logra anteponiendo un nmero al comando que deseemos repetir. Por ejemplo: En modo comando, tipear 4x (primero el 4 y despus la x) equivale a pulsar 4 veces la letra x

Bsqueda de una cadena

vi buscar por el buffer de trabajo una cadena de texto especfica. Para encontrar la siguiente ocurrencia de una cadena (hacia adelante), oprima la tecla barra diagonal (/), digite el texto que se desea localizar (llamado cadena de bsqueda) y presione Enter. Al oprimir la tecla /, se despliega una barra diagonal en la lnea de estado y al introducir la cadena de texto, tambin esta aparecer desplegada en la lnea de estado. Cuando se oprime Enter, vi busca la cadena desde la posicin del cursor hacia abajo, hasta el final del archivo; si la encuentra, coloca el cursor sobre el primer caracter de la cadena. Si se utiliza un signo de interrogacin (?) en lugar de /, vi busca la existencia de una cadena desde la posicin del cursor hacia arriba, hasta el principio del archivo. Las teclas N y n repiten la ltima bsqueda sin tener que introducir de nuevo la cadena de bsqueda. La tecla n repite de manera exacta la bsqueda original, mientras que N la repite en direccin opuesta.

El men :

Para acceder al men de acciones globales, pulsamos el smbolo :. Aparecer un smbolo :, seguido del cursor, en la esquina inferior izquierda de la pantalla (la lnea de estado), y desde este lugar podremos realizar acciones como: Guardar los cambios en el archivo actual w Guardar los cambios en un nuevo archivo w nuevo_nombre.ext Salir de vi q Salir de vi sin guardar los cambios q! Salir de vi y guardar los cambios en el archivo actual x (equivale a wq!) Editar un nuevo archivo e otro_archivo.ext Insertar los contenidos de otro archivo r otro_archivo_mas.ext Ejecutar un comando en la shell ! comando Insertar los resultados de un comando r! comando Nota: Existe un shortcut (comando rpido) para abreviar la salida de vi guardando los cambios realizados, equivalente a tipear :x o :wq!. Si estamos en modo comando, simplemente tipeamos ZZ (sin las comillas y sin necesidad de acceder al men del smbolo :) Premiere IT S.R.L. Pgina 178

LOC: Linux Original Courseware

Apndice B
Propuesta de Laboratorio
Con los conocimientos adquiridos durante las clases LX3, armar el siguiente escenario: una PC alumno con Firewall (iptables) una PC alumno con WebServer (Apache) una PC alumno con Samba una PC alumno con DNS una PC alumno con DHCP Server una PC alumno con IP Dinmica una PC alumno desde windows consulta al servidor Samba

Se desea lograr lo siguiente: la PC alumno con IP Dinmica, obtiene su configuracion TCP/IP del Servidor DHCP la misma PC alumno consulta la pagina web del Web Server (www.corpruebas.com.ar) el WebServer obtiene los HTML a mostrar de un directorio compartido por el servidor Samba. entre el WebServer y el Samba debe haber un FireWall que adems actua como gateway armar los HTML desde la mquina Windows y ubicarlos en el Share compartido por Samba el FireWall no debe admitir paquetes ICMP y solo debe aceptar trafico desde el WebServer

Premiere IT S.R.L.

Pgina 179

LOC: Linux Original Courseware

Apndice C
Preguntas Exmen LPI
1. Qu dos comandos mostrarn el status de procesos en un sistema Linux? Seleccione uno. a. ls y df b. ps y top c. ps y df d. df y top e. du y df

2.

Qu representa el archivo del dispositivo /dev/hdb6? Seleccione uno. a. Una particin extendida en un SCSI disk drive b. Una particin lgica en un SCSI disk drive c. Una particin extendida en un IDE disk drive d. Una particin primaria en un IDE disk drive e. Una particin lgica en un IDE disk drive

3.

Qu comando mostrar las ltimas lneas del documento de texto file1? Seleccione uno. a. head -b file1 b. head --bottom file1 c. head -v file1 d. tail file1 e. tail n 1 file1

4.

Nombre el comando que muestra las pginas del manual on-line del usuario y referencias de comandos

5.

En respuesta al comando df, el sistema reporta un uso del 98% para el sistema de archivo montado en /home. Cul de los siguientes describe mejor el significado de sta informacin? a. Los archivos en /home estn consumiendo 98% del espacio fsico del disco b. El archivo read/write activity on /home estn consumiendo 98% de la capacidad del sistema I/O c. Los archivos en /home estn consumiendo el 98% del sistema de archivos /home d. Inodes on /home are nearly exhausted e. Inodes on /home 98% libre

Premiere IT S.R.L.

Pgina 180

LOC: Linux Original Courseware 6. De los siguientes directorios A cul es ms importante realizarle un back up en la base rutinaria?
a. b. c. d. e. /var /tmp /usr /root /etc

7.

Carolina tiene un archivo de texto llamado guest_list que contiene 12 lneas. Ella ejecuta el siguiente comando.
$ split -4 guest_list gl

Cul es el resultado? Seleccione uno a. Las primeras cuatro columnas en el texto son escritas a archivos nuevos glaa, glab, glac and
glad b. c. d. e.

Las primeras cuatro columnas en el texto son escritas a archivos nuevos aagl, abgl, acgl and
adgl

Las lneas guest_list estn igualmente divididas entre archivos nuevos glaa, glab, glac and
glad

Las lneas de guest_list estn igualmente divididas entre archivos nuevos glaa, glab and
glac

Las lneas de guest_list estn igualmente divididas entre archivos nuevos aagl, abgl, and
acgl

8.

Cul de los siguientes comandos sera el mejor para montar un CD-ROM conteniendo una distribucin Linux, sin depender de ningn archivo de configuracin?
a. b. c. d. e. mount mount mount mount mount /dev/cdrom/dev/hdc -f linux /dev/hdc/mnt/cdrom -t iso9660 /dev/cdrom /mnt/cdrom -t linux /dev/cdrom /mnt/cdrom -t iso9660 /mnt/cdrom /dev/cdrom

9.

El usuario jdoe, un miembro del grupo "finanzas", posee un un archivo de texto con el dueo del grupo finanzas y modo 0077. Qu declaraciones son verdaderas con respecto al acceso para ver los contenidos del archivo, asumiendo que el directorio que lo contiene tiene el modo 0777? Seleccione las que se apliquen a. jdoe puede ver los contenidos del archivo b. jdoe puede primero cambiar el modo de proteccin del archivo y entonces ver los contenidos del archivo c. root no puede ver los contenidos del archivo d. Todos en el grupo finanzas pueden ver los contenidos del archivo excepto jdoe e. Todos en el grupo finanzas pueden ver los contenidos del archivo incluso jdoe

Premiere IT S.R.L.

Pgina 181

LOC: Linux Original Courseware 10. Indique la sintaxis para dirigir la salida estndar de comando1 directamente en la entrada estndar de comando2.

11. Cul de las siguientes respuestas crea una variable de ambiente VAR1 presente en el ambiente del proceso hijo bash?
a. b. c. d. e. VAR1="fail" ; export VAR1 VAR1="fail" \ export VAR1 VAR1="fail" set VAR1= "fail" ; enable VAR1 export VAR1 \ VAR1="fail"

12. Nombre la ruta y nombre completos del archivo que contiene la mayora de la informacin en el sistema de grupos de usuarios.

13. Cul de los siguientes directorios deben ser parte de la raz del sistema de archivos? Seleccione todas las que apliquen
a. b. c. d. e. /etc /home /lib /usr /root

14. Nombre el servicio que ejecuta comandos independientemente en una base peridica para usuarios mltiples

15. Alex est trabajando actualmnte en un directorio que contiene solo un archivo: Afile1. Qu se muestra luego que los siguientes comandos han entrado en bash? # MYVAR=ls ; export MYVAR # echo $MYVAR "$MYVAR" '$MYVAR' `$MYVAR` a. Afile1 Afile1 Afile1 Afile1 b. ls Afile1 Afile1 Afile1 c. ls ls Afile1 Afile1 d. ls ls $MYVAR Afile1 e. ls ls ls $MYVAR

Premiere IT S.R.L.

Pgina 182

LOC: Linux Original Courseware 16. Qu hace el caracter & cuando se lo posiciona al final de un comando? Seleccione uno a. Permite que otro comando sea incorporado en la misma lnea b. Hace que el proceso sea parado c. Reinicia un proceso que ha sido parado d. Hace que el proceso sea puesto en el primero plano e. Hace que el proceso sea puesto en el fondo

17. Qu es el PID (Process ID) de init? Seleccione uno a. 0 b. 1 c. 2 d. indefinido e. desconocido

18. Cul de los siguientes comandos resultan del siguiente comando? # chmod g+s /home/software a. El SUID bit ser seteado para /home/software b. El SGID bit ser seteado para /home/software, previniendo el acceso a aquellos que no son

c.
d.

e.

miembro del grupo del software El SGID bit ser seteado para /home/software, en orden de mantener la asociacin del grupo del directorio constante para todos los archivos creados El sticky bit ser seteado para /home/software El sticky bit ser aplicado a los archivos en home/software

19. Cul de los siguientes comandos es equivalente al siguiente comando para el usuario jdoe de quien su directorio principal es /home/jdoe? # chmod 754 ~/file1 a. # chmod u=rwx,g=rx,o=r /home/jdoe/file1 b. # chmod ugo=rwx ~/file1 c. # chmod u=7, g=5, o=4 ~/file1 d. # chmod 754 \home\jdoe\file1 e. # chmod 754 /usr/jdoe/file1

20. Qu comando y parmetro requerido crea un link simblico en un sistema de archivo Linux ext2?

Premiere IT S.R.L.

Pgina 183

LOC: Linux Original Courseware 21. Un proceso con PID 4077 est causando problemas en su sistema. Como un superuser, usted ingresa el siguiente comando:
# kill 4077

Sin embargo el resultado nada cambia. Qu puede hacer usted para terminar el proceso? Seleccione uno.
a. b. c. d. e. # # # # # kill kill kill kill kill -9 4077 -15 4077 +9 4077 4078 --die 4077

22. Cul de las siguientes secuencias es utilizada para poner a un programa en modo de texto no interactivo que es adjuntado a la terminal en el fondo para permitirle que contine procesando?
a. b. c. d. e. Ctrl-C Ctrl-B Ctrl-B y entonces ingresa el comando bg Ctrl-Z Ctrl-Z y entonces ingresa el comando bg

23. Qu comando bsico se usa para crear las particiones del disco duro?

24. Cul de los siguientes comandos extrae verbalmete los archivos de un archivo tar en un dispositivo de cinta magntica?
a. b. c. d. e. tar tar tar tar tar cvf /dev/st0 cvf /dev/ttys0 xvf /dev/st0 xvf /dev/tys0 rvf/dev/st0

25. Cul de los siguientes es una declaracin exacta en ralacin con sta expresin regular? [^1-8A-Za-z]

a. b. c. d. e.

Matchea todas las letras y nmeros Matchea todas las letras y los nmeros excepto el 9 Matchea todas las letras y nmeros excepto 9 y 0, pero solamente en el comienzo de una lnea Matchea los nmeros 9, 0 y los caracteres que no sean letras y que no sean nmeros Matchea todos los caracteres con excepcin de letras o de nmeros

Premiere IT S.R.L.

Pgina 184

LOC: Linux Original Courseware 26. Mnica consulta el achivo /etc/passwd esperando encontrar passwords encriptadas para todos los usuarios de su sistema. Ella ve lo siguiente:
jdoe:x:500:500::/home/jdoe/bin/bash bsmith:x:501:501::/home/bsmith:/bin/cts

Cul de los siguientes es verdadero? Seleccione uno a. Las cuentas jdoe y bsmith no tienen contrasea b. La cuenta jdoe y bsmith estn deshabilitadas c. Las contraseas estn en /etc/passwdd. Las contraseas estn en /etc/shadow e. Las contraseas estn en /etc/shadow-

27. Nombre la forma ms breve del comando para inicial un cambio a runlevel 5.

28. Qu hace el "sticky bit"? Seleccione uno a. Previene que los archivos sean eliminados por cualquier usuario b. Marca los archivos para ser eliminados c. Evita que los archivos sean eliminados por no-dueos excepto root d. Evita que los archivos sean eliminados por no-dueos incluyendo root e. Marca los archivos para archivar

29. Qu variable contiene una lista de directorios buscados por la shell para encontrar programas ejecutables?

5 como respuesta. 30. Alex ejecuta el comando runlvel y obtine 3 Qu le dice sto a Alex? a. El sistema est en runlevel 3 y el default es en 5 b. El sistema est en runlevel 3 y despus ir a runlevel 5 c. El sistema estaba en runlevel 3 y ahora est en runlevel 5 d. El sistema no tiene default runlevel e. El default runlevel est configurado incorrectamente

Premiere IT S.R.L.

Pgina 185

LOC: Linux Original Courseware 31. Cuntos dispositivos IDE pueden ser instalados y usados simultneamente en un sistema Intel-based tpico? Seleccione uno a. 1 b. 2 c. 3 d. 4 e. 5

32. Considerando las siguiente lnea de salida de consola, extractado de otras lneas de salida.
/dev/hda8 a. b. c. d. e. du du df df df s k h k m 1.9G 559M 1.2G 30% /home

Cul de los comandos la produce?

33. Cmo puede configurar su sistema al momento de apagarlo para suprimir fsck en el boot siguiente? Seleccione uno
a. b. c. d. e. init 6 init --suppress 6 shutdown h shutdown f shutdown F

34. Cul de los siguientes es verdadero acerca de cargador boot LILO? a. Puede iniciar el Windows NT Loader b. Es iniciado usando el comando lilo c. Es el nico boot loader disponible para Linux d. Puede empezar mltiples Linux kernels, pero no sistemas operativos forneos e. Reside entero en el Boot Sector

35. Cul de las siguientes declaraciones describe correctamente los smbolos > y >> en el contexto de el bash shell? a. > aade una salida estndar a un archivo existente , y >> escribe una salida estndar a un archivo nuevo b. > escribe una salida estndar a un nuevo archivo, y >> aade una salida estndar a un archivo existente c. > escribe un error de estndar a un archivo nuevo, y >> aade un error estndar a un archivo existente d. > dirige una salida estndar a un archivo nuevo, y >> dirige una salida estndar a un archivo existente e. > dirige una salida estndar a un archivo existente y >> dirige un error de estndar a un archivo nuevo Premiere IT S.R.L. Pgina 186

LOC: Linux Original Courseware

36. Cuntos hosts pueden existir en una subred con mscara de 255.255.255.128? Seleccione uno a. 512 b. 256 c. 128 d. 127 e. 126

37. Para una red de trabajo de Internet con una sola interface de red, Qu rutas deben ser agregadas a la interface eth0 despus que es iniciada? Seleccine uno a. Ninguna b. Interface c. Interface y Default Gateway d. Interface, Local Network, y Default Gateway

38. En un servidor Linux, qu servicio estar "escuchando" en el puerto 25? Seleccione uno a. FTP b. SendMail c. Apache d. Samba

39. Cul de estos protocolos es usado como un servicio de entrega de datagramas por los tres restantes? a. TCP b. UDP c. IP d. ICMP

40. Qu comando mostrar informacin sobre la interface Ethernet eth0? Seleccione uno.
a. b. c. d. e. cat /proc/eth/0 ifconfig eth0 ipconfig eth0 ipconfig /dev/eth0 cat/ etc/eth0.conf

Premiere IT S.R.L.

Pgina 187

LOC: Linux Original Courseware 41. Cules son las dos interrupciones usualmente asociadas a interface serial onboard de una PC? a. 3 b. 4 c. 5 d. 10 e. 12

42. Cules de los siguientes comandos causar que mdulo cargable sea incluido en el kernel que est corriendo?
a. b. c. d. e. modinsert modprobe insmod prbmod rmmod

43. Cmo pude usted preguntar la base de datos RPM para una lista de todos los paquetes RPM instalados? Seleccione uno.
a. b. c. d. rpm rpm rpm rpm q qa a al

44. Cul de las siguientes e s una entrada vlida en /etc/fstab para un NFS remoto montado desde un servidor fs1? Selecciones uno
a. b. c. d. e. fs1:/proc /mnt/fs1 /mnt/fs1 fs1:/proc fs1:/home /mnt/fs1 /mnt/fs1 fs1: home /home:fs1 /mnt/fs1 nfs nfs nfs nfs nfs defaults defaults defaults defaults defaults 9 0 0 0 0 9 0 0 0 0

45. Qu protocolo de red es usado por Telnet y FTP? Seleccione uno a. ICMP b. UDP c. TCP d. DHCP e. PPP

Premiere IT S.R.L.

Pgina 188

LOC: Linux Original Courseware 46. Desde el punto de vista del usuario, Qu respuesta describe mejor la apariencia de un directorio NFS montado? Seleccione uno a. Un nuevo dispositivo en /dev b. Un nuevo volumen local tuvo acceso con una letra del volumen, por ejemplo D: c. Un nuevo volumen local tuvo acceso con el nombre del servidor NFS d. Parte del sistema de archivos local, tuvo acceso usando pathnames ordinarios e. Parte del sistema de archivos de los servidores NFS, han tenido acceso usando el nombre del servidor NFS

47. Qu sucede cuando rpm es lanzado de la siguiente manera? rpm -Uvh file

a. b. c. d. e.

El archivo RPM ser verificado Un paquete instalado se puede mejorar con la versin en el archivo, con la salida detallada Un paquete instalado se puede mejorar con la versin en el archivo, con la salida detallada y marcas ndice indicando el progreso Un error ocurrir porque un modo mayor no est especificado Un error ocurrir porque no se especific ningunas opciones del archivo

48. Cmo se hacen los cambios a la BIOS? Seleccione uno. a. Usando linuxconf. b. Editando manualmente archivos de texto c. Usando el comando LILO d. Durante el inicio de la PC, usando mens especficos del sistema e. Durante el inicio de la PC, usando comandos de LILO

49. Qu demonio resuelve nombres de dominio a direcciones IP para peticiones de los hosts?

50. Considerando el siguiente extracto del archivo /etc/resolv.conf de una estacin de trabajo Linux:
nameserver nameserver nameserver 127.0.0.1 192.168.105 192.168.250.2

Qu se puede decir sobre sta configuracin? Seleccione uno a. Dos servidores DNS en la red pblica se estn utilizando para la resolucin de nombres. b. Un servidor DNS en la red local se est utilizando para la resolucin de nombres. c. La configuracin contiene los errores que evitarn que funcione la resolucion d. Un servidor de solo cache esta en ejecucin e. La biblioteca del resolver consultar primero el nameserver 192.168.250.2

Premiere IT S.R.L.

Pgina 189

LOC: Linux Original Courseware 51. Nombre el archivo que contiene mappings simples entre la direccin IP y los nombres de sistemas.

52. Cuando se usa xdm, Cul de los siguientes archivos puede ser usado para empezar un administrador de ventanas?
a. b. c. d. e. Xservers Xaccess Xdm-config Xsession Xsetup_0

53. Cul de los siguientes representa una secuencia un comando vlido para compilar e instalar un uevo kernel? Seleccione uno
a. b. c. d. e. make_modules install; make bzImage; make clean; make dep make dep; make clean; make bzImage; make config; make modules; make modules_install make config; make dep; make clean; make bzImage; make modules; make modules_install make config; make bzImage; make dep; make clean; make modules; make modules_install make dep; make clean; make bzimage; make modules; make modules_install; make config

54. Qu programa mostrar una lista de cada salto a travs de la red a un destino especfico? Seleccione uno
a. b. c. d. e. tracert rttrace traceroute routetrace init

55. Cul de los siguientes no es el nombre de un archivo de configuracin de Apache? Seleccione uno
a. b. c. d. httpd.conf html.conf srm.conf access.conf

Premiere IT S.R.L.

Pgina 190

LOC: Linux Original Courseware

Respuestas Exmen LPI


1. 2. 3. 4. 5. 6.
B. Los comandos ps y top, rinden estado de procesos. Ninguno de los otros comandos listados estn relacionados. E. Las acciones del disco IDE son referidas a como /dev/hdx, donde x es a, b, c d. Las particiones estn numeradas del 1 al 4 para las particiones primarias y extendidas, y del 5 al 16 para particiones lgicas. D. El comando tail es usado para chequear las ltimas lneas del archivo de texto. Por defecto, muestra diez lneas.

El comando man muestra pginas del manual on-line de usuario.


C. El comando df reporta informacin del disco, incluyendo porcentaje de los sistemas de archivos usados. El comando df lista la informacin para las particiones. E. /var y /tmp son principalmente transitorios, /usr es tpicamente esttico, /root es simplemente un directorio home para root, pero /etc contiene informacin de sistema de configuracin que frecuentemente cambia. D. "split -n file outfile" separa un archivo en archivos de salidas mltiples, cada uno con n lneas y los nombran outfileaa, outfileab, y asi. Como el archivo original tiene 12 lneas y Carolyn las dividi en sets de 4 lneas, el resultado es 3 archivos llamados glaa, glab y glac, cada uno conteniendo 4 lneas. C. Los CD-ROM usan los sistemas de archivos iso9660, el cual es el defecto del montaje, pero tambin indica el uso de -t. Sin la asistencia de una entrada en /etc/fstab, los dos dispositivos de montaje (/dev/cdrom) y el punto de montaje (/mnt/cdrom) deben ser provedos. B y D. Sin el privilegio del usuario al archivo, jdoe no puede ver los contenidos. Sin embargo, como dueo del archivo, el modo puede ser cambiado para ganar acceso. A todos en finance se le da permiso, pero a jdoe como dueo se le es negado. comando1 | comando2 A. La variable deben ser establecidas y exportadas. El punto y coma separa los dos comandos. /etc/group A y C. /etc, /lib, /sbin, y /dev deben estar en el sistema de archivos / (raiz). cron D. El primer argumento de echo no es citado y as retorna su contenido: ls. El segundo es citado con comillas dobles, el cual no preserva el $, entonces ste tambin retorna: ls. El tercero es citado con comillas simples, las cuales no preservan el $, asi que retorna: $MYVAR. El ltimo argumento es con comillas de ejecucin, lo cual significa que retorna el resultado del comando almacenado en $MYVAR. El comando es ls, el cual muestra el nico archivo en el directorio: Afile1. E. Usando el carcter & pone al programa en ejecucin en segundo plano (BackGround). B. init, siempre tiene PID 1, ya que es el primer proceso que inicia despus que el kernel es cargado en memoria. C. La g indica que estamos operando sobre los permisos de en un grupo, y la +s indica quedeberamos agregar el bit "set id", lo cual significa que la caracterstica SGID ser aplicada. A. El modo 700 es el mismo que u=rwx, el modo 050 es el mismo que g=rx, y el modo 004 es el mismo que o=r. La sintxis ~/ implica el directorio home del usuario.

7.

8.

9.

10. 11. 12. 13. 14. 15.

16. 17. 18. 19.

Premiere IT S.R.L.

Pgina 191

LOC: Linux Original Courseware 20. 21. 22. 23. 24. 25.
ls s A. E. El Ctrl-Z para el trabajo y le devuelve el control a la terminal. Y bg reinicia el trabajo y lo ubica el background. fdisk C. tar debe ser usada con la opcin de extracin: x y un dispositivo de cinta, como una cinta SCSI con nombre de dispositivo /dev/st0.

Los corchetes se usan para agrupar caracteres que consisten en nmeros del 1 al 8, y caracteres A-Z y az. El ^ justo dentro de la corcheta que abre niega toda la secuencia, tales que la secuencia matchea los nmeros 0, 9, y los smbolos
D. El sistema de password shadow ha sido implmentado, ubicando todas las contraseas en /etc/shadow como es denotado por la x siguiente al nombre de usuario. init 1 C. El sticky bit es un modo que previene la eliminacin por los no-dueos, pero root puede eliminarlo de todas formas. PATH C. El comando runlevel produce el runlevel anterior y el presente D. Las PCs tienen generalmente dos interfaces IDE, cada uno capaz de manejar dos dispositivos C. el modificador h produce una salida human readable D. El modificador -f configura el sistema de archivo para saltearse el chequeo de fsck. La opcin -F, fuerza a realizar el chequeo A. LILO puede iniciar el Boot-Loader de Windows NT y muchos otros sistemas operativos. B. El caracter > crea y escribe a un archivo nuevo, mientras que >> agrega a un archive existente, a menos que ese archivo no existe, en cuyo caso lo crea previamente. E. Con el bit ms alto del ltimo byte puesto en la mscara de la subnet (.128), nos quedan 7 bits. 2**7 es 128, menos la direccin de la red y la direccin de propagacin (BroadCast), dejando 126 direcciones para los hosts. D. Las rutas a la interface y a la red requieren intercambir informacin en el LAN local. Para actuar como como una red de trabajo de Internet (p.ej., usando Netscape) tambin es necesario un Default Gateway. B. Como se define en /etc/services, el puerto 25 es el puerto SMTP, monitoreado frecuentemente por sendmail o algn otro servidor de e-mail. C. IP es el protocolo de datagrama subyacente B. El comando ifconfig es usado para configurar y mostrar informacin de la interface. El comando ipconfig es una utilidad de Windows. A y B.

26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36.

37.

38. 39. 40. 41.

Premiere IT S.R.L.

Pgina 192

LOC: Linux Original Courseware 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55.
B y C. B. El modo query (pregunta) es requerido, lo cual implica -q. La opcin -a en modo query produce todos los paquetes. C. La respuesta A intenta montar el sistema de archivo /proc. Las respuestas B, D, y E tienen la sintaxis incorrecta. C. Telnet y FTP son ambas conexiones orientadas y usan TCP para conexiones confiables. D. Los directorios NFS montados se funden al sistema de archivo local, si requerir una sintaxis especial para acceder. C. Suponiendo que ese archivo es un archivo RPM, -U indica que debera ocurrir upgrade. -h activa marcas hash.

Linux no tiene control sobre los seteos de la BIOS


named. El demonio DNS es named. Est includo en un paquete llamado BIND. D. La presencia de la direccin de localhost 127.0.0.1 indica que named est corriendo. Como el sistema es una red de trabajo, se puede asumir que no est serviendo DNS a una red ms amplia. /etc/hosts D. Xsession es archivo de inicio de aplicaciones establecido por default para todo el sistema. C. La respuesta A es incorrecta porque instala mdulos antes de compilarlos. Las respuestas B y E son equivocadas porque construyen el kernel despus de configurar. La respuesta D est al revs C. tracert es una utilidad del Windows con la misma funcin que traceroute. B. Apache usa httpd.conf, srm.conf y access.conf. Algunas implementaciones pueden poner todos estos archivos en un solo httpd.conf

Premiere IT S.R.L.

Pgina 193

LOC: Linux Original Courseware

Esta publicacin no puede ser reproducida, ni en todo ni en parte, ni registrada en o transmitida por un sistema de recuperacin de informacin, en ninguna forma ni por ningn medio, sea mecnico, fotoqumico, electrnico, magntico, electroptico o cualquier otro, sin el permiso previo y por escrito de Premiere IT S.R.L. Registro de Obras Publicadas (Derecho de Autor): Expediente Nmero: 278087

Premiere IT S.R.L.

Pgina 194

También podría gustarte