Sie sind auf Seite 1von 126

I CURSO DE ADMINISTRACIN DE SISTEMAS OPERATIVOS GNU/LINUX

Gua del alumno

Febrero de 2005

Autores: Jos Enrique Garca Ramos Alberto Molina Coballes Francisco Prez Bernal

Fuentes: Gua de referencia Debian, O. Aoki (traducido por W.O. Echarri). (http://www.debian.org/doc/manuals/reference/reference.es.html) Linux: a network solution for your ofce, V.T. Toth (Sams, Indianapolis, 1999). Manual Debian de seguridad, A. Reelsen, J. Fernndez Sanguino Pea (http://www.nl.debian.org/doc/manuals/securing-debian-howto/index.es.html) Linux mxima seguridad, Annimo (Prentice Hall, Madrid, 2000). http://www.ecn.wfu.edu/ cottrell/wp.html publicado por Allin Cottrell y traducido por Jos Mara Martn Olalla. debian-reference, que puede encontrarse en http://www.debian.org/doc/manuals/debianreference. LINUX: Rute Users Tutorial and Exposition, Paul Sheer (2001). Administracin avanzada de GNU/Linux, Josep Jorba Esteve y Remo Suppi Boldrito. XP04/90785/00019, Formacin de posgrado Universidad Oberta de Catalunya (2004). HOWTOs en ingls.

Versin 0.1. Copyright c 2005 J.E. Garca Ramos, A. Molina Coballes y F. Prez Bernal. Este manual es software libre, puede ser redistribuido y/o modicado bajo los trminos de la licencia GNU General Public License publicada por la Free Software Foundation. Este texto se distribuye con la esperanza de que sea til, pero no existe ninguna garanta sobre l.

ndice general
0. Motivacin y objetivos 0.1. Antecedentes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 0.2. Motivacin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 0.3. Objetivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 5 6 7

I Administracin local de GNU/Linux


1. Administracin local del sistema 1.1. Introduccin . . . . . . . . . . . . . . . . . . . . 1.2. Arranque del sistema . . . . . . . . . . . . . . . 1.2.1. Antes de Linux: El cargador . . . . . . . . . . . . . . . . . . . . 1.2.2. El proceso 1.3. Control del estado del sistema . . . . . . . . . . 1.3.1. Directorio /proc . . . . . . . . . . . . . . 1.3.2. Procesos . . . . . . . . . . . . . . . . . 1.3.3. Memoria . . . . . . . . . . . . . . . . . 1.3.4. Discos y sistemas de cheros (lesystems) 1.4. Gestin de sistemas de cheros . . . . . . . . . . 1.5. Ficheros de registro . . . . . . . . . . . . . . . . 1.5.1. Arranque del sistema . . . . . . . . . . . 1.5.2. . . . . . . . . . . . . . . . . . 1.6. Bibliografa . . . . . . . . . . . . . . . . . . . .
    

9
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 11 11 11 17 19 19 20 22 23 25 27 27 27 30 31 31 31 32 34 36 36 37 39 39 40 41 42 43

2. Sistemas de archivos 2.1. Introduccin . . . . . . . . . . . . . . . . . . . . . . . . 2.2. La estructura de archivos del s.o. GNU/Linux . . . . . . 2.2.1. Principales directorios en un sistema GNU/Linux 2.2.2. Puntos de montaje . . . . . . . . . . . . . . . . 2.3. Permisos: su signicado y cmo variarlos . . . . . . . . 2.3.1. Usuarios y grupos . . . . . . . . . . . . . . . . 2.3.2. Interpretacin de los permisos . . . . . . . . . . 2.3.3. Modicacin de permisos . . . . . . . . . . . . 2.3.4. El sticky bit . . . . . . . . . . . . . . . . . . . . 2.3.5. Permisos y . . . . . . . . . . . 2.3.6. Permisos numricos . . . . . . . . . . . . . . . 2.4. y . . . . . . . . . . . . . . . . . . . . . . . . . 2.5. Bibliografa . . . . . . . . . . . . . . . . . . . . . . . .
          !! 

. . . . . . . . . . . . .

. . . . . . . . . . . . .

. . . . . . . . . . . . .

. . . . . . . . . . . . .

. . . . . . . . . . . . .

. . . . . . . . . . . . .

. . . . . . . . . . . . .

. . . . . . . . . . . . .

. . . . . . . . . . . . .

. . . . . . . . . . . . .

. . . . . . . . . . . . .

. . . . . . . . . . . . .

. . . . . . . . . . . . .

2 3. Compilando el kernel 3.1. Introduccin . . . . . . . . . . 3.2. Compilando el kernel . . . . . 3.2.1. Antes de compilar . . 3.2.2. Compilacin del kernel 3.3. Bibliografa . . . . . . . . . .

Curso de Administracin GNU/Linux


45 45 45 45 47 49 51 51 51 54 56 56 56 60 61 63 63 63 64 64 64 65 65 65 66 66 67 69 69 69 71 72 73 74 74

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

4. Uso de scripts para administracin del sistema 4.1. Introduccin . . . . . . . . . . . . . . . . . 4.2. Shells . . . . . . . . . . . . . . . . . . . . 4.3. Comandos ms usados . . . . . . . . . . . 4.4. Scripts en Perl . . . . . . . . . . . . . . . . 4.4.1. Introduccin . . . . . . . . . . . . 4.4.2. Nociones Bsicas . . . . . . . . . . 4.4.3. Algunos oneliners interesantes . . . 4.5. Bibliografa . . . . . . . . . . . . . . . . . 5. Ejecucin asncrona de tareas 5.1. cron . . . . . . . . . . . . . . . . . . . . . 5.1.1. El chero crontab . . . . . . . . . . 5.1.2. Crontab para un usuario cualquiera 5.2. anacron . . . . . . . . . . . . . . . . . . . 5.3. at . . . . . . . . . . . . . . . . . . . . . . 6. TCP/IP 6.1. Origen de TCP/IP . . . 6.2. Nivel de acceso a red . 6.3. Nivel de red . . . . . . 6.3.1. Direcciones IP 6.4. Nivel de transporte . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

7. DHCP 7.1. Conguracin del cliente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7.2. Conguracin del servidor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8. Cortafuegos: iptables 8.1. Poltica por defecto . . . . . . . . . . . 8.2. Ejemplo . . . . . . . . . . . . . . . . . 8.2.1. Enmascaramiento IP . . . . . . 8.2.2. Creacin de un script de iptables

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

II Construccin de un cluster GNU/Linux


9. Descripcin de un cluster modelo 9.1. Las mquinas del cluster . . . . . . . . . . . . . . . . . . . . . 9.2. Caractersticas de los nodos del cluster . . . . . . . . . . . . . . 9.3. Esquema de servicios del cluster . . . . . . . . . . . . . . . . . 9.4. Descripcin detallada de todos los servicios de un cluster modelo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

77
79 79 80 81 82

Curso de Administracin GNU/Linux


10. NIS y NFS 10.1. Introduccin . . . . . . . . . . . . . . . . 10.2. NIS . . . . . . . . . . . . . . . . . . . . 10.2.1. Paquetes Debian . . . . . . . . . 10.2.2. Demonios y scripts de inicio . . . 10.2.3. Ficheros de conguracin . . . . 10.2.4. Puesta en marcha de un servidor . 10.2.5. Puesta en marcha de un cliente . . 10.2.6. Uso de NIS y herramientas bsicas 10.2.7. El chero /etc/netgroup . . . . . . 10.3. NFS . . . . . . . . . . . . . . . . . . . . 10.3.1. Paquetes Debian . . . . . . . . . 10.3.2. Demonios y scripts de inicio . . . 10.3.3. Ficheros de conguracin . . . . 10.3.4. Puesta en marcha de un servidor . 10.3.5. Puesta en marcha de un cliente . . 10.4. Autofs como complemento de NFS . . . . 10.4.1. Paquetes Debian . . . . . . . . . 10.4.2. Demonios y scripts de inicio . . . 10.4.3. Ficheros de conguracin . . . . 10.4.4. Puesta en marcha de un servidor . 10.4.5. Puesta en marcha de un cliente . . 10.5. Bibliografa . . . . . . . . . . . . . . . .

3 85 85 85 85 86 86 86 88 90 90 90 90 91 91 92 93 93 93 93 93 94 94 96 97 97 97 98 106 109 109 109 109 109 111 111 111 113 113 113 113 115 117 118 118 120

. . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . .

11. Proceso de instalacin de Debian Sarge en los nodos 11.1. Instalacin por copia directa . . . . . . . . . . . 11.1.1. Requisitos . . . . . . . . . . . . . . . . . 11.1.2. Uso . . . . . . . . . . . . . . . . . . . . 11.2. Instalacin a travs de los discos de Debian . . . 12. Conguracin global del cluster 12.1. Conguracin asncrona . . 12.1.1. Qu es? . . . . . . 12.1.2. Requisitos . . . . . . 12.1.3. Ejemplos . . . . . . 12.2. El comando multiscr . . . . 12.2.1. Requisitos . . . . . . 12.2.2. Uso . . . . . . . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

13. Copias de seguridad 13.1. Introduccin . . . . . . . . . . . . . . . . . . . . 13.2. Copias de seguridad de las cuentas de los usuarios 13.2.1. Con tar . . . . . . . . . . . . . . . . . . 13.2.2. Con rdist . . . . . . . . . . . . . . . . . 13.2.3. Con pdumpfs . . . . . . . . . . . . . . . 13.3. Copias de seguridad de cheros de conguracin 13.3.1. Con tar . . . . . . . . . . . . . . . . . . 13.4. Bibliografa . . . . . . . . . . . . . . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

4 14. Ajustes nales en el cluster 14.1. Seguridad en el cluster 14.2. Sistema X . . . . . . . 14.3. Seguridad fsica . . . . 14.4. The Windows corner . 14.5. Varios . . . . . . . . .

Curso de Administracin GNU/Linux


123 123 123 123 123 124

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

Captulo 0

Motivacin y objetivos
0.1. Antecedentes
El primer contacto de los autores con el sistema operativo GNU/Linux data de octubre de 1995, en ese momento GNU/Linux ya contaba con 4 aos de vida y el proyecto GNU tena ms de 10 aos de existencia. En esa poca la instalacin y conguracin del sistema no era tan cmoda como lo es actualmente pero a pesar de las dicultades rpidamente comprendimos que era un sistema operativo que se adaptaba perfectamente a nuestras necesidades. Las principales ventajas que observamos en el sistema fueron las siguientes: El coste del sistema era 0, si excluimos el precio del CD de instalacin, que en muchas ocasiones poda obtenerse al comprar alguna revista informtica. Se trataba de un sistema operativo tipo UNIX. Era un sistema multiusuario y multitarea. No era tan slo un sistema operativo sino que incorporaba software muy variado: editores de texto, latex, representaciones grcas, paquetes matemticos, compiladores de C y Fortran. Permita compartir fcilmente recursos: lectores de CDs, discos duros o impresoras. Posea navegadores de internet. Tena clientes y servidores de correo electrnico. Permita conectarse fcilmente a otros ordenadores, pudiendo usarse incluso aplicaciones grcas de dichos ordenadores remotos, lo que permita trabajar con varios ordenadores a la vez. Podamos conectarnos a nuestros ordenadores desde ordenadores remotos, pudiendo acceder a todos nuestros documentos y programas. Otras personas podan usar nuestro ordenador sin que pudieran cambiar nuestra conguracin personal o acceder a nuestros documentos o programas. Incluso para personas inexpertas era muy difcil daar el sistema operativo. No existan virus. 5

Curso de Administracin GNU/Linux

Todas las anteriores caractersticas eran tremendamente atractivas para nosotros, al haber usado otros sistemas operativos multiusuarios como el UNIX de Hp o el VMS (de Digital), y estar inmersos en el mundo universitario al pertenecer al departamento de Fsica Atmica, Molecular y Nuclear de la Universidad (FAMN) de Sevilla donde se dispona de varios PCs y de una red de datos que permita una buena conectividad entre ellos. En esos das nuestro trabajo en GNU/Linux era exclusivamente a nivel de usuario e incluso cambiar el fondo de pantalla supona un gran esfuerzo. No obstante siempre estabamos abiertos a ayudar a cualquiera que tuviera problemas, con lo que poco a poco empezamos a comprender mejor los entresijos de GNU/Linux y a realizar tareas que no son las habituales de un simple usuario, transformndonos por arte de magia en superusuarios. Con el anterior comentario debe quedar claro para los lectores que nosotros no somos programadores, aunque sabemos programar, o profesionales de la informtica, aunque gran parte de nuestro trabajo este relacionado con ordenadores, simplemente conocemos ligeramente GNU/Linux y tenemos mucha experiencia congurando sistemas y resolviendo problemas. Durante los primeros aos de nuestro trabajo con GNU/Linux, en el Departamento de FAMN existan unos 10 ordenadores con la distribucin Slackware (distribucin que an existe) instalada, pero cada uno de estos ordenadores era independiente del resto, de forma que podamos entrar de un ordenador en otro (siempre que tuvieramos una cuenta de usuario) y almacenar informacin o correr programas, pero obligaba a copiar los cheros de uno a otro ordenador y a crear constantemente cuentas de usuario. De forma anloga la conguracin de los ordenadores deba hacerse uno a uno, invirtiendo bastante tiempo en realizar cambios en todos los ordenadores del Departamento o en instalar nuevos programas. Otro inconveniente era que si un usuario deseaba usar el ordenador de un compaero, se deba invertir cierto tiempo copiando la informacin de su cuenta. Todo esto nos llev en abril de 1999 a tomar la decisin de construir un verdadero cluster de ordenadores en los que se compartiera todo cuanto fuera posible: cuentas de usuario, cheros de conguracin, copias de seguridad, servidor de correo, etc. Adems se opt por emplear la distribucin Debian de GNU/Linux. Los motivos para ello fueron: La estructura del proyecto Debian garantizaba que en el futuro la distribucin seguira siendo completamente gratuita. Se podan realizar actualizaciones sin necesidad de rebotar los ordenadores. Posea un cuidado sistema de dependencias entre los diferentes paquetes, de forma que nunca faltaban libreras al instalar un nuevo programa. Existan mltiples sitios Debian ociales desde los que podan obtenerse o actualizarse nuevos programas. Existan actualizaciones constantes de paquetes relativas a fallos de seguridad del sistema. Finalmente en agosto de 1999 tenamos un cluster con la mayor parte de las caractersticas que necesitabamos, y cuya estructura era muy similar a la de los actuales CLF (Cluster Linux FAMN) del Departamento de FAMN y CLGEM (Cluster Linux GEM) del Grupo de Estructura de la Materia (GEM) de la Universidad de Huelva.

0.2. Motivacin
Despus de todos estos aos trabajando con GNU/Linux, estamos rmemente convencidos de que ste ofrece muchas ventajas frente a Windows(TM), aunque ni mucho menos despreciamos dicho sistema operativo. Simplemente estamos ms cmodos en nuestro trabajo diario con

Curso de Administracin GNU/Linux

GNU/Linux. Creemos que deben usarse aquellos programas que faciliten al mximo nuestro trabajo, ya sean programas GNU/Linux o Windows(TM). Bajo este prisma consideramos que el trabajo de un grupo de personas que tienen la posibilidad de compartir recursos informticos e informacin en su lugar de trabajo, se optimiza empleando un cluster GNU/Linux donde se compartan el mximo de recursos. El inconveniente de este sistema es que debe haber una persona responsable de todo el sistema. Ya que dicha persona tiene habitualmente otras obligaciones, adems de las informticas, es preciso minimizar sus tareas informticas asociadas al mantenimiento del cluster. De nuevo consideramos que un cluster GNU/Linux donde se compartan el mximo de recursos reduce notablemente su trabajo. Aunque llevemos varios aos trabajando con un cluster GNU/Linux, nunca hemos impartido un curso al respecto ni hemos documentado la estructura de nuestro cluster. Consideramos que dicho curso y dicha documentacin pueden ser tiles para muchas personas y adems reducir en el futuro nuestras tareas como administradores, ya que muchos de nuestros compaeros podrn resolver sus problemas por s mismos.

0.3. Objetivos
En este curso hay dos objetivos: Conocer las tareas bsicas que debe realizar un administrador de sistemas GNU/Linux en general y de sistemas Debian en particular. Aprender a construir un cluster GNU/Linux donde se compartan el mximo de recursos posibles. En relacin al primer objetivo es imposible estudiar en detalle cada una de las diferentes tareas que debe realizar el superusuario ya que pueden abordarse de muy diversas formas. En este manual se explicar la forma en la que nosotros solemos abordar dichas tareas y se darn referencias para que el lector pueda optar por otra forma de trabajar que se adapte mejor a sus necesidades. Al cubrir el segundo objetivo mostraremos como se construye un cluster GNU/Linux muy particular: uno anlogo al CLF o al CLGEM. Aunque el diseo del cluster puede ser mucho ms eciente, pensamos que el lector tendr con este manual las ideas bsicas para construir un cluster, con unos requerimientos mnimos, que pueden ir siendo ampliados hasta adaptarse perfectamente a las necesidades del grupo de usuarios que trabajar con l. Debe quedar claro que en este manual no daremos una descripcin detallada de los diferentes demonios y servicios que usaremos, ms bien proporcionaremos una forma particular de usarlos, apoyndonos sobre todo en los cheros de conguracin que se emplean en el CLF o en el CLGEM.

Curso de Administracin GNU/Linux

Parte I
Administracin local de GNU/Linux

Captulo 1

Administracin local del sistema


1.1. Introduccin
El administrador de un sistema GNU/Linux debe cuidar del buen funcionamiento del sistema desde su arranque, controlando la correcta iniciacin de todos los dispositivos necesarios y que los diferentes grupos de usuarios puedan realizar con normalidad (y seguridad) sus tareas. En concreto esto implica saber como controlar qu servicios son necesarios arrancar al iniciar el sistema y cmo se lleva a cabo el arranque del sistema. Una vez con el sistema en marcha es necesario saber controlar los diferentes dispositivos, gestionar sistemas de cheros y memoria y, nalmente, monitorizar los procesos que se estn corriendo en sistema. Adems ha de tenerse una idea de como solventar los posibles problemas que se vayan planteando. Finalmente, es muy til saber dnde y cmo organiza la informacin de log el sistema, pues nos permite reconstruir lo ocurrido antes de un problema y nos orienta acerca de la naturaleza del mismo.

1.2. Arranque del sistema


En esta seccin examinaremos brevemente el proceso de arranque de un sistema estndar desde que lo encendemos hasta que podemos hacer login en el mismo. Esto nos permitir entender la forma en que se arrancan los diferentes servicios en los llamados niveles de ejecucin (o runlevels), cmo pasar de un nivel a otro y cmo congurar estos niveles.

1.2.1. Antes de Linux: El cargador


Al arrancar un ordenador lo primero que este hace es un autochequeo (power on self test) comprobando que todo est en orden y se puede proceder al arranque del que se hace responsable un programa llamado el bootstrap loader 1 . Este programa se encuentra en la ROM BIOS del ordenador y su propsito es buscar un sector de arranque. Se llama sector de arranque al primer sector de un disco (en realidad de un sistema de cheros, aunque tambin puede arrancarse un ordenador por red) y en este sector de arranque el ordenador encuentra un pequeo programa que hace posible cargar el sistema operativo.
1 A veces se traduce como programa calzador aunque la denicin en ingls de bootstrap es: bootstrap: (n) a strap that is looped and sewn to the top of a boot for pulling it on.

11

12 En la BIOS del ordenador (para ver cmo se accede a la misma hay que prestar atencin al mensaje inicial que proporciona el sistema durante el autochequeo) hay una lista de los lugares donde el ordenador busca un sector de arranque y el orden en el que se lleva a cabo esta bsqueda. Una vez encontrado un sector de arranque se ejecuta el programa que se encuentra en l que se encarga de cargar el sistema operativo, pudiendo ser posible escoger entre varias posibilidades. En un sistema Debian existen dos alternativas principales a la hora de escoger este programa, y .
  $&

El programa

El programa (acrnimo de nux ader) permite congurar el arranque de un sistema GNU/Linux. Se ejecuta en dos etapas, la segunda de ellas nos proporciona un prompt, que podemos congurar para que sea de naturaleza grca o alfanumrica, donde se nos permite escoger entre los diferentes sistemas operativos instalados en nuestro ordenador. Tambin podemos si fuera necesario pasar argumentos al kernel en el arranque del sistema. en las pginas y, por ejemplo, en el Existe una informacin exhaustiva acerca de LILO User Manual, contenida dentro del paquete 2 . La primera vez que instalamos nuestro sistema se instala y se ejecuta de forma que instala el cargador del sistema operativo en el sector de arranque del disco duro o MBR (Master Boot Record). Tambin puede instalarse en el sector de arranque de alguna de las particiones que hayamos realizado. Al instalarse almacena la informacin acerca de los diferentes sistemas operativos que se pueden ejecutar. Cada vez que hacemos algn cambio dentro de la conguracin como superusuario para que dicho cambio quede de arranque debemos de volver a ejecutar reejado en el correspondiente sector de arranque. La conguracin de se encuentra en el chero . y explicaremos las A continuacin incluimos un ejemplo de chero de conguracin de opciones ms importantes
  $"   $&   $& ( '   &   $&  $ w C P V FY r 3 ADQ c g q t"yAWetdt&W3 P c E rhq SFD`HHP c E Uq q I E C C B I G q r y Wt dt W G Y Q B V Ab"&HAD3AY yFWbtt&W`S Uq `FS3DC `HAHAg q d r Y g R I E C B I G Q V y Wt dt W Y Ab"&HQ r c S5 Q x x 8 G E C Q AUHSUHg q E E i g HShC c i @ b75 6 Y V Hg c C r DHDR G V @ b75 6 i V g I E C B I G i V 39SFDC UH3g @ b75 y6 x W G w V Y Q AHDAAHHP @ b75 v6 ButEFCDCB`SFD`HADDHE Uq I E C C B I G Y Y V s r @ p6 X75 E f ShC f V i g @ d6 e75 WHVHSUSAHFDHFDC c P T I R Q P I G E C @ b75 a6 W a V B HD`Y @ W6 X75 V P T I R Q P I G E C HSUSAHFDHFDC B @ 8 6 A975 " 4  0 1    ) 0  32$&$)   &

2 En

Debian puede encontrarse en

  "

t E Et Y V V I C Y C P I V DDD&D r S`DDY q AI f SFDQ c T s I c s `I

%  # $$

13
Ds f s HP q G f SHP r D3V Q P T G Q i i q

Este chero congura un sistema que Debian que arranca con dos posibles kernels, dados en la y adems indica que puede arrancar una particin con la distribucin Mandrake opcin o tambin en Windows XP (TM). Al indicar una imagen (kernel) las opciones ms importantes son:
1 1 1 e   ( ' $$f&S

Adems de estas opciones que afectan a cada imagen las opciones generales indican lo siguiente: 1. 2. Especica desde qu dispositivo se arrancar el sistema Opcin relacionada con la forma que tiene de acceder a una unidad de chero que an no est montada. Desde 1998 es la opcin estndar y permite superar la limitacin existente en sistemas ms antiguos que forzaba a que la informacin de arranque del sistema se encontrara en los primeros 1024 cilindros del disco. Indica qu dispositivo se montar como root ( ). Permite leer de forma ms eciente el sector de arranque. Esta opcin est especialmente indicada si se arranca desde un oppy o si se observa que el sistema tarda un tiempo inusualmente largo en cargar el kernel.
%1   % )   % f&&&) )   "

   ' $S

w C P V FY r `ADQ c WDWbtdt!W3 g q tP c E q Uq SFAC `HHP c E Uq r I E C B I G q r W Wt dt W G Y Q B V De&HFH3AY W Wt dt W r Y g R I E C B I G Q V Db!3S hq `FHFDC `DDHAg q y Wt dt W Y Ae&DQ r c S5 Q

3. 4.

5. 6. 7. 8. 9.

Fichero que se instala como sector de arranque. La opcin por defecto es

Nmero de dcimas de segundo que el sistema espera antes de arrancar la imagen por defecto. Localizacin del archivo map que contiene los kernels con los que es posible arrancar y su localizacin en el disco. Modo de texto VGA en el que se arranca el ordenador. La opcin muestra la informacin acerca de los kernels disponibles y espera da decisin del usuario durante un tiempo jado en la opcin
g  # $&' "$g

 # $ 

a AG s V q DV Y P Q AHE f q c E s Q c Y HV r C q SUC E i w C P V FY r 3ADQ c a V P T I R Q P I G E C DHH`SAH3HHFDC c Q 3V c P r hAH3FY V g G Y Q B V r Y g R I E C B I Q S Uq `3SFDC UH3V c P r S3DDHAg q V I G Q V Q 3V c P r S5 V dAh s 3SP Uq FAD3AY C r G Y Q B V 8 V P T I R Q P I Q T E HSUSAHFDG c F3C Q C r H3SP Uq 5

: Indica la etiqueta que identica a esa imagen en el prompt.

 # 

  % ( &$   &#

: Si la imagen se encuentra en una particin diferente a la particin root por defecto. : Fichero usado por el kernel al arrancar.

14 El program GRUB El nombre , acrnimo de and nied ootloader, corresponde al que hoy por hoy es probablemente el mejor cargador de sistemas (bootloader) y que, casualmente, entra dentro del software ofrecido por GNU3 . es independiente del sistema o sistemas operativos instalados en el ordenLa aplicacin dor y podemos considerarlo como un minsculo sistema operativo en s mismo. El propsito de este mini s.o. es reconocer sistemas de cheros y cheros que sean imgenes de arranque del sistema, y trabajar con ellos, para lo cual nos proporciona tanto entornos de men como de consola. En particular este ltimo entorno es particularmente til y potente, ya que por ejemplo cuenta con un historial de comandos y algunas caractersticas que hacen que aquellos que estn acostumbrados a trabajar con bash se sientan como en casa. En concreto demuestra todo su potencial cuando se instala en sistemas que cuentan con mltiples sistemas operativos y modos de arranque, propios de aquellos que gustan de probar simultneamente diferentes distribuciones GNU/Linux y a la vez conservan otros sistemas operativos en su ordenador. Incluso si sigue siendo el cargador que utilicemos por defecto es interesante contar con un oppy en el que hayamos instalado y que nos permita realizar est tareas de rescate del sistema en caso de problemas. A continuacin supondremos que instalado en el ordenador y describiremos como instalarlo en un oppy y en el MBR de nuestro disco. forma parte de la distribucin estndar y si no estuviera instalado en el sistema En Debian es muy simple aadirlo usando las herramientas estndar de Debian descritas ms adelante en la gua. En principio reconoce multitud de sistemas de cheros, pero por aquello de qu es lo ms comn vamos a instalarlo en un oppy con un sistema de cheros FAT. De paso eso nos va a permitir presentar algunas herramientas importantes. Lo primero insertar un en la disquetera, le damos formato FAT y creamos el sistema de cheros:
l j i $kh l j i $kh @ DDF3AAXU!W s SP s t s SSg a x x W i Q W W6 x 8t C g o x P o I R Q P HDFHAHFI s SP s ~h s SSg C g E o Q r S|AD{ Uq Ao q c S} C P t t t Q r w Q r S|DA{ Uq DFg c Sz C P t t t r E E V C t y x d d 8 w HDDhxDE q f 3V f DHFSw f V c FI f Q s Uur s f V c tDs"ADP Ds FY D`q V i Y V E C v t E 8 E x r P Q q Q B C x P o I R Q P I E V C o P o 5 nm T HD3SAHFpFg c SADFX3E q c q E l j   $& i $h g g   $!4 l j i k$h l j i k$h l j i $kh l j i k$h l j i $kh

Por cierto, esto destruye toda la informacin que hubiera en el oppy, esperemos que no sea demasiado tarde... Ahora hemos de copiar algunos cheros al diskette, as que lo montamos para poder acceder a l y copiamos los cheros que necesita GRUB para funcionar:
w i i C Y o I SD`DHFpE r `FFX3E C g 5 nm T BD c FIHEFDC B`IHwSiDi`CDYHoFISHFHE s I f 9 DDa q I D c FI B q AI c s `pi f FX3E C Q V i v B Y I 5 nm T B I E C B I w i i C Y o I i D c FSFAC `SSA`DSFp9 c q HS~FX3E P g 5 nm T w i i C Y o I x P o I R Q P SD`ASFHD3SAHFI s SP s UE r U~FX3E C g E C g 5 nm T
la pgina web

Aunque lo hayamos desmontado no sacaremos el oppy pues an nos queda el paso ms importante, que es instalar el cargador de en el MBR del disco. Por cierto, donde estn los cheros de depende de la versin y la distribucin que estemos usando, otras posibilidades a la dada en el texto son los directorios o . A continuacin ejecutamos el comando con lo que entramos en un emulador del intrprete de comandos de y ejecutamos
3 Vase

) 0 g ) %  #  )  # ( )  "!$"&$kk$"&!"# )

Y g E Tt B I B I V E o I Ct `HD c AD c FHQ c SAD3C s S c b r DD3AbFDHT t I Im i E E

%  # $k ) 0 g ) %  #  )  S"!$&&$$&% &)

l j i $kh

%  # $k

l j i k$h

q c q q c q q c q q c q E E E E

15
t t t t DDD{ @ HAeDFAQ x P o6 i E Dq tAAC A UAs "ADo Dq SFDUHE s P Q Y T r q r E V s Q i w E g Q @ DDeFDC x P o6 E C  # !$  l j i k$h  1   !hf$' ) l j i $kh 1 1 1 %  )   ) (  )   $$k!"!k&&&) l j i !k$h 0 (   #  $!&$! l j i k$h g   & (  )   $!!"!k) l j i $kh  kU l j i !k$h E q 3 D c B t "Q r Sq C Q r hq f T B s D c Q s w s AY q z c D c B (  & BD BD BD B D c c c c

Con esto hemos completado la instalacin de en el oppy y podemos arrancar el sistema con el mismo. Supongamos que tenemos un sistema simple, que puede arrancar en Windows Me residente en o en Linux con un Kernel 2.4. con /dev/hda2 como sistema root ( ). Al arrancar con el diskette que hemos preparado anteriormente obtenemos un prompt de desde el que podemos interaccionar con el sistema. Con el comando obtenemos una lista de los comandos de los que disponemos. Veamos primero como arrancar Windows TM, para lo cual damos la siguiente secuencia de comandos:
E C C B FD~ 8 pc HAAAY Uq T f Q P V C r V Q HR q E f D3V V Q g @ xr x P T6 w b&HSuAo q c H3C r FDC c Q R E C

Y tendremos enseguida en marcha el familiar (para algunos) proceso de arranque de un sistema Windows. No vamos a explicar en detalle los comandos de grub empleados, aunque si conviene dar una breve explicacin de la convencin que emplea para etiquetar las particiones, ya que ). La forma de referirse en es diferente de la que emplea Linux ( a una particin es como donde indica comenzando por cero la unidad de disco de que se trate (0 si es la primera como en nuestro ejemplo) e indica tambin comenzando por cero, que particin es la que queremos utilizar. La primera en nuestro ejemplo. El porqu de este cambio es no slo se utiliza con Linux sino con otros muchos sistemas operativos, cada debido a que uno con una convencin diferente a la hora de desginar discos y particiones. Es por ello que se ha denido un esquema propio de , independiente de todo sistema operativo. Para arrancar el kernel Linux en haremos, en el caso del sistema que tenemos como ejemplo:
E C C B B FD~ D c s HASDDADASA&ADDHDFHApP c E Uq H Uq u Q E w B x x x W W x r x x x Q d P y x q r r g q P c E Uq HDP c E hq D c t B q r I G q r d x x G Q q r x x d 8 x G i E FHADDDADDH Ds &DHhADD3AQ s &HAS9H Uq u r Q V g B r C c HHS`HAHFHDFDC c S Uq `3HQ r c S~ D c W V P T I R Q P I G E C r Y g R I Y Q B a x Q i w DDAFAE r C q E q E c |r s FSDAQ Dq 3DUHE s w s AY q z V i o W E s Q i w E g Q Q @ 8 r x P T6 G E C F9&HSu&HFDC c D c B x a E C Q DH`Hg q E t s f Q s Da c QHEDoAVpFAHV f q FhSS`FD5 x w Y Y E V g C E V E C C y Q AY q o r C q EAV c 3 q o r C f r FDC FY SUA5 Q g E C B Q i g V   % ) %  #  ) g g   4 &&$kk&$!) t w c E r E s c q t3FDC |&FY 3HFHtH5 Q o Q T E E C B r E V o Q P w y

Et voil! Tenemos al ordenador correctamente arrancado en Debian/Linux. El comando es necesario siempre que el kernel necesite de una imagen initrd para su arranque. Si no lo proporcionamos podemos terminar en un simptico . Despus de arrancar varias veces nuestro sistema de este modo es posible que nos sintamos un poco cansados de tanta orden y queramos congurar un men que nos permita elegir como arrancar. Nada ms fcil, denimos un chero llamado que copiamos a :

16
x E Y V o Q F3HAHP

Como podemos ver al arrancar de nuevo, una vez que el chero ha sido copiado al diskette, tenemos ahora un men en el que podemos escoger entre arrancar el sistema en cualquiera de las dos opciones, instalar en el MBR del disco duro o cambiar el esquema de colores de la pantalla de presentacin de . Desde el men podemos aadir parmetros al kernel en el momento del arranque pulsando la tecla tras seleccionar la opcin a la que queremos aadir algn parmetro y tambin podemos trabajar en el modo intrprete de comandos pulsando la tecla . en el MBR desde el intrprete de comandos una Para terminar veremos como instalar vez que nos hayamos acostumbrado a usando el oppy. Con el paso intermedio por el oppy tratamos de evitar algn efecto colateral no deseado en caso de que nos equivoquemos, una postura conservadora que es adecuado seguir cuando se trabaje como superusuario. De todos modos es buena idea conservar el diskette con ya que puede ser de gran ayuda en caso de que nos encontremos con un sistema con el MBR daado o con algn problema en . La instalacin de en el MBR es una operacin muy parecida a la que hemos llevado a cabo para instalar en el diskette. Por ejemplo podemos crear un directorio en cualquier particin de cualquiera de nuestros discos, aunque lgicamente es preferible hacerlo en aquella particin que utilicemos ms a menudo y sea ms estable, vamos, que no sea en la que experimentamos instalando diferentes sistemas... Una vez hecho esto se copian todos los archivos que se encuentren en o en el directorio que corresponda en tu distribucin particular al directorio y asegurate que tambin est entre los que aades. A continucin entra en el modo de comandos de y ejecuta los siguientes comandos:
l j i $kh   $" ) %  #  )   % &$kk&&) l j i !k$h l j i k$h  $ l j i k$h l j i k$h &9f'  1   l j i !kkh l j i k$h ) %  #  )   % &$kk&&) 0 g ) %  #  )  S"!$&&$$&% &) E q F D c B @ HSuDFAQ s D c x P T6 i E B @ 8 r x P T6 E C F9&HSuFDC c D c B l j i !k$h 0 "

Y terminado. Ya tienes un sistema con en el MBR que te permitir iniciar tu ordenador con toda comodidad en el sistema operativo que ms te interese.
l j i k$h

QS`Y B`I`CDYDYHQHwh Uq YB r `C c `I r DQ c U SF q Y c DDC f B Q E T C Y r C Y Q T E Q V Q Y s c DAC f FD r T ASE q E t s c DDC f FH r T 5 C Y Q T E Q V

@ x P T HS6 i E DFAQ s @ 8 r x P T A9!HS6 E C FDC c Dq P c 3SE Uq HAFDDHE r ASE q E V T Q T E C r y Y Y V s Q Y s P Aq P c SFHE Uq HFFp Uq DDHE Uq c S5 V T Q T E C r y r Y Y V s r C z s P

g q P c E q Uq HHP c E Uq t r I G q r C c WHVDPST`ISRAQDPFIHGHEFCAC c S Uq `FDQ r c r Y g R I Y Q @ 8 r x P T6 E C F9&HSuFDC c r S Uq I AFASE q E Q Y r H Uq hq FDC B c S5 C z r E C 8 c HAADY Uq T f Q P V C r V Q HR q E f D3g V Q V @ e&HS{Do q c HFC r FDC c xr x P T6 w Q R E C r ~FAC S s `SP Uq ASE q E Q g E C B Q C r Q Y Q S s 3HP Uq hq FDC B c S5 C r r E C C z

8 f S`DHHo V B Y Y V t "w c E r P r C f Q s FHp f `AHH5 Q Q T E C E V B Y Y V z

17
k g   0 #  ) 1 ) 0  &$&!f"$) 0  $) % ( ) 0  &&$) ) &"% !) ) 1 ) 0  !f"$)

1.2.2. El proceso

Una vez leido el sector de arranque el siguiente paso para el sistema consiste en iniciar los diferentes servicios del ordenador, dependiendo del nivel en el que est arrancando. Estos niveles de arranque suelen estar congurados en los sistemas UNIX usando dos sistemas diferentes: BSD o SystemV. En el caso de Debian se utiliza el sistema SystemV que es el que explicaremos brevemente, pero otros UNIX, y alguna distribucin GNU/Linux (como Slackware) utilizan el modelo BSD. En el caso del modelo runlevel de SystemV, el primer proceso que arranca es el programa , que utiliza un chero de conguracin llamado para decidir el modo de ejecucin en el que va a entrar el sistema. En este chero de conguracin se dene el runlevel por defecto en arranque, y una serie de servicios de terminal para atender la entrada del se ejecutara cuando el usuario. Cualquier programa que coloquemos en lugar de kernel hubiera terminado de cargarse. Un servicio es una funcionalidad proporcionada por la mquina. La activacin o parada de servicios se realiza mediante la utilizacin de scripts. La mayora de servicios estndar suelen tener su correpondiente chero o directorio de conguracin en el directorio y se controlan mediante los scripts presentes en . En este directorio suelen aparecer scripts con nombre similar al servicio al que van destinados, y aceptan parmetros de activacin o parada. As arranca el servicio, para el servicio y para y despus arranca el servicio. Si por ejemplo decididos reiniciar el demonio de impresin haremos como superusuario
# (  #  0 #  ) 1 ) 0  &!"$$$!& &) # (  0 #  ) 1 ) 0  &$$&!&$) ) &"% !)

Los servicios, como habamos comentado, se inician despus de haberse cargado el kernel del sistema e iniciarse el primer proceso, denominado init. Este proceso es el responsable de ejecutar y activar el resto del sistema. Primero corre un script inicial en bash que en un sistema Debian es . Este script se encarga de chequear y montar los sistemas de cheros denidos, jar la hora del reloj, hacer accesible es espacio de intercambio (swap space), denir el nombre del ordenador (hostname) etc. A continuacin se encarga de la gestin de los niveles de ejecucin (o runlevels), arrancando el sistema en el nivel que proceda. Un nivel de ejecucin es sencillamente una conguracin de programas y servicios que se ejecutarn, orientados a un determinado funcionamiento. Los niveles tpicos suelen ser (puede haber algunas diferencias):
0 # ) 1 ) 0  !f"$)

ShD&D! Hu $D A&pA& kH$ kH$pSkD&A$ !ShD&D!

18 Runlevel 0 Funcin Parada Descripcin Finaliza servicios y programas activos, as como desmonta lesystems activos y para la CPU Finaliza la mayora de servicios, permitiendo slo la entrada del administrador (root). Se usa para tareas de mantenimiento, y correccin de errores crticos No se inicia el entorno grco. En distribuciones diferentes a Debian este nivel es generalmente el 3. No suele usarse tpicamente es igual que el 3. Se inician todos los servicios incluyendo los grcos asociados a X Window. Para todos los programas y servicios, y reinicia el sistema.

Monousuario

Multiusuario (entorno texto)

4 5

Multiusuario Multiusuario (entorno grco)

Reinicio

El nivel en el que suele arrancar Debian por defecto es el 2. Despus el sistema, segn el runlevel escogido, consulta los cheros contenidos en el directorio donde X es el numero asociado al runlevel. En dicho directorio se encuentra una lista de servicios que hay que activar o parar en caso de que arranquemos o abandonemos el runlevel . La parada o arranque se decide en base a una serie de scripts (generalmente son enlaces a los scripts en ) que controlan el servicio. Cada script posee un nombre relacionado con el servicio, una S o K inicial que indica si es el script para iniciar (S) o matar (K) el servicio, y un nmero que reeja el orden en que se ejecutarn los servicios. Una serie de comandos de sistema son de ayuda para manejar los niveles de ejecucin, mencionar: , permite parar ( de halt) o reiniciar el sistema ( de reboot). Puede darse tambin un intervalo de tiempo para hacerse, o bien inmediatamente. Para estas tareas tambin existen los comandos y . , permite enviar mensajes de advertencia a los usuarios del sistema. de este modo el administrador puede anunciar a todos los usuarios que se va a parar la mquina en un determinado momento. Comandos como suele utilizarlo de forma automtica. , utilidad que permite averiguar el PID (Process ID) asociado a un proceso. Con obtenemos los listados de procesos, y si queremos eliminar un servicio o proceso, mediante necesitaremos su PID. permite la gestin de los runlevels al instalar o borrar servicios en uno o ms runlevels (Vase ). Como hemos indicado anteriormente el runlevel por defecto en Debian es el 2, donde el X Window system no se gestiona directamente desde , sino que existe un gestor independiente (por ejemplo gdm o kdm) como si fuera un servicio ms del runlevel 2.
% ( ) 0  "$ "$) 1 0 #  (  g  ( ""!!$' 1 0 #  (  g ""!!$ g 4   !g   $    !!$$   ( $" # S   %  $""#  ( $&    !&$ 1 ) 0  &$) 1 0 # ) 0  f)

19 es iniciar algunos procesos , con lo cual se obtienen La ltima tarea que realiza terminales virtuales donde los usuarios pueden hacer login y entrar en el sistema. En Debian se inician de este modo seis consolas a las que se puede acceder mediante la combinacin de teclas donde =1, ... , 6. En la seccin dedicada a los cheros de log del sistema se detalla como obtener la informacin que se produce durante el arranque del sistema. Resulta especialmente interesante el comando , pues nos permite cambiar al nivel de ejecucin que queramos. Por ejemplo, necesitamos hacer una tarea crtica en root, sin usuarios trabajando. Para ello podemos hacer un (tambin puede usarse S) para pasar a runlevel monousuario. Despus de terminar dicha tarea haremos un para volver a multiusuario. , para lo mismo, aunque telinit aporta algn parmetro Tambin puede utilizarse el comando extra. En caso de que queramos directamente arrancar el sistema en modo monousuario basta con o editando la entrada aadir una mayscula tras el nombre del Kernel en el prompt de correspondiente de .
 $! 

1.3. Control del estado del sistema


En muchas ocasiones nos har falta conocer el estado del sistema, lo que quiere decir que necesitamos saber qu procesos estn presentes en el sistema y en qu estado se hallan, los usuarios que estn presentes y qu estn haciendo etc. En lo que sigue analizaremos diferentes maneras de tomar el pulso al sistema.

1.3.1. Directorio /proc


. El kernel durante su arranque pone en funcionamiento un seudo-lesystem, llamado Este no es un sistema de cheros convencional sino que es donde el kernel vuelca la informacin que recopila de la mquina, as como muchos de sus datos internos. El directorio est implementado sobre memoria, y no se guarda en disco. Los datos contenidos son tanto de naturaleza esttica como dinmica (varan durante la ejecucin) y muchos programas utilizan informacin de este directorio durante su ejecucin. Por ejemplo, para tener acceso a la informacin acerca del procesador del ordenador en el que se est ejecutando Linux basta con hacer
0  # g "&$) SkDS$Ht!&x&  !  $ku  H"A $ku H&  $ku  $ S&DS $ Sk $ S$$ $ S ! x H7$D$S  A F"kD $AS $S9F&ku !D$! ! SDA A$F" H$k k $$k A"D $kHShD&D!

  "

  &&

  "$&

  &&

l j i k$h

 &k &

20
Sh D&D& D &ADk $ SH!& $ &`Skx

Hay que tener el cuenta que al ser /proc fuertemente dependiente del kernel esto hace que su estructura dependa de la versin que disponga el sistema y los cheros pueden cambiar de una versin a otra (los comentarios que siguen se reeren a un kernel de la serie 2.4.x). Una de las caractersticas interesantes es que en el directorio /proc, podremos encontrar las imgenes de los procesos en ejecucin, junto con la informacin que el kernel maneja de ellos. Cada proceso del sistema se puede encontrar en el directorio /proc/pid-proceso, donde hay un directorio con cheros que representan su estado. Esta informacin es til para programas de depuracin, o bien para los propios comandos del sistema como o , que pueden utilizarla para ver el estados de los procesos. Por otra parte en /proc podemos encontrar otros cheros de estado global del sistema, comentamos brevemente algunos cheros que podremos examinar: Fichero /proc/bus /proc/cmdline /proc/cpuinfo /proc/devices /proc/drive /proc/lesystems /proc/ide /proc/interrups /proc/ioports /proc/meminfo /proc/modules /proc/net /proc/pci /proc/scsi /proc/version Descripcin Directorio con informacin de los buses PCI y USB Linea de arranque del kernel Informacin de la CPU Dispositivos del sistema de caracteres o bloques Informacin de algunos mdulos de hardware Sistemas de cheros habilitados en el kernel Directorio de informacin del bus IDE, caractersticas de discos Mapa de interrupciones hardware (IRQ) utilizadas Puertos de E/S utilizados Datos del uso de la memoria Mdulos del kernel Directorio con toda la informacin de red Dispositivos pci del sistema Directorio de dispositivos scsi, o IDE emulados por scsi Version y Fecha del Kernel
g  & g

1.3.2. Procesos
Los procesos que se encuentren en ejecucin en un determinado momento sern de diferente naturaleza, pudiendo encontrar: Procesos de sistema, o bien procesos asociados al funcionamiento local de la mquina y del kernel, o bien procesos llamados demonios (daemons) asociados al control de diferentes servicios ya sean locales, o de red. En este ltimo caso podemos estar ofreciendo el servicio (actuamos de servidor) o recibindolo (actuamos de clientes). La mayora de estos procesos aparecern asociados al usuario root, aunque no estemos en ese momento presentes como superusuario. Algunos servicios se asocian a otros usuarios, llamados usuarios de sistema como son: lp, bin, www, sys.... Estos son usuarios virtuales que el sistema utiliza para ejecutar ciertos procesos y para saber todos los que hay denidos basta con examinar el contenido del chero . Procesos del superusuario: en caso de actuar como root nuestros procesos interactivos o aplicaciones lanzadas tambin aparecern como procesos asociados al usuario root.
 ( g ) 0  &$&&$)

21 Procesos de usuarios del sistema: asociados a la ejecucin de sus aplicaciones, ya sea tareas interactivas en modo texto o en modo grco. Como comandos rpidos y ms tiles para el control de procesos podemos utilizar: : el comando estndar, lista los procesos con sus datos de usuario, tiempo, identicador de proceso, y linea de comandos usada. Una de las opciones utilizada es , pero hay muchas ms opciones disponibles (ver man). : Una versin que nos da una lista actualizada a intervalos. Un interfaz grco para en GNOME es , que proporciona una informacin ms completa. Ambos programas permiten enviar diferentes seales a los procesos. : Nos permite eliminar procesos del sistema, mediante el envi de seales, como por ejemplo la de terminacin. El comando nos proporciona una lista de las posibles seales. , donde indicamos el nmero identicador del proceso ( ). til para procesos con comportamiento inestable, o programas interactivos que han dejado de responder. Para conocer el de un proceso podemos utilizar o . : Mata procesos indicando el nombre en lugar del PID. til en caso de que necesitemos matar simultneamente varios procesos que provengan del mismo programa. En el caso de los procesos ocurre algo similar a lo que pasa con los directorios, se establece un rbol de procesos siendo el proceso con el proceso raz, dependiendo de l el resto de procesos. Las aplicaciones y nos permiten obtener este rbol de procesos. Una tcnica muy empleada para el control de lo que ha ocurre o ha ocurrido en el sistema y que permite reconstruir lo que hayan hecho los usuarios del sistema es la gestin de procesos (process accounting). Esta utilidad permite al superusuario saber qu procesos han corrido diferentes usuarios y cundo por lo que complementa a otras medidas de seguridad presentes en el sistema. Para activar la gestin de procesos es necesario que el kernel del sistema haya sido compilado activando la opcin correspondiente 4 , algo que se cumple para los kernels precompilados de las principales distribuciones, Debien entre ellas. Adems debemos instalar los paquetes que posibilitan esta gestin de procesos, lo que en Debian implica instalar el paquete . A me5 las aplicaciones de este paquete deben ser ejecutadas por el nos que se congure de otra forma superusuario. En concreto una vez instalado el paquete debe existir el chero donde se lleva a cabo el almacenamiento de la informacin, llamado (de rocess oun ing). Si no existe dicho chero lo crearemos antes de iniciar la gestin de procesos con la orden . A continuacin comprobamos que la gestin de procesos no est incluida dentro de los servicios que se lanzan en el arranque, y si es as procedemos a lanzarla usando el comando :
" 0    0 0 "$"( $&( 0 0 0 0 &( g Ak$H$S$$ kH$A&Dk$H!SShA& $ H$7kxD3A ! D  H$7k&ShA& $ 0 0 ( g )    ) # ( &&!k$$"") e !   # $"$   # $& g  0 0 ( g )   0 0 ( ) # ( $"&&$$&&&)  # %    (   $"$&' &$$$ g  & g   $       $ g  " g  &$ g  & 4  kg g

4 CONFIG_BSD_PROCESS_ACCOUNTING 5 Vase p.e. la subseccin acerca de privilegios del superusuario.

C P SS s

para ver cmo proporcionar a otros usuarios parte o todos los

22 Con esto comienza la gestin de procesos por parte del sistema. Es importante tener en cuenta que los procesos no se aaden al chero hasta que han terminado de correr y se cierran, no cuando son lanzados. Esto quiere decir que si lanzamos un proceso y lo dejamos abierto sin cerrarlo no queda registro del mismo hasta que decidamos cerrarlo. Y an ms. Si se apagara el ordenador sin haber cerrado el proceso no quedar constancia del mismo en . Una vez lanzado podemos entrar como un usuario diferente a root, por ejemplo thorin, ejecutar algunos comandos y salir. Tras ello corremos de nuevo ahora sin argumentos para detener la gestin de procesos y podemos comprobar cual es el contenido de usando el comando .
0 0 ( $"&g  0 0 & $&( ( ' 0 0 ( &"g   kx$k& k SkH$ kx$k7    F& $ kx$k7    F& $ k kx$k7    F& $  kx$k7    F& $    k  kx$k7    F& $    k  kx$k7    F& $ S  kx$k&   F& $   k  kx$k7    F& $  F"A kD!  kx$k&   F& $ & kx$k7    F& $ k kx$k7    F& $  F"A kD! H$S$k$ HF!HkA&S$H&HShF& $ HkHkA"Ak$H&HShF& $  0 0 &&( '  0 ( '  &$  ( '  0 ' $!

La salida de este comando nos proporciona el nombre del comando ejecutado, nombre del usuario, terminal en la que se ejecut el proceso y el momento en el que termin dicho proceso. Si queremos informacin nicamente acerca de un tipo de procesos podemos aadir a la opcin nombre del comando. Tambin se puede seleccionar la impresin de procesos pertenecientes a un usuario concreto con la opcin y en general es posible obtener mucha ms informacin. Como siempre hay que mirar en ... las pginas !

1.3.3. Memoria
Respecto a la memoria del sistema tendremos que tener en cuenta que disponemos tanto de la memoria fsica de la propia mquina como de la memoria virtual, que puede ser direccionada por los procesos. Normalmente no dispondremos de suciente memoria para todos los procesos que tienen lugar simultneamente en el ordenador. Lo que suceder es que la memoria fsica sera menor que el tamao necesario de memoria virtual y esto obliga al sistema a utilizar un rea de intercambio (swap) sobre disco. Este zona de intercambio (swap) puede hacerse como un chero en el sistema de cheros, pero es ms habitual encontrarla como una particin de intercambio (llamada de swap) creada durante la instalacin del sistema. En el momento de particionar el disco se declara como de tipo Linux Swap. Para examinar la informacin sobre memoria tenemos varios mtodos y comandos tiles:
 $$4

chero : Aparece la particin de swap (si existiese) con un comando de podemos averiguar su tamao.
% ( 4 ) 0  & ) g

: permite conocer que procesos tenemos, y con las opciones adecuadas nos provee del porcentaje de CPU y memoria usada.

' '  0 ( $!

D{ { { A3D{ A3D{ A3D{ A3D{ A3D{ A3D{ A3D{ A3D{ D{

#   kS!

23 : versin de que presenta informacin acerca de los procesos de forma dinmica. Puede clasicar los procesos por la memoria que usan o por el tiempo de CPU. : Informacin del estado global de la memoria, da tambin el tamao de memoria virtual. En este caso si queremos obtener informacin acerca de la memoria usada la informacin que resulta realmente relevante es la que aparece en la la etiquetada como . : Informacin del estado de la memoria virtual, y en qu esta siendo utilizada
" )  #  0 ( 0 ) #  4 4  $"&&k&$!$% ( ' "    # $"k4 g g  &

1.3.4. Discos y sistemas de cheros (lesystems)


En esta seccin tendremos en cuenta cmo examinar qu discos tenemos disponibles, cmo estn organizados, y qu particiones y lesystems tenemos disponibles en ellos. Para poder acceder a una particin asociada a un determinado sistema de cheros, tendremos que realizar un proceso de montaje. Este proceso lo podemos realizar en lnea de comandos o hacer que siempre se lleve a cabo durante el arranque del sistema. En el proceso de montaje se conecta el sistema de cheros asociado a la particin a un punto del rbol de directorios. En el siguiente captulo examinaremos con ms detalle la estructura estndar del rbol de directorios de GNU/Linux. Para conocer los discos (o dispositivos de almacenamiento) que tenemos en el sistema, pode), donde se detectan los mos hacer uso de la informacin de arranque del sistema (comando (dispositivos dispositivos presentes. Entre los dispositivos ms frecuentes encontramos: IDE) y (dispositivos SCSI como discos duros conectados por USB, discos ash (los de tipo pen drive), unidades zip, cdrom externos). Cualquier dispositivo de almacenamiento presentar una serie de particiones de sus espacio, tpicamente un disco IDE soporta un mximo de 4 particiones fsicas, y un nmero ilimitado (a efectos prcticos) de particiones lgicas 6 . Diferentes particiones pueden contener distintos tipos de lesystems asociados a un mismo operativo o a sistemas operativos diferentes. Para examinar la estructura de un dispositivo conocido, o cambiar su estructura particionando el disco, podemos utilizar el comando , o cualquiera de sus variantes ms o menos interactivas ( , , ). Por ejemplo, al examinar un disco ide /dev/hda nos da la siguiente informacin:
 )   $&&)   ' !  k4 # ( g $"$$% ' "&&hkS  7&!   4 k$  )   k!&!k)  $4 0

6 Estas particiones se crean sobre una particin extendida, que permite colocar mltiples particiones lgicas sobre una fsica.

S F!E F!E F!E F!E F!E kkB D E  D  &2 Fk2@$C DkH

$k7@D&9A! A$$H7!D" 5 6 8 6 )  ) ! kA$$Dk ~4&kk  kH$S3$ 1 1 ) $k22D"Ap0D~kS  7& (       H D kD 1 2 1 2 1 &G&k 22 1 1 k  !&$$     A& k  k B  S k S  1 2S D& S ! S ! S 8 &S  k A $        (

24
&S$ bkS&D

Tenemos pues un disco de 120GB con nueve particiones, una primaria, una extendida y siete lgicas (se identican con el numero aadido al nombre del dispositivo), donde observamos una particin con arranque (columna Boot con ) de tipo FAT32, lo que supone la existencia de un Windows 98/Me junto con varias particiones Linux. La ultima particin es usada como rea de intercambio para Linux. Ademas tenemos informacin de la estructura del disco, y del tamao de cada particin. Entre los discos y particiones de nuestro sistema, algunos se encontrarn montados tras el arranque en nuestro sistema de cheros. Otros estarn preparados para montarse bajo demanda o para montarse en el momento en el que el sistema disponga de acceso al medio (en el caso de dispositivos removibles). Esta informacin acerca de los discos la podemos obtener de diferentes maneras: Fichero . Indicas los dispositivos que estn preparados para montarse cada vez que arranque el sistema o los extraibles que podrn ser montados cuando interese al usuario. No tienen porqu estar denidos en este chero todos los dispositivos presentes en el sistema, aunque s aquellos que queramos montar en el arranque. Los dems podemos montarlos , o desmontarlos con . bajo demanda con el comando . Al ejecutar este comando sin opcin alguna se nos informa de los lesystems montados en ese momento (ya sean dispositivos reales o lesystem virtuales como /proc). Esta informacin tambin est disponible en el chero . Este comando tambin sirve para montar los sistemas de cheros, por ejemplo si queremos montar un oppy podemos hacerlo con la orden
% ( ) 0  &&' ) g g   4 ) $!"$&' ) H  4 )   )   ( &!k"$   $$'   $$'   ' $k   $' % ( 4 ) 0  & ) S

. Nos informa de los lesystems de almacenamiento presentes en el sistema, y nos permite vericar el espacio usado y disponible. Comando bsico para controlar espacio de disco disponible. En relacin con este ltimo comando, , hay que recordar que una de las tareas bsicas de administracin de un sistema es controlar los recursos del mismo y, en particular, el espacio disponible en los lesystems utilizados. El espacio libre disponible hay que monitorizarlo con frecuencia ya que para evitar una posible cada del sistema nunca tendra que alcanzarse ms del 90 % de ocupacin. Hay que tener en cuenta que hay muchos procesos simultneamente funcionando (entre ellos demonios que estn escribiendo cheros temporales o de ) y pueden generar gran cantidad de informacin. De especial utilidad para controlar el tamao de cheros y el espacio ocupado por un directorio o directorios es el comando , acrnimo de isk sage. Si corremos nos da el tamao ocupado por cada archivo que cuelga del directorio desde el que corremos la orden. Explora los diferentes subdirectorios y en el caso de un directorio el tamao asignado al mismo es la suma de tamaos de los archivos que se encuentran en su interior. A veces este comando nos proporciona demasiada informacin, y conviene asociarle la opcio n . Por ejemplo, para ver el tamao de su cuenta el usuario thorin puede hacer:
    $  k S 4 $ R 1 h 1 k9   R P # # ${SQI$ S  $ S 4 $

25 Un caso particular en el llenado de discos duros son los cheros core que pueden ser (dependiendo del proceso que los haya generado) de gran tamao. Una primera medida para evitar que el sistema quede bloqueado por causa del llenado de una particin es seguir un esquema de particionado como el descrito en el siguiente captulo. Adems habr que seguir algunas precauciones eliminando informacin innecesaria, especialmente si se detectan situaciones de saturacin de los sistemas de cheros. Entre las posibles lneas de actuacin podemos destacar: Eliminar archivos temporales innecesarios, los directorios y suelen acumular muchos archivos generados por diferentes usuarios o aplicaciones. Algunos sistemas (Debian entre ellos), ya toman medidas de limpieza, como limpiar en cada arranque del sistema. Logs: Evitar su crecimiento excesivo. Segn la conguracin del sistema (por ejemplo de ) la informacin generada de mensajes puede ser muy grande. Normalmente se habr que comprimir los cheros y limpiar peridicamente. En todo caso, si necesitamos la informacin para posteriores anlisis, podemos realizar copias de respaldo (backups) en medios removibles. Hay otros puntos del sistema que suelen crecer mucho, como pueden ser: (a) cheros de los usuarios, podemos eliminarlos peridicamente, o evitar su generacin; (b) El sistema de , almacena todos los correos enviados y recibidos, junto con los archivos adjuntos. Eso puede hacer que el tamao del sistema crezca hasta llenar la unidad designada para tal n. Para solucionarlo podemos pedir a los usuarios que hagan limpieza peridica de su correo. (d) Las cachs de los navegadores o otras aplicaciones tambin suelen tener gran tamao, otra limpieza pendiente...; (e) Se puede establecer un sistema de cuotas en las cuentas de los usuarios de modo que estas no puedan exceder un tamao prejado. Para denir estas (ver y ). cuotas existe la aplicacin
 #  &0     $ g ' ) # ( !k&&) g ' !) g ' &)

1.4. Gestin de sistemas de cheros


Toda unidad de almacenamiento posee un archivo especial de dispositivo asociado, dependiendo del tipo de unidad de que se trate podemos tener:
%  )   $"&) 0  )   !&!k) (  )   &"&)

SCSI: Dispositivos , , ... siguiendo la numeracin que tengan los perifricos en el Bus SCSI. Los memory sticks que se conectan en a travs de un puerto USB entrn dentro de esta categora. Disquetes: Dispositivos , con x numero de disquetera (comenzando en 0). Hay diferentes dispositivos dependiendo de la capacidad del disquete, por ejemplo el disquete de 1.44MB en la disquetera A seria . Respecto a las particiones presentes, el numero que sigue al dispositivo representa el ndice de la particin dentro del disco, y es tratado como un dispositivo independiente. primera particin del primer disco IDE, o , segunda particin del tercer dispositivo SCSI. Los procesos bsicos que podemos realizar con los discos y sus sistemas de archivos asociados son
(  )   !!"!k) 0  )   &&!) H V V U H  4 )   W "!k)  4 )   $$"&) %  )   $&&&) (  )   !!"!k)

  )   $&!)

IDE: Dispositivos 1er conector,

disco maestro, 1er conector IDE; disco esclavo del maestro segundo conector, esclavo segundo conector.

 (   % $&&$T

( '

(   % "&$9

( '

(   "&$%

 ( "'

26
 k$4

Creacin de particiones, o modicacin de estas con comandos como (cfdisk, sfdisk).

Formateo de disquetes: Para disquetes pueden utilizarse diferentes herramientas: (formateo bajo nivel), (formateo a diferentes capacidades en formato msdos), (formateo especico creando lesystem msdos estndar). Crear sistemas de archivos linux mediante el comando . Hay versiones especicas para crear lesystems diversos ( ) incluso lesystems no linux ( ). El comando crea los istemas de archivos del tipo , (con extensiones joliet o rock ridge) sobre cdroms. Esto junto a comandos como permite grabar cdroms. Un caso particular es la orden que permite crear reas de intercambio, que despus se pueden activar o desactivar con
  '    $$k$' ( ' #  4  !$4 "4 ' ( ' #  4 #  g !!& ( ' #  4 &&'

Montaje de los lesystems: comandos

Vericacin de estado: La principal herramienta de vericacin de lesystems linux es el , que comprueba las diferentes reas del sistema de cheros y verica su comando consistencia detectando posibles errores y, en los casos que sea posible, corrigindolos. El propio sistema activa automticamente este comando durante el arranque cuando detecta que se ha producido una parada incorrecta del sistema (un apagn elctrico, o accidental de la mquina), o bien despus de un nmero predeterminado de veces en que el sistema se ha arrancado. Esta comprobacin suele llevar cierto tiempo, tpicamente algunos minutos, dependiendo del tamao del sistema de cheros. Este tiempo se ve drsticamente acortado si utilizamos un sistema de cheros con journalling como o . Tambin existen versiones particularizadas para un sistema de cheros: . El proceso normalmente se activa con el dispositivo en modo de slo lectura, con la particin bajo examen desmontada. Se recomienda siempre desmontar las particiones, para realizar el chequeo. En determinados casos, por ejemplo si el sistema a testear es el raz y se detecta algn error crtico, se nos pedir que cambiemos el modo de ejecucin del sistema (runlevel) a modo slo root tambin llamado monousuario, y hagamos en este modo la vericacin. En general si hay que hacer alguna vericacin, se recomienda hacerla en modo monousuario. Procesos de respaldo (backup) del sistema: ya sean de todo el disco, bloques del disco, particiones, lesystems, cheros,... Hay varias herramientas tiles para ello: nos permite copias de cheros, hacia un chero o bien a unidades de cinta; de forma parecida puede realizar backups de cheros en un chero. Tanto como mantienen informacin de permisos y propietarios de los cheros. La aplicacin permite copias ya sea de cheros, dispositivos, particiones o discos a chero. Este comando es un poco complejo, pero muy potente.
)  2!91 0 4  !"&h1 !"4 0 4 #   kk"&# &$ 1 1 1   ' $&!b1 0 4 0 4 ( 4 &1 0 4 0 !"4

Utilidades diversas: algunos comandos individuales para hacer tareas diversos son: para encontrar bloques defectuosos en el dispositivo, para obtener informacin sobre lesystems linux, permite hacer tuning del lesystem linux de tipo ext2 o ext3 ajustando diferentes parmetros de los mismos.
0   %  ( &$"kk&% 4  g '  &!kk 4   "&$

( 4 1 &"4

4 4  g ( $"

'

&g(" g ( "

# ( &

, o parecidos

'

# ( &  g 0

 $

 g 0

"k$ ' 4   1 !9"4

'  1 t"$h4

 #  0  # !&&$ 0 H  S$$kk X4 t!!X"4 ' '1 '   '1 '

27

1.5. Ficheros de registro


Tanto el kernel, los daemons de servicios, y diferentes aplicaciones o subsistemas de GNU/Linux generan mensajes que vayan a parar a los llamados cheros de registro (log les), ya sea para tener una traza del funcionamiento del sistema o para detectar errores o situaciones crticas. Este tipo de registros o logs son imprescindibles en muchos casos para las tareas de administracin, y se suele gastar bastante tiempo de administracin procesndolos y analizando sus contenidos.

1.5.1. Arranque del sistema


En el arranque de un sistema GNU/Linux se produce un volcado de informacin muy interesante donde aparecen datos acerca de las caractersticas de la mquina, deteccin de dispositivos, arranque de servicios de sistema, etc. Adems se incluye informacin acerca de los problemas o errores que aparecen durante el proceso de arranque. En la mayora de distribuciones esto puede verse en la consola del sistema directamente durante el proceso de arranque, pero o la velocidad de los mensajes, o que estos estn ocultos tras cartulas grcas, puede impedirnos leer los mensajes. Por tanto necesitaremos una serie de herramientas para seguir este proceso.Con este n podemos utilizar: : comando que da los mensajes del ltimo arranque del kernel
  (  ' )    ) # ( !!k!!k$$"")     $k$ 0  # g &"$)   ' !

chero : Este es un log general del sistema, que nos contiene los mensajes generados por el kernel, y otros daemons. : Indica cunto tiempo hace que el sistema esta activo. : cheros que utiliza el kernel para almacenar la informacin que gestiona.
 ' g S$

cheros

El demonio es el servicio ms importante de obtencin de informacin dinmica de la mquina. El proceso de anlisis de los cheros de registro o logs nos ayuda a entender el funcionamiento, los posibles errores, los problemas de seguridad y el rendimiento del sistema. La mayor parte de los logs se generan en el directorio , aunque algunas aplicaciones pueden modicar este comportamiento, como ocurre con y los cheros de registro de programas. De todos modos, la gran mayora de logs del propio sistema si que se encuentran en este directorio y prcticamente todos bajo el directorio . El demonio (daemon) del sistema que se encarga de recibir los mensajes que se envan por parte del kernel y otros demonios, envindolos a un chero de registro, es . El chero por defecto donde se envan los registros es , pero es tambin congurable a travs del chero . De este modo pueden generarse otros cheros, o bien realizar una clasicacin segn el daemon que enva el chero (clasicar por fuente), o segn la importancia del mensaje: alarm, warning, error, critical, etc. Dependiendo de la distribucin puede estar congurado de diferentes formas: en Debian se generan los cheros en (p. e. , , , etc.) con los logs de diferentes servicios. Podemos examinar la conguracin para determinar de donde provienen los mensajes y en qu cheros se guardan. Una opcin que suele ser interesante es la posibilidad de enviar los mensajes a un consola virtual de texto, de manera que podremos ir vindolos a medida que se produzcan,
 4 1  ( !!32"'         $k$ # #  1  ( h2"' 0 0 &(    ) # ( $&&) 4  0 1    ) 0  !`k$k &$)   (  )    ) # ( &!k$&' &$&&)    1 # k$9$ # ( ")    ) # ( $"&)    k$k

f e d b X Y g3ca`X

1.5.2.

28 esto suele ser til para monitorizar la ejecucin del sistema, sin tener que estar mirando el chero a cada momento. Una alternativa simple podra ser, desde un terminal hacer como superusuario . Esto nos permite que vayan apareciendo las lneas que se vayan aadiendo al chero en el terminal. En entornos donde la seguridad es importante hasta el punto de adoptar una poltica muy paranoid a veces se aprovechan las antiguas impresoras matriciales para enviar las salida de logs. Esta es una forma de asegurar que de ninguna manera un intruso pueda alterar la salida de registro del sistema. No tenemos espacio en esta seccin para describir detalladamente como se raliza la conguracin de , siempre nos queda el manual... Pero daremos una breve descripcin de la sintaxis que emplea dicho chero y veremos tambin como se lanza el demonio . En se dene una correspondencia entre acciones y categoras a las que se aade una prioridad. Por ejemplo la lnea
    $k$k $&A$ $   (  )    ) # ( ) !&k$!' &$&&4 &"  (  0  & 4  0 1    ) 0  !3k$ &$)   "&  4 !! h  ( 0  `$"$ i   %  !$! ) q 8 $S$ !S90S9rp 8 h !Dk !     $ $h 8 p &0 ) H  ( 0  S$& D $h S& $e& 8 FD& 8 F & 8 S& 8 pS 8 F k 8 pS&D 8 pkH

#  k # ( '  ( )    ) # ( "' &$&&)  !

dene que a la categora con la prioridad se asigne la accin escribir en Las categoras denidas en GNU/Linux son , , , , , y a . El comodn signica cualquier categora y ninguna categora. Las prioridades mantienen una relacin jerrquica y son, en orden creciente de importancia o , , , , , , y . Tambin tienen aplicacin urgencia: los comodines y . Entre las acciones posibles, aparte de escribir en cheros de registro como se vi en el ejemplo anterior, se puede enviar la informacin a un chero fo, a cheros de dispositivo ( les), un nodo remoto o a una terminal. Es posible ser redundante en el sentido siguiente. Si a una categora con cierta prioridad se le . ha asignado una accin no se deja de probar si corresponde a alguna otra lnea de As hasta que se han probado todas las condiciones denidas en el chero. Un ejemplo de chero es el siguiente:
4  0 1    3 # $ && '$(& #g$$( $(   0  $&  #  '  #   $(  !H xH& k D!k 0 # # #   # ( !$ 4  0 1    `f$k  ( "' i S S S S S

k $S& 9 k9 H7H& &SkAk !k D!S$ $ !S$ $ !A$ $ H$ $ $ $  H&D $ $ Hk$ $ $ $ S !Dk$ $ S

   

( '

   $

El demonio se lanza con el script que permite sincronizar el lanzamiento de y (el demonio de registro del kernel). Este demonio puede . lanzarse con diferentes opciones que pueden consultarse en
  k$ ) 1 ) 0  !!f "$)     $k$     $k$k  $(    1  ( )    ) # ( $hf$!k$$"") S&!S  b S Qa&$ 8 6 8 q 6 pqakA!4S 8 6 8 q 6 paH! b kqa X $Xq4D&H9 $ q q 8 q 8 rp$&erp&D 8 &D8 & $$e $Xy& ) q ) pa$bS&D0kH pq$b &0 ) q 0S QaH& $ akA!8 6 8 q 6 8 q 6 h $&qa$$e $ pq$b &)0 q 6 p48 $ uySD! `w!DA x v S $ S $S$ $ S $S $S$$ D&Ah $S $S$$ & kb k  k D&Dh k ! ! kFU! kkS$!A$ $ S  $ $ S DkD!H $x2u{A& s t t E S&A$$ $&A$ $ k3U$&A$ $

1.

Algunos comentarios

Envo de informacin estndar. El signo antes del nombre del chero hace que no sea necesario sincronizar el chero cada vez que se escribe en l lo que minimiza la carga en el sistema para aquellos cheros donde se accede con frecuencia.

2.

Los mensajes de cualquier prioridad en las categoras .

$$( # g 

 $(

3.

Divide los registros correspondientes a

 ( &'

4.

Todos aquellos mensajes que tengan la prioridad , , , , tenecientes a tengan, son almacenados en .

para facilitar su manejo.

y excepto los pertengan estos la prioridad que

# ( 

  (  ' )    ) # ( !!k!!k$$"")  "  ( &' ' ! "0 $$(   (  # # g   0  & &  4

5.

Enva a todo el mundo los mensajes con la prioridad de emergencia. y se enva al chero 29

30 Adems es muy conveniente instalar y lanzar en el arranque del sistema el programa que nos permite mantener bajo control el tamao de los cheros de registro, comprimiendo y borrando de acuerdo con el tiempo transcurrido. Otros comandos interesantes relacionados con el registro del sistema son (tiempo que hace que el sistema esta activo), (analiza el registro de entradas/salidas en el sistema generalmente presente en ).
 (  #   &&&kk$

1.6. Bibliografa
1. 2. 3. 4. 5. 6. 7. Administracin avanzada de GNU/Linux, Josep Jorba Esteve y Remo Suppi Boldrito. XP04/90785/00019, Formacin de posgrado Universidad Oberta de Catalunya (2004). Boot with GRUB, Wyne Marshall,Linux Journal issue 85 SSC Publications (2001). From Power Up To Bash Prompt HOWTO, Greg OKeefe 7 (2000). Process Accounting, Keith Gilbertson,Linux Journal issue 104 SSC Publications (2002). syslog Conguration, Mick Bauer,Linux Journal issue 92 SSC Publications (2001). Gua de referencia DEBIAN8 , Osamu Aoki (Trad. al espaol coordinada por Walter O. Echarri) (2005). LINUX: Rute Users Tutorial and Exposition, Paul Sheer (2001).

7 8

 ' g S$

Q f r Q c QDoAQ c r V q B3QHPFI s YH r V ghI f CSP3IS c Cbt r V q 3DDD V B Q Pt m i E E FDST c bFD3bDD Ct i P E Yt m i E E FDST

g ' )    ) # ( !k&$&&) &$ (

Captulo 2

Sistemas de archivos
2.1. Introduccin
En todas las variantes del sistema operativo UNIX el concepto de archivo o chero es ms amplio que en otros sistemas operativos y en esta parte del curso trataremos de explicar la estructura de cheros de un sistema GNU/Linux, los diferentes tipos de archivos que existen as como los permisos de los mismos, haciendo especial nfasis en la importancia de los permisos como un primer paso hacia un sistema (ms) seguro. Todos sabemos que un chero no es ms que la agrupacin de un conjunto de informacin bajo un nombre, que es el nombre del chero. Esta informacin puede ser muy variada, yendo desde grcos o texto hasta cdigo ejecutable. Lo importante de UNIX es que bsicamente todo viene representado por cheros: documentos, grcas o programas. Los directorios, que estamos acostumbrados a asociar a contenedores de cheros son en realidad cheros que contienen... listas de cheros. Incluso el lector de CDROM o de DVD, la disquetera, un lpiz de memoria y en general todos los dispositivos son para el kernel cheros que se leen y a los que se escribe.

2.2. La estructura de archivos del s.o. GNU/Linux


Como hemos comentado en la introduccin, un sistema que utilice el s.o. GNU/Linux o, ms en general, el s.o. UNIX consiste en una serie de cheros, al que se les asigna un nombre -o variosy que podemos clasicar en tres tipos principales: 1. 2. 3. cheros ordinarios que contienen datos. cheros especiales que nos permiten acceder a dispositivos y perifricos. directorios que contienen informacin acerca de un conjunto de cheros y se usan para localizar los cheros siguiendo un path o trayectoria.

Como todo sistema operativo moderno en GNU/Linux los cheros no se encuentran todos en el mismo lugar, sino que estn organizados en una jerarqua de directorios y subdirectorios formando lo que se llama un tree o rbol de directorios. Seguramente este concepto es bien conocido por todos los que han usado alguna vez un ordenador. Los archivos en este tree en general no pertenecen a un nico dispositivo sino que encontramos archivos combinados pertenecientes a diferentes sistemas de cheros. Para empezar es habitual encontrarse con los propios sistemas de cheros Linux, creados en diversas particiones de los discos. La conguracin mnima suele ser de dos particiones: la correspondiente a / (root lesystem) y 31

32 la correspondiente al rea de intercambio o de swap. La de swap es de tipo Linux Swap, y la correspondiente a /, suele ser de alguno de los sistemas de cheros estndar, ya sea ext2 (el tipo por defecto hasta los kernels 2.4), o el nuevo ext3, que es una mejora del ext2 compatible pero con journaling1 . Cabe destacar que trabajar con GNU/Linux implica una gran exibilidad a la hora de escoger el sistema de cheros con el que trabajar. Otras posibilidades adems de las anteriormente mencionadas son sysv, reiserfs, jfs o ncpfs. Por ejemplo, en los PCs personales con GNU/Linux instalado seguramente encontraremos ms de un sistema operativo. Por ejemplo podemos tener otra versin de GNU/Linux con ext2 o 3 como sistema de cheros y podramos encontrar un antiguo msdos con su sistema de cheros FAT, un windows98/ME/XP Home con FAT32 (o vfat para linux), o un windows NT/2000/XP profesional con sistemas NTFS (ntfs para linux) y FAT32 (vfat) a la vez. Nuestro sistema GNU/Linux puede leer datos (o sea cheros y directorios) de todos estos sistemas de cheros, y escribir en la mayora, en el caso de ntfs este soporte existe pero en versin experimental (ya que existen dos versiones llamadas ntfs y ntfs2, y los llamados volmenes dinmicos, hay ciertas incompatibilidades entre ellos, y podran causar corrupciones de datos, o errores en el sistema de cheros). En la versin 2.6 del kernel Linux se espera obtener un soporte ms completo de NTFS (siempre que Microsoft no realice ms cambios en la especicacin). Otra conguracin habitual, ms exible que la anteriormente citada de + swap, es de 3 es donde residen las cuentas de los usuarios. Al particiones: , swap y /home. En este caso separar las cuentas de los usuario del sistema, situndolas en dos particiones separadas, facilitamos la gestin de las cuentas de usuario, evitamos que un llenado de la particin de usuarios afecte al sistema, podemos fcilmente compartir dicho espacio de usuarios entre varias distribuciones de GNU/Linux y, especialmente, facilitamos la actualizacin o reinstalacin del sistema manteniendo la informacin de los usuarios. Otro esquema muy utilizado y ms completo que los dos anteriores consiste en separar en particiones diferentes las partes estticas del sistema de las dinmicas. Por ejemplo una particin donde se coloca / con la parte esttica (/bin /sbin y /usr en algunos casos) que se espera no va a crecer o muy poco, y otra o varias con la parte dinmica (/var /tmp /opt), suponiendo que /opt por ejemplo es el punto de instalacin del software nuevo. Esto permite ajustar mejor el espacio de disco, dejando ms espacio a las partes del sistema que lo necesiten y minimiza los problemas en el caso de llenado accidental de una particin. Dentro del tree para hacer referencia a un chero que se encuentra en un lugar concreto dentro del rbol de directorios hay dos opciones: la primera es dar el path absoluto: por ejemplo (que es el chero de conguracin de la tarjeta grca) y la segunda es suministrar el camino de forma relativa al directorio en el que nos encontremos (nuestro wor. Conviene tambin sealar que si king directory que es el obtenido tras correr el comando escribimos y no damos ningn argumento al comando nos trasladaremos a nuestro directorio home y que la tilde ( ) es la abreviatura de nuestro directorio home mientras que si va seguida del nombre de un usuario es la abreviatura del directorio home de dicho usuario.

2.2.1. Principales directorios en un sistema GNU/Linux


&

Para ilustrar el concepto de tree podemos analizar la siguiente salida del comando
HS rUq `R Y g I c HR V I S`E i g i g Q SSUHE I E C SFDC c I Uq 3 DFUQ c r Y Q E C g I P Q DV q Ag I C HP r `So E s DY C I SP c E Uq I E C SFDC B q r I Q g DhC T I Uq B r I z U s XFE q c q A hq c C FE Y nm T E r T

1 El journaling permite tener un registro de los cambios que sufre el sistema de cheros, lo que permite recuperaciones ms rpidas en caso de error

 !$g

 '  &)

V  4  ) ) 0  !`!$ )

 0

33
I s 3HP Uq C r P Y Ct r Y g HFAbS hq `R I I s c I c s Q s B s I s I SR I Uq r c s B s w s I f C c i I E i SH`C I SE r g I B q Y P Y Ct HFDb" g q P c E Uq t q r D g q P c E Uq t q r i )  "H"# )  # ( )  "" !"# )  ( 0   )  "$$"# ) ! 0   )  "!"# ) 0 )  # !"# ) % &$"# )  )  "# ) % )  0  # g "&)   % $") !) % 0  $) % ) %  "$) # )  # ( ") I f FQ E I R Q SADP g hC c P f

Se pueden ver todos los subdirectorios que cuelgan del directorio raz del sistema /, que se distinguen fcilmente de los cheros porque en el caso de los directorios el nombre termina con el carcter /. Tambin pueden verse varios cheros como vmlinuz y vmlinuz.old a cuyos nombres se les ha aadido un sujo , lo que indica que son links o enlaces a otros cheros. La forma de organizar los cheros en un sistema GNU/Linux podra ser cualquiera, pero en la prctica los nombres y archivos presentes en al menos el primer y segundo nivel a partir del directorio raz vienen ya determinados. En concreto podemos distinguir

Contiene programas, en general accesibles a todos los usuarios y que forman parte del UNIX standard, p.e. . Otros programas ejecutables menos generales se encuentran en subdirectorios con el mismo nombre. Binarios (ejecutables) que en anteriores versiones de UNIX se encontraban en general son de inters para el superusuario. . En

Contiene los cheros de conguracin del sistema y sus diferentes dispositivos as como aquellos cheros que controlan los diferentes modos de arranque del sistema. Contiene bibliotecas (tambin llamadas libreras) que pueden ser llamadas por programas o utilizadas para compilarlos. Tambin contiene los mdulos de los diferentes kernels instalados. (*) Este directorio posee alguno de los subdirectorios ms importantes del sistema como son: : Librerias para programacin. : Ejecutables del sistema. : X Window System, version 11 Release 6. : Documentacin. : Cdigo fuente. : Informacin que no depende de la arquitectura del sistema en particular. : rbol de programas instalados localmente.

(*) En este directorio se suelen almacenar los cheros de log del sistema (registros de la actividad del sistema) y las colas (spool). (*) Sistema de cheros virtual con informacin acerca del sistema, el Kernel y delos procesos. (*) Ficheros que utiliza el cargador del sistema boot loader.

0  )

34
g  $$)

Al igual que suele ser el directorio donde se instalen paquetes y programas ajenos a la distribucin del sistema y que se quiere hacer accesibles a todos los usuarios. (*) Contiene cheros temporales creados por los programas durante su ejecucin. En el caso de la distribucin Debian este chero se borra cada vez que arranca el sistema. (*) Directorios home de los diferentes usuarios del sistema. Contiene los cheros especiales correspondientes todos los dispositivos y perfricos del sistema. Una descripcin detallada de la jerarqua de cheros en un sistema Debian puede encontrarse en el documento Filesystem Hierarchy Standard se puede obtener al instalar el paquete o en la web de debian2 . En el caso de los directorios marcados por un asterisco se suele reservar para ellos una particin del disco duro con punto de montaje en el directorio, de este modo se facilita la actualizacin del ) o se evitan (o minimizan) daos en caso de que se llene por completo un sistema (caso de sistema de cheros. Existen dos cheros especiales que no se muestran en la anterior salida pero que estn presentes en todos los directorios. Uno es . que hace referencia al directorio en el que nos encontramos y el otro es .. que hace referencia al directorio que contiene al directorio en el que nos encontramos (esto es, implica subir un escaln en el rbol de directorios).
  ' ")   &) g ' !k)  ( 0   )  &$"# )

2.2.2. Puntos de montaje


Aparte del lesystem principal /, y de sus posibles divisiones (/usr /var /tmp /home) en particiones extras, otro aspecto a tener en cuenta es la posibilidad de dejar puntos de montaje preparados para el montaje de otros lesystems ya sea particiones de disco o otros dispositivos de almacenamiento. En las mquinas en que esta instalado GNU/Linux compartiendo con otros sistemas operativos la mquina mediante algn sistema de arranque (LiLo o Grub), pueden existir varias particiones asignadas a los diferentes operativos. Muchas veces es interesante compartir datos con estos sistemas, ya sea para leer sus cheros, o modicarlos. A diferencia de otros sistemas (que slo tienen en cuenta sus propios datos, lase windows, en el cual en algunas versiones no se soportan algunos de sus propios sistemas de cheros). GNU/Linux es capaz de tratar con una cantidad enorme de sistemas de cheros de diferentes operativos, y poder compartir la informacin. Para que se puedan leer o escribir los datos, la particin tiene que estar disponible dentro de nuestro sistema de cheros raz (/) por tanto hay que realizar un proceso de montaje del sistema de cheros en algn punto de nuestro rbol de directorios. El mismo proceso si se trata de un dispositivo de almacenamiento ya sea disquete o oppy. Dependiendo de la distribucin se usan unos o otros, o tambin los podemos crear nosotros. Normalmente suelen existir o bien como subdirectorios de las raz, por ejemplo /cdrom /win /oppy, o bien son subdirectorios dentro de /mnt el punto estndar de montaje (aparecen como /mnt/cdrom /mnt/oppy ...)
2

0   g ( %  &$"S&

w f q HC 35 s SS r DHDHFI f SFS c bt r V q 3HAD3DbFDST Y i Y V V g Y Q R Q P C P I C B Q Pt I Im i E E

 '  &)

35
  $'

El proceso de montaje se realiza mediante la orden


 g   '  0    g '    $ &&$7$!"$$ &  &$4 % ( 4 ) 0  &"k$) ' "k "&!' ' "k&&!k`$$$  # 0 ) )  #  0 )   ) H  '  # 0 ) ) 0  )   ) H  &$ &"$&' {!&!k`$$$ S S S   $'   $'   $'   $'   $'

con el siguiente formato:

El tipo de lesystem puede ser msdos (fat), vfat(fat32), ntfs(ntfs lectura), iso9660 (para cdrom), ... El dispositivo es la entrada correspondiente en el directorio /dev a la localizacin del dispositivo, los IDE tenia /dev/hdxy donde x es a,b,c, o d (1 master, 1 slave, 2 master, 2 slave) e y el numero de particin, los SCSI (/dev/sdx) donde x es a,b,c,d ... (segn el id scsi asociado 0,1,2,3,4 ...) Vamos a ver algunos ejemplos: : montara el cdrom (si es el IDE que esta en el segundo ide de forma master) en el punto /mnt/cdrom. : montara el cdrom, /dev/cdrom se usa como sinnimo (es un link) del dispositivo donde esta conectado. : montara el disquete, /dev/fd0H1440 Seria la disquetera A en alta densidad (1.44MB), tambin puede usarse /dev/fd0. : montara la segunda particin del primer dispositivo IDE (la C:), de tipo ntfs (por ejemplo un Windows XP). Si estas particiones son ms o menos estables en el sistema (o sea no cambian frecuentemente) y les queremos utilizar, lo mejor sera incluir los montajes para que se hagan en tiempo de : ejecucin, mediante congurar el chero
) k$ &  D&S$$A  Hk  ) ) kk4 !ak Dk Sk DkHk  ) k$ & kS  k   !S $k $S $k k$ $ S  6 D&AkW!k k S  2$$H2Sk  $kS&H22$F&2k!p7$k$D!u 9 $k$D!!DkH&SH$xW$!S kFH  7 ' g g   4 ) ) H V V U H  4 )   ) ( 4 $$!k&!' W "!k!!S ) ' ) (  )   ) 4 !$"$!$!!"!k"S

Por ejemplo esta conguracin incluye algunos de los sistemas estndar, como la raz en /dev/hda2, la particin de swap que est en hdb3, el sistema proc (que utiliza el kernel para guardar su informacin). Y el disquete, el cdrom, y en este caso un disco usb de tipo ash (que se ve como un dispositivo scsi). En algunos casos se especica auto como tipo de lesystem, esto permite que lo autodetecte, si se conoce es mejor darlo en la conguracin, y por otra parte el noauto en las opciones permite que no sea montado de forma automtica siempre, sino que bajo peticin. Si tenemos esta informacin en el chero, el proceso de montaje se simplica mucho, ya que se ara o bien en ejecucin o bien en bajo demanda (para los noauto). Y puede hacerse ahora simplemente pidiendo que se monte el dispositivo o el punto de montaje:
H  4 )   )   $"&$' '  # 0 ) )   &$ &"$&' $'

ya que toda la dems informacin ya la tiene el sistema. Para el proceso contrario, desmontaje es bastante sencillo, comando umount con punto o dispositivo:
H  4 )   )   ' &!k$ ' "k&&!$  #  0 ) ' )   '

36 en el caso de medios extraibles, tipo cdrom (u otros) puede usarse eject para la extraccin del medio: o slo en este caso. Los comandos y con -a montan o desmontan todos los sistemas disponibles. En el chero se mantiene una lista de los sistemas montados en un momento concreto, se puede consultar o ejecutar sin parmetros para obtener esta informacin.

2.3. Permisos: su signicado y cmo variarlos


En algunos sistemas operativos todos los cheros pueden ser modicados por cualquier persona que use el ordenador, de hecho, cualquier persona podra borrar el disco duro, intencionada o accidentalmente. En los sistemas Unix en general y en los GNU/Linux en particular esto es casi imposible, siempre que se tengan en cuenta unas mnimas precauciones. La seguridad de un sistema Linux/UNIX comienza pues por mantener una poltica adecuada de permisos en los cheros. Hasta ahora hemos hablado de algunos aspectos de los cheros y directorios, as como de su manejo, pero an no se ha aclarado como el sistema Linux evita que podamos borrar cheros de otros usuarios o incluso del sistema. Esto se consigue gracias a que los cheros llevan sociados unos permisos que denen quien puede leerlos, alterarlos o, en su caso, ejecutarlos.

2.3.1. Usuarios y grupos


Un primer concepto a tener en cuenta es que los cheros siempre pertenecen a un determinado usuario, al que llamaremos su propietario, y a un determinado grupo. suele pertenecer a la persona responPor ejemplo una cuenta de usuario llamada sable de los sitios Web de un nodo, mientras que la cuenta de usuario es usada por el demonio de impresin , que corre como si fuera el usuario . Un grupo no es ms que una lista a la que pueden pertenecer diferentes usuarios, cada usuario pertenece a un grupo principal, pero de hecho puede pertenecer a tantos otros grupos como sea necesario. Por ejemplo, en una mquina puede existir el grupo de usuarios al que pertenezca el usuario , pero este tambin puede pertenecer al grupo de usuarios con privilegios para la administracin de programas. La informacin acerca de los usuarios y grupos que estn denidos en un sistema puede encontrarse en los cheros y . Por ejemplo la lnea que dene al usuario thorin puede ser algo como
k( '  T s `I Uq `bm hq c C F3HhC UbHDD&FHQ q T r 3V A`q c C AkDDDDD!33HR 3AFHE c em hq c C FE V B r B I r T E I Q g T Im r r r P Y T vm 8 8 8m 8 8 8 8m W y f y Y g v W d r T s Q g r T E i P s V i E Q I E nm T r Uq c C F`Q c H Ds `I f AAFV f uX3E q c q E g  #  k #  ( ' %  &!k g  g   #  ) 0  "k$)  ( g ) 0  !!") #  ( ' %  &!  g 

En la lnea correspondiente al chero hay varias entradas separadas por dos puntos. La primera corresponde al o nombre del usuario, la segunda corresponde a la contrasea o passwd (encriptada). Si este campo est ocupado por una entonces la contrasea encriptada se encuentra en . En tercer lugar encontramos el nmero de identicacin del usuario o UID, en este caso . En cuarto lugar tenemos el nmero de identicacin del grupo primario al que pertence el usuario o GID ( ). El resto de campos en el chero nos dan el nombre del usuario ( ), su directorio HOME ( ) y la shell en la que ) al hacer login. entra por defecto (
"$$&) #  )  '   ( &!&g  ( &!&g ( % ) % !"& )     w&h ( i #  $  ( #  ' "$k $$   ( ) 0  &" !$)

) )  k $HS"X03&kX3X k$$ ) ) $A$b3k&`!A!$XA3X

g   #  ) 0  "k$)

y la entrada en

donde se dene los grupos a los que est asociado el usuario sera

0  "S

 $' % ( ) 0  &&' ) $'k    $$' '  #  0 )   ) 0  &k&"!k&!S

Y t C P u W x Wm y 8 W s H"V q f r Q f S3GAb&U`8  !

V s d r FtFh8

T E DDDADD c s Q sDs C B Uq c C F8 r 8 Y V E C FhHHFHE T Y `3 s AI Uq `H`FAXFE q c q E Y r B I i g E I nm T

( '

m p x 8m C C &`8 Um c SP c g C f s 3Q c wD`C c 3I f AAAV f FXFE q c q E i i E Q I E 5 nm T T s V`I `q B`IbmAC c HV `H9C `bHADA&`8 U&`8 U"FC c HSB B r Y B I Q g T Im r r r m p x 8m p x 8m m Y V Y V B i P s V i E Q I E Ht3Q c rD Ds UI f AAAV f FXFE q c q E 5 nm T g   # "k  ( &!&g

el grupo principal al que pertenece thorin es Como podemos ver en la entrada de el grupo aunque adems el usuario Thorin forma tambin parte del grupo . En este chero adems del nombre del grupo viene dado la contrasea de grupo (en general no se usa) el nmero de identicacin del grupo o GID y la lista de usuarios asociados al grupo. La forma ms sencilla de modicar esta informacin en los cheros y es mediante los comandos , , y , especialmente pensados para un sistema Debian y ms fciles de usar que , y . El comando nos permite denir un usuario, un grupo o ambas cosas a la vez. De este modo si quisiramos aadir un usuario con username balrog en el grupo mordor haremos, como superusuario:

Como vemos primero hemos creado el grupo mordor y luego hemos aadido el usuario balrog haciendo que pertenezca a dicho grupo. Adems de la contrasea se pide rellenar unos campos de informacin acerca del usuario que son optativos. En el caso que dicho grupo existiera el primer paso es innecesario. Podemos comprobar que se ha aadido la correspondiente lnea a los cheros y :

E V o Q P Q T FY 3HFHtFE c 3C

t m C C gk i t c SP c ulD`C c FC c

  ' #  

   #  $& $"k   ( #  g   #    $"kk$! #     k! "k$( g   #   

g   # $&$

 ( &$&&g

4 # ( "!

g   #  ) 0  "k$)

2.3.2. Interpretacin de los permisos


#   k

El comando nos permite modicar los parmetros que denen a un usuario o grupo y los comandos y nos permiten eliminar usuarios o grupos. Estos comandos junto con los dos anteriores permiten controlar de forma exhaustiva las caractersticas del usuario . Para los que se aade, como se puede comprobar consultando las correspondientes pginas que sean amigos de las GUIs (interfaces grcas) exister un gestor de usuarios y grupos bastante avanzado en KDE ( ).

Supongamos que el usuario thorin ejecuta el comando


g   #    &$! #     k! #     $' 5 nm T FXFE q c q E c w I D3Sw WE f Q Dc C f r C q AV g c So hq FE s q E C r Q T m c FE g Q T m Q r C Fhp T d Q g C m Q r C F c T d C m c SFFphD Q B g g C C m " UHDY Fz Q g V Y CSDo HDo Ds Q c i c s!`HHFQ r 3E c HE r o o v s C r Q Y V R Q T Q c HB c So r C q Fg c So Uq c Q s F hq r T Y V C E V C r Q T E r V w Y s f FDY Fo Ds Q Df s AHADSDtP c S Ds "H Ds Si P Q E V P i C s V i m P s V m P c Ds ` HtFQ r FDAH C s V i Q i w E Q m P c Ds ` HtFQ r c HE r o C s V i Q m H s I f AAXThC c o s AY q Uq S`C Y Q E Q Ik g Q o r w i m 3C c YHUHhC Unw c SE f Q c q hC t hq ADQ c V B I Q g T Ik C P Q g T r E V TFE q `h96 m FC c Hk c Q s tFQ r Uq DP j @ p 8 x 8 Y V B r P t t DDt m FC c HSk c Q s t Uq DP j Y V B r P Y V HB c HP c tDUC c Uq D c Q s 3DAFXFE q c q E C C g i P P V 5 nm T r t "Q r Sq C t t t @ p 8 x 8 m C C k i r P DD$UU96 cc SP c g lD`C c Uq DP j c SP c tD`C c ADAFXFE q c q E C C g i P P V 5 nm T #     k( #     k$$(   &$&&%

, desde uno de sus directorios. 37

38
Q v p am v x d W i Q xt ADHe"AF3F3ed E V d d pm 8 W AHtFbkU8 r 3t3ed V s xt E q Uq HB q Ab"h8 B Q z a 8 3D3Ua r Y a pm 8 o q "DAx f Hh8 q Db&UFW r 3t3Hd t x x x p pm W 8 d V s g p am v x i Q xt s UV c FC c i He"AtW 3F3ed  & `"  v %  !  0 Q v p am v x d W i Q xt ADHe"AF3F3ed E q Uq HB q Ab"h8 B Q z a 8 3D3Ua r Y a pm 8 S S# $ `&  v %  &h # # $$S$$k $#  "h  s Q Ds s s Q Ds s s Q Ds s s Q Ds s s Q Ds s CB CB CB CB C B rUq rUq rUq rUq r Uq # c Fv C T E c FW C T E c F8 C T E c F8 C T E c Ftd C T E U c s U c U DDU D c D DDU   $"# c H c H c H c  c H c c c P c P c P

El comando en cuestin nos proporciona una salida en formato extendido (opcin ) y con el tamao de los cheros en unidades humanas (opcin ). Como puede observarse, adems del nombre del chero como ocurra en el caso abreviado, aparece mucha ms informacin. En particular la primera columna se reere a los permisos, la segunda al nmero de enlaces no simblicos asociados al chero (links, ver ms adelante), las dos siguientes al propietario y al grupo asociados al chero, la quinta al tamao del chero, la siguiente a la fecha de modicacin del chero y la ltima al nombre del chero. Hay que destacar que un usuario no puede, en principio, escribir en la cuenta de otro ni borrar sus cheros. Adems tampoco podr modicar cheros de otros usuarios, a menos que estos le den el correspondiente permiso. Espero que haya quedado claro, que es muy difcil borrar informacin del sistema Linux a menos que se tengan los permisos adecuados. A continuacin veremos como se examinan los permisos y se alteran, pero hay dos cosas muy importantes a tener en cuenta. La primera es que el usurio puede hacer todo cuanto quiera, bsicamente los permisos no lo afectan. Es por tanto muy importante no usar la cuenta root a menos que sea imprescindible y cuando se use hacerlo con sumo cuidado. La segunda cuestion a tener en cuenta es llevar una poltica adecuada de permisos, lo que constituye un primer paso hacia la seguridad de vuestro sistema. Como se interpretan los permisos de un chero? La informacin que nos proporciona es algo similar a oa , como podemos ver en el ejemplo proporcionado anteriormente:
s Q Ds B s C s Q Ds B s C # # # SS$$S C T E rUq c Fv r C T E Uq c F8 U c U c H c P DDU c H c D c D c  c E B g q c q A c DShC B E B g q c q A c DShC B `"  v %

Los permisos vienen indicados de la siguiente forma: el primer carcter indica si se trata de un chero ( ) o un directorio ( ). As pues es un directorio mientras que es un chero. A continuacin la informacin se reparte en tres grupos de tres elementos cada uno. Estos grupos orresponden a los permisos para el usuario (el propietario del chero, thorin en este caso), el grupo (users) y para el resto de los usuarios que no pertenecen al grupo. Por ejemplo para el chero estos tres grupos son: usuario , grupo y resto del mundo . Dentro de cada uno de estos grupos, signica permiso para leer, permiso para escribir o borrar y permiso el usuario thorin puede ejecutar el programa, para ejecutar. As pues en el caso de leerlo o modicarlo, mientras que los usuarios del grupos bosses pueden leerlo o ejecutarlo, pero no modicarlo. Por ltimo el resto de usuarios no puede ni leer ni ejecutar ni modicar el chero. En caso de que estemos examinando un directorio los permisos de lectura y modicacin tienen idntico signicado que para un chero normal. Sin embargo el permiso de ejecucin tiene un signicado distinto. Tener activado el permiso en un directorio implica que es posible entrar en dicho directorio y hacerlo el directorio de trabajo con el comando , o atravesarlo para entrar en alguno de sus subdirectorios. Por tanto en el caso de nuestro ejemplo el usuario thorin tiene todos los permisos para el directorio mientras que tanto los usuarios del grupo bosses como el resto de usuarios no puede modicarlo, pero s entrar en l y examinar su contenido. Por ejemplo el usuario bombur puede entrar en el directorio y listar los archivos que contiene
FQHEt&DY q c TFE q gyDxem"xh8W c VSDDADW s Q Ds B Uq c F8 Y x p s C r C T E Y 3 s x&AHFI hq c C F3HhC UbFE Y Q v r T E I Q g T Im T I Q v r SADFI Uq c C F3P f XFE T E n nm T

39

2.3.3. Modicacin de permisos


Es posible modicar los permisos de un chero o directorio que sean de nuestra propiedad (o para los que tengamos activado el permiso de escritura ), con la instruccin . Por ejemplo, si pueda ser leido, el usuario thorin quiere que un chero en su directorio HOME llamado modicado y ejecutado por todo el mundo (generalmente no es la mejor poltica, pero bueno...), escribir:
 # w  !&   ' k0  (  &&&g  &h SkzD&  $k$ F& $   A y x A&$SxAkhA&D& SA& $ A&S$ &SDhA&D& SA& $ y x

Si, por ejemplo, el usuario quiere cerrar el acceso al directorio llamado que originalmente tiene los permisos y que l sea el nico usuario que pueda acceder al mismo tendr que eliminar los permisos que tiene otorgados el grupo ( ) y el resto de usuarios ( ). Haciendo
( {ks|$k$ A&$x 2222 y x AkhA&D& SA& $ {  y x sD&SDhA&D& SA& $  # # # $k$

Por ltimo, si queremos cambiar los permisos del propietario utilizamos para referirnos a este la clave as que si queremos eliminar todos los permisos de ejecucin del programa haremos
 # w  c& SkzD&  $k$ A&$ DD A y x A&$SxAkhA&D& SA& $ y x A&S$D`k&SDhA&D& SA& $ 

2.3.4. El sticky bit


Imginemos que el usuario thorin quiere crear un directorio llamado los miembros de su grupo principal (bosses) puedan aadir informacin:
y $$$SHk$k$ F& $ 22  y $$ kHAkhD&D! $$SS &SDhD&D! y $kSD&SDhD&D! y $$$SHk$k$ F& $ DA y $$ kHAkhD&D!  y $$SD!thD&D!

Aqu surge un inconveniente. El permiso de escritura permite a los compaeros del grupo bosses aadir cheros al directorio y modicarlos, pero tambin les faculta para borrar o modicar todo aquello que se encuentre en el directorio, incluyendo aquellos cheros que no han sido aadidos por ellos sino por otros miembros del grupo bosses. Un permiso especial llamado sticky bit nos permite evitar este problema. Cuando se activa este bit pegajoso 3 en un directorio limita las posibilidades de borrado y de alteracin de cheros de los usuarios con permiso de escritura en el mismo: para borrar o modicar un chero en el directorio hay que ser el propietario del chero o el propietario del directorio. En cualquier otro caso, aunque se pertenezca a un grupo con permiso de escritura en el directorio, no es posible escribir o alterar los archivos. Para activar el sticky bit se utiliza el comando , por ejemplo en nuestro caso si el usuario thorin quiere activarlo para el directorio har:
3 sticky:

adj. having the properties of glue.

 (  !"$"g #   # % '  "   ' "$!&uk}0

A&$SxD A&$SxD

en el que todos

 (  &&&g

w (  g )  (  g ) #  )  '  ) ' $"&&$&& "$$&k#

En esta seccin tratamos de dos permisos que deben de manejarse con precaucin, pues pueden ser una importante brecha en la seguridad de los sistemas si no se manejan con cuidado. Cuando se activa el bit de un chero ejecutable al correr cualquier usuario dicho chero lo hace no con sus privilegios, sino con los privilegios del usuario propietario del chero ejecutable. Del mismo modo si se activa el bit de un programa este se ejecuta con los privilegios asociados al grupo propietario del chero y no con los del grupo del usuario que lo ejecuta. Un ejemplo para aclarar este punto. Supongamos que el usuario thorin compila un programa C llamado que tiene el mismo efecto que ejecutar el comando borrando el chero . Supongamos que thorin permite a los miembros de su grupo ejecutar este programa y adems lo hace con el comando :

Si ahora el usuario gandalf trata de borrar el chero y para ello utiliza el programa nalmente tiene xito, a pesar del sticky bit, y ello es porque el programa corre con los privilegios de thorin, su propietario, y l si puede borrar el chero:
  (  w (  !k$$c&g (  g   & (  g   $&$ ) h1 "   ' "}0 y &SSS&tA7S`S2D&Dk$$xF& $ 1 22H D  y &SSS&@SAp$$$S h D&D&  y !S&7@&A$$$S h D&D&  y &$S&z &A$$$S h D&D&  k     (  w (  !k$$c&g (  g   $"    !    $

40

Ntese la mayscula al nal de la cadena de permisos. Indica que se ha activado el sticky bit y que el directorio no es accesible a usuarios fuera del grupo del propietario. Si al nal de los permisos se encuentra una minscula entonces indica que se ha activado el sticky bit y que el directorio es accesible a todos los usuarios. Este bit slo afecta al directorio en el que se ha activado, y no a sus subdirectorios. Un posible listado del contenido del directorio planes es el siguiente

Como podemos ver diferentes miembros del grupo han aadido archivos a este directorio. Supongamos que al usuario gandalf no le parece adecuada la informacin en el archivo que ha incluido el usuario bilbo e intenta borrarlo:

y k 3u7S`S 1 $S$$ $S" 2D2D D $   D3u7S`S~  1 $S$$ F& $ 2D2D D & D3u7S`SD 1 $S$$ kk 2D2D D u7S`SD$S$$ 1 F& $ DD D31u7S`SD$S$$ F& $x  G2  k k y HAp$$$S h D&D&

Por supuesto el usuario thorin s puede borrar o modicar el archivo posee el directorio en el que est el archivo.
y kDS k$S! k $Hka S &Dkx k~S x v  x v pak r!  kH$kkAD& &DkS y x k $7St$ $S$A k &F$HD&A&  kk   (  w (  &$$"g   &$&&% h $k1G7HSDk$$xF& $x  G2  y $$$kDAh D&D& $$S@&Ah D&D& y

  (  w (  &$$&g

2.3.5. Permisos

f e S3!X

f Sc&X

al ser l quin

41
y kH$kA!7 !D&D7kk s  t k $S9k$H3& S!A$DD!D& k y x  y x  St!S&$H3& S!A$DD!D& k 1  Stu7S`SD$$$$S& 2DD A k $S9k$H3& S!A$DD!D& k y x

Si queremos activar el bit a un programa resulta obvio que dicho programa debe contar con permisos de ejecucin para el grupo o para todos los usuarios. El permiso especial tiene un efecto similar pero con los grupos. Si se activa el bit de un ejecutable con el comando chero y el chero puede ser ejecutado por usuarios no pertenecientes al grupo ( ), entonces al ejecutarse el programa corre con la GID asociada a su propietario y no al usuario que lo ejecuta. y , este permiso slo tiene efecto sobre programas binarios En ambos casos, (compilados), no sobre scripts. IMPORTANTE: Por razones obvias los permisos y pueden comprometer de forma innecesaria la seguridad de un sistema si se activan en programas pertenecientes a root o a cualquier usuario con privilegios de administrador. En estos casos deben usarse con cuidado y es siempre recomendable utilizar algunas de las herramientas para delegar la autoridad del superusuario citadas en la prxima seccin.

2.3.6. Permisos numricos


Hasta ahora para especicar los permisos asignados a un chero hemos utilizado las letras , , y (all, other, group y user) para representar a los diferentes conjuntos de usuarios y , y (read, write y execute) combinndolas con los signos y . Existe una alternativa a esta convencin que permite especicar de forma numrica los permisos y que aunque resulta algo difcil de recordar en un principio resulta ms rpida. Especicar el modo de un archivo utilizando el mtodo numrico implica dar un nmero de cuatro dgitos que lleva toda la informacin necesaria. El primer dgito se reere a los permisos especiales, el segundo concierne al usuario, el tercero al grupo y el ltimo al resto del mundo. Por para el usuario, para el grupo y ejemplo 0740 implica ningn permiso especial activado, para otros. La traduccin de nmeros a permisos se lleva a cabo asignando un valor al permiso de ejecucin, al de escritura y al de lectura. Para aadir simultneamente varios permisos sumamos los correspondientes valores. As pues permiso supone . En el caso de los archivos especiales corresponde a activar , activa y el sticky bit. Por ejemplo hace que testle sea un programa con permisos para el usuario, para el grupo y para el resto de usuarios. La aplicacin nos permite determinar los permisos con los que se crean los archivos por defecto. Para saber el valor que tenemos denido basta con correr sin argumento alguno. Si thorin ejecuta el comando obtiene
#        $ ! #   h e " " S!`V ( ' !k " k# k# ! r# V ( ' !k #   4  V h V   ' $! !"}k0 V y   y &$!hD&D!    k# $! (

Esto implica segn lo que acabamos de ver ningn permiso especial, ningn permiso para el usuario y permiso de escritura para el grupo y el resto de usuarios. No parece demasiado lgico... no trabaja directamente con los modos. El resultado La explicacin de esto radica en que
( ' &

 !k  

 k  

" $ "`' 0    !    !

   $

 k  

42 es necesario restarlo a para obtener el modo de los cheros que se creen. Por tanto , un modo por defecto bastante ms lgico. Un ltimo apunte a tener en cuenta, el permiso de ejecucin slo se activa de forma automtica en el caso de directorios. Para cambiar los permisos por defecto basta con ejecutar con el valor numrico apropiado, teniendo en cuenta lo que acabamos de decir acerca de restar a . Para que este nuevo valor permanezca para cualquiier sesin se puede incluir la correspondiente lnea en o .
h h h ``H h H e H H h h h ``$n`H H H 0 $ I   4  # g w ( %1 ) $k&$!&2kP

Un problema que suele plantearse al administrar nodos con UNIX, en especial cuando se trata de un cluster con un nmero elevado de usuarios es la gran disparidad de privilegios existente entre el superusuario (root) y el resto de usuarios. Por un lado tenemos al superusuario con TODOS los permisos habidos y por haber, con la posibilidad de manejar y alterar el sistema a todos los niveles. Por otra parte los usuario de a pie tienen un nmero muy restringido de permisos y una posibilidad muy limitada de poder manejar el sistema. Esto hace que tengamos en muchas ocasiones que matar moscas a caonazos utilizando la identidad de superusuario para tratar con situaciones rutinarias que otro usuario podra resolver. Y el problema ms grave que esto acarrea -aparte del agotamiento del administrador del sistema- es que abre la posibilidad de que la contrasea del superusuario sea conocida por un crculo demasiado amplio de usuarios. Una primera solucin al problema descrito es promover en el sistema una poltica adecuada de permisos, lo que combinado con las herramientas que presentamos a continuacin, en especial , permite solventar al menos en parte este problema. El comando username nos permite transformarnos temporalmente en otro usuario, adquiriendo su identidad. Por ejemplo, si el usuario thorin quiere convertirse durante una sesin en el usuario bombur har
y3&kSDkHD!D& S$D$ x  $k y $DkAh D&D&     &

Al ejecutar el comando es necesario proporcionar la contrasea del usuario al que se va a acceder y tras ello tenemos los mismos permisos que dicho usuario. Si el superusuario es el que ejecuta el comando no necesita introducir contrasea alguna. Si aade un guin al comando ( username) entonces adems de entrar como el usuario se ejecutan sus cheros de conguracin, no se le da un nombre de usuario entonces se esto es, se inicia una login shell. Si al comando supone que se desea adquirir la identidad del superusuario, siendo necesario introducir el passwd de root. Una forma simple de limitar la actividad como superusuario es a travs de la opcin , que seguida de un comando hace que se ejecute ese comando con la nueva identidad regresando el usuario inmediatamente a la inicial, por ejemplo si thorin necesita realizar una bsqueda en uno de los cheros de log sin abrir una sesin de root puede hacer
 0 $  y  kHkkD&A3 HD&A&D3D3D{ k  $k gk !Dk$ $ 7 Sn TAhD!D& `F& $ y x 

Con la opcin se consigue solventar en parte el problema de limitar al mnimo el acceso como superusuario al sistema, aunque sigue siendo necesario introducir la contrasea del superusuario, una informacin que debera ser muy restringida. Un mtodo ms adecuado de solventar

2.4.

  4  # g ) 0  $k&$$)

h h h `H

( ' !k

43 , el problema de acceder a aplicaciones pertenecientes a root es mediante el uso del comando cuyo nombre proviene de la contraccin peruser . Esta aplicacin permite a usuarios normales la ejecucin de aplicaciones del superusuario con la ventaja de que no es necesario que los usuarios conozcan la contrasea del superusuario y adems lleva un registro de las actividades de los usuarios a los que se ha dado permiso para ejecutar las aplicaciones. En todas las distribuciones Debian est presente este comando, si no eswtuviera instalado basta con ejecutar como superusuario. La conguracin de se lleva a cabo en el chero aunque este archivo no se edite directamente sino a travs del comando . En este archivo se denen las aplicaciones que se van a abrir a otros usuarios y cuales van a ser estos usuarios. Pongamos un ejemplo algo articial, en el sentido que esx muy simple, pero nos puede dar una idea de como funciona . Si, por ejemplo, el superusuario desea permitir a gandalf borrar perteneciente a bilbo puede aadir al archivo la lnea el archivo
  !!   !! #     $& 6 k $SS$k S$H"S!D$SSHA"SH$$H$k  !    !! $ #     ) 0  $&!)     ( !! $& &$(   g    &   (  w (  &$$&g

Tras los cual se le pide que introduzca su password (atencin, no el de root) y si lo proporciona el comando es ejecutado y el chero nalmente borrado. En las pginas de , y puede encontrarse una informacin exhaustiva acerca de este comando.

2.5. Bibliografa
1. 2. 3. 4. 5. UNIX for the impatient, Paul W. Abrahams and Bruce A. Larson, Ed. Addison Wesley (1992). Filesystem Hierarchy Standard, Daniel Quinlan, Debian Policy Manual (2000). Linux Filesystem Security, Parts I and II, Mick Bauer, Linux Journal issues 126 and 127 SSC Publications (2004). Gua de referencia DEBIAN4, Osamu Aoki (Trad. al espaol coordinada por Walter O. Echarri) (2005). Manual de Seguridad de DEBIAN5 , Javier Fernndez-Sanguino Pea (2004).

4 http:

www.debian.org/doc/manuals/debian-reference 5 http: www.debian.org

  !! $

  &

( '

y  $ y kSHD k$SSkS"S&D$S{SDhD&D! #    $&

#    $!!

Una vez salvada la nueva versin de

entonces el usuario gandalf puede ejecutar

44

Captulo 3

Compilando el kernel
3.1. Introduccin
La compilacin del kernel, que cuando Linux comenz a difundirse era una tarea difcil y necesaria casi siempre que se instalaba, se ha simplicado mucho. Adems la introduccin de mdulos, aunque el kernel sigue siendo del tipo monoltico, ha permitido reducir el nmero de ocasiones en las que es necesario compilar nuestro propio kernel. De cualquier modo y aunque en general los kernels precompilados que se suministran con las distribuciones GNU/Linux suelen dar buenos resultados es conveniente tener una idea de como compilar el kernel para poder adaptarnos a posibles cambios de hardware no soportados en el kernel precompilado o para optimizar el kernel de acuerdo con el sistema que estemos empleando. Antes de pasar a la compilacin propiamente diche es apropiado dar alguna informacin general acerca del kernel Linux. El kernel de un sistema Linux podemos asimilarlo al corazn del sistema, es el encargado de gestionar la multitud de procesos que estn corriendo simultneamente, tanto lanzados por el mismo sistema, por los usuarios o por el superusuario. Permite tambin comunicar unos procesos con otros cuando sea necesario, es el responsable de gestionar la memoria, los cheros y el ujo de informacin con los perifricos. Las versiones del kernel Linux se agrupan en la serie de kernels inestables o experimental y la estable o de produccin. Los primeros llevan un nmero impar en la segunda cifra, mientras que los estables llevan un nmero par en la segunda cifra. La ltima versin estable en el momento en que 1 . En concreto daremos las instrucciones de compilacin fue escrito este documento es la en un sistema con Debian Sarge. rerindonos a la versin

3.2. Compilando el kernel


3.2.1. Antes de compilar
Una vez que nos hemos decidido a compilar el kernel hemos de comprobar si nuestro sistema posee los requilitos mnimos para poder llevar a cabo dicha compilacin. Nos har falta unos 40MB libres en el disco duro para las fuentes del kernel, y unos 400MB ms para los cheros que se vayan generando durante la compilacin. En la tabla que sigue se incluye las condiciones que debe cumplir un sistema para compilar un kernel :
c b&DQ r c DD3AbFDHT Ct Y Q t I Im i E E
1 Un

lugar

donde

poder .

descargarnos

el

cdigo

45

1 1 92

1 1 9

1 1 2h2

fuente

de

los

ltimos

kernels

publicados

es

o o uDq j G

D q S j ` s 3V DR q ADQ c m c ADAC c E r C f C q S`V q Ag q FY Ae&DeA"DDDx w P y B Q E V Q Y Y P V P Q E xt x xm d xm x x x iFD FQ r c Q3HE q 3D q ~8 HF thQ c DDFS r C q AV c C i c C hC f AFC c |m c FDDC c E r C f AQ r c FHe&De&H"DDDx o d E T E o B V p y p y Q g E E Q E g P V y Q Y Y E Q T E o xt x xm W xm x x x x y B p D`Q f q ADP r 3C r r m f r s Q q FDAC r T f Dv j m c ADDC c E r C f AFY i Dq &Dek"DDDx R Q C Y Q v Q Y Y w V s q 8t x xm 8 xm x x x x v B p D`Q f q AHP r 3C r r m f r s Q q FDAC r T f Dv j m c FDDC c E r C f AY B q AS9C f j Se&Dek"DDDx R Q C Y Q v Q Y Y Q E V i g } xt x xm 8 xm x x x @ DxFQ c 6 c AADC c E r C s AA3FY q UHtSp 6 AAFA3AFAAFA9DAH|i c C DHE r m s AD3pe"h"D"DDDx a R Q Y Y z I z I z I y z I y z 8 x W t Y Q y at o 8m x xm x x x y @ w g V z v @ AAQ c 6 c ADDC c E r C j v j DFSp HFHp {DFFAh8 DAH i c C HDE r s"Q f Ho c HE Uq G`pb"h"D"DDDx a x R Q Y Y @ v I v 6 z I z x W t Y Q m V Q r o q Wt o 8m x xm x x x @ a x R 6 Q DAQ c HDP q c ytQ f Ho c HE r d FSp HHSp {AFFhDADwi c C HHE r "HDP q c B j Ae"h"D"DDDx V Q @ v I v 6 z I y z 8 x W t Y Q m Q xt o 8m x xm x x x @ HFQ c HDP q c ~ DADwi c C HHE r "HDP q c e&U"D"DDDx a P R 6 Q y d 8 x W t Y Q m Q B d xt Q 8m x xm x x x c AADC c E r C pu3 @ FY q UDtSp X6 DA3AFFFDA3AhAAHwi c C HHE r sm c AADC c E r C 3 te"h"D"DDDx Q Y Y o W y w g V z v z I z I z I y z I y z 8 x W t Y Q Q Y Y y yt P 8m x xm x x x @ AAQ c 7A &t3 @ FY q UDtSp X6 DA3AFFFDA3AhAAHwi c C HHE r sm c AADC c E r C 3 te"h"D"DDDx a x R 6 d 5 p y w g V z v z I z I z I y z I y z 8 x W t Y Q Q Y Y y at P 8m x xm x x x @ AAQ c 6D p&t3 @ FY q UDtSp X6 DA3AFFFDA3AhAAHwi c C HHE r sm c AADC c E r C 3 b"h"D"DDDx a x R a 5 y w g V z v z I z I z I y z I y z 8 x W t Y Q Q Y Y y Wt P 8m x xm x x x @ aAAQ c WH &t3 @ wFY q UDtSp X6 DA3AFFFDA3AhAAHwi c C HHE r sm c AADC c E r C 3 "h"D"DDDx x R 6 5 p y g V z v z I z I z I y z I y z 8 x W t Y Q Q Y Y y 8t P 8m x xm x x x @ AxAQ c 5 &ty3 @ wFY q UDtSp X6 DA3AFFFDA3AhAAHwi c C HHE r sm c AADC c E r C 3 te"h"D"DDDx a R 6 8 p g V z v z I z I z I y z I y z 8 x W t Y Q Q Y Y y xt P 8m x xm x x x R 6 W FQ c pE c d Ds Q c FH dFY q UHtHp DAFFFAFSDAFFhDADwi c C HHE r "HDP q c t f "D"DDDx C s i o @ w g V z v 6 z I z I z I y z I y z 8 x W t Y Q m Q B d 8 8m x xm x x x R FQ c 6xE c d Ds Q c FHo dFY q UHtHp DAFFFAFSDAFFhDADwi c C HHE r "HDP q c et f "D"DDDx 8 C s i @ w g V z v 6 z I z I z I y z I y z 8 x W t Y Q m Q B d x 8m x xm x x x @ d x R 6 FAQ c E c t3D Ds Q c FH tFDDwi c C HHE r "HDP q c ee"D"DDDx C d E C C s i o d p W t Y Q m Q B d xt 8 xm x xm x x x @ d x R 6 B AAQ c {AAp c ADAC c E r C w c UHtFDH|i c C HHE r s&HDP q c E s e&De"D"DDDx Q Y Y C g Q p W t Y Q m Q B C p xt x xm x xm x x x Y 5 nm T q f i s FX3E q c q E 0 g &

Versin Cmo comprobarlo Gnu C 2.95.3 Gnu make 3.78 binutils 2.12 l util-linux 2.10o module-init-tools 0.9.10 e2fsprogs 1.29 jfsutils 1.1.3 reiserfsprogs 3.6.3 xfsprogs 2.1.0 pcmcia-cs 3.1.21 quota-tools 3.09 PPP 2.4.0 isdn4k-utils 3.1pre1 nfs-utils 1.0.5 procps 3.1.13 oprole 0.5.3 Es importante tener en cuenta que compilar el kernel es una tarea que requiere de bastantes recursos y que puede tomar un tiempo considerable en una mquina que no sea demasiado potente. Sin embargo no debemos olvidar que dicha compilacin no tiene porqu llevarse a cabo necesariamente en la mquina en la que va a instalarse el kernel. Es posible compilar en un ordenador potente y una vez compilado el kernel instalarlo en otra mquina. Tambin es posible (y recomendable) compilar el kernel como un usuario que no sea root de forma que as nos evitamos meter la pata en algo bsico como root provocando un dao quizs irreparable al sistema 2 . Si contamos con las herramientas antes citadas podemos proseguir, aunque antes es conveniente tener una idea del hardware del ordenador en el que correr el kernel. Para ello es muy til la orden que nos lista todos los dispositivos PCI 3 disponibles en el ordenador.

46

Tambin es recomendable tener en cuenta la informacin acerca de la CPU de nuestro sistema lo que como hemos visto en el captulo de administracin local del sistema se consigue haciendo .
!"S&  #  !    4  # g  #  ! "Srg #  !   '  !&S$k& #&"#k0$&k$ g    # 0  #&!$g  !  g g W&&k% (   W #k"!0 '  # ( %  w 4 $ W ! DkkGG Sk  kF1 !"4 4 0 4   "k$&$ kk!   ' g  &k&$$4 #  ! ( ' #  4  S   #  ! "S ' (  #  ! 0 0 !"S$

 4  0 ) 0  # g ) ( &$g &"&0

3 PCI:

2 Dont

take the name of root in vain... Encontrado en el kernel-source-2.6.8 Peripheral Component Interconnect

47 A continuacin hay que obtener el cdigo fuente del kernel. Si el kernel que queremos compilar es uno de los recogidos en la distribucin Debian que tengamos instalada en nuestro sistema basta con instalar el correspondiente paquete deb 4 . Tras ello tendremos la fuente del kernel comprimida en el directorio . Se descomprime y desempaqueta:
kke S`!S`$ kXSS$   kS!HkkH&SD&D! kS!HkkH&SD&D! keSkX SS$ skS!HkkH&SD&D!  kb XXSS$  kS!HkkH&SD&D! 0 # )  !"# )

A partir de ahora comenzar la compilacin del kernel y para ello trabajaremos en el directorio .

3.2.2. Compilacin del kernel


Una vez que estamos en el directorio un primer paso antes de comenzar la compilacin del kernel es salvar la conguracin presente en el sistema, por si fuera necesario recuperarla ms tarde para lo que hacemos
HhA!k9$F$ 1 1  0 #     # 92h2$k$& Dkh $Ak D DS!`$ k& !HkkH&SD&D! 

Con esto conseguimos que todos cheros se reeran a esta versin particular y no perjudicamos de este modos a otros cheros presentes en el sistema. Por ejemplo, los mdulos que compilemos para nuestro kernel se instalarn en
A kA` k !AA$ t Wk 2D 2&22S 5 2222HW$ 22 k !AA$ B  { B y E B B E y E B B E  D y t B y

En el directorio se encuentra un chero que es de gran utilidad a la hora de obtener informacin sobre como compilar el sistema. Tambin puede haber informacin especca para alguna distribucin en el caso que hayamos instalado el paquete con el cdigo fuente asociado a dicha distribucin. El siguiente paso a la hora de compilar el nuevo kernel es decidir su conguracin. Esto puede llegar a ser una tarea realmente mproba pues hay que decidir entre un gran nmero de opciones y muchas de ellas dependen del hardware presente en nuestra mquina. Existen aplicaciones grcas que nos ayudan en este paso y que proporcionan cierta ayuda a la hora de decidirnos si incluir o no una funcionalidad en el kernel. Como punto de partida podemos utilizar el chero de conguracin por defecto para la arquitectura de nuestro o el chero de conguracin procesador que podemos encontrar en que Debian instala en el directorio si queremos modicar un kernel de una versin que tenemos instalada en nuestro ordenador 5 . A continuacin limpiamos totalmente de cheros provenientes de compilaciones anteriores el sistema.
4 Por 5 En

ejemplo seleccionando en dselect el paquete kernel-source-2.6.8 . nuestro caso ser

  4 

v Ski

( "v

i i i h 2&"k$`k

y decidir que etiqueta vamos a usar en el campo


6 t z 2 B F& $W 2D 2B 6 t B  { 6 E B B E 2S 5 6 E B B E  D 7222

del chero

  % $")  4  0 4   ) ) 0 # ( ) !k$!$"& 91

1 1  0 #     # 2h2"$$"$

v v W t vt W AD`3e"e&` q o r C f SFAC `I I E C B

) 0 ) #  # &&)

1 1  0 #     # 929k"&

48
A$ i Q P Q V 3HtS3g  !`1 4  0  #  0 &$
.

Una vez decidida la conguracin del kernel podemos directamente pasar a compilar el kernel 6 para lo que haremos
  k&`!kk& XH`H SkSkW!Hk$D&S D&D&

y dependiendo de la CPU que dispongamos nos armaremos de ms o menos paciencia hasta que termine la compilacin. Si tenemos suerte, tras una serie de mensajes obtendremos algo similar a
XH`H SkSkW!Hk$D&S D&D&  k x !`$kHk $SS$$D! u$ k  1 z2AAkH! $kkx   $kD& kD$ $ ) ah7  

Tras un buen rato con la CPU trabajando a tope si no hay error alguno llegaremos a recuperar el prompt con lo que podemos pasar a instalar los mdulos recin compilados. Este paso es necesario hacerlo como root as que toca hacer si hemos realizado la compilacin como usuario de a pie.
  kH!A$ $  &k& XH`H SkSkW!Hk$D&S D&D& 

 &`$kHk$DH$F! XH`H S$  !H$H&S

  $  &k& XH`H SkSkW!Hk$D&S D&D&

  Dk!k& XH`H SkSkW!Hk$D&S D&D&  H`!`$ kW S3$!Hk$D&S D&D&

$Skk&3$!Hk$D&S D&D&  S XH`H SkSkW!Hk$D&S D&D& 


6 En

Para congurar el kernel existen cuatro herramientas, que son : Es la opcin ms pesada de usar ya que simplemente presenta una seria de preguntas que deben ser respondidas y si nos equivocamos... vuelta a empezar. : Esta opcin lee las opciones por defecto de un chero previo y rehace los enlaces y cheros necesarios de acuerdo con l. Sirve si hemos hecho pequeos cambios en el cdigo fuente. En este caso tenemos un frontal basado en que resulta bastante intuitivo y de naturaleza similar a los mens que nos encontramos en la instalacin de Debian. Permite acceder a una pantalla de ayuda en caso de necesidad. Frontal grco bastante intuitivo y congurable con una seccin de ayuda que se muestra para cada seccin del kernel. Adems muestra posibles problemas de dependencias lo que ayuda a diagnosticar errores en la construccin del kernel. Otro posible frontal grco . es
 4  0    4  0  !$' 4  0    k$ 4  0    4  0

on esto ha temrinado la compilacin del kernel que en nuestro caso estar en el chero

Ahora debemos compilar los mdulos asociados al nuevo kernel con la orden

el caso de los kernels de la familia

t dt &W

es necesario ejecutar previamente el comando

Q f r Q c DAQ c r V q 3HFI s D r 9I f SFH c bt r V q 3HDD3AbFDHT Q o B Q P Y V V g C P I C B Q Pt I Im i E E Y g E T v p P y Y `ut g H g pAY q Ah HQ r c S3SH Uq D9C f E q g c `DHE q q DD`DbFAST Q I r Y I g t Q T Y V Pt I Im i E E
versin en

t !DkD! $$SWW 22t DS&DH! k $SxTS DS!`$ k& !HkkH&SD&D! B E B B  t W$ 2&k2t 2Fc&uDkH $ $SS&DH! D DS!`$ k& !HkkH&SD&D! B E B B  t & 2Wk2t 2Dk&`!kH$ $H !U!Sk $SS$$D! D DS!`$ k& !HkkH&SD&D! B E B B 

Por ltimo hemos de congurar el gestor de arranque, ya sea este o . Daremos las instrucciones relativas a ya que es el gestor que utilizamos en el curso y se est implantando con fuerza en perjuicio de . En este caso lo nico que debemos hacer es editar el chero de conguracin de que como vimos es y le aadimos la informacin referente al nuevo kernel, que en nuestro caso podra ser algo similar a

Si hubiramos incluido en la compilacin como mdulo algn dispositivo necesario para montar el sistema de cheros raz entonces tendremos que preparar un para el kernel con el comando . Ms detalles en el Kernel Rebuild Guide HOWTO (ver seccin Bibliografa). Ya creado el kernel, compilados e instalados los mdulos slo nos resta hacer que el sistema pueda arrancar con el mismo. En primer lugar hamos de copiar algunos cheros

Si se ha creado un chero hay que incluir la consiguiente opcin consiguiente. En tendramos que incluir las siguientes lneas en el chero

4  0 1    ) 0  !32&$)

k62EB2DE26kkpA&S$ DSXSk&`!kH$ $Hx$  Ayk  )  h$ kxD$k$D! &9$' "$$$"$")  1   ) %  #  )   % l j i !k$h

  $"

l j i !k$h

 # !$

y no debemos olvidarnos de correr el comando sector de arranque quede nalmente instalado.

  $"

SS S k  6 6 A $D`$ 6 A kF S` `!kSk $Sk &U  # !$    "

  & l j i $kh

3.3. Bibliografa

 # $ 

'

1.

Kernel Rebuild Guide HOWTO, Kwan L. Lowe, en

)  #  1 g   1 ) ) # g !!hfkk&$9$

3.

2.

7 ltima

Administracin avanzada de GNU/Linux, Josep Jorba Esteve y Remo Suppi Boldrito. XP04/90785/00019, Formacin de posgrado Universidad Oberta de Catalunya (2004).

Gua de referencia DEBIAN8, Osamu Aoki (Trad. al espaol coordinada por Walter O. Echarri) (2005).

como superusuario para que el nuevo

.
7

49

50

Captulo 4

Uso de scripts para administracin del sistema


4.1. Introduccin
En esta seccin tratamos de dar a conocer una de las herramientas que de forma ms frecuente tendr que utilizar el administrador de sistemas en su quehacer cotidiano, el uso de scripts. El trmino script se reere a un programa, las ms de las veces no demasiado extenso, escrito en un lenguaje no compilado. Los scripts ayudan al administrador de sistemas a la hora de automatizar tareas y la prctica totalidad de los programas que ha de realizar un administrador se llevan a cabo con ayuda de estos scripts. En concreto vamos a presentar dos posibilidades, la primera son los y la segunda en Perl. scripts en En el primer caso daremos un breve resumen a la nocin de shell y adjuntamos al nal de la presente gua un HOWTO sobre programacin bsica en . En el caso de Perl daremos unas muy breves nociones sobre el lenguaje y algunos scripts interesantes. Este lenguaje resulta de gran actualidad y es muy rico por lo que al introducir esta seccin nuestra intencin es darlo a conocer y animar a los lectores a profundizar en su conocimiento. Seguro que no quedan decepcionados por l. Una referencia necesaria y probablemente el nico libro de programacin que uno de los autores (FPB) asegura que se lee tan vidamente como una novela es Learning Perl, tambin llamado the llama book (ver seccin de Bibliografa).

4.2. Shells
La palabra shell en Unix es sinnimo de interprete de comandos, una herramienta de gran potencia que sirve para comunicar al usuario con el kernel y le permite lanzar programas. El nombre proviene del hecho de que es un intermediario entre el usuario y el kernel del sistema. El objetivo de una shell es leer los comandos que le pasa el usuario a travs de una terminal alfanumrica, que puede ser una consola o una ventana de terminal. Por razones de compatibilidad es recomendable utilizar un tipo de ventana de terminal que no est ligada a un gestor de ventanas o un entorno grco determinado. De este modo podremos trabajar en diferentes ordenadores independientemente del entorno grco que estos tengan instalado. Un tipo de ventana muy comn y cmoda es la llamada . Para abrir una de ellas podemos denir un atajo en nuestro entorno grco o simplemente escribir en la ventana de terminal que nos haya proporcionado el entorno grco. Cuando se realiza un login en el sistema, cuando se entra en una terminal alfanumrica (una
' #  k& ' #  &

51

&&% (

( !"%

c DDC pc C s c f DAHE C Y f E Q E q B q T Uq Q Uq FQ r S f AFDI r C r c FE E o o C r r Y Q P C HFg c DDC f H r DSDFC r c FE C Y j C I o o @ Q v 6 $g c HDe hq c E As AY f r s s V Q T E V Q Y o o C r C q E r HR r C f FDP q `s w f HAAAFDI r C r c FE V Y P P V w Q s Q Ds AY c HE f V c T f HV r C q E q DADo q f i s s V f Q E q B q T rUq Q Uq 3 F3 hDUq F9ShS f AFDI r C r c FE o o C r Y o C r q r r Q B C E E Y Q Q s HH q i Uq FAP q c DP c C B r T E c DDC f P r `C c H f B C Y V c DDC f s FDFpAAi Dq P r DSDFC r c FE C Y V P Y C B o C w V Y s C I o o c ADC pc DP c C B C Y f Q Uq Uq Y B r F r C Aq c C s c f DAHg q E Q T E Q E Q r r s hq Uq B r ADFC Aq c C s c f DAHg q E Q T o o s E Q E Q r r Y Uq Uq Y B c C s c f DAHAFDI r C r c FE E Q E o o C r r Y Q Q B Y Q r s DH q i hq c HP c C HV r c HE Uq r P r `C c 3V c SS3AFDI r C r c FE V i C E V o o C Q C I o o r C f q HR q E f V r DSDFC r c FE E T Y T SF q F q T s FS3HAFDI r C r c FE w V Y V o o C C r 3SP hq c SUV r FSE q E C o Q g Q Y c Q P Q r c CSEHi q 3f s HtAY q o  Df AD9 r HFDAAY s r f w E E C Q P C g Q R V Q s Q g Q Y s E i f Q r s HFV Ds ~FDC r C f S3Q c HE Uq Uq T f E q r 3`DC f Hh8 HDAFDI r C r c FE W a I x o o C r s g Y

t t ADt c DDC p`f C Y f c f I r S 3 f I g S 3 Uq c E Ds AY f r s s V T E u f I FDP q ``f S 3 Q D r V c As AY Af s V f f f I B S 3 c SSF r D9 Q B g B c DDC f H9 C Y B f SB 3 P I c DDC f H9 C Y P B B s P r C f Q Dq AY q g r f 9 s Y B s P r C f Q Dq AY q ~o f 9 s Y g f B 3 I c SSF r 9 Q B g B I FV 3 I q V 3 T I 3V 3 hq c E s U v r f r Df 3 W a I HU8 3 m Q P r q s "HSUY f Ur C q S`Q c A E i C Q T

s c VP r VgD9C f Q` DDt r C q S`` g c DD g t t E i C Q E s m Q y 8 6 "HAV s @ DU9g c HD Q v i Y Q T `HS9g c DD XFE q c q A hq c C FE Q E nm T E r T ' #  &$ g   &! g   &

Cada una de ellas presenta sus propias particularidades y diferentes cheros de conguracin para denir las preferencias del usuario. Nosotros nos centraremos en la bash shell por ser la ms extendida entre los usuarios de GNU/Linux. Hay que destacar que la shell, adems de ser un intrprete de comandos, es en s misma un lenguaje de programacin para la construccin de scripts, programas que facilitan especialmente tareas de administracin del sistema. En el apndice situado al nal de esta gua se incluye la traduccin al espaol del HOWTO titulado BASH Programming - Introduction HOWTO en el que se presentan los rudimentos de la programacin en BASH. A continuacin damos informacin que, aunque bastante bsica, es relevante para aquellos que . Una vez que hemos entrado en nuestra podemos no estn familiarizados con la shell comenzar a dar rdenes al sistema. En concreto para casi todos los comandos de Linux puede obtenerse informacin si corremos el programa seguido de alguna de las siguientes opciones: , o . Por ejemplo, si queremos conocer las posibles opciones del comando podemos hacer:
' #  k& !"% (

xterm, como hemos dicho) o cuando realizamos una conexin remota con telnet o ssh a un sistema) se entra directamente en una shell. En Unix existen distintos tipos de shells, entre las ms populares destacan:

52

tcsh: C shell, con sintaxis parecida al C (versin desarrollada a partir de

k0

ksh: Korn shell. zsh: Z shell. bash: Bourne again shell, shell por defecto de Linux. .

53 y muchas ms opciones. Si desea consultarlas todas puede subir y bajar una pgina en su usando las teclas <SHIFT-RePag> y <SHIFT-AvPag>. Esta forma de consultar las opciones es rpida, pero no sirve para todos los comandos y su salida a veces es demasiado breve. Para obtener ms informacin acerca de algn comando ya se sabe: se puede consultar la pgina de manual o el para dicho comando. Toda shell tiene denidos una serie de comandos internos como o pero tambin pueden ejecutarse utilidades Linux como o entre otras. En la seccin ?? se dar una lista de los comandos bsicos que debemos dominar con soltura usados cuando se trabaja dentro de una shell. Adems es conveniente conocer una serie de combinaciones de teclas que resultan de suma utilidad, entre las que destacan: <TAB> Completa en comando que estemos tecleando. Flecha arriba y echa abajo Navega sobre las ltimas instrucciones que hemos escrito. <CTRL-e> Sita el cursor al nal de la lnea de comandos. <CTRL-a> Sita el cursor al principio de la lnea de comandos. <ESC-f> Avanza el cursor una palabra en la lnea de comandos. <ESC-b> Retrocede el cursor una palabra en la lnea de comandos. <CTRL-k> Borra desde la posicin del cursor hasta el nal de la lnea. <CTRL-y> Pega lo que se ha borrado en ltimo lugar. <CTRL-r> Busca en el historial de comandos de acuerdo con el patrn que se vaya tecleando. <CTRL-l> Borra el contenido de la terminal. <CTRL-u> Borra la lnea entera. <CTRL-d> Similar a CTRL-c. Interrumpe un proceso. <CTRL- > Deshace el ltimo cambio realizado. Podemos practicar con estas combinaciones, y acostumbrarnos a su uso nos permite alcanzar una gran rapidez al trabajar con el ordenador. Al iniciarse una sesin el usuario posee una serie de variables denidas. Algunas de las ms importantes son Nombre de la mquina o nodo donde est orriendo la sesin. c
v h i S$2U w ( ' ' #  &$ #  g $"$ (  !"$( #  ' !  4 &

Nombre del usuario (username). Shell activa. Path del directorio home del usuario. Lista de directorios donde se buscan ejecutables. Denicin del prompt del usuario.

U `2 v i 2U U h `k !

i kS"j

54 sin aadirle opcin El valor de estas preferencias puede consultarse mediante el comando alguna. Estas preferencias del usuario en una bash shell se denen a travs de varios cheros que se leen durante el arranque de la sesin: Fichero de conguracin del sistema. Fichero de conguracin del usuario que complementa al .
$   4  # g ) 0  $"$$)

chero

Los cheros y se leen siempre al entrar en el sistema o al abrir una terminal, pero el slo se lee cuando se abre una login shell. Hay que destacar que los chero se leen independientemente de la shell que usemos. En estos cheros se denen, las variables de entorno antes citadas como: , , , y tambin se denen los alias que deseemos usar o el mensaje de bienvenida que deseemos ver al abrir una sesin, si deseamos ver escritos sobre la pantalla mensajes de otros usuarios, etc.

4.3. Comandos ms usados


A continuacin presentamos algunos de los comandos que solemos usar con mayor frecuencia y algunas de sus opciones. Hay que destacar otra vez que una descripcin detallada del funcionacomando. El administrador de un miento y opciones de estos comandos puede obtenerse con sistema debe manejar con total soltura al menos los comandos siguientes: Redirecciones y tuberas El UNIX ofrece la posibilidad de cambiar el input o entrada de un programa (por defecto el teclado) y su output o salida (por defecto la pantalla). Un comando normalmente comunica con nosotros a travs de los tres canales siguientes: standard input - teclado standard output - pantalla standard error output - pantalla En UNIX podemos conectar cada uno de estos canales con un chero, de modo que la salida de un programa puede ser utilizada por otro programa. Por ejemplo, podemos: almacenar la salida de un comando en un chero, por ejemplo podemos almacenar la salida del comando en un chero:
8 am e!W UU&U8 D8 r g v 8m a 8 C Qt P Q g E 8 E C o C S3So s e&V q AUt r DT c D8 I s Si d dt x xt 8 C D8 r xt x e"m E r C T AI s Si Uq c FE s D8 s D"x W xt g d p W x C Qt P Q g Et T p E E C FAC c s He&x `Fbm!DW U8 r s e"V q A`FE q c q E DI s Si xt p Wm a Db&HdDx r C xt x e"m 8 I s Si SFC c o E C P s yDe&x t d g d pm W C xt x e"m W E DI s Si SFC c o C P s Dae"Fpx`Fb!DW Dx r x x q g P q 2`AFDx r C x em C P SFC c o s Det&x Ad s o `S`H g q g Fz d Dv v o D r&xe"x m&HAV c DAAAAsr s c Q s s&Dk"ADDAek&Dx t Q Q R V P V C Y p r x am 8 r w V P 8 i y am 8 dm 3GHP q HV s AV f uX3E q c q F Uq c FE u V Y E nm T E r C T u V Y 3GHP q HV s uX3E q c q F Uq c FE nm T E r C T ( '

v i cU

U h `$

T s 9 V B T s 9 V B EDSSg E T s V9 B v j u p xt e&x

a xt s De&x 8 xt s e&x W xt s He&x 8 xt s e&x y 8t s U&x q Ad d r W xt !He&x

0 # ( % $ &&1

  4  # g ) 0  &)   4  # g w ( % $k&$!&1   4  # g &1   4  # &g $4"$c &&1  # g w ( %   4  # g ) 0  $"$$) 0 # ( %  !"1

Fichero de conguracin del usuario que complemente a los dos anteriores.

v i `kh

55 Mandar solamente los mensajes de error a un chero: comando chero Mandar la salida y los mensajes de error de un comando a un chero: comando chero Aadir la salida de error de un comando a un chero (no borra el chero si existe, a diferencia de los tres casos anteriores): comando chero Especicar a un comando que lea los datos de entrada de un chero en lugar de hacerlo desde el teclado: comando chero
w   (  `&' 0  " 

Usar la salida de un comando como datos de entrada para otro comando: Combinar estas posibilidades: Trabajar con cheros y directorios mostrar el contenido de directorios imprimir el nombre del directorio actual cambiar el directorio actual a otro directorio o a home crear un directorio nuevo borrar un directorio vaco.
#  !   1  #  0 4 w   ( '  0 1  #  0 4 w   ( '  $h2"& $$!p`&&!0 w   ( '  $!0

copiar chero(s) a otro chero o a un directorio cambiar de nombre un chero/directorio, borrar un chero crear un link
 !$

muestra en pantalla un chero de texto

dirigir uno o varios cheros a la salida estandar cambiar derechos de acceso de un chero encontrar cheros y realizar acciones con estos cheros encontrar texto en cheros

Compresin y empaquetamiento de cheros comprimir un chero comprimir un chero .


# ( "1 g `

Empaquetar cheros en un archivo

g "%

  ' kk0

# "#  '

 #  &'

  4

g  # "k

 &kg ( 0 # ( &  0 g 0 !'  ' # '

56 Informacin y entorno mostrar o cambiar fecha y hora del sistema


 ( &!
2

mostrar o cambiar fecha y hora en hardware

4.4. Scripts en Perl


4.4.1. Introduccin
El lenguaje de programacin Perl, creado por Larry Wall 1 es un lenguaje interpretado que se . Es ms sencillo de encuentra a medio camino entre lenguajes como el y los manejar que y (mucho) ms exible que programar directamente en el lenguaje de una . Resulta especialmente adecuado para el manejo de patrones y el tratamiento de cadenas. Probablemente su aplicacin principal sea la administracin de sistemas, al menos lo fue en su origen, pero hoy en da al echar un vistazo a la pgina web de CPAN 2 comprenderemos que el lenguaje ha ido mucho ms all de su propsito inicial y en la actualidad se emplea en multitud de reas y con muy diversos nes. Por ejemplo gran parte de los cdigos que se emplearon en el proyecto GENOMA fueron realizados en Perl. De cualquier modo en el mbito de la administracin de sistemas sigue siendo un sistema cada vez ms usado y EL lenguaje si lo que tratamos es de tener rpidamente un programa que nos resuelva un problema puntual. Como hemos comentado en la introduccin de este captulo de la gua no pretendemos proporcionar una informacin exhaustiva acerca de Perl, ni siquiera un tutorial del lenguaje. El n de esta seccin es presentar al lector alguna de las posibilidades que brinda el lenguaje Perl para que l prosiga descubriendo lo mucho que puede ofrecer este sorprendente lenguaje de programacin. En general toda distribucin Debian se instala incluyendo una parte mnima del lenguaje Perl . Esto se debe a que muchos de los scripts bsicos en Debian estn escrien el paquete tos en este lenguaje. En caso de que ese fuera el nico paquete Perl instalado nos conviene instalar , y siguiendo el procedimiento habitual de tambin los paquetes instalacin de paquetes Debian.
0    $g # $&

4.4.2. Nociones Bsicas


El tpico programa soso que imprime algo en la pantalla es muy fcil de realizar en Perl aunque, eso s, como siempre en Perl hay muchas formas de hacerlo. En primer lugar podemos ejecutarlo directamente desde lnea de comandos como
x ) x y c3HlS$aS&F&wS9$ kh D&D&

1 Perl es un acrnimo de Practical Extraction and Report Language, aunque tambin su autor da una segunda posibilidad que es Pathologically Eclectic Rubbish Lister. Como siempre en Perl, there is more than one way to do it

   $&

0    #  &&&"g

     '  #  &$"kD&"g

 #  "&g

 ( %  #  &&S&&g

c bt r i f AD3DbFDST C V t I Im i E E

) kak

0   0 "$k  " y 

mostrar el entorno o ejecutar un comando en un entorno especial informacin sobre usuarios activos.

57 Como se puede imaginar implica un retorno de carro. Tambin podemos hacer un script que haga lo mismo, algo tonto, pero por algo hay que empezar. Con nuestro editor favorito crearemos un chero tal como este:
qc3SnS$akS&TA& ) q r!F" ! q 4D&H7! $ $HA"SkH&S4 

Como podemos ver la primera lnea del script ha de indicar el PATH al programa , las dos siguientes no son imprescindibles, pero ayudan a la hora de programar en Perl. Cada orden va seguida de un punto y coma. Si ahora nos sentimos con fuerzas para avanzar un poco ms vamos a suponer que necesitamos escribir un programa que nos permita, por ejemplo pasar de temperaturas en grados centgrado a Kelvin. No es un gran desafo pero algo es algo. El nuevo programa tiene el siguiente aspecto
 #  &"g y qc3H`x$Dy9kkD$kU@$Dktkk $$AkuTA& y E qyD37@kkDk9z$Dn$ 1 y 6 y q3$`tu ( 9@k$Akse$D$A 6 y q U9k  $$D kA TA& q r!F" ! q 4D&H7! $ $HA"SkH&S4

y lo salvamos con el nombre o con el que queramos. El uso de la extensin es comn para denotar un ejecutable en Perl, pero no es en absoluto necesario 3 . Repetimos la operacin anterior y ahora:
k$Dkk kk $$AkE U9k  $$DkkF y $b$A&HhD&D! y b$A!HS&SDhD&D!  g1 w   g '  &2`$"!S  &g

En este segundo ejemplo hemos introducido las variables que como puede verse se indican con el carcter $ y como podemos ver en la salida del programa las variables entre comillas dobles se interpolan por su valor. Si las comillas son simples no tiene lugar esta interpolacin. Adems tambin hemos introducido la posibilidad de leer el standard input, en este caso el teclado a menos que redirijamos la entrada al escript. Ello se consigue con el FILEHANDLE . La orden lo que hace es eliminar de la variable leda el retorno de carro situado al nal de la misma. Puede comprobarse qu ocurre cuando se elimina y como afecta a la salida del script. Un tercer paso lo puede consistir este script:
h &2$ q 4D&H7! $ $HA"SkH&S4 g '  !&0

3 La

extensin

suele emplearse en el caso de mdulos.

 g1 w   g '  "`&!`

y lo salvamos con el nombre adelante:

. Para ejecutarlo le cambiamos los permisos y

y $b!$A&HhD&D! y b!$A!HS&SDhD&D! Y i )  $ua

B D s 6 r "P hq o 5 f f 2 r DDtAw c CSE f Q c q P c q P c s SQH r VT f FC rDr V Q q P c C c q P c s c q HT f m t t C E E P 5 @ SID F& Fu&SG s ADPFGTD Fu&SG s ADF6 Ds AY r P t P I n w V I P I n w V P s Q r t c BHF r tB~SE s SpEAV g c CSP q YHHVFC s VST s AVHtoFC c HFAQ q P Q g V Q C V t o V R E r w P Q B g 5 } g3S j EDo q T s G s AHFw g w V P 5 f gFS j Do q T s G c q P c s w g } E Q s HQ Y 5 2 r r s wAHPhFC3 c QSgF r c q Fu&Q fc `C s c q FC r D 3Y ut s FY q DE s AYsD"HAV s r r QxE Uq c i V o B P P i Q o V m m Q r 5 @ 8 } 5 6 AFS j Ao q 5 S@F c q FC r AFGD}3S j Do q T s u8 }FS j A6o q 8G r C q S`C c q Fw g P G E 5 E i P 5 cP Uq D"AY q tQ s r zm m Q z s Ur c HQ s 35 r q V cE f q c E s Q s 5 c t v F q Dc S~5 w B 5 5

P Q E V c FHADQ `f

t Q E s "g q Q Dq f Q c ~V c DDAt5 i Q E o V Q Q B Q R V T E V T E C P r DDAASFw c SE f Q c q V Us AY q 3E Dq tHR q SSi q 3f 5 r q Q o o C s Y V Q C E E c Y c `I Uq `I c s `bc5 Q i r B I

0    #  &&&"g

Que una vez ejecutado nos proporciona un chero llamado donde se almacenan las temperaturas introducidas y su equivalente en Kelvin. Como vemos tenemos a nuestra disposicin bucles (loops) con la orden y podemos denir FILEHANDLES diferentes a los estndar con el comando . Es posible abrir cheros en modo slo lectura, lectura/escritura, concatenacin etc. La manera de obtener una descripcin de esto es consultar la abundante documentacin sobre Perl que habr en nuestro sistema si hemos instalado el paquete haciendo

( 1 ( #  ( #  g '  !!"$$&&!&

58

Otro ejemplo, este ms relacionado a tareas de administracin es el siguiente:


y  {2Bsx & &D$S!x$k !x$!$S B E ( 22&&s$ t D B E  { B) B t D B E  24E ( 22&&s$  E) &B ( `4E ( 22&&s$ ) B t D B E  y $H@k $ kh D&D&  g &    q a   t$ q3S`xkDky $DkGn  @A& y  q 1 y 6 y yD37@kkDkz$DkS$ q x x  y 334A!k$AkQHH$ q t 3$`u ( 9@k$Akse$D$A  6 y qc&$ASkk $xA9 UAk  $$DkkF A& @ A " q 3  X $k k $kDk&a  $ )  q r!A& &

) R "  1 "  ) P e (  R ) R "  ) P e (  "F2cc!2cc&R

Este script combina varias de las posibilidades que hacen de Perl un lenguaje tan atractivo. Por ejemplo utiliza el mdulo que permite realizar bsquedas de forma recursiva en un sistema de cheros. Existe una gran cantidad de mdulos para Perl (una lista exhaustiva de los mismos se encuentra en la web de CPAN) lo que ayuda mucho al administrador de sistemas. En muchos casos para la tarea que tengamos pensada ya existe un mdulo que la resuelve o nos ayuda a resolverla. Tambin se hace uso de la capacidad de Perl para reconocer patrones (regular expressions): es una condicin que comprueba si el argumento del nmero de das tiene realmente formato de nmero.
 # #    `$ y  !S !k$HSF& $S&D$H  !S !k$HSF& $S&D$H S"HH$Sk$HSF& $S&D$H   kSH$Sk$HSF& $S&D$H D! k HkF& $S&D$H {  H "H$D$bF& $S&D$H $H$D$bF& $S&D$H 1 y  D! $A2sb$A!Hkh k&$

Este script da una lista de cheros (incluyendo posibles subdirectorios y su contenido) que se han modicado que se hayan modicado a partir de una fecha que determina el usuario. Por ejemplo, si el usuario thorin quiere saber que cheros de su cuenta se han modicado en la ltima semana har

El nmero de das no ha de ser necesariamente un nmero entero. Si utilizamos la opcin excluye los directorios y con ello tenemos una herramienta muy adecuada para combinar con el comando y empaquetar aquellos cheros modicados despues de cierta fecha:
# k&S!   y D SSkH$DF& $S&D$H $DF& $S&D$H $SF& $S&D$H !S !k$HSF& $S&D$H   !S !k$HSF& $S&D$H S"HH$Sk$HSF& $S&D$H  kSH$Sk$HSF& $S&D$H k$HSF& $S&D$H D! k HkF& $S&D$H {  H "H$D$bF& $S&D$H $H$D$bF& $S&D$H F& $S&D$H 1 y  @b$A!Hkh k&$ f @ F c q P c s Q r 5 5 5 SA@ c q PFG r C q EH`C c q P36A&6o q r GUV r AP Uq D"AY q FQxE hq c i @ i Q g m m r zm m Q z r 2 r "FYDC s wFHPhr!uh sDq Q gUV r mDm"P Uq A"AY q 3QxE Uq c i t P V u r r zm m Q z r @ s AHFg q DFHFo q w V P Q E w V P 6 u P uUpG c q Fg P w u G Q E w V P w Ghg q AAHFg

# ( &

59

60

4.4.3. Algunos oneliners interesantes


Mencin aparte merecen los llamados oneliners, que realmente son pequeos programas en lnea de comandos. Perl permite crear a partir de la lnea de comandos programas que pueden llegar a tener bastante complejidad. Resulta complicado y lleva tiempo aprender a manejar Perl a este nivel, pero si se consigue resulta de mucha utilidad en la administracin de sistemas. Ahorra tiempo y hay que escribir poco, algo que encanta a los programadores...
 w   4  #   # # g   #  " $&$$p$k""$""g

Enva a la salida estndar todos los cheros en le list pero comenzando por la ltima lnea de y terminando en la primera4 .
 w   4  #   # # (  ( 0 # g   #  & $&`$kp$&&$!$""g

Igual que el anterior, pero tambin invierte las lneas.


w R  #   # # (  ( 0 `}&&$! R # g    #  $$9&""g
4 Algunos 5 Tomado

Imprime las lneas 14 a la 23 de los cheros en le list.


 w   4 H 1 1 &k&`kA$    # g   #  !$"$$ &""g

Imprime los cheros en le list saltando las primeras diez lneas.


 w   4 1 1    # g  &k&`k9$$!&& ( %1  #  &$""g

Elimina las primeras diez lneas de los cheros en le list guardando una copia del original con extensin . Para terminar damos dos ejemplos de como aprovechar las tuberas que proporciona la shell combinndolas con oneliners:
 R  (  #  }' "" 4  $&) ( % ) (  ) w R e  R      g '  0   #  g "&!k$&$"$$&!& F&""~& ( % &1

Borra aquellos archivos en un directorio que no se hayan modicado en la ltima semana. Si has instalado el paquete tienes en tu mquina toda la documentacin necesaria para entender las opciones usadas y como funcionan estos mini-scripts. Echa un vistazo a .
de estos scripts se han tomado de de .

( '

( !

Cambia en los nombres de archivos en el directorio donde se ejecute la orden la cadena 5. cadena
     #  g # g "&${&S"&$ $ h "  ' ' TS!H1 ( &%  !4

EADt s c Q Uq HQ r AHY c 3S Uq DS9C f I FAP c HR c u3Ag AD3DbFDST E P Qt V V Tt T E V t I Im i E E r Y C I Q i I r E i g it I Im i E E s c Q hq HQ r AhC f "ADg q c uDA3Db3DST r Y C I g t E V V

 w   4 1 1 V &k"$`$9$fW

"`&

Imprime la lista de cdigos y caracteres


4 # g   #  $ &""g

( % &1 #  %  $&' &%

Reemplaza todas las ocurrencias de la cadena por la cadena dos en le list dejando una copia del chero original con la extensin
h 1 1 #  4 # 0 # w R # g e R   #  aS A$$`2&A@$`yyyk`Q""g #  &

 # &$k

Invierte las lneas que vamos introduciendo por la entrada estndar.


 w   4  ) #  %  % ) #  )  " $&$$&$&' && "$3S ( %1 &k g  #  ""g  #  #  $""g

para salir.

en los cheros inclui-

por la

0    #  "!&&g

61

4.5. Bibliografa
1. 2. 3. 4. 5. Administracin avanzada de GNU/Linux, Josep Jorba Esteve y Remo Suppi Boldrito. XP04/90785/00019, Formacin de posgrado Universidad Oberta de Catalunya (2004). Gua de referencia DEBIAN6, Osamu Aoki (Trad. al espaol coordinada por Walter O. Echarri) (2005). Linux Programmers Reference, Richard Petersen, Ed. Osborne McGraw Hill (2000). Learning Perl, Randal L. Schwartz y Tom Phoenix, Ed. OReilly (2001). Programming Perl, Larry Wall, Tom Christiansen y John Orwant, OReilly (2000).

6 http: www.debian.org/doc/manuals/debian-reference

62

  '1  # 0 ) 0  "$b"&$)   1  # 0 ) 0  $"f&"$)



La primera lnea especica que todos los scripts contenidos en se ejecutarn a las 6 horas y 25 minutos todos los das del mes, todos los meses, todos los das de la semana. La segunda lnea especica que todos los scripts contenidos en se ejecutarn a las 6 horas y 47 minutos todos los das del mes, todos los meses, los domingos. La tercera lnea especica que todos los scripts contenidos en se ejecutarn a las 6 horas y 52 minutos el 1 de cada mes, todos los meses, todos los das.
 ( 1  # 0 ) 0  "!f""$) "$Xf&"$&&$  '1  # 0 ) 0  ) #  g  #  $"f&"$&&$   1  # 0 ) 0  ) #  g  #  ( 1  # 0 ) 0  ) #  g  # &!f&"$&&$ $&$# # ( g  $&$# # ( g  $&$# # ( g   ( '  !$' 0   &#   &#   &# #  k &  i i h i l}i i}i i  ' '  ! $ V h ` ' % ) #  ) # % ) #  ) # % ) # % ) # % )  ( 0   )  ) # )  ( 0   ) #  ) e U h &9 !&9 9 !9I$"$$"# 9I% !$&$&&`k !"!`2 ) % ) e U 1  2& %(&&# 0 &&&&"$2k$' "$k{!"k!$h #  4   (    4  ( #   ( (   (   4 1  4 2$k$"&!!&&{"${$& &!' 0      #      (   ( '  %&"D"$$#"{&"! "&&# 0 &$ "&!j (  # 0    (    % (  #   (  % (  # 0   "$&!S ' "  &$&# &)  # % (  0 ) 0  % (  # 0 ) 0  "$&"$)    ( 1  # 0 ) 0  $$9"&$)

5.1. cron

Ejecucin asncrona de tareas

Captulo 5

cron es un demonio que ejecuta comandos programados en determinados das y a ciertas horas. en todos los niveles de arranque. Una cron se inicia automticamente desde vez que se ha iniciado lee cada minuto el area de spool y el chero donde se especican las tareas que se deben ejecutar as como su periodicidad. Los usuarios que deseen correr tareas peridicamente deben crear un chero crontab apropiado y despus correr la instruccin crontab, debiendo estar previamente autorizados por el root en . El sistema en cambio, para correr tareas automticas emplear el el chero contenido del chero .

% (  0 )  0 )    ) # ( &&# &"&# &$$"g &&") ) 1 ) 0  & &)

5.1.1. El chero crontab

El contenido tpico del chero

63
% (  # 0 ) 0  "$""$)

es:

% (  # 0 ) 0  "$&"$)

64 se almancenan otros scripts que se corren con cualquier Adems en el directorio otra periodicidad especicada en el propio script. Por ejemplo, este script:
 0  ) g # 0 ) 0  k""&&$)    )   &&!k) % (  # 0 ) 0  "$""$)    ( 1  # 0 ) 0  $$hf&"$)     g  0 ) g # 0 ) 0  !!!$ $"$!!) % (  0 ( ( ) 0  &&# &"$$) ) 1 ) 0  !f"$) 1  # 0 ) 0  f""$) 1  # 0 ) 0  f""$)   &#   &# i i }i i i }i i r % (  &$&# 0 i ) ki (

se lanza siempre a las horas en punto ms 5 minutos. Este otro:

se lanza cada minuto. Hay que tener presente que todos los cheros que estn contenidos en alguno de los directorios controlados por cron no pueden contener un punto . en su nombre ya que si no sern ignorados (esto sucede para Debian, pero este comportamiento puede depender de la distribucin que se emplee). Tambin hay que destacar que cualquier mensaje que se genere con los programas que ha lanzado cron, ya sean de aviso o de informacin, darn lugar a un mensaje que se enviar al root. oa Esto suele ser til, pero si estos mensajes quieren evitarse habr que redirigirlos a algn chero.

5.1.2. Crontab para un usuario cualquiera


Todo usuario que se encuentre autorizado en puede ejecutar tareas de forma asncrona en el sistema. Para ello debe crear un chero con el mismo formato que se usa en . Una vez que se ha creado un chero apropiado deber los cheros contenidos en ejecutarse:
 #  0 && $4

5.2. anacron
El uso de cron es muy recomendable, pero qu se hace cuando se tiene un sistema que no est siempre funcionando: la respuesta es usar anacron anacron se inicia automticamente desde en todos los niveles de arranque. Una vez que se ha iniciado lee el chero donde se especican las tareas que se deben ejecutar as como su periodicidad. La diferencia con cron est en que lo que tiene en cuenta el programa no es el da y hora en que tiene que correrse una tarea sino la diferencia de tiempo con la ltima vez que se ejecut. Si dicha diferencia de tiempo supera a la de la periodicidad que aparece en la tarea se ejecutar. Por tanto, cada vez que anacron ejecuta una tarea escribe una marca de tiempo en un chero especial.

5.3. at
at permite ejecutar comandos o scripts en bash a una hora determinada. Su uso es muy simple:
v h g 0 0 W}# k

TIME admite muchos formatos, en particular puede especicarse una hora en el formato HH:MM. Para ms informacin vase man at.

Captulo 6

TCP/IP
No es el objetivo de este manual dar una visin terica ni profunda de los protocolos de comunicacin, pero s resulta til comentar los principales aspectos del conjunto de protocolos ms utilizado hoy en da en la comunicacin de computadoras y en particular el utilizado en Internet. En este apartado comentaremos de forma breve las principales caractersticas de estos protocolos e incidiremos en su conguracin en un equipo con Debian GNU/Linux.

6.1. Origen de TCP/IP 6.2. Nivel de acceso a red


En TCP/IP no hay separacin entre el nivel fsico y el nivel de enlace, por lo que el llamado nivel de acceso a red depende del hardware utilizado. El aspecto que ms nos interesa de este nivel es el cdigo que se utiliza para identicar un dispositivo dentro de una red. Este cdigo se denomina direccin MACMedia Access Control address. En Ethernet (Fast Ethernet) es un nmero de 6 bytes que se representa normalmante en notacin hexadecimal. Por ejemplo:
l l# # # # H # H $S9`Sp`H

Para comprobar la direccin MAC de los interfaces de red de nuestra mquina podemos utilizar la instruccin ifcong, que nos mostrar algo como:
`````````` l l# # # # H # H H #   ( $S9`Sp`r$$SU  #  # g ( 0 &$&kI H $

Los dispositivos de red traen de fbrica una direccin MAC, lo que se conoce como BIA Burnedin Address, cuyo primer bit es cero, indicando que se trata de una direccin MAC global. Es posible, aunque no habitual, modicar la direccin MAC de un interfaz de red, que se hara mediante la instruccin:
H # V H# H# H# H # H H #   H  F`4F`"$$$ !4 4  0

65

66

6.3. Nivel de red


El principal protocolo de este nivel es el protocolo IP, que ofrece un servicio de entrega de mensajes basado en datagramas, no able y no orientado a conexin. La versin ms utilizada actualmente del protocolo IP es la versin 4, lo que se conoce como IPv4, aunque ya hay sistemas operativos como linux que implementan la siguiente versin IPv6, que tiene como principal caracterstica aumentar de forma signicativa el nmero de direcciones utilizables.

6.3.1. Direcciones IP
En algunos protocolos de comunicaciones se utilizan direcciones para identicar las mquinas, pero el protocolo IP utiliza lo que se denomina una direccin IP para identicar un interfaz de red NIC y puesto que una mquina puede tener varios interfaces de red, puede tener varias direcciones IP. Es ms, incluso pueden utilizarse varias direcciones IP para un mismo interfaz, haciendo uso de los alias, que aqu no comentaremos. En IPv4 las direcciones IP son nmeros de 4 bytes, normalmente expresados en notacin decimal puntuada. Por ejemplo:
h V 1 1 1 WA2$p2!k9 

La direccin IP se utiliza tanto para identicar la interfaz de una computadora, como la red a la que pertenece. Los primeros bits identican la red y los ltimos la interfaz de red (la mquina) dentro de esa red. Para saber cuantos bits identican la red y cuntos identican el host se utiliza inicialmente la clasicacin de redes que a continuacin expondremos. Clases de redes Se clasican las redes en funcin de los valores de los primeros bits de la direccin IP. Las tres clases ms importantes son: Clase A B C bits inicio 0 10 110 Id. de red. 1 byte 2 bytes 3 bytes Id. de host 3 bytes 2 bytes 1 byte rango 0.0.0.0-127.255.255.255 128.0.0.0-191.255.255.255 192.0.0.0-223.255.255.255

Las clases D, E, etc. estn destinadas a otros usos y no las explicaremos aqu. Por ejemplo, la direccin IP 34.65.212.56, es de clase A, ya que el primer bit es cero (34 en binario es 00100010), de los 4 bytes de la direccin IP, el primero determina la red (34) y los otros tres identican el host dentro de la red 34 (65.212.56). Se deduce de forma inmediata que existen pocas redes de clase A, pero se trata de redes inmensas; bastantes redes de clase B, que son de tamao intermedio y muchas redes de clase C de pequeo tamao. El esquema anterior es excesivamente rgido, ya que permite slo la creacin de tres tamaos de red. Hoy da se utiliza un esquema ms exible mediante el cual se indica el nmero de bits

67 no de bytes de red y host mediante la mscara de subred o a travs de la que se conoce como notacin CIDR. Ejemplo: Supongamos que tenemos una red con IP 145.65.16.0 y con mscara de subred 255.255.255.240. Para averiguar cuntos bits de la direccin IP corresponden a la red y cuntos al host, pasamos ambos nmeros a binario: 255.255.255.240 145.65.16.0 11111111.11111111.11111111.111 10010001.01000001.00010000.000 red 00000 00000 host

Es decir, los primeros 27 bits indican la direccin de la red y los ltimos 5, determinan el host dentro de esa red. De forma abreviada notacin CIDR la direccin de esta red puede expresarse como 145.65.16.0/27. El rango de direcciones IP disponibles para hosts es: 10010001.01000001.00010000.00000001 10010001.01000001.00010000.00011110 145.65.16.1 145.65.16.30

Ya que la primera y la ltima estn reservadas para las que se denominan direccin de red y direccin de difusin.

Direcciones privadas La direccin IP debe ser nica para cada una de las mquinas que se conecten a Internet, motivo por el cual hay escasez de direcciones IP con la versin IPv4. Una manera de solucionar esto parcialmente es la utilizacin direcciones IP privadas, que son determinados rangos que no son enrutados y por tanto no salen a Internet. Las direcciones IP privadas son adecuadas para redes locales. En la siguiente tabla se presentan los tres rangos de direcciones IP privadas, cada uno correspondiente a una clase de red y que colma todas las necesidades de una red local. Clase de red A B C net. Primera direccin 10.0.0.0 172.16.0.0 192.168.0.0 ltima direccin 10.255.255.255 172.31.255.255 192.168.255.255

En el apartado ?? veremos que es posible que equipos con direccin IP privada salgan a Inter-

6.4. Nivel de transporte


Cada origen y destino en el nivel de transporte se identica con un nmero de 16 bits, denominado puerto (port). Adems, al par formado por la direccin IP y el puerto se le denomina socket:
# 1 H 1 1 9AFkF$

68 Existen nmeros de puertos estndar. Por ejemplo:


21 80

ftp http pop3

110

Los primeros 1024 puertos se denominan privilegiados o bien conocidos y estn asignados universalmente a aplicaciones de red conocidas. En un equipo con Debian GNU/Linux, podemos obtener un listado de los principales puertos utilizados en .
 0 #  ) 0  &$$!$)

Captulo 7

DHCP
DHCP son las siglas de Dynamic Host Conguration Protocol. Su conguracin es muy simple y sirve para que en lugar de congurar cada nodo de una red individualmente se pueda hacer de forma centralizada y su administracin sea ms fcil.

7.1. Conguracin del cliente


y editamos el chero Abrimos una terminal como usuario e incluimos o modicamos el prrafo correspondiente a nuestro interfaz de red, de manera que slo incluya las lneas:
 0 ( 4 #  !&&"$ &) g 0 $ #   ) 0  k")   &# "H"!4   0 ( H    $"$(

va:
# (  #  $& && #   ) 1 ) 0  "$"!f "$)

En caso de haber un servidor DHCP en la red local con direcciones IP disponibles, el interfaz de red quedar congurado de forma automtica.

7.2. Conguracin del servidor


En primer lugar ser necesario instalar los paquetes correspondientes, en este caso vamos a utilizar el servidor dhcp del Internet Software Consortium, que se incluye en el paquete , por lo que tendremos que hacer:
g 0    ( k$&    g &$(

Si no lo tenamos instalado anteriormente, no estar congurado de forma apropiada, por lo que lo recomendable es parar el servicio que de forma automtica se lanza al instalar el paquete:
g  &g $!f "$) 0  ) 1 ) 0 

69

 

#   "k&

Por ltimo habr que reiniciar el demonio

H 

donde es posible tener que cambiar

g 0 k

por el interfaz de red que corresponda. para que esta modicacin sea efecti-

Para poder utilizar asignacin esttica y dinmica de forma simultnea dentro de una subred, pueden especicarse determinadas direcciones IP a una mquina, identicndola a travs de su direccin MAC:

De esta manera el servidor ofrecer direcciones IP en los rangos: 192.168.1.10-192.168.1.100 y 192.168.1.150-192.168.1.200, por un tiempo comprendido entre 600 y 7200 segundos. Adems se le enva toda la informacin necesaria para la conguracin del interfaz de red: mscara de subred, direccin de difusin, direccin IP del gateway ( ), direcciones IP de los servidores de nombres y nombre del dominio.

Es posible que el servidor tenga ms de una tarjeta de red, por lo que ser necesario especicar la tarjeta por la que debe ofrecerse el servicio DHCP. En Debian, esto se especica en el chero , en el que debemos incluir una lnea como:

Para congurar este servicio es necesario editar el chero de conguracin del que podemos obtener informacin con la pgina del manual:

4  0 1  g 0  ) 0  !3!$)

si queremos que el servidor dhcp ofrezca direcciones IP a travs de las interfaces de red .
  e i h r&$$y!`$k` g kk&&&&) 0  )   ( 4   ) 0  1 1 1  #   (   $9F$ A2$$!"k"4 # # 0 V# % # H H # H H  #    # (  # ( kh$F0I9`F`"$&$&!&   ( (  w!k$"!" #    "$"# H H 1 1 1 H 1 1 1 $``9A$ F$`FFk A2 !!&#   ( H H 1 1 1 FFk A2 FFk A2 !!&# H 1 1 1   ( H 1 1 1 F2`9``h2` ( '  H1 1 1  %  &&{F$ A2$&$ #  1 ( '   '  ' ( (  !hf"!&F&S"' & $  g 91F1$ A12$ F1F1k A12 "$&S"' & $ #  #   ' ( (   g 1 1 #    #  g V91A$ F$"$"$ `9F$ A2$ !"k$k !k$&$ 1 1 1  #   ( ( 0  (  # %  g F2`9`912` H 1 1 ( '  %  &D"$$ $  g H H h  '  (   ( S!THS"k!$' H H  '  (     ( 4  SSS&$$&&&  # (   !"$' 0 #   0     g   % (  #   0  !!k&"kT!!"&"i 4  0 1  g 0 !`!k ( '



70

Lo ms frecuente es querer asignar direcciones IP privadas de forma aleatorias, para lo que necesitaramos un chero de conguracin con las siguientes caractersticas:

Si no especicamos nada, el servicio se ofrecer a travs de


"$

H 

. y ,

Captulo 8

Cortafuegos: iptables
Un cortafuegos rewall es un dispositivo de hardware o bien, como explicaremos en este apartado, un software que ltra el trco entre dos redes. El ltrado se puede realizar en diferentes niveles, veremos a continuacin que el programa que hace la tarea de cortafuegos en GNU/Linux iptables es capaz de ltrar el trco en el nivel de enlace, red y transporte, que desde el punto de vista prctico signica que es capaz de ltrar el trco entre dos redes en funcin de la direccin MAC, direccin IP o puerto TCP/UDP de la mquina origen y/o destino. Y bien, para qu queremos un cortafuegos en nuestro sistema? Pues principalmente por seguridad. Es importante congurar un cortafuegos cuando una mquina est conectada permanente o temporalmente a Internet para evitar ataques maliciosos. Una mquina GNU/Linux est a salvo de la mayora de ataques de virus, gusanos y dems fauna, que se expanden por la red gracias a los agujeros de seguridad de las diferentes versiones de Ms Windows(TM). Sin embargo no est a salvo de otros ataques, que podran comprometer el sistema y, en una situacin extrema, llegar a controlar completamente nuestra mquina. Un cortafuegos no evita la intrusin totalmente, pero se lo pone ms difcil al atacante. Este mismo mtodo puede utilizarse para restringir el acceso de nuestras mquinas a Internet, lo cual es muy til en redes locales, sobretodo si utilizan anchos de banda relativamente bajos como los asociados actualmente a ADSL. Iptables est vinculado al kernel de linux desde la versin 2.4 y una de sus caractersticas es que no funciona como un servicio que pueda pararse o lanzarse. Si nuestro kernel incluye iptables, no es necesario lanzar la aplicacin, que siempre estar funcionando, simplemente nos dedicaremos a aadir reglas de ltrado para nuestra red. En este apartado no explicaremos cmo se incluyen en el ncleo las opciones de iptables sino que supondremos que el kernel que estamos manejando las incluye que es el caso ms habitual en la mayora de distribuciones y en el caso de Debian, en los kernels precompilados. Las herramientas apropiadas para manejar iptables, se incluyen en Debian en un paquete con el mismo nombre, que en caso de no tener instalado podemos comprobarlo con debemos instalar con:
  % ( !&"$g   % ( g   ( &$&&$&  $"$&{"&k$( 0   g  0 ( 0 g   g &$(

En iptables se denen por defecto tres tablas: mangle, nat y lter. De la primera no hablaremos porque se utiliza para reglas ms complejas. La tabla nat se utiliza para modicar las direcciones 71

72 IP y/o puertos origen y/o destino. Podemos ver el estado de estas tablas con la orden:
S  (  & !!  (  & !!  (  & !! (  % (   % ( &"S!&"$g   % ( !&"$g (  % ( $&&

donde

puede ser mangle, nat o lter, siendo esta ltima la opcin asumida por defecto.

Si aplicamos esto a la tabla lter:

veremos que no existe ninguna regla en nuestro sistema por defecto, lo que signica que se permitir la salida de paquetes con cualquier direccin IP o puerto destino y, lo que es ms preocupante, aceptar cualquier paquete proveniente de cualquier direccin IP origen a cualquiera de los puertos que tengamos abiertos.
 0 #   g   # $k"$g   # ( !!" h SS` $"$&U ! "&k 0   g h j (

Podemos ver que la tabla lter se compone a su vez de tres cadenas: INPUT, OUTPUT y FORWARD. INPUT Para paquetes que entran en la mquina OUTPUT Para paquetes, generados en la propia mquina, que salen. FORWARD Para paquetes que se enrutan en la mquina. Las reglas de iptables se escriben generalmente en un script de forma secuenciada, para que se ejecute en el proceso de inicio de la mquina. Un aspecto muy importante es el orden de las reglas, ya que cuando el sistema tiene que ver qu hacer con un paquete, va leyendo las reglas hasta que encuentra una aplicable y la utiliza. Es por esto por lo que se deben poner las reglas ms permisivas al nal del chero.

8.1. Poltica por defecto


Existen dos formas de implementar un cortafuegos con iptables, lo que se denomina poltica: Poltica por defecto ACCEPT: Se aceptan todos los paquetes, salvo aquellos especicados explcitamente por una regla. Poltica por defecto DROP: Se rechazan todos los paquetes salvo los especicados explcitamente por una regla.

 0 #   g   # $k"$g   # ( !!" h 0   g SS$"$"h `S "&k i i i (  0 #   g   # $k"$g   # ( !!" h 0   g `$``&&h w"&k h j h j i (

73 La segunda opcin es la ms segura, siempre que est bien congurada, pero exige un profundo conocimiento de todas las necesidades de la red local y debe modicarse a medida que aparezcan nuevas necesidades. Se debe especicar una poltica para cada cadena de cada tabla que se vaya a utilizar al inicio del script.

8.2. Ejemplo
Iptables es demasiado amplio para tratarlo aqu en detalle, por lo que explicaremos la conguracin de un cortafuegos en un caso tipo y dejamos al lector interesado referencias para un estudio ms detallado. Vamos a suponer que tenemos que congurar un cortafuegos para una red local con direcciones IP privadas, que acceden a Internet a travs de una mquina con doble tarjeta que hace de router y tiene una direccin externa pblica. La mquina que hace de router la denominaremos romantico.uhu.es (romantico). Utilizaremos poltica por defecto ACCEPT.
V )FkF2 H 1 H1 1 w w w w w w w ```` 0 w w w w w ``w $3 A1kF2 H1 1 w w w w w w w w w w w ``````  0 (  # $$' "~ w w w w w w w w w ````w ( 0  % g $"&` p

En primer lugar borramos todas las reglas que pudieran existir previamente:
("!$""$   % ( g !$""$   % ( g   % ( g !$""$ !$""$   % ( g

El siguiente paso es establecer la poltica por defecto:


h`$Sh2$ "!$""$ h j i i h i (   % ( g h S$``{h!hck$ "!$""$ j i i i (   % ( g h`$``$` !$""$ i i i   % ( g hSS`! !$""$ h j h j i   % ( g h h j `$Sk !$""$   % ( g

Y ahora empezamos a aplicar reglas:

H  $F

hSS`$!S!&"$g i i i   % ( h`$Skr!&"$g h j h j i   % ( h`$`` !&"$g h j   % ( #  0  4   #  g ( 0   $"&&&&{ $& ("S!&"$g   % ( !&"$g   % (   % ( S!&"$g   % ( !&"$g

 # (   !"$' 0

#   g     g   % (  #   0  &&!!k&"kT!!"&"i ) % !")

i j v  `$$`&!{k

V ) H 1 H1 1 FkF2 

k$T i i i i k$T

VSF&$ H # #  g  V H # #  g  SF&$

g$S   g g S 0 g

h SS

V ) H1 H1 1 k A2 

H #  g  `&$

g S $k 0 g 

h SS k A2 $&$ V ) H1 H1 1 #  g  h SS` h29`9`{$&$ 1 1 h 1 H #  g 

g S $k 0 g  g S $k 0 g H 

h   SS$k

8.2.1. Enmascaramiento IP

Si queremos que la mquina romantico acte como router debemos activar el bit de forward con la siguiente instruccin:

Con todo esto tendramos un primer cortafuegos sencillo, para romantico, pero las mquinas de la red local no podran acceder a Internet porque tienen direcciones IP privadas. Iptables tambin soluciona sto a travs del enmascaramiento IP.

que aade (con la opcin -A) una nueva regla al nal de las existentes en la cadena INPUT. En concreto, permite el acceso a todos los paquetes que entren a travs del interfaz loopback. Dejamos abierto el puerto ssh (puerto TCP 22) a una mquina con direccin IP esttica y a las mquinas de la red local, porque queremos poder entrar en el cortafuegos desde dichas mquinas.

Y ahora utilizar iptables para que modifque las direccines IP, de privadas a pblicas y viceversa. Esto se har en la tabla nat, de acuerdo con la siguiente instruccin:

 # ( #  4 w g ) V g )  ) ) 0  # g )  0 "k!k"!$"&&k!"&""

8.2.2. Creacin de un script de iptables


h h j i i h i !c$2S (   % ( "S!&"$g H$k  H  $k h j h j  S!&"$g   % (   % ( S!&"$g

74

Por ltimo no permitimos la entrada de paquetes provenientes de Internet que tengan por destino los primeros 1024 puertos UDP y TCP:

Abrimos el puerto TCP 80 (web), pero slo a las mquinas de la red local:

Utilizamos nuestro editor preferido y escribimos:


h j    % ( S!&"$g h j h j  S!&"$g   % (   % ( S!&"$g h j    % ( S!&"$g

Por ltimo, mencionaremos que es posible construir un cortafuegos con algunas aplicaciones como restarter, shorewall o incluso a travs de webmin. Los usuarios que se deciden a utilizarlas normalmente consideran que iptables es muy complejo. Sin embargo, como puede comprobarse tras leer este apartado, iptables es ms sencillo de lo que a primera vista pueda parecer. Hay algunas herramientas de administracin que son muy tiles para manejar iptables, stas son netstat o nmap, por ejemplo para vericar los puertos abiertos e iptraf para comprobar que las reglas se aplican correctamente.
  % ( g !$""$

Por ltimo tenemos que enlazarlo de forma apropiada para que se ejecute al iniciar el sistema, para ello vericamos en el nivel de ejecucin por defecto del sistema En Debian es 2 si no se modica y hacemos:

La prxima vez que iniciemos el sistema las reglas de iptables se ejecutarn, lo cual deberemos comprobar con:
  % ( g H ) 1 0 # ) 0  &$&&"`$!) 1   % ( g ) 1 ) 0  ) U&$"&"!&$ % ( ) 0  &$  &)  `!&&$g 1   % ( ) 1 ) 0  !f "$) "   ' k}0 i i c$T SA$&$$ $S {k k !$""$ V H # #  g  g   g H  h j   % ( g i i c$T SA$&$$ g S {k k !$""$ V H # #  g  0 g H  h j   % ( g #kh!!"$"$!!"H!$& !! &&"{&k&$& j  #   g V H  #  ' # g     #  g (     %  #        # g    % ( g   (  ( #  (   ' ' #  g   '  #  &!&""$!"&$"&!"$$!H k&{"H&}! h S$``{ V ) H1 H1 1 $!$ A2$ H`$#&$$ g S{k k !$""$  g  0 g  h j   % ( g #  ( 0     # (  $&&$( ` $&&!S$ H h  #   g  ' # % g S{k 0 g  g S {k 0 g H  h jk !$""$   % ( g hk !$""$ j   % ( g !S$  ' # % h S$``{ $!$ A2$$$&$$ V ) H1 H1 1 #  g  h 1 1 h 1 H #  g  `$``h2`h`9{$$&$$ i j v  $$&!l${k V)H1H1k A12  2$ S "!$""$ h h j i i h i (   % ( g #k!c"!"&"k &"&$ "& ( #  4 w g ) V g )  ) ) 0  # g )  0 #  ( 0     # (      ' ( # ( 0 ( ' $$&k&{$!"$&&kk h   SS`${k h h h j i i h i `$S2$ h h h j i i i S$``{!ck$ h j k   % ( g !$""$

Ponemos este chero en


"!$""$ (   % ( g (   % ( g "!$""$

y le damos permisos de ejecucin: 75

76

Parte II
Construccin de un cluster GNU/Linux

77

Captulo 9

Descripcin de un cluster modelo


En esta seccin, para jar ideas, deniremos el conjunto de ordenadores con el que vamos a trabajar y describiremos las tareas de las que se ocuparn los diferentes nodos del cluster.

9.1. Las mquinas del cluster


Vamos a considerar que disponemos de 8 ordenadores a los que bautizaremos con los nombres de Blancanieves y los siete enanitos. Dichos ordenadores estarn situados en una red privada 192.168.1.0 y en lo que sigue supondremos que ya tienen un sistema operativo Debian GNU/Linux ya instalado. Lo primero que haremos ser crear un chero :
&&$"%  ( 0 (  0$$' "# (     & &'  &   ' #    0  &&' ""&"% 0 (     # &$$$  % ( k  ) 0   !") !h1f$!&&%  1   ( 0 (  !hf$$&#  1  1  0 ( '   1  1    &9f$2& !!' &9$$f$ !  1  1   ' #   1  1   0  &9f$2&"' &9$$f&"&&%  1  1  0 (   1  1    # !hf$&$k  1  1  % ( !9$2 !h1f$!&&%  1   ( 0 (   1  1  0 ( '  !hf$$&#  1  1    &9f$2& !!' h 1 1 FA$ 1 1 FA$ 1 1 FA$ V 1 1 FA$ FA$ 1 1 1 1 FA$ 1 1 FA$ H 1 1 FA$ F$ 1 F$ 1 F$ 1 F$ 1 F$ 1 F$ 1 F$ 1 1 F$

A dicho chero le aadiremos otro conjunto de lneas en las que se denirn alias para los diferentes servidores. Esto permite cambiar de forma sencilla las mquinas donde residen los diferentes servidores.
&& $k '  #  #  0 ( % #  #  "&& $k g '  #  #  !&& $k h 1 1 1 FA$ F$ FA$ F$ 1 1 1 1 1 1 FA$ F$

Hemos denido tres servidores: uno para las cuentas de los usuarios (NIS+NFS), servidorhome; otro para las copias de seguridad servidor-back; y otro que exportar un directorio visible para todo el cluster donde puede almacenarse informacin de forma temporal, servidor-temp. Adicionalmente pueden servirse otros recursos como impresoras o lectores de DVD y tener instalados otros servidores como: Samba, exim (correo electrnico), http o dhcp. Siguiendo con la : anterior poltica deniremos alias para los distintos servidores en el chero 79
 ) 0   !")

80
g k ! 0 #    # #  0 #  &$! ( % ( #  &&' k! ("#&&#!H$! g ' #  g #  $$!  #  k !  %  1  ) 0  kS9 &&$) $ #  $ #  $ #  $ #  $ #  #  $ !hf$!"&%  1  1   ( 0 (  !hf$!"&%  1 1   ( 0 (  1 1   ( 0 (  !hf$!"&%   !h1f$1!"&%   ( 0 (  &9$$2"!!'  1  1     1  1    &9$$2"!!' h 1 1 FF$ h 1 1 FF$ h 1 1 FF$ h 1 1 FF$ FF$ 1 1 1 1 FF$ A2$ 1 A2$ 1 A2$ 1 A2$ 1 A2$ 1 1 A2$

Como puede verse no existe ningn problema en denir distintos alias para una misma direccin IP. Lo que no tiene sentido es asignar distintas direcciones IP a un mismo alias ya que en este caso el sistema tan slo considerar el ltimo. Es conveniente introducir los nombres de las distintas mquinas que forman el cluster en el : chero
kS9 &&$)  %  1  ) 0  i  !"&% ( 0 (  0&# ( '     "!!' $!   ' #    0  k!"' & &&&% 0 (  "kk   #  % ( 

De esta forma al usar comandos como rsh o rlogin es posible entrar en los distintos nodos del cluster sin necesidad de password. Hay que notar que el empleo de rsh o rlogin est desaconsejado por cuestiones de seguridad y se recomienda el uso de ssh. Con ssh el chero deja de tener sentido ya que la autorizacin para entrar en una cuenta sin necesidad de password se consigue usando una clave pblica. No obstante, nosotros seguiremos usando este chero para denir las mquinas que constituyen el cluster como se ver posteriormente.

9.2. Caractersticas de los nodos del cluster


Aunque pueda parecer que para crear un cluster GNU/Linux es preciso poseer ordenadores de gama alta, la realidad es bien diferente. En un mismo cluster pueden adems convivir ordenadores de caractersticas muy diversas y simplemente hay que saber qu servicios son compatibles con las limitaciones de los diferentes ordenadores. A ttulo de ejemplo se muestran a continuacin los recursos del CLF en 1999: 150.214.138.50, jme.us.es. Pent-350 MHz. 64 Mb RAM. Exporta: /local-link/cdrom. 150.214.138.81, sabio.us.es. Pent-100 MHz. 16 Mb RAM. Exporta: /local-link/cdrom. 150.214.138.82, bonachon.us.es. AMD-K6-450 MHz. 64 Mb RAM. Exporta: /local-link/cdrom. 150.214.138.83, mocoso.us.es. 486-75 MHz. 16 Mb RAM. 150.214.138.84, dormilon.us.es. AMD-K6-350 MHz. 64 Mb RAM. Exporta: /usr; /usr/local1; /local-link/cdrom. 150.214.138.86, mudito.us.es. AMD-K6-II-450 MHz 64 Mb RAM. Exporta: /local-link/cdrom.

81 150.214.138.87, romantico.us.es. AMD-K6-450 MHz. 64 Mb RAM. Exporta: /users/home; /local-link/cdrom 150.214.138.88, blancanieves.us.es. Pent-250 MHz. 64 Mb RAM. Exporta: /local-link/cdrom. 150.214.138.95, labruja.us.es. Pent-200 MHz . 32 Mb RAM. Exporta: /local-link/cdrom 150.214.138.116, legolas.us.es. Pent-120 MHz. 32 Mb RAM. 150.214.138.117, bilbo.us.es. Pent-120 MHz. 48 Mb RAM. 150.214.138.118, aragorn.us.es. Pent-120 MHz. 64 Mb RAM. 150.214.138.119, sauron.us.es. Pent-120 MHz. 64 Mb RAM. 150.214.138.120, gandalf.us.es. Pent-120 MHz. 32 Mb RAM. 150.214.138.176, merry.us.es. AMD-K6-350 MHz. 64 Mb RAM. Exporta: /temp La cantidad de memoria RAM total era 750 Mb y la suma de espacio en los distintos discos duros era 60 Gb. La mayor parte de los lectores posiblemente tengan ordenadores personales, incluso porttiles, con el doble de la memoria RAM y el espacio en disco duro de todo el cluster CLGEM. Es tambin destacable, al comparar con las velocidades de los microprocesadores actuales, que el ordenador ms rpido era un AMD-K6 a 450 MHz. romantico, que era y sigue siendo (aunque ha sido actualizado), el servidor NIS-NFS del CLF tan slo era un AMD-K6 a 450 MHz y serva informacin a otros 14 ordenadores y unos 20 usuarios, adems era usado al mismo tiempo por un usuario como estacin de trabajo. Creo que la anterior descripcin pone de maniesto que es posible usar con GNU/Linux ordenadores que estn algo obsoletos y obtener un buen rendimiento, aunque los nuevos gestores de escritorio KDE y Gnome pueden llegar a ralentizar notablemente el ordenador. Afortunadamente existe una plyade de gestores de ventana que ocupan muy poca memoria y son sucientemente completos para satisfacer a la mayora de los usuarios.

9.3. Esquema de servicios del cluster


En un cluster pueden existir multitud de servidores que realicen alguna funcin para los distintos nodos del cluster, sin embargo slo hay dos servicios que son imprescindibles: NIS y NFS. En la siguiente gura ?? se muestra cmo los diferentes servicios son ofrecidos por los servidores a un nodo particular del cluster. En la gura ??, blancanieves tiene un servidor NIS y sirve las cuentas de los usuarios, y un directorio llamado . Por su parte romantico sirve los directorios y . Finalmente mudito sirve el directorio . Este esquema se repite para el resto de nodos del cluster incluidos los propios servidores . Hay que destacar que en los mltiples cheros de conguracin que deberemos crear resulta extremadamente til hacer referencias a los distintos servidores a travs de los alias creados en el chero , de esta forma si hay que realizar un cambio en el nombre de algn servidor, tan slo habr que realizar un cambio en el alias del servidor implicado. Lo que no se recomienda es introducir en los cheros de conguracin las direcciones IP de los servidores, ya que en caso de modicacin de la direccin de algn servidor habr que modicar numerosos cheros. Gracias al uso de alias no es importante qu mquinas son fsicamente los servidores, ya que la estructura del cluster queda jada a travs de dichos alias, es decir, no tiene, a priori, importancia
g  !' ")  0 0  ) 0  k$)  ) 0   &&$)  ( 0   ) #  $&$&)

 0 k &") 0 ( %  '  ) #   &k)

82

bonachon /users/home /etc/etccl /back /usr/local2 romantico


blancanieves

passwd /temp

NIS mudito
Figura 9.1: Servicios del cluster.

si todos los servidores que tenemos estn en la misma mquina o cada uno reside en una mquina diferente. A pesar de esto, la experiencia recomienda usar el menor nmero posible de servidores, ya que esto permite que el nmero de mquinas continuamente funcionando sea pequeo y adems se minimicen los problemas que surgen cuando existe algn problema con la red.

9.4. Descripcin detallada de todos los servicios de un cluster modelo


En esta seccin se detallan los servicios que consideramos son mnimos para el buen funcionaminento de un cluster. Aunque esta seccin debera ir al nal del manual, se incluye aqu por completitud, no obstante, el signicado de los cheros y servicios de los que aqu se habla se entender mucho mejor al nal del manual. Para que los nombres usados sean vlidos en cualquier sistema, siempre se emplearn los alias servidor-.... servidor-home En esta mquina estar alojado: Servidor nis maestro.
 '  ) #   &k) 0  )

Servidor nfs del directorio Servidor nfs del directorio

. . .
 0 0  ) 0  $$)

que se monta en los clientes en

 ( )    ) # ( &' $$"g !"")

Servidor nfs del directorio de spooler de correo electrnico

83 servidor-local En esta mquina estar alojado:


 ( 0   ) #  $&$&)

Servidor nfs de utilidades que no son Debian, contenidas en los directorios . servidor-temp En esta mquina estar alojado:
g '  !&)  ( 0   )  $"$$"# )

Servidor nfs del directorio de scratch time-server-local En esta mquina estar alojado:

Servidor de hora para sincronizacin de tiempo de todas las mquinas del cluster. servidor-back En esta mquina estar alojado:
 0 $ 0 ( % "&) 0 ( % "&)

Servidor nfs del directorio

El hecho de que existan distintos servidores no implica que todos sean mquinas diferentes. El nmero de mquinas que hay diferentes se decide en el chero . La funcin de estos servidores podra compartirse entre varias mquinas de forma que existan por ejemplo varios servidores para backup: servidor-back-1, servidor-back-2, etc. Todos estos servidores deberan estar convenientemente denidos en .
 ) 0  &&$)  ) 0   !")

#  (  '  ""&)

Servidor nfs del directorio

 0 0  $

Servidor nfs del directorio de los clientes. directorios


0  )

donde se realizarn copias de seguridad del servidor. donde se realizarn copias de seguridad de los

donde se realizarn copias de seguridad diarias.

84

Captulo 10

NIS y NFS
10.1. Introduccin
Cuando se pretende tener un conjunto de ordenadores, que estn conectados empleando ethernet, con el que los usuarios puedan intercambiar sus puestos de trabajo y ver siempre la informacin de sus cuentas, adems de usar siempre el mismo password, es preciso ver directorios remotos como si fueran locales y acceder a cheros de conguracin que tambin estn en mquinas remotas. Todo esto se consigue empleando los protocolos NIS y NFS. NIS (Network Information Service) permite:
 ( g ) 0  !!")

Centraliza cheros de conguracin como el

Elimina informacin duplicada de usuarios, permitindole al administrador hacer cambios en un nico sitio. Por su parte NFS (Network File System) permite: Hace aparecer los sistemas de cheros remotos como si fueran locales. Los usuarios vern sus cheros, independientemente de donde estn localizados, ya sea en un disco local o en un disco compartido en un servidor. NIS y NFS se complementan, ya que al exportar cheros a una mquina remota, para saber a qu usuario pertenecen sin que se creen conictos es casi imprescindible que la informacin relativa a UID (user identication) y GID (group identication) est centralizada. NIS y NFS trabajan usando el modelo cliente-servidor. Sin entrar en muchos detalles, un cliente es una entidad que solicita un servicio y un servidor es una entidad que proporciona un recurso solicitado por el cliente. NIS y NFS para llevar a cabo la comunicacin entre cliente y servidor emplean un servicio adicional llamado RPC, que debe estar presente tanto en los clientes como en los servidores.

10.2. NIS
10.2.1. Paquetes Debian
El nico paquete que tiene que estar instalado es el paquete nis que puede instalarse con:

85

86
  ( ${$&  ( g ) 0  ! $!") g   # "k  ( ! $&&g g   #  ) 0  $"kk$) g ( ' #  g   ( $&{$&   g !$(   g !$(

Si se quiere congurar un servidor tambin es preciso el paquete portmap que puede instalarse con:

y que es preciso para convertir los nmeros de los programas RPC en los nmeros del protocolo DARPA. En lo que sigue consideraremos que portmap est instalado y funcionando correctamente.

10.2.2. Demonios y scripts de inicio


El script de inicio es:
) 1 ) 0  k!f"$)

Para crear la base de datos de NIS existe otro script asociado que est en:
g ) g ) %  ) #  "$""$&)

10.2.3. Ficheros de conguracin


Los cheros de conguracin a tener en cuenta son:
4  0 1 g ) 0  !3f)

en l se indica el nombre o direccin IP del servidor NIS que se emplear.

en l se detallan algunas opciones asociadas a la seguridad en el servidor.


  #  0  1 #  g ) 0  &&&kU$k)

en l se ajusta el dominio al que se le servir cheros.


(     ( 4   ) 0  "' &&&&)

en l se dene el nombre que se asigna a la red de ordenadores a la que se sirve NIS. Puede elegirse cualquier nombre.

10.2.4. Puesta en marcha de un servidor


Un servidor NIS permite ofrecer el contenido de ciertos cheros, por ejemplo el (o ) y el a un conjunto de clientes de forma que stos, adems de acceder a sus propios cheros y tambin puedan acceder a la informacin presente en el servidor.
  ( ) 0  !k&!)

4  0 1 #  g ) 0  `$k)

1 1 1 #  #  g )    #  0 ) g ) # ( )     $"$"$$ &"&$&&!k$l 1 1 1  ( % ( (      %    $$!k!&&!&k${&!"$'       ' k$"{" # ) tI& 0  # #   &"$0 kk   ( 0 (  !&&% # k$ " $& $&$&$"$h     #  #  4    # #  0  #   (  $k" !"$"     ( 0 (  !"&% $k" !"$" #   (    1   #  0 (  g &$"$""$ $&      # (    1  &"&{""&!2"" &{&p!&&$&$!!' &{"$ #  g    #    #  4  (    (     &{"$$0  (   k!$! 1  #  #  4  !&&$k k"&$ $ !&&%     ( 0 (  1 #  #  "$  #   }$${ $! &&{& k" $ "{&"{"&"k$ 0   4   ( 0  #  0   (   g

' D

  &&t# i # #  g #  ( %1 0   ( 1  ( g $&' "$f k9f!!"# #  g $&t#  ' ( %   ( &$1 !k&p# i i

4  0 1 g ) 0  ) #   #  !3fkS!

Los pasos bsicos para activar un servidor NIS son los siguentes:

Incluso en el servidor es conveniente introducir en un chero cul es el servidor NIS y eventualmente cules son los servidores NIS secundarios o esclavos. Esto se hace en el chero /etc/yp.conf:

  #  0  1 #  g ) 0  ) H 1 1 V 1 "&"U$pFFfF2

( '     ( 4   ) 0  )    #  0  0 "!&!&$ &$k& &

Dena el nombre del dominio en el chero . Dicho nombre deber usarse en todos los clientes y en cierta forma es una palabra clave para acceder al servidor NIS.

( '     ( 4   ) 0  "!&!&)

El contenido del chero tpico el siguiente:

4  0 1 #  g ) 0  3f$$$)

H 1 1 1  0 F2`9`92`F`& &

Modique el chero de chero sea

En este momento es preciso construir la base de datos de los cheros que el servidor NIS exportar con la instruccin:
#  ( ' e i i &!$k ) 1 ) 0  k&f  &)

Obteniendo como salida:


$&$&% &$"# ) g ) g )  ) 

Donde servidor-nis es el nombre del servidor NIS maestro.

Tan slo las mquinas en la subred 192.164.1.0 podrn acceder al servidor NIS.

Establezca el dominio al que se le va a servir la informacion:

de forma que la opcin, que aparece al comienzo no debe ser modicado siendo su aspecto 87

#  #  g  0 &$${& &

&!!&!k!$$$ && & ( '     ( 4   ) 0  )    #  0  0

   # 0 ) g ) # ( ) #  0  #   (  # $"$k$ &"$""3& &"!$&WF ' ( 1 1 1  ' ( %1 $2&$ "$"!!!j #    (  g 1 1 1 #   ( %1 $fk"$ "$"!!!j #    (  g 1 1 1 #   %1 g   #    (  g $fk$$&k!"!!!j 1 1 1  %1 g   #    (  g $f &&$$&k!"!!!j 1 1 1 g   #    (  g $$$&k!"!!!j 1 1 1  ( %1   0   # g  (  g $' "$&$&&&!!!j 1 1 1 #  % '  %1   0   # g  (  g $$"!$&$&&&!!!j 1 1 1  ( %1   (  g $2' &$ "!!!j 1 1 1  (  0 #  %1  0 #   (  g $2' &$$!$k!!!j 1 1 1  ' ( %1  0 #   (  g $2&$!$k!!!j 1 1 1 #  % '  %1 0 g #  (  g $f&!k$$!!!j 1 1 1  ' ( %1 0 g #  (  g $2&$!!!j 1 1 1 #   ( %1   (  g $f$$"$!"!!!j 1 1 1  ( %1   (  g $2' &$!"!!!j 1 1 1  %1 g   #   (  g $f !$f$&$!!!j 1 1 1  ( %1 g   #   (  g $2' &$f$&$!!!j 1 1 1   %1  ( g  (  g $$f!!"!!!j 1 1 1  ' ( %1  ( g  (  g $$&$f!!"!!!j $&#$0")&g)&#(&)3$&"&#  "$$WF ' #  0    #  # ( 1 1 1   4 $2$k "$"" $$i ( v ) g ) # ( )  

10.2.5. Puesta en marcha de un cliente

Para congurar un cliente NIS hay que seguir un procedimiento parecido al seguido en la conguracin del servidor. 88 Si no va a congurar un servidor esclavo pulse CTRL-D y despus acepte la opcin yes. Ver cmo se ha construido la base de datos correspondiente a los distintos cheros que se exportan. En estas notas no se describir cmo instalar un servidor esclavo ya que consideramos que crea ms problemas de los que solucionan. Es muy recomendable que el servidor sea cliente de s mismo. Cmo hacer esto se ver en la siguiente seccin. A continuacin arranque el servidor NIS con: para saber si ypserv se comunica correctamente con portmaper
#  g $ !"&S!!$$#   ( 0     4 0 g   ( 4   4 &&&$ 1 0 #  (  g ""!!$ # ( ) 1 ) 0  &k!f"$)

Dena el nombre del dominio en el chero . Dicho nombre deber usarse en todos los clientes y en cierta forma es una palabra clave para acceder al servidor NIS.
&' !!"!k!k$) (     ( 4   ) 0 

Utilice: e incluya el servidor NIS en el proceso de arranque con:

89 Introduzca el nombre del servidor NIS. Esto se hace en el chero /etc/yp.conf:


4  0 1 g ) 0  ) #   #  3f$$kS! #  #  g  0 &$${& &

A continuacin arranque el servidor NIS con: E incluya el servidor NIS en el proceso de arranque con:
  ( 4   4 "&!$ 1 0 #  (  g "&!!$ # ( ) 1 ) 0  $&$!&$)

Utilice: para saber si ypbind se comunica correctamente con portmaper


 ( g ) 0  ! $!")  % g   ( 0     4 0 g $!"$&! $$#

Aada al nal del chero


# # # H# H# # `"

A continuacin ya puede usar los usuarios denidos en el servidor NIS. Note que por el momento sus cheros de usuario an no se encuentran disponibles en el cliente.
g   #  ) 0  "k$)  ( g ) 0  ! $&&$)

Esta modicacin de los cheros servidor.

y en los clientes:
H`S&c2" H H e h w h i H H H e j w h i `S&c2"

Qu pasara si denimos en un cliente un usuario local con la misma UID (GID) que un usuario denido en el servidor NIS?, tendramos privilegios para modicar la cuenta de dicho usuario?. Intente hacerlo (una vez que est activo el servidor de NFS) y vea lo que pasa. Observar que efectivamente consigue acceso a la cuenta del citado usuario. Esto en principio no es demasiado grave ya que en cualquier caso el servidor NFS previamente debe concederme acceso y eso slo se hace con mquinas en las que se cona. El problema grave aparece cuando alguien suplanta la identidad de una maquina en la que se confa, por ejemplo cuando sta se encuentra apagada. Contra esto no hay nada que hacer a menos que se emplee un tunneling de ssh para transmitir el protocolo NIS y el NFS. En este caso es imposible suplantar a una mquina ya que en el servidor debera estar la clave pblica de la mquina suplantadora. Si quiere saber ms consulte:
) 4 )   ( ' ) ( 0 1 ( #  %  ( 1 ( ' ) ) # g k"!&H&32&"$"$b1 $$$h$$

4  0 1 #     ( ) 0  !3f$$k$)

Ya que es posible que quieran denirse usuarios locales en una mquina donde se emplea un cliente NIS, es imprescindible modicar el chero de conguracin de adduser, de forma que la UID y GID de los usuarios no entren en conicto con los proporcionados por NIS, esto se consigue fcilmente deniendo en el servidor NIS:
H`c2" H H e h w h i H H H e j w h i `c2"

g   #  ) 0  &$)

Aada la nal del chero


# H# # "

  ( 4 e i i &$&$$k ) 1 ) 0  k&f  &)

Modique el chero de chero sea

de forma que la opcin, que aparece al comienzo

la lnea

la lnea

debe hacerse tambin en el

90

10.2.6. Uso de NIS y herramientas bsicas


El uso de un cliente NIS supone la necesidad de cambiar algunos comandos bsicos que usan habitualmente los usuarios, asociados al cambio de la informacin de su cuenta, como por ejemplo passwd > yppasswd el password. Es conveniente crear los siguientes alias: chsh > ypchsh chnf > ypchfn El uso de los comandos sin yp se restringe a los usuarios locales. Es conveniente crear alias de forma que los comandos sin yp llamen a los comandos con yp. As slo se acceder a los comandos sin yp si se escribe el camino completo, por ejemplo . Tngase en cuenta que cualquier cambio realizado con un comando con yp en el servidor o en los clientes modica de forma automtica la base de datos y por tanto est accesible al resto de clientes. Si se realiza un cambio en el servidor NIS sin el uso de comandos con yp, como sucede cuando se aade un usuario nuevo, es preciso reconstruir de nuevo la base de datos y lanzar el servidor NIS como se describe en la seccin ??. Existen otro conjunto de comandos que dan informacin acerca de funcionamiento del servidor NIS: ypwhich Indica el nombre del servidor NIS ypcat -x Muestra los cheros que son servidos ypcat le Muestra el contenido del chero le Los anteriores programas son especialmente tiles cuando existen problemas de funcionamiento y no se sabe si existe conexin con el servidor.

10.2.7. El chero /etc/netgroup


y Aunque los cheros esenciales que se exportan con NIS son existen otros que facilitan notablemente el mantenimiento de un cluster. en el que se asignan direcciones IP a ordenadores que El primero de ellos es usamos con frecuencia, evitando dicultades en el caso de que los servidores DNS no presten su servicio. El segundo chero es . Este chero lo emplea el sistema exclusivamente si est funcionando el servidor NIS. En l se crean grupos de ordenadores o de usuarios que pueden ser referenciados de forma global. Nosotros nos centraremos en el caso del grupo de ordenadores. Supongamos que queremos crear un grupo donde aparezcan los nombres de los ordenadores del cluster. Para ello crearemos un chero con el siguiente aspecto:
g   #  ) 0  $&kk$) 1 1 $1   0  ' A$&& D$& &"&U AkA{ D$&&$"h  0 (  %  % (   ( 0 (  %  ( g ) 0  !!") g   #   ) 0  "k&$) g   #   ) 0  "k&$)  ) 0   !")  0 ( '   !"&D$$ &0

donde aadiremos en una nica lnea todas las mquinas que denen el grupo de ordenadores. En nuestro caso slo es preciso aadir el nombre de las mquinas, no obstante el segundo campo se destina a un usuario y el ltimo al dominio. En la prxima seccin veremos la utilidad de denir grupos de ordenadores al exportar directorios con NFS.

10.3. NFS
10.3.1. Paquetes Debian
Hay dos paquetes que deben estar instalados para el correcto funcionamineto de NFS y que pueden instalarse con:

 ( g ) % )  !!"& &# )

91
 '  0 4 #  #    # ' $!&k"& 4 "! 4   ( !{$&    g &$(

De nuevo es preciso tener instalado el servidor portmap.

10.3.2. Demonios y scripts de inicio


Los scripts de inicio son:
 ' '  0 4 ) 1 ) 0  $k&"!!f "$) #  #    # &$k"$"$ &"!!f "$) 4 ) 1 ) 0 

El script nfs-kernel-server lanza los demonios rpc.nfsd y rpc.mountd mientras que el script nfs-common lanza los demonios rpc.statd y rpc.lockd. Estrictamente hablando nfs-common no es imprescindible lanzarlo aunque es conveniente. De todas formas dejamos al lector la decisin de emplear o no estos demonios.

10.3.3. Ficheros de conguracin


Los nicos cheros de conguracin a tener en cuenta son: para el servidor y para el cliente. Un ejemplo de chero exports sera:
 #  1  1 &h!hf$i g  $) &(&k2!c$"&fkUk  % w   # w  #  % ( 0  $)  #    '  0 (  #  ( 0   ) #  ""h&&$$' "$&$&) kh2k& #   ' #   ( 0   ) #  $&$&) % ( 4 ) 0  " "k$)   $$' #  g  ) 0  "$$)

donde en la primera lnea se exporta el directorio a dormilon con permisos de lectura y escritura. Este permiso de lectura no resulta vlido para el root. En la segunda lnea se exporta el directorio a dos mquinas con slo permiso para la lectura. En la tercera lnea se exporta el directorio a sabio con permiso de lectura y escritura y gracias a la opcin el root tambin tiene permiso de escritura. Esta opcin ha de emplearse con mucha precaucin. Finalmente en la ltima lnea se exporta el directorio a todo el dominio uhu.es con permiso slo de lectura. Como ltimo comentario ntese que no existe espacio entre el nombre de la maquina a la que se exporta y el apertura del parntesis, . Con el chero fstab puede montarse de forma automtica un directorio va nfs. Como ejemplo de esta utilidad aqu se incluye un ejemplo:
H 0  ) H  ( 0   )  &$"# )   ( 4  &&& 0  $)  ( 0   )  $&$"# )   '  # g  &&S$$) (  % w   # w  !&$&&`&   '  # g  "&$$) g  ) #    # $$h"k!$k

Este ejemplo de chero fstab montar en el arranque el directorio exportado por grugnon en . Hay que destacar que los cheros exportados por mquinas remotas siempre pueden montarse manualmente con mount. Por ejemplo, la anterior lnea de fstab puede montarse tambin con:
g  $$)    # g  ) g  ) #  %  #  4 &' "S$$9I&$k"!

1 #   g '  &$!0

1f$b$"!$$k$    '1 0 g #  (  4 1 0 g # %    #&&k&$#&g!#""&$$kk"{ &"$$kh 0 #   ( 4   ( (  0   4 1  # 0   ( #  4 #  g    $g !!&{&"~&$ #  g  ) 0  "$$)

Esta prctica es muy til pero puede causar serios problemas en el proceso de arranque si existen problemas de red. Cuando analicemos el programa autofs aprenderemos a minimizar estos problemas. Hay que comentar que en lugar de defaults pueden emplearse otras opciones que mejoren el funcionamiento, por ejemplo:

har que el directorio no se monte automticamente y que cualquier usuario pueda montar o desmontar el citado directorio sin ms que escribir . Para desmontar habr que escribir , pudiendo hacer esta operacin cualquier usuario.

92

Para poner en marcha un servidor primero debemos decidir qu cheros y directorios queremos exportar. A continuacin crearemos el correspondiente chero como se explic en la seccin anterior. Si queremos exportar directorios a un conjunto de mquinas resulta conveniente emplear la denicin de grupos que proporciona NIS. En el siguiente ejemplo mostramos un chero empleando esta capacidad:

#  g  ) 0  $&$$)

Como puede observarse se exportan distintos directorios al grupo de mquinas A continuacin hay que inicializar los distintos demonios:

 0 ( '   0 && "H$""

Si estos servicios ya estuvieran funcionando habra que emplear restart en lugar de start.
# (  ' '  0 4 ) 1 ) 0  $&$$!"!&f  &) # ( #  #    # &&k"&$ 4 ) 1 ) 0  !"!&f  &) g  )   $' H   (  #  &$"

10.3.4. Puesta en marcha de un servidor

""#h && 0"('H$"0"'&#k0&) "$"$) ( 0   v i i  &h!" &D$ &$$&$&)  #  0 ( '   0  ( 0   ) #   #  0 ( '   0  ( 0   ) #  &h!" &D$ &$&$&)  ( 0    ( 0      (   $"$$&!!k!&$  #  0 ( '   0 0  ""h!&  &H$"n) v h     0 ( #   4  `ST$&&&k kh!" &D !k" #  0 ( ' '    0   ) #   ' "kk)

j    (   !kS!!"$"

g  )   ' $

g  $)

4 

  '  # g  "&$$)

g  ) #    # $h&k!$$

93

10.3.5. Puesta en marcha de un cliente


Para montar va NFS directorios exportados por un servidor, simplemente es preciso tener creado el/los directorio/s donde van a montarse los directorios remotos. A continuacin, el montaje . Si se opta por puede hacerse de forma manual con mount o empleando el chero esta ltima opcin, el montaje automtico se realizar la prxima vez que se reinicie el ordenador.

10.4. Autofs como complemento de NFS


autofs es un servicio disponible en Linux que permite montar recursos exportados va NFS de una forma automtica: los directorios slo se montan en el momento en que es preciso su utilizacin y son desmontados pasado un intervalo de tiempo, que se ja en la conguracin, desde su ltimo uso. Este sistema adems minimiza los problemas derivados de montar directorios va NFS cuando el servidor deja de responder. Hay que destacar que autofs tambin puede emplearse para montar recursos locales como CDROMs o discos USB

10.4.1. Paquetes Debian


El nico paquete que es preciso instalar es el autofs que puede instalarse con:
4   (   ( "k&$&    g &$(

10.4.2. Demonios y scripts de inicio


El script de inicio de este servicio es:
4   ( ) 1 ) 0  ""$$!f "$)

10.4.3. Ficheros de conguracin


Ya que se exportan cheros va NFS, en el servidor debe existir un chero apropiado. El resto de cheros de conguracin es:
#  ( '1   ( ) 0  &!X2"$$) #  g  ) 0  "$$)

donde se especican los directorios sobre los que se montarn los directorios remotos, as como el tiempo que debe transcurrir para que se produzca el desmontaje y nalmente el nombre del chero donde se especica la localizacin de los directorios remotos. Un ejemplo de dicho chero es

El contenido de los cheros

% ( 4 ) 0  &"k$)

&&' "&$$)     #1   ( ) 0    1   ( ) 0  ' &2"$$) H e   ' V&$HS$ &"&&&$$)    '  #1   ( ) 0  &"&&)    '  # H    '  '  1   ( ) 0  S&e$$H$&2&$) #   k) 1 " &( 4   (   ( ' #  4  4   (  $$!&k!"&! & #  "$l$k$%"("(&k!$$D  ( 0  ( ' ' 0  # g   g    ' ('#!4 $!4&&& !g('&$' &$$h     (  ( #      ( (   $4 " !b&$$&&'  #  ( '1   (   g (

R g  ( # # # H ) H ) H H rk""$9$T$$``S

1 #  ( '1   ( # 9&!b2"$ "R

es

('#!4 $$!&!& !&$' "${$ kh     4  (  ( g ( ' #      ( ( R g ( g V H# # H ) H ) h 1 wkT&`$F4``$h k b&$ "R 0 '1   ( #   1   ( ) 0  ' "2"$$)

Donde la opcin timeout indica el nmero de segundos que tardar el directorio en desmontarse desde su ltimo uso. El chero ser
HS!eHS V   '    '  #1   ( ) 0  &""&2&$)    '  # &""&) H    '   1   ( ) 0  `!eHS' &2"$$) #   k) 1 ~ "$(( 4    ( ' #  4  4   (  $k!{&!&&! & #  0"$$'$$k&("("k!$$D  (   ( '  0 %  # g   g    ' ('#!4 $$!&!(& !g('&$' "${$ kh   4   ( #      ( (   4 #  ( '1   (   g ( " &b&$"!'  R g  ( # # # H ) H ) H H w$k&"{$h$$$!S!$`` 1 #  ( '1   ( # " !b&$ "R   ) # ' " ' #   ) #  '  0 $ 0 ( % ) "&9#  ( )    ) # ( ) #  '  #  #  &' $$"g &&"h$&& $k g  ) # g '  #  #  !' "h!&& $k

10.4.4. Puesta en marcha de un servidor

94

10.4.5. Puesta en marcha de un cliente

En el servidor, o servidores, no hay que realizar ninguna modicacin respecto a lo que se hace cuando se exportan directorios va nfs

Cuando se emplea autofs hay que tener presente que los directorios remotos que se van a montar va a colgar forzosamente de algn directorio concreto que hay que especicar. Estos directorios no tienen porqu existir ya que autofs los crea y los destruye cuando son precisos y cuando dejan de serlo respectivamente. Para jar mejor las ideas nosotros crearemos estos directorios. Vamos a considerar que se va a montar el directorio de las cuentas de los usuarios y otro conjunto de directorios que pueden ser tiles. Para este n crearemos dos directorios con:

0 ( % #   #  &"S!$ g $

# k

0 ( %    #  0  &"&& &&#  # $S

# $S #  0  $&"&# 

0  ) #  '  #  #  $h$&& $k

v h     0 ( #   4  0    #  0 $S!&"$k!&&&&

El chero
 0 k 0 ( &"%  ( &'  ( ""v g  &' " 0 ( 0 &# &  # "S 0 

#  ( '1   ( ) 0  &!X2"$$)

tendr el aspecto:

 0 k "&$ &&) 0 ( % )  0 0 ( % "(' $&g &&&&) )    ) # ( )  ( ' g '  ) g  !&&' &)  0 0  ) 0  ) 0  $${)  ( 0   )  )  ( 0   $&$"# $&$)

&""&{    '  # ) 4 &""&{    '  # ) 4 &""&{    '  # ) 4 &""&{    '  # ) 4    '  # ) 4 &""&{

    

Donde se especica que el directorio remoto (que fsicamente est en servidor-home) se montar sobre el directorio home y dicho directorio se montar con permiso de lectura y escritura. Hay que recordar que este directorio est contenido en , de forma que el directorio remoto se ver en . Por otro lado el contenido de ser:

Con el que se montan los directorios local2, etc, temp, mail, back-cl dentro del directorio de forma que tendremos los directorios:

   '  # &""&)

Los directorios que hemos montado no estn localizados en sus posiciones estandar de forma que es conveniente hacer links simblicos para solucionar este problema:
0$ "&) 0 ( %  ( ' ") g '  !&) 0  )  ( 0   $"$) &"&&)    '  # &"&&)    '  # &"&&)    '  # &"&&)    '  # &"&&)    '  #

95

 0 k

0 ( % ) &"h#

0 ( % #  #  "&& $k g 

# kS

 0 $

0 ( &&%

0 ( %    #  0  &&{&{&"&#  # k

 ( ' )    g ) # ( ) #   #   #  &$$&!"&9' "S!

 ( &'  ( ""v

g  ) # g  #   #  &' &9I!' "S!

# k #  0  # $""&

g  &' & 0 ( 0 &# &  # "S 0   ( 0  $&$

0  ) #  '  #  #  $9&S& k  ( 0   ) #  ) #  ( 0   #   #  $&$&h$&!  # &

  ( g ( ' 4   (  &&~""$"$ &{"7&&""    4  % ( '  (   ( 0   ( ' '  0 %   ( # ( g   g    ' "$l$k$""&k!$$D ('#!4 $!&&& !&$' &$$h     4  (  ( g ( ' #      ( ( R g ( g V H# # H ) H ) h w$$T&$`$F4S!S 9!k b2"$ "R 1 0 '1   ( #     #1   ( ) 0  "&' "2"$$) #   )  '  ) #   &k)

  ) #   ) #  '  #  #  ' &h$&& $k

# k

  ' &

  ( g ( ' 4   (  &&~""$"$ &{"7&&""    4  % ( '  (   ( 0   ( ' '  0 %   ( # ( g   g    ' "$l$k$""&k!$$D

96 el directorio estar vaco (incluso puede Resulta curioso que si ejecutamos no existir si hemos optado por no crearlo), pero en cuanto accedemos a alguno de los anteriores link el correspondiente directorio ser montado. Lo mismo sucede si por ejemplo tecleamos .
&"&&&    '  # )

10.5. Bibliografa
Para saber ms puede consultar: http://es.tldp.org/Tutoriales/NISNFS/nis-nfs98/ por J.E.ez Zuleta. man nfs. man ypbind. man ypserv. man autofs.

 ( 0   $"$)

&"&&&    '  # )

Captulo 11

Proceso de instalacin de Debian Sarge en los nodos


En esta seccin abordaremos cmo instalar Debian Sarge en las mquinas del cluster de forma que todos los cheros de conguracin sean los adecuados y todos los links que son precisos existan. Vamos a plantear dos procedimientos: copia directa del sistema de un ordenador que ya funciona con la posterior modicacin de ciertos cheros de conguracin o instalacin estandar de Debian con la posterior copia de cheros de conguracin.

11.1. Instalacin por copia directa


En esta seccin presentamos un script que realiza la copia directa de un sistema Debian que est funcionando a un ordenador en el que hay que (re)instalar el sistema.

11.1.1. Requisitos
Mquina que exporte su directorio raz y todos aquellos directorios que sean necesarios y se monten en otras particiones, por ejemplo , , . El chero debe contener la siguiente lnea:
# ( &)  ( 0   ) #  $&$&) &&k2!c$"&fkU& (  % w   # w  # ( (  % w   # w  # ( &&k2!c$"&fkU& &&k2!c$"&fkU& (  % w   # w  # ( (  % w   # w  # ( &&k2!c$"&fkU& )   % &&) $`"&!  % ( ' w (   w   w  % ( ' w (   w   w $`"&! $`"&!  % ( ' w (   w   w  % ( ' w (   w   w $`"&!   % $")  ( 0   )  $"$$"# ) # ( ") #  g  ) 0  $&$$) )

Hay que recordar que el uso de la opcin entraa peligro para el servidor, ya que durante el proceso de copia podra borrarse toda una particin. Es preciso tambin autorizar en el chero la direccin IP de la mquina en la que va a copiarse el sistema. Algn sistema live-CD o live-diskette. Diskette o disco usb con los scripts que a continuacin se detallan: copy-nfs, part, fstab. Direccin IP y nombre que tendr su mquina. Tener claro si hay que conservar alguna de las particiones existentes en su ordenador. 97
&&k2!c$"& (  % w   # w     ( 1  ) 0  $$h !")

98 Tener disponible la conguracin de su tarjeta grca (chero /etc/X11/XF86Cong-4). Discos de arranque para el nuevo sistema. Hay que tener claro en qu particin y disco duro arrancar Linux. Una alternativa muy conveniente es un diskette con Grub. Cercirese de que en su ordenador la secuencia de arranque presenta la unidad correspondiente al CD antes que el disco duro. Asegrese de que tiene permiso para montar el disco duro remoto de la mquina que le suministrar Linux. Si va a reinstalar Linux, realice una copia del contenido de su cuenta (si esto es posible) as como de toda la informacin que pueda ser importante, en un lugar seguro. Conocer el password del root del sistema origen.

11.1.2. Uso
En esta seccin se dar una descripcin detallada de los scripts de instalacin, del riesgo de su uso y de los casos en los que se han usado satisfactoriamente. En primer lugar se arranca con un live-CD o live-diskette y en lo que sigue supondremos que la red se ha congurado correctamente. Si este no es el caso no podr seguir adelante con este procedimiento. En segundo lugar hay que montar el diskette o disco usb donde estn los scripts de instalacin. Finalmente hay que ejecutar desde el directorio donde estn montados los scripts:
( ' #  4 4 g  0 ) &"!S$&h1

para crear las particiones y despus correr:


g  0 4 g  0 ) $k"!S$&h1

para proceder a la copia. Hay que recordar que al realizar este proceso de copia pueden borrarse datos del disco, especialmente al realizar el formateo. La responsabilidad sobre el uso estos scripts recae sobre el usuario y no existe ninguna garanta sobre los mismos. Se recomienda no usarlos a no ser que se comprenda razonablemente bien su contenido. part Para ejecutar este script teclee:
( ' #  4 4 g  0 ) &"!S$&h1

El contenido del script es el siguiente:


 % h $$ k $$ kk} % h (! &$  !"") ( % ) % ) V

# ( &)

Este script hace uso de la utilidad sfdisk que permite trabajar de forma no interactiva. Se asume que el disco duro que se emplea est en hda. Primero se crea una particin extendida que ocupa todo el disco duro. A continuacin de crean las particiones adyacentes 5, 6, 7, 8, 9 y 10 que , , , swap y , respectivamente. correspondern a los directorios ,
1 1 $1 H&&&) (  )   (  )   k&&&) h (  )   S&&&) $&&&) (  )   (  )   `&&&) 1 1 $1 (  )   ) g ( !!&!k" ' g (   (  #  0 !!&"& `S{k &$h4 ' V H  1 `S{k &$h4 ' V H  1 `S{k &$h4 ' V H  1 `S{k &$h4 ' V H  1 V H `S{k &$h4 '  1   (  ( ' #   0 &$&k!"& (  )   )  !&!  4 k$   0 # ( g c&&$& k&&"&"&  (  0 i (  )   T$!!&!k) i  h$ U"2Q h R $U&2Q h R $U2Q h h R h R $U"2Q $Uc2Q h R h$  4 k$ $S"$`"gS~&h R ) H H H i R R e $S"$`SSgS~k!h R ) H H H i R R e $S"$`"gS~kh R ) H H H i R R e h $S"$`"gS~&h R ) H H H i R R e R ) H H H i R R e $S"$`SSgS~h R # U  h j R #  #   0  S2&$z!"9z&k!"$&& "SR #  #    0 @!"k &"W"&  V H ) V H ) h j R i R !&!`Q0~"S2$ # g h l $${ ( e 3$`&  `w R # g ( j g  #  (  )   )  $ !{&k&"&  4 e h $Aj  kw R # g ( $"kX!!&!k g  #  (  )   )   4 e k$A!" 1 (   ( '   (  ( '    g (   #  # 0  2$""H&{S&$&{$"$$&&  g (         (  (   0 # ( g ( ' #  ( (  #   %  !"!!"$g &!&!k&!"$$"7&"2"kT"   ' ") $(0"$)&# )  g ' !k) H h $$ T&!"   i g ( % h k $ kk  % h  % h $ k

  ' ")

 ( 0   )  $"$$"# )

g ' !)

# ( &)

99

(  e i $&$$`U (  e h i i i `!!k!2`c$U 1  &%$ k$(!!t &t$"$kk %  ( #  #    0 1 V 1 H e i i `9kF1hS!kkS 1(g0($(&&($"#k&k%T&&! $!"'&#& $      #  #  g  0 k

` # ( g ) $&91 1   0 # ( g (     0 (  # !"$$"!$&&$" ( ' #  4 k& i R w k!0 g  R  (  &  g  #  &4

 0 ""  0 $$$$$$$$$$$$$$$$$$$$$$$$k""  g      0  0 !!k"" 1  '  2&&#&&7k"" #   (  0 !${!!!"&"&$(k""   #    ( 0 # ( g 0   '  0 $T! $&$(" $&"g{' "kk&kk"" 0 (  ( ( # ( ( ( #  #  0 $$$$$$$$$$$$$$$$$$$$$$$$k"" 0  0 "" 1 $ 1 V H V  0 ( 0 4   ' ( '  fSk&$kSj  # %  g     1  ( i ( 0 # ( h 1 1 &!' $"" !&&' "{$&tfl

12"' &#&("!!   #    # $!!&$ T& ("#"(& $ ${&{($& #!$0 g '  g 0 (  '  1 4 g  G$#I!)"# )9I%&h# % &)9I)9IU`h`$`$ 1 % # ) #  ) # % # R e U h ) % !")

copy-nfs

El tamao empleado en cada particin aparece en el script. Hay que destacar que sfdisk slo lo hemos probado en ordenadores que no tenan ninguna particin con Windows (TM). Tal y como est escrito, part destruye la tabla de particiones y crea una nueva. Una vez que estn creadas las particiones se procede al formateo de las mismas.

100

Para ejecutar este script teclee:

El contenido del script es el siguiente:


g  0 4 g  0 ) $k"!S$&h1

1  ( #  g   #   0   0  # &&&!&kk$"&g ( #   ( # ( g  0    #  0 4   #  #     &&"&7!&&&!& $k$F !"$&&4  ) (   #    0 # ( g ( (    # #  0   %  #  0          %    !"$$$&{!!"g !"$&$&& &&# !!!k&{&$T!"" 1  ( 0 # ( g ( g  0  ( g  0 (   2"{& ! &$"&$l!"&" #   0  ( )   (     0   %  #  0  # ````````````   ( g  &! ````````````

1 1 $$1

i )  ( 0   $$"$$) $ "S #   ) # ' i ) # ( &&) $ "S #   ) # ' i )   # "&) $ "S #   ) # '  0 "&     #    0    ( # #  l  0 & !!"$kk!&&{"&  0 "&

1  #    0      (  ( ' #  4 ( (  2"$$k$!k$&k!"&{k    %    ( 0        # (  0  1     #    0       ( # #  "{&kT&{k!$&"&2& !!"$kk$!&&"l $("$!$) 0   )    # ( )    &!$)   # )    &!$) $(0"$$)"# 9Ik`kS$T"!S ) # i i R 4 #(")9Ik`kS$T"!S # i i R 4 ) # i i R 4 9Ik`kS$T"!S

$'   $'     $'

1 1 $1

$0"$$) $ "!kSi`R`"!k&$S $'  (     ) U )  )    # (&) $ ")  i U R  )  $```)"!k&$S $'     &#) $ ")  h`c$``"!k)&$S $' i i i U R )      0 "& )h$`i$("' &# # i R  "&  0 y``&!k) U R )   ( 0  $&${!&& !($&("$"vu"&  (    0  0 "&   (   (     (  !&!&$!!S&v

 ( 0   $"$$) $ " '   ) # # ( &) $ " '   ) #   # &) $ " '   ) #   ) # $ " '  ( 0   )    ) # $"$$&$ ' # ( )    ) # &&$ '   # )    ) # &&$ '    ) # $ '  0 "& k &)k$&& &&# !!$"W"&    )  #  0       (  #  0  0 "&  # (  0   #  0  #   &&"&!""&! $&&k  0 (  # (  e i k!!kk!kS`U

101

 0 "" 1 (   ( 0  (    0 1 # ( 0 4   '  2& &${"${!"# $k& 1 #  )   (    0   %  #  0       ( g  f&!k$& &kn!&"&# !&  # &) $ "33S"p p p p    ) R H i i R R i i R R i i R R h i i R R i i R i R R V i R R i R R i R R i R R H i R R`i `2Qi `2Q i `2Q`i `2Qi `2Qi `2Q `&i`R2p&pi `2Q`"`p`i 2Q`2p& R i R i i R R h i R R i i R R i R R V i i R R i i R R &i `2Q `2S &kkH&3 0 `}$&!k$$0 i R R i i R g  #    ( g   # )    )   0 "" 1  ( 0 2$ !!k ""    0 ($(&$""("$"S{k!&$2!k!S&"&{"&{"" #    ( # g h    1   ( g  0  (  0 #  g   #  ( # ( g 4   0 ( % 0 &#!!$"#{' 0&$&$S{&k!"$!!k "$"$""    #  " h   (   g   ( #  ( # %  0  0 "" 1 $11 &!k$& &kn!&"&# !!!T"" )   (    0   %  #  0     ( g   0  0 "" 12& &${"${!"# $k& (   ( 0  (    0 1 # ( 0 4   '  1 )   (    0   %  #  0       ( g  2&!k$& &kn!&"&# !&

1 #  )   f!

 ( 0   e $"$&k!i j  ( 0   e i &!k&j  ( 0   e $"$&Si j (     0   % ( g  0 (    &$"&$T$&# && &&#    0  (  #  0 

e H $S&i i # kk i i  e 1 (  0 ( g&"$$"{!!!{$""&k' ( (  #      (   (    % 4    k "k%k&{( S&{$(&& !"${&!!k&&(   #   H  #  '   # #  g     g  1   ( # ( g   !"$$ &$!!{&&$ H!&($"&&&"$( &kT"$"   (  (  # (  '  (   #  (   % ( # % ( !'&{&&$#"&!&$(&(&&g!""&  % (  ( 0   ( 0 ( g ( g  0 (  # (   # # (  #  0  # !&( (!k&$t!""&!&!!$$0&{!  #   #     1 #  0 #      ( # ( g ( g  e $i i e h $i i e k i i e ki i e V Wi i e $i i e k i i e $i i e H $i i e &i i e k!i i e h ki i e &i i e i i e V $i i e k!i i 0  # g e &&&i i ' e $&{Si i

102

 0 "&  ( '    #  0 4       ( # #  "!!"& $&$!&&"l

1 1 $1

g ' &

g!k&$") k&!k$0 ' )   #   ) # " (   '  0 "& (   0 0   # g   ( % (  0 {!"$$"&&${&&' "&  0 "& i #

'k#$2)&g&')&&) $ " 0   #  )  0 "& g '   ( # #  l  0 !k{!&&{"&  0 "& 1 1 $1

 0 0  ) 0  $$) k &$)  ) 0   ( )    ) # ( "' $&g &&&) $ "&' )   )  ( g '  )   # !&"&) $ "!' ")   ) g  #  (  '  )   # "&"&) $ "&' ")   ) #  (   k "&&&) $ "$ &") 0 0  0 ( % )   #  )  0 0  0 ( %  0 0  k "&&&) $ "$ &") 0 ( % )   #  )  0 0  0 ( %

    )   # "&' "#&$") k&{    ) 4    )   # "&' "#&$") k&{    ) 4     #   # "&' ")&$") k&{    ) 4    # )   # "&' "&$") k&{   ) 4     # )  # "&' "&$") k&{  ) 4 "&' "&$") k&){    # )  #  4  0 "& 1 1$1 "& &(&#"&  0  0  0 "& &!    0 (  # $"$"

)&"$)"&) $ " ' 0 # g   #   ) # )&!' "&) $ " ' )  #   ) #  0 "& 1$1$1 && &&# !!&"&  #  0 (  #  0  0 "&  0 (  # $&&k 1  #  0  #   !""&! `````````````````````  #  0  #   !""&! $&&k  0 (  # `````````````````````

1 1 $$1

( $0"$$) $ "r 0 `$"$!$ 0    ) i ( g  ( 0   )    )  0 "& $(0"$)&# )! (!& 0 "kl!""&!"&    %  #  0  #    ( g   0  0 "&  ( 0   ) #  )  #  0      ( g  $$&$&&"&# $&{

R j R R i j R `&i 2Q22

1 1 $1

# !  ) 

# &$") k& 3r!i 2  )   #   ) R j R g&#$H!&3 0 &&!$ 0  ( g #  )   # )    ) #  )   # "&) $ " '   ) #  0 "&   %  #  0  #    ( g   0 "kl!""&!"& (    !& 0

103

104
1 1 $$1  ( 0   ) #  $&$&) # ( ") ) i )  ( ' )    g ) # ( $&$$&!"&) k &) k#  '  0 ""  ( '    #  0 4   ( # #  l  0 &&&&"!!&"""

En este script se asume que se han creado las particiones que aparecen en el script part. Se y . asume tambin que en el servidor hay tres particiones diferentes para , Hechas estas aclaraciones, la nica variable que hay que cambiar es la correspondiente a la direccin IP del servidor de cheros. Se recomienda que dicha direccin no corresponda al servidor del cluster ya que en este caso habr que realizar gran cantidad de ajustes nales. Antes de correr el script es preciso vericar si el chero fstab es acorde con las particiones creadas. Si no se han modicado las opciones de los dos scripts, el chero fstab debe ser correcto. Finalmente, hay que destacar que algunos de los links que se crean pueden no tener sentido; por ejemplo, en relacin a , habr que eliminar el link si la mquina en la que se hace la copia va a ser el servidor de dicho directorio. Ajustes nales Aunque tengamos ya copiado el sistema en el nuevo ordenador an hay que hacer algunos cambios para que el sistema sea totalmente funcional: tarjeta de video, direccin IP, etc. Reconguracin del sistema I (red) Antes de arrancar el sistema puede comenzar a recongurarse para que cuando arranquemos funcione correctamente la red. 1. Nombre de la mquina. Modique los cheros /new-disk/root/etc/hostname y /newdisk/root/etc/HOSTNAME de acuerdo al nuevo nombre.
g  !' ")

  0 "" a%(" "4k)0$)"&#) $ ")($4 &&k!&{"$$ &""   # 0 #   ( g      0  0 "" 22$$h& $}}2`!ick$$$}}{"" i h v h j h i  0  0 "" 0   $)"&#) $ "" "4 g 0   ) % (  0 "" 1$1 %(&"4!!!T"" 1   ( g   0  0 "" % ( 4   ( g  " {&  a&k$h}&Sx g   g   0 "" a('#&4(    k4(k!4 ' #  0 "" g a$0 "& 0 # g  0$!kD"" ( j  0 g   &S` g     1  g y&$f$   "$"&&""  (   0 &i   "& 0 ( "&

105 2. 3. 4. Direccin IP. Modique el chero /new-disk/etc/network/interfaces para incluir el nuevo valor IP. Aada el mdulo correspondiente a su tarjeta de red, caso de ser necesario, en el chero /new-disk/root/etc/modules. Modique el chero /new-disk/etc/mailname de acuerdo al nuevo nombre de la mquina.

Desactive el sistema xdm La parte grca del sistema es muy probable que no funcione inicialmente por lo que el sistema de arranque automtico del sistema X es conveniente deshabilitarlo, para ello teclee: rm /new-disk/etc/rc2.d/S*dm Instalacion del Lilo Edite y modique convenientemente el chero /new-disk/root/etc/lilo.conf El aspecto del chero a modicar es:
 4  0    %   ( #   !"$&$""&!h

Reconguracin del sistema II A continuacin debe arrancar el sistema y hacer una serie de cambios en la conguracin original para que el sistema funcione correctamente. 1. 2. Cambio del passdw del root con el comando /usr/bin/passwd. Modique el chero /etc/aliases. Cambie en la linea donde aparece root: pepito, pepito por el username del usuario responsable de la mquina. A continuacin corra el programa newaliases. Vericacin de los scripts que lanza el programa cron. Tiene que analizar los directorios /etc/cron.d, /etc/cron.daily, /etc/cron.weekly y /etc/cron.monthly. Si quiere eliminar algn proceso debe ocultar el chero adecuado mediante mv /etc/cron.xxx/script1 /etc/cron.xxx/.script1. No realice cambios si no est seguro como funciona este demonio. Vericacin de los scripts que se lanzan en el arranque. Tiene que analizar el directorio /etc/rc2.d. Para aadir o eliminar procesos de la secuencia de arranque hay que usar el comando update-rc.d. No realice cambios si no est seguro como funciona este demonio.

3.

4.

  &

A continuacin teclee y seguidamente tambin puede llevarse a cabo con el gestor de arranque grub.
)   # &&)  )   # $ "&0

i i i i i i i i i i i i ( 0 # ( v i i i i i i i i i i i i i i (  )   ) e   ``````"````````r`&"&!!&# 1 1 $1

i i i i i i i i i i i i ```````2

(0#(vii````````r&"&!!&% i i i i i i i i i i i i (  )   ) e    0     %   4 0  g $&$""$!$&"

. Todo este proceso

106 5. Comente o aada todas las lneas necesarias en el chero /etc/exports, dependiendo de los directorios que comparta. Si posee CDROM, mire el chero /etc/exports de un ordenador que lo posea y copie en su exports todas aquellas lneas que hagan referencia al CD. Reconguracin del NIS (No es necesario si se realiza la copia desde un ordenador diferente a servidor-home). Vamos a suponer que su ordenador no va a ser servidor, en ese caso en el chero /etc/init.d/nis, la variable NISSERVER debe tener el valor false. Conguracin de particiones DOS. Debe crear un directorio que se llame /dos, /msdos o /windows y a continuacin modicar el directorio fstab introduciendo una lnea como esta: Por supuesto esto deber realizarlo si va a tener alguna particin dos. 8. Conguracin de la tarjeta grca. Si tiene a su disposicin otro ordenador con idntica tarjeta grca simplemente copie al nuevo ordenador los cheros: /etc/X11/XF86Cong-4 Si no puede aplicar la anterior solucin, use el programa XF86Setup que le guiar hasta congurar denitivamente su tarjeta. (Nota: deje este proceso para cuando todo en el ordenador, incluido la red, funcione correctamente). Tambin puede usar el programa xf86cfg si no posee el chero adecuado de conguracin. Para que dicho programa funcione debe tener instalado el servidor Xfree86. Una vez que crea que el modo grco funciona correctamente, corra startx. Si todo va bien slgase del modo grco y siga con la conguracin. Si por desgracia las cosas no funcionan vuelva a intentarlo de nuevo con el programa XF86Setup. Activacin de xdm en el arranque (no lleve a cabo esta tarea si no ha congurado convenientemente la tarjeta grca o si piensa que puede existir algn problema relacionado con ella). Escriba: update-rc.d -f k(x,g)dm remove update-rc.d -f k(x,g)dm defaults Para ver si el sistema funciona correctamente escriba: /etc/init.d/k(x,g)dm start No olvide comentar la lnea
1 1 $$1 (  % w   # w  # (  % ( w (   w !"k&$&`"$h&kS' &&$ )   ( 4  "!k!   &!'   ) (  )   !!k!!"!k)

6.

7.

9.

10.

que aparece en el chero /etc/exports tanto del nuevo ordenador como del ordenador que se us para copiar. 11. Arranque de nuevo el sistema y vea si todo funciona correctamente.

11.2. Instalacin a travs de los discos de Debian


El proceso de instalacin descrito en la seccin anterior es bastante efectivo y sobre todo garantiza que la conguracin de la nueva mquina dentro del cluster es la apropiada. Otra ventaja est en que no ha habido que realizar ningn tipo de conguracin a la hora de instalar los distintos paquetes Debian. A pesar de ello hay ocasiones en las que surgen problemas inesperados y hay que realizar una instalacin de Debian con los discos del sistema. Como ya sabemos esta instalacin es muy rpida

 g )    ) # ( ) #  !$$&g &&&"$!) "k%l!#&"&# {!(&#$0$# !'Sk $&0  0  ( ' (  # (  # 0) g 0 # ) ($$g0$"$k!0  ) #  ) g ( #   # g ' &!"$&H ) 0  $) 0  $) 0  $) 0  $) 0  $) 0  $) 0  $) 1 ) 0  f"$) &' !!"!k!k$"$k!0 (     ( 4   ) 0  ) #  ) g g  #   ) 0  ) #  ) g "k&$"$k!0 4  1     ( ) 0  ) #  ) g 0`#kk$"$k!0 g    ) 0  ) #  ) g $"#kk$"$k!0  ( ) 0  ) #  ) g !" &$"$k!0  ( ) 0  ) #  ) g &$&&g$"$k!0 i g 0 ) # ) g 3$)$"$k!0 k!f"0$)"$#k!0 ) 1 )  ) g $  ' 1  ) 0  ) #  ) g &2&($"$k!0 &""&#2&)$)"$k!0 '  1   ( 0  #  ) g # & &X12&0$)"$k!0 ( '  ( ) #  ) g 4   "k&(    ( 1 $$9 kS9  %  1 ( #  1 "$$9  0  ) #  ) g &&)$"$k!0 &&)$"$k!0  0 ) #  ) g ) ) #  ) g &&0$"$k!0  ) 0  &&$)"$#k!0  ) g   &&

0$)  0$)  0  $)

0$)  0$)  0$)  0  $)

Instalacin

Se proceder a la instalacin del sistema base de Debian. A continuacin se seleccionarn los correspondientes mirror de Debian para continuar con el proceso de instalacin a travs de la red. Para decidir los paquetes que debemos instalar, correremos en la mquina que nos servir los cheros:

El proceso de conguracin consistir en copiar una serie de cheros del servidor del que estamos copiando toda la informacin y crear un conjunto de links. En lo que sigue consideraremos que el el directorio est contenido o montado va nfs el directorio raz de una mquina con idntica conguracin a la que nosotros estamos creando.
#  $!)

y la parte ms delicada del proceso va a ser no olvidar ningn chero de conguracin asociado a los servicios bsicos del cluster.

A continuacin entraremos en dselect y continuaremos la instalacin de la forma habitual.


   % ( g  0     !"&$""$k$   g k

y despus de transferir dicho chero a la nueva mquina correremos,

   % ( g  0      !"&$""$&$

Conguracin
g k

107

108

Finalmente deber eliminar los cheros del usuario que cre durante la instalacin y modicar el password del superusuario. Hay que destacar que este proceso de instalacin an no est optimizado.
 0 0  ) 0  k!$) "($$&!&&) ' )    g ) # ( g '  !&) k "&) 0 0  0 ( %  0 0  k "&) 0 ( % 0  $)  ( &' ) g  &' ") k! &") 0 0  0 ( %  0 0  k! &") 0 ( % """'    """'    """'    """'       """' &" # ) 4 &" # ) 4 &" # ) 4 &" # ) 4  # ) 4 &" & 0 0 0 0 0 0 0      ) 0  $) ) 0  $) ) 0  $) ) 0  $) ) 0  $!$) ) 0  $) ) 1 ) 0  !&$) (     ( 4   ) 0  ) #  ) &' &"&!k$"$!g 4!`f$k!&$"$!g  0 1    # ) 0  ) #  ) 32$k&$$"$!g 0 1  4  # g ) 0  ) #  )  4  g ) 0  ) #  ) $k&#$$"$!g 4  0 1 ) ) 0  ) #  ) `i" $&$"$!g 4  1   0  #  ) !0`k$k &)$)"$!g && !!)!f "0$)"$!g ( 0 1 ) #  )  # ( && 0  $)   '1  # 0 ) 0  "$b"&$) i g )k# 0&)$)"$#k!S g 0 0   ) # "#0$0g$ 0&("%)&&'Xf&#")$)"$#!g 0  1  0 0   ) g  "&% 0 (  $X&# &0)0!!"!!")& $"f&0"$"$!g 0  1  0 )  (    1  # ) 0  ) #  )  $X1&# 0&)    ) 0   ( ) !!$g$& $"f&")$"$!g 0   1 # 0 0 ) # ) 1 &# &)) 0 0 0  ( &&g!1f&#"0$)"$#!g 0 )   0 )  )  # "0

Captulo 12

Conguracin global del cluster


En esta seccin explicaremos cmo, una vez que tenemos instalado el sistema en todas las mquinas del cluster, es posible realizar conguraciones comunes a todos los ordenadores de manera asncrona o simplemente ejecutando una instruccin.

12.1. Conguracin asncrona


12.1.1. Qu es?
En nuestro sistema entenderemos por conguracin asncrona la copia de cheros de conguracin, desde el servidor habitualmente, de forma peridica empleando la utilidad cron. La idea es muy sencilla. Los cheros de conguracin que aparecen en el servidor son habitualmente los mismos que deben usarse en el resto de nodos, por tanto las reconguraciones de los nodos se harn de forma casi trivial si somos capaces de copiar tales cheros de conguracin a los nodos que lo precisen.

12.1.2. Requisitos
Tener algn directorio del servidor montado va nfs en todos los nodos. Habitualmente todos los nodos deben tener montado el directorio del servidor en el directorio . Por supuesto el directorio tambin es visible desde todos los nodos. cron activo. La clave pblica de usuario root del servidor copiada en todos los clientes.
 0 0  ) 0  k!$) 0  )   ) #   ' "kk)

12.1.3. Ejemplos
Actualmente en los cluster CLF y CLGEM se dispone de los siguientes cheros y conguraciones que garantizan la copia peridica de cheros de conguracin. En todos los clientes (en el servidor no hay que hacerlo) debe existir un chero que contiene:
0   (  g  ) g # 0 ) 4  0 0  ) 0  ) ""!!$&!kk!$&` 0   (  g  ) g # 0 ) 4  0 0  ) 0  )  ""!!$&!kk!$ !"    $&# i i }}i i r

109

4  0  (  g  ) 1  0 ) 0  k$"&!!$&&# &)

4  0 1   ) 0  )  %  % 4  0 1   ) # 0 ) 4  0 0  ) 0  ) g !`!"&$&3& &$g !!&$$$0    ( 1  ) 0  )  %  %    ( 1  ) # 0 ) 4  0 0  ) 0  ) g $$h!""S $$h!"$g !!&$$$0    )   ) &&!k$&  "$  0 ( '  # e v h i U R zr$&D`$2$c24  %  % ( # ( &{"!  4 4  0 1   ) 0  ) 4  0 1   ) 4  0 0  ) 0  ) g 3& &!3!& &&$$$0    ( 1  ) 0  $$h!") &$ $$h!"$g !!&$$$0 #      ( 1  ) # 0 ) 4  0 0  ) 0  ) g    )   ) $"$"&$k!  "$  0 (  # Ar$$' "De v h i U R `$2$c24  0 (  # ( # ( g i $$' """c  # (   0 # ( !"$"$! ````````````````````````````` ````````````````````````````````````   "&     % R )  g  )    ) # ( ) g  1   ( ""&$!$$$"g &&"hf' ! & 0  ""k%R!!g$$&g &&&#  2`l&"kS`!!$$&!&&  )   )    ) # ( ) '     % R )  g  )    g ) # ( )   !"  &   g '   g   $&&H!$"$k $"$${"k!$  ""k&4   g   #  (  g H g      % #  #  # "$k  '  )  ( 1  # 0 ) 0  "1 H$""!f""$) 'H$""!f""$!k`S$&"!"&$ && )  ( 1  # 0 ) 0  ) ' '  )  ( 1  # 0 ) 0  )   g ( 0 # g ) 0  ) g ( 0 # g ) 4  0 0  ) 0  ) g $ $$&$$$0 4  0 1    # ) 0  !3f$&&$) `!"&$$$0 4  0 1    # ) 4  0 0  ) 0  ) g kS9 &&0$kh !"&$$$0  %  1  )  )  %  1  ) 4  0 0  ) 0  ) g !"0 !"&$$$0  )  )  ) 4  0 0  ) 0  ) g &"$(&92"$$)) 0  1   ( 0   ( 0     ( ) 4  0 0  ) 0  ) g &"&91&$$&$$$0 4 0 k31f $&&k!k31f $&&k!&$$$0  0 ) 0 ) 4  0  0  ) 4  0 0  ) 0  ) g   ( 1 ) 0 )   ( 1  ) 4  0  ) 0  ) g $$9 &&$$$h !"&0$$$0 ( #  1  ) 0  "$$9 &&$)&$h !")&0$$$0 ( # 1  4  0  ) 0  ) g 4  0 1  4  # g 0  k`$"$)$) 4`2&&4$$)$0  0 1  4 # g )  0 0  0  ) g   ) 0  ' $) ' &$0$)0$0  ) 4 0  ) g   '  !"$! ````````````````````````````````  & !k!$   ' ) 4  0 0  ) 0  ) # 4 v # U "  (  e ( #  ST&&U&& %  "  (  e ( 0  kk$`T"!`k&"!4 $ (  &&0($"%$#9!$&$$h   g # 0 &911!&(0(&%' "k4!40&"(&${"#0& #   4   g  g && ) ) % 0   (  g  ) # 0 ) 4  0 0  ) 0  &&$g !!&$$$)

Dicho chero se ejecuta todas las horas y quince minutos. En primer lugar chequea si existe el chero y despus lo ejecuta. El chequeo inicial es conveniente por si el servidor no responde. El chero tiene el siguiente aspecto:
0   (  g  ) 0 ) 4  0 0  ) 0  &!k$g # !&k$)

110

111
4

Como se dijo antes, este script se ejecuta en todos los clientes pero se crea en el servidor, estando alojado en . Queda claro por tanto que cualquier cambio en las conguraciones queda centralizada en el servidor. Si analizamos en detalle el script vemos que en primer lugar se toma nota de la fecha y la hora para escribir al nal del script una lnea en un chero de registro. En la siguiente parte del script se copian una serie de cheros de conguracin, bien desde el directorio del servidor, si la conguracin es idntica en el servidor y en los clientes, o bien desde el directorio si la conguracin cambia entre el servidor y los clientes. Como se observa pueden crearse directorio y hacer operaciones incluso ms complejas. Hay que resaltar que antes de realizar algunas de estas operaciones es preciso realizar ciertas comprobaciones para los cheros o directorios se creen correctamente. En la parte nal del script se hacen copias diferentes dependiendo del nombre del ordenador. Siempre hay que recordar que periodicamente se realizan copias de cheros de conguracin desde el servidor. Esto supone que si hacemos una cambio directamente en un cliente, posiblemente dicho cambio se pierda en menos de una hora, a menos que modiquemos de forma apropiada . el chero

12.2. El comando multiscr


Aunque empleando el procedimiento descrito en el anterior apartado pueden hacerse operaciones de conguracin sobre todo el cluster, en muchas ocasiones se deseara hacer estas actualizaciones de forma interactiva. En otras ocasiones no se quiere realizar actualizaciones sino correr comandos sobre todas las mquinas del cluster. Estas tareas pueden realizarse de forma cmoda con un script que denominaremos multiscr.

12.2.1. Requisitos
Tener algn directorio del servidor montado va nfs en todos los nodos. Habitualmente todos los nodos deben tener montado el directorio del servidor en el directorio . Tambin resulta muy conveniente tener visible en todo el cluster el directorio . La clave pblica de usuario root del servidor copiada en todos los clientes. Para correr multiscr como usuario normal hay que tener creada la clave pblica y copiada en el chero .
# 0 )  0 0  ) 0  $g !!k!$) g 0 ) 0  # &$) ) g  "!' ")  0 0  ) 0  k!$) 0  )

12.2.2. Uso
Su uso es expremadamente simple,

H r  4    1 4  0  (  g  ) g ' ) ( #  R (  ( ( 0  4 R   (  (  (  #  0 (  (  0  0 k$hk&&&&$$ 3"&T!$& &&}$!k!"$&$&&"$&D& &

Tener en el PATH del sistema los directorios

# 0   ) # 0 ) 0  !k&&' $g !!)

Tener creado con permiso de ejecucin el chero

g # 0 ) 0  $!!)

0  $)

 0  (  g  ) g # 0 ) 0  k""&$$!!)



w   #   ( ) &&$$&$`1

 0  (  g  ) g # 0 ) 0  $""!!$&$)

en el servidor.

  0  # g g  #   ( g # 0   r!&"$&$X$D!k&&'

Como puede observarse este script toma el contenido del chero para saber cules son las mquinas del cluster. A continuacin hace un bucle sobre todas ejecutando el comando que se le ha proporcionado como parmetro al script. Para el buen funcionamiento de los comandos hay que exportar algunas variables de entorno. multiscr puede usarse para lanzar servicios en todos los clientes cuando exista algn mal funcionamiento, por ejemplo,

kS9 &&$)  %  1  ) 0 

l l i i  0 $$2& &  0 & & R r` #     0   #   (   #     #  '   0 z!!!{!"!k&!!&G& &  0 & & 4  (  g &!k(&(7cg3$$$$$$$$$$$$$$$k&" 0 R  0  "$ H Te #  R $4 4 giRQyy % &)$(&$)"# )9&% &&# )h% &9`$y`k & rw   0   # ) )  # ) # U h R e U h #  g 0 g R " R e  # (  0  `S$lk&$"!  "$ H e #  R $4 R e # `!   )  ) $"$&&$$&"!kn k4  )   ) 0 g R #  g  0 & & $Rac&$& & 0 g # R  0  0 $$$$$$$$$$$$$$$& & " e &Rk&$"!  # (  0   ! i 0~S g&k4 S g"#k kS91 &&$(D0g!4  #   %   ) 0 ) 0 #  H e k H e 4  #   g  0    ( $`}k"$!' &${$ $g # 0("$ 0&&$T!kj   ( ) $$)$  ( && #!k&&' 0   ' ( & !"") ( % ) %

o para chequear si algn proceso est corriendo en las distintas mquinas del cluster:
%  1    % ( g &2""k"k  g k # 0   !k&&'

tambin puede usarse para instalar paquetes Debian,


# (  # ) 1 ) 0  ) # 0   " !"7$!&$!k&&'

112

A continuacin presentamos el aspecto del script multiscr. Como se ve es un script en bash, aunque pueden hacerse versiones en perl e incluirle muchas ms opciones,
  ( '  !0 # 0   !k&&'

Captulo 13

Copias de seguridad
13.1. Introduccin
No es preciso resaltar la importancia de las copias de seguridad. En caso de problema informtico, el no tener una copia de seguridad puede suponer una gran prdida de tiempo e incluso un problema irreparable. En primer lugar deben hacerse copias de las cuentas de los usuarios, aunque tambin debe tenerse respaldo de todos los cheros de conguracin del sistema, as como de programas que no son estandar en la distribucin Debian. Algo que tambin es de vital importancia es que el proceso de copia de seguridad debe ser automtico, jams debe depender de la intervencin de una persona ya que esto crea el riesgo de que alguna copia de seguridad no se realice convenientemente. En las siguientes secciones describiriremos algunos tipos de copia de seguridad que se deben/pueden realizar en un cluster.

13.2. Copias de seguridad de las cuentas de los usuarios


13.2.1. Con tar
El programa tar es una utilidad de GNU/Linux que permite empaquetar y comprimir en varios formatos (vase man tar. La copia de seguridad consistir por tanto en el empaquetamiento y compresin de las cuentas de los usuarios en un nico chero, procediendo posteriormente a la copia del chero en un lugar seguro. Requisitos tar disponible. fping disponible. cron activo. Acceso a un directorio remoto servido por servidor-back, en nuestro caso ser el directorio .
 0 k 0 ( % &")

113

H  $ $"  0 R 4 r }kn $&w$F0 " l R  0 R # g  e   0 b "&"kXS!F0 0 0 ( % g  #   e      H&$&   ( # #  %  &"$"{! $k  0  e &$k$l (  (  0 (  ( ( g  &!k&&' $& %  "  (  e ( 0  kk$`T"!`k&"!4  0 & &  0 ````````````````````T& & k!#$$& (      ( g   0 & & ````````````````````T& &  0  0 & &  ( &!  (  ) 0  ) ( 0  0 4' "$ &&$D& & 1  ( 1 v h !S} $!r$% i i j !kj  (  ( &&  ' ( & !"") ( % ) % ""$' (&$ 0&(!k& 0"&!U &92$`1  "$kk&k%  ( (  1 ( 0 0 ' (  (  (     ' &! $!&)#& &&# ! # #    '   )  #  0     (   k!#$$k &g(&(&{&& ${&&&k  (  0 # g # 0 4 ( # ( g  # `S)$$ `HS$)!)k$$H H H ) H H H ) ) h H1 H 0 g $ &"% 0 (

Este script se mueve al directorio , borra una serie de cheros que son inservibles (los core por ejemplo) y corre el script backupsc cuyo contenido es:
  ) #   ' &) 0 g $ &"& &&$!!) 0 ( % ) g 0 ( % ) g # 0 ) 0   #  0    g ' ) g ' )  0 1   #  #  0    ) g "&$&&"!kf&&&!"$ &"&$!$!!) 0 ( % ) 4  0 g # 0 ) 0    ) #   )  ' "k0 ) ) h $$`H 1 v h S} $!r$% i i j %  # &!  &# 0  1 1 #   ( # (  # # 0  # #  k!9f$!k&!S"$$ &&$0 1   ) #   ) ' "kk3  #  $4 v h  g `S~"$$ 0 ( %  # 0 &"{&$g ! ) % !")

que se lanzar una vez a la semana (los domingos a las 6 horas) y tiene por contenido:
 '  g &S$ 0 ( % ) &""   1  0 ) 0  $Xf&# &)

Uso 114

Se requiere un script que realice el proceso de copia y que dicho script sea lanzado por el cron en un da y hora en el que el sistema no se est usando. Tendremos el chero:

En este script se decide cuntas copias de seguridad se quiere tener almacenadas (variable BACK). A continuacin se procede a realizar el empaquetamiento y compresin de las cuentas de usuario. Actualmente en el cluster CLGEM, empleando bzip2 para la compresin, se tarda unas 8 horas en realizar la copia. Puede observarse tambin cmo se realiza un chequeo para saber si servidorback est activo o no. Caso de no estar activo no se realiza la copia ya que no habra sitio en un directorio local para almancenar el chero. Como puede verse las copias se almacenan en .

 '  g &S$

1 1 G$$1

j l i i 1  0 ( &k$2kSc& "&

 0 "" 0&("%S#!$#"" 0  0 ""

4  % ( l ( # (  (  0 y$&{&&&& &  0 & &   g ' "S &&' "`' "S!$&$ "&!' 0 ( % i   w   #   #  w g 0 ( %  0 k &" 0 0 ( % ) 1 !f&2& &&`&&S& k! &&$k &"k20 & %1 # ( 1 ( 0  4 R w  '  w  '  #  #  w g 0 ( % )  0 0 ( % ) 4 # ( )  '  ) #   ) $& 0  0 & & 1 1 u$1 & kk!&$&kW& &  ( #      ( g  0   (  #  0  0 & &     "$!   g ' "S &&$k &" 0 0 ( % )  0 0 ( % )  0 & & 1 1 G$1 " &(  0 0 ( % #  #   0 "&& $k& &  0 & &  & H e  #  R 4 R e # ` &&!k$$&$&!   )  )   )   ) 0 ( % #  #  "&S& k S  $4 #  g `````````````````````````````````````` (  (  #     0 !&$&{"&&"( (&!{ 0 ( %  # &&#! $  & kk!&&' $  ( #    ( g  0 (  (  0 (  (  `````````````````````````````````````` 4 'k7&b$&Rw&"b 0&"%&$XS! # # (  0  ( ( g  #   0 & & 1 u1$1 &k(!k(!$$k &0$!!("$"lD& & (  ( '   #     ( g  ( # #  0  0 & &  &$

13.2.2. Con rdist


0 ( % )  0 &"k 0 ( % "&)

El programa rdist realiza copias de directorios (incluyendo la recursividad) en otra mquina (o incluso en la misma mquina), copiando slo aquellos cheros que han sido modicados y borrando aquellos otros que ya no existen en el directorio original. 115

#  (   &"' &)

Uso

Su uso es muy sencillo. Se requiere un script que realice el proceso de copia y que dicho script sea lanzado por el cron cada da a una hora en el que el sistema no se est usando. As tenemos el script:

Por supuesto en servidor-back debe existir el directorio . Si el directorio se exporta a todas las mquinas, los usuarios tendrn a su disposicin una copia de todos sus cheros correspondientes al da anterior. Esta copia tambin puede hacerse localmente si en lugar de la mquina remota se especica la mquina local.
#  (   &"' ") #&(' "$&   )   ( h i U R "22} &`R   ) #   ) "' "kF ! e 0 ( % #  #  &&! $A &$cU e h i    )   )    )   ) i  # ) #  (   &$&!$$"$&&gk!"&' ") H r    k$91 $!k$$""$$$"$&&)  # )    ) # ( )    )   T$!"%&#) &' "#' "1$k k!"&) ) )     4  4  # ) % ) #    k$h1f $!)!k$)&#(")$$$$$$& &!kR}$&&&&{"& #   ( 0 4   0 (  (  0  0 kk# &$ 0  # ) g 0 ) 0  ) ' # 0 ( % #  #  "&& $k $ %  "  (  e ( 0  $k$"&Uk& &!4 H h !` %  # &!  &# 0  1 1   0   ( #   #  &9$$k2!' "k!S" 1  ( ' #  4 fk!! #   4  g k$

Este script lanza un rdist que usa como chero de conguracin cuyo contenido es:
0 ( %   (  g   # 0 &""$&!{&$g ! ) % !")

  1   4  )  # ) g # 0 ) 0  ' &2! $" $$!!)

que es lanzado una vez al da y su contenido es:


   # )  ( 1  0 ) 0  ' "S k&&&f&# &)

Requisitos

116

Clave pblica del root en la mquina servidor-back. cron activo. fping disponible. rdist disponible.

117

13.2.3. Con pdumpfs


Requisitos pdumpfs disponible. cron activo. Acceso a un directorio remoto servido por servidor-back, en nuestro caso ser el directorio . Tambin puede hacerse con un directorio local donde haya suciente espacio. Uso Al igual que en los casos anteriores se requiere un script que se lance diariamente a una hora en la que el sistema no se est usando. Este script es:
 '  g  0 )  ( 1  # 0 ) 0  &S$&"&!f&"$)  0 k 0 ( % &")

Cuyo contenido es:


) % !& )  '  &) H r $"$)"&)$"n' &)$&"!!$g   ) )  '  ) #   ) 4 g '   91 k#)!$)"#(&)$$$$$$$$$$$$"&&4R}$' "{& & ( 0     ( g   0 %  "  (  e ( 0  kk$`T"!`k&"!4 1  ( ' #  4 f!!   ) #   ' "k) #   4  g k  1 1   0   ( #   %  # !h2$!' &$!S$&$ ! 0 ( %   (  g   g # 0  &&&{&&"$!&# 0 1 1 $$1 $) 1$1 1 H `) H ) H ) H H  '  `$!S$``$) &) $) 1$1 1 H `) H H ) H H  '  `) S$``$) &)

Este script almacena las copias de seguridad de en un directorio denominado que puede ser local o remoto. La estructura de este directorio es la siguiente:

Como puede verse se crea un rbol de directorios con las fechas en las que se ha realizado la copia. Lo importante es que en cada uno de estos directorios estn todos los cheros de las diferentes cuentas de los usuarios. Para que haya sitio en un disco duro, al pasar de una copia a otra, para los cheros que no han sido modicados se crean links fsicos (hard links), por lo que slo ocuparn espacio los cheros que s hayan sido modicados. Si los cheros que se modican a diario no son demasiado grandes pueden tenerse copias de seguridad de varias meses.

118

13.3. Copias de seguridad de cheros de conguracin


No slo es importante tener una copia de seguridad de las cuentas de usuario sino tambin de los cheros de conguracin y de los cheros de registro, por no olvidar los directorios de spooler del servidor de correo. En el cluster se realizan copias de seguridad de los directorios y de . En caso de disponer de un servidor de correo tambin es preciso realizar una copia del directorio .

13.3.1. Con tar


Requisitos tar disponible. fping disponible. cron activo. Acceso a un directorio remoto servido por servidor-back, en nuestro caso ser el directorio . Uso Su uso es muy sencillo. Se requiere un script que realice el proceso de copia y que dicho script sea lanzado por el cron en un da y hora en el que el sistema no se est usando. Tendremos los cheros:
0 &&&&$bf&# &)  g 0 ( % )   '1  0 ) 0  # ( g "S &&&&$bf&# &) 0 ( % )   '1  0 ) 0   0 k 0 ( % &")

que se lanzarn una vez a la semana (los domingos a las 6 horas). El contenido de /backup-etc es el siguiente (el de /backup-var es muy similar):
) % !")

donde el script bckpetc contiene:


!kj  (  ( &&  ' ( & !"") ( % ) %

   ) # ( $&&)

1 0  ) #  1 1  0 ( '  # !$9!h2$&h

0  $)

&#& $k!$& &&# ! ' #   0 ) #  0    k(!$$k &0&(&{&& 0${&&&k #   ( g  ( # g # 4 ( # ( g  # V H ) ) H H H ``H`$$!H``HS$)!)k$) kH ) H 1 H 0  F"g % 0

#  0  #  0   g & &"$`T"$$

) ) $$$$H

 1 1 #   ( # (  # # 0  # #  k!9f$!k&!S"$$ &&$0

0  &g

0 % ) g &

1 v h S} $!r$% i i j

0 ( %  # 0 &"{&$g !

0 ( % ) g # 0 ) 0  &&$!!) 0  )  $0

 ( ' )    g ) # ( "$$&!&&) %  # &!  &# 0

 0 k &" 0 0 ( % ) 1 2& &&`$`' "S!$&$ "&$ "&) $ &  1 ( 0  4 R w 0  w   #   #  w g 0 ( % )  0 0 ( % 4 0 # ( 0  ) $ 0  0 & & 1 1 u$1 ' "S!k!& kk!&$&kW& &   #   #  0     ( #      ( g  0   (  #  0  0 & &     "$! 0  g  &&$k &" 0 0 ( % )  0 0 ( % ) (  ( ( ' ( g  0 (      ( # #  &$ $&&!"$&l 0    # ( &&h ````````` ``  0 & & 1 1 G$1 " &(  0 0 ( % #  #   0 "&& $k& &  0 & &  & H e  #  R 4 R e # `    )   )    )   ) &&!k$$&$&! 0 ( % #  #  "&S& k S  $4 #  g `````````````````````````````````````` &"" &! 0 ( (  0 ( % #   #  &"S! k! $$&{$!&$&{   ( #      ( g  0 (  (  (  #  ``````````````````````````````````````

1 1 u$1

4 ' #  # (  0 R  ( k7&b$&w&"b &"&$XS! 0 ( % g  #   0 & & (&k!k!$$k &$!!"$"D& & ( ( '  (  #      ( g  0 (    ( # #  l  0  0 & &  &$ H  Tr$ $&4  0 R }$$l &w$30 " l R  0 R # g  e   0 4e &"&$XH!!30 0 ( % g  #   e      H"$!   ( # #  %  &&"& k  0  H e k$l (  (  0 ( '  ( ( g  &!"&$! %  "  (  e ( 0  $kk``T&!`""!4  0 & &  0 ````````````````````T& & 3k! #$$$!! 0  ) (      ( g   0 & & ````````````````````T& &  0  0 & &  ( &!  (  ) 0  ) ( 0  0 4' & &&$D& &  ( 1 S}$!r$% v h i i j

   (  0 (   ( 0 (   "&' $"$ &!k&"!&U

 1 ( 0 0 ' (  (  (  !h2$$31 &$k

  "k%

119

Este script almacena diez copias (variable BACK) de seguridad del directorio en y adems hace una copia sin comprimir en Como puede observarse se realiza la copia de seguridad aunque servidor-back est inactivo, almacenndose sta localmente. En este caso, durante la siguiente copia en la que est activo servidorback, se copiarn todas las copias de seguridad que se hayan almacenado localmente. El caso de la copia del directorio es muy similar al que acabamos de describir. Hay que destacar que este proceso de copia de debe hacerse en todas las mquinas del cluster y no slo en el servidor. Para ello deber existir el chero

'&#& $#k!$k &")  0  )  0 0 ( % 0  )

con el que se lanza un script similar al descrito anteriormente. En este caso las copias de seguridad se almacenarn en el directorio que reside en servidor-back.

 0 0  k!

0 ( % &&)

 # 0 0  g "k! 0  $)

   ) # ( $&&)

% ( l ( # (  (  0 y&{"&&$"&  0 "& 1 `2"&&R20$w' "S!& "&$k  1 ( 0  4 w    #   #  w g 0 ( % 4 0 }1(& 0&!4kR`0w`' &! $!wc$ 0&"{! & w   # # g ( %     0  # (  0 "& G$11 0) &(k#&4&"$"& 1  0 '  (  (  0  0 "& 4 4 "&# i w g 0 ( % ' 0 ( % ( "&{4 0  ) $ 0  i w g & ````````````````````````````````````````````  0 ( ( &  && & & 0 ( % #  #   '  #  #    (  #      ( g  0 (  (  (  #  "&& $k&S& k!kk!{$&&$" ```````````````````````````````````````````` 4  % ( l ( # (  (  0 y&{"&&$"&  0 "& &&!k$$&& $k!$k &"{$ 0 )   )  '  #  #  0  )  0 0 ( % ) 0  ) ( g  0 "& 1 1 G$1 $&W"& 0  )   ( g   0  0 "&  '  #  #  0  )  0 && $k!$k &"S # 0 ( % ) # '  0 "& u1$11 ' "S!$k$k "&&"$&D"&   #   #  0  )  0 0 ( % )   ( # #  l  0  0 "& 0    ( g  ! ``````` ` 0  g $ &"7`$`' "S!$&$ "&$!' 0 ( % i 0  w   #   #  w g 0 ( % ) 0  ) w`S$' "S!& "&$ !& i 0  w   #   #  w g 0 ( % ) 0  )   0  g $ "&S$' "S!& "&!' 0 ( % i 0  w   #   #  w g 0 ( %

120

13.4. Bibliografa
0 ( % )   '1  0 ) 0  &&&&$bf&# &) 0  g $ 0 ( % )  0 "&$ 0 ( % "&)

man tar. .

121 man pdumpfs

122

Captulo 14

Ajustes nales en el cluster


En este captulo enumeraremos algunos servicios que pueden resultar de gran utilidad en el cluster pero que por el momento no describiremos detalladamente. En futuras versiones de este documento las explicaciones de este captulo se vern ampliadas.

14.1. Seguridad en el cluster


Poltica sobre el superservidor inetd. Centralizacin de todos los cheros de registro y generacin de informes diarios con logcheck. Activacin del demonio portsentry para analizar los scaneos de puertos. Activacin de hostsentry para controlar accesos extraos al sistema por usuarios autorizados. Ejecucin peridica de chkrootkit para descubrir la instalacin de rootkits en el sistema.

14.2. Sistema X
Activacin de XDMCP en xdm, gdm o kdm

14.3. Seguridad fsica


Uso de smart para controlar la salud de los discos duros. Uso de UPS/SAI.

14.4. The Windows corner


Acceso a particiones con Windows. Conguracin de emuladores de Windows o de programas que funcionen como mquinas virtuales. Conguracin de un servidor Samba. 123

124

14.5. Varios
Duplicacin peridica del disco duro del servidor en otra mquina para una recuperacin rpida de desastres en el servidor. Creacin de colas de batch.

Das könnte Ihnen auch gefallen