You are on page 1of 207

II CURSO DE ADMINISTRACIN DE SISTEMAS OPERATIVOS GNU/LINUX

Gua del alumno

Junio de 2006
Facultad de Fsica, Universidad de Sevilla

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). Classic Shell Scripting, Arnold Robbins and Nelson H.F. Beebe, OReilly (2005). Automating Unix and Linux Administration, Kirk Bauer Apress (2003). HOWTOs en ingls. Manual Pages.

Versin 0.2. Copyright c 2005-2006 J.E. Garca Ramos, A. Molina Coballes y F. Prez Bernal. Se otorga permiso para copiar, distribuir y/o modicar este documento bajo los trminos de la Licencia de Documentacin Libre de GNU, Versin 1.2 o cualquier otra versin posterior publicada por la Free Software Foundation1 ; sin secciones invariantes ni textos de cubierta delantera ni textos de cubierta trasera. Este texto se distribuye con la esperanza de que sea til, pero no existe ninguna garanta sobre l.
1 Puede

encontrar una copia de la licencia en


        

ndice general
0. Motivacin y objetivos 0.1. Antecedentes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 0.2. Motivacin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 0.3. Objetivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 5 7 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.4.1. Creacin de particiones y sistemas de cheros 1.4.2. Montaje de los 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 21 21 22 25 25 28 28 30 31 31 32 35 37 37 37 38 39 40 40 42 43 43 45 45

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 . . . . . . . . . . . . . . . 1

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

Curso de Administracin GNU/Linux


2.4. ! y ! " # . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.5. Bibliografa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 48 49 49 49 53 54 58 58 58 59 59 59 59 61 63 65 65 65 68 70 70 70 74 75 77 77 77 77 78 79 80 80 81 81 83 83 83 83 84 85 86 87 87

3. Conguracin de perifricos 3.1. Impresoras . . . . . . . . . . . . 3.1.1. CUPS . . . . . . . . . . 3.1.2. Lprng . . . . . . . . . . 3.2. Scanner . . . . . . . . . . . . . 3.2.1. Escaneando con XSANE 3.3. Dispositivos de memoria usb . . 3.4. Bibliografa . . . . . . . . . . . 4. Compilando el kernel 4.1. Introduccin . . . . . . . . . . 4.2. Compilando el kernel . . . . . 4.2.1. Antes de compilar . . 4.2.2. Compilacin del kernel 4.3. Bibliografa . . . . . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

5. Uso de scripts para administracin del sistema 5.1. Introduccin . . . . . . . . . . . . . . . . . 5.2. Shells . . . . . . . . . . . . . . . . . . . . 5.3. Comandos ms usados . . . . . . . . . . . 5.4. Scripts en Perl . . . . . . . . . . . . . . . . 5.4.1. Introduccin . . . . . . . . . . . . 5.4.2. Nociones Bsicas . . . . . . . . . . 5.4.3. Algunos oneliners interesantes . . . 5.5. Bibliografa . . . . . . . . . . . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

6. Ejecucin asncrona de tareas 6.1. Introduccin . . . . . . . . . . . . . . . . . . . . . . . . 6.2. cron . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.2.1. El chero $% #& ' () y el directorio * +' $* $% #& ," 6.2.2. Indicando la periodicidad . . . . . . . . . . . . . 6.2.3. Crontab para un usuario cualquiera . . . . . . . 6.3. anacron . . . . . . . . . . . . . . . . . . . . . . . . . . 6.4. at . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.5. Output de las tareas . . . . . . . . . . . . . . . . . . . . 6.6. Bibliografa . . . . . . . . . . . . . . . . . . . . . . . . 7. TCP/IP y aplicaciones de red 7.1. Origen de TCP/IP . . . . . . . . . . . . . 7.2. Nivel de acceso a red . . . . . . . . . . . 7.3. Nivel de red . . . . . . . . . . . . . . . . 7.3.1. Direcciones IP . . . . . . . . . . 7.4. Nivel de transporte . . . . . . . . . . . . 7.5. Nivel de aplicaciones: conexiones seguras 7.5.1. ssh . . . . . . . . . . . . . . . . 7.5.2. scp . . . . . . . . . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

Curso de Administracin GNU/Linux


7.5.3. sftp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7.5.4. Cmo generar y transmitir la clave pblica . . . . . . . . . . . . . . . . 7.6. Bibliografa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8. DHCP 8.1. Conguracin del cliente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8.2. Conguracin del servidor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8.3. Bibliografa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9. Cortafuegos: iptables 9.1. Poltica por defecto . . . . . . . . . . . 9.2. Ejemplo . . . . . . . . . . . . . . . . . 9.2.1. Enmascaramiento IP . . . . . . 9.2.2. Creacin de un script de iptables 9.3. Bibliografa . . . . . . . . . . . . . . .

3 88 88 89 91 91 91 92 93 94 95 96 96 97

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

II Construccin de un cluster GNU/Linux


10. Descripcin de un cluster modelo 10.1. Las mquinas del cluster . . . . . . . . . . . . . . . . . . . . . . 10.2. Caractersticas de los nodos del cluster . . . . . . . . . . . . . . . . 10.3. Esquema de servicios del cluster . . . . . . . . . . . . . . . . . . . 10.4. Descripcin detallada de todos los servicios de un cluster modelo 11. NIS y NFS 11.1. Introduccin . . . . . . . . . . . . . . . . . . . . 11.2. NIS . . . . . . . . . . . . . . . . . . . . . . . . 11.2.1. Paquetes Debian . . . . . . . . . . . . . 11.2.2. Demonios y scripts de inicio . . . . . . . 11.2.3. Ficheros de conguracin . . . . . . . . 11.2.4. Puesta en marcha de un servidor . . . . . 11.2.5. Puesta en marcha de un cliente . . . . . . 11.2.6. Uso de NIS y herramientas bsicas . . . . 11.2.7. El chero /etc/netgroup . . . . . . . . . . 11.3. NFS . . . . . . . . . . . . . . . . . . . . . . . . 11.3.1. Paquetes Debian . . . . . . . . . . . . . 11.3.2. Demonios y scripts de inicio . . . . . . . 11.3.3. Ficheros de conguracin . . . . . . . . 11.3.4. Puesta en marcha de un servidor . . . . . 11.3.5. Puesta en marcha de un cliente . . . . . . 11.4. Autofs como complemento de NFS . . . . . . . . 11.4.1. Paquetes Debian . . . . . . . . . . . . . 11.4.2. Demonios y scripts de inicio . . . . . . . 11.4.3. Ficheros de conguracin . . . . . . . . 11.4.4. Puesta en marcha de un servidor . . . . . 11.4.5. Puesta en marcha de un cliente . . . . . . 11.5. Problemas de interaccin NIS, NFS, autofs, RPC 11.6. Bibliografa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

99
101 101 102 103 104 107 107 107 107 108 108 108 111 113 113 114 114 114 114 115 116 116 116 117 117 118 118 120 120

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

4 12. Proceso de instalacin de Debian Sarge en los nodos 12.1. Instalacin por copia directa . . . . . . . . . . . 12.1.1. Requisitos . . . . . . . . . . . . . . . . . 12.1.2. Uso . . . . . . . . . . . . . . . . . . . . 12.2. Instalacin a travs de los discos de Debian . . . 12.2.1. Requisitos . . . . . . . . . . . . . . . . . 12.2.2. Instalacin . . . . . . . . . . . . . . . . 12.2.3. Conguracin . . . . . . . . . . . . . . . 13. Conguracin global del cluster 13.1. Conguracin asncrona . . 13.1.1. Qu es? . . . . . . 13.1.2. Requisitos . . . . . . 13.1.3. Ejemplos . . . . . . 13.2. El comando multiscr . . . . 13.2.1. Requisitos . . . . . . 13.2.2. Uso . . . . . . . . . 13.2.3. Variantes . . . . . .

Curso de Administracin GNU/Linux


121 121 121 122 131 131 132 133 139 139 139 139 139 141 141 141 142 143 143 143 143 145 147 148 149 150 152 153 153 153 153 153 154

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

14. Copias de seguridad 14.1. Introduccin . . . . . . . . . . . . . . . . . . . . 14.2. Copias de seguridad de las cuentas de los usuarios 14.2.1. Con tar . . . . . . . . . . . . . . . . . . 14.2.2. Con rdist . . . . . . . . . . . . . . . . . 14.2.3. Con pdumpfs . . . . . . . . . . . . . . . 14.2.4. A una unidad de cinta . . . . . . . . . . 14.3. Copias de seguridad de cheros de conguracin 14.3.1. Con tar . . . . . . . . . . . . . . . . . . 14.4. Bibliografa . . . . . . . . . . . . . . . . . . . . 15. Ajustes nales en el cluster 15.1. Seguridad en el cluster 15.2. Sistema X . . . . . . . 15.3. Seguridad fsica . . . . 15.4. The Windows corner . 15.5. Varios . . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

Captulo 0

Motivacin y objetivos
0.1. Antecedentes
El primer contacto de los autores con 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 est 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 era preciso 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 cluster1 de ordenadores en el 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.
1 En este manual no empleamos la palabra cluster para referirnos a una conguracin de ordenadores destinada a realizar clculos en paralelo.

Curso de Administracin GNU/Linux

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 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. Despus de estos aos trabajando con un cluster GNU/Linux creemos que es importante impartir curso y crear documentacin que enseen a desenvolverse en este entorno. Consideramos que dichos cursos 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 cmo 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 qu servicios son necesarios al iniciar el sistema y la forma en que se lleva a cabo el arranque del mismo. Una vez con el sistema en marcha es necesario saber como controlar los diferentes dispositivos, gestionar memoria y sistemas de cheros y, nalmente, monitorizar los procesos que se estn corriendo en sistema. Adems, ha de tenerse una idea de como reaccionar ante los posibles problemas que se vayan planteando. En relacin con esto ltimo es muy til saber dnde y cmo organiza la informacin el sistema, en los llamados logs, pues nos esto 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 loader1 . 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. 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
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 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 0123 . 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. Existe una informacin exhaustiva acerca de - .- / en las pginas 4 56 y, por ejemplo, en el LILO User Manual, contenida dentro del paquete2 . 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 de arranque debemos de volver a ejecutar - .- / como superusuario para que dicho cambio quede reejado en el correspondiente sector de arranque. La conguracin de - .- / se encuentra en el chero 7 89 :7 - .- / ;:/6 < . A continuacin incluimos un ejemplo de chero de conguracin de - .- / y explicaremos las opciones ms importantes
= >?@ A B BC D EF GH EI F J = >K @ LA J M K = >M @ N B BC D EF GH EI F J K = >O @ P BQ R J P C = >S @ TU VC J L LD EA B BC EA B BC WA = >X @ F G LJY D KZ = >[ @ Q JR D EA B BC EQ JR = >\ @ H ] J DU B N Q J L = >^ @ R N BQ R C C TQ G B_ C D ?Z Z = ` G N U G L K WO WK[ TQ J] GD EA B BC EHQ L TU _ a bK WO WK [ LJA G LD K WO WK[ TU TC N F D EA B BC E TU TC N F bK WO WK[ WTQ ] N GJF bBU LY JRR GU F D cI F P D TF G bV P V T c = ` G N U G L K WO WK[
2 En

Debian puede encontrarse en

E_ V N E VI J N G EF B P E L TL B Ed JU _ J L WC e C W] a

13
fg hi j k lm n no lpg q fr s t uv wx wv v qhm j qk v wx wv v fr foy z k lm n no l fr fo y z wfg i uv wx wv v y j hz unr q{ | } hr z y h~ j fg hi j k l} hr z y h~ j lm n no lpg q fr s t qhm j qkg hr z y h~ j y n no k lz jp l z h y j hz unr q{ n o fnr h q y j oy f o jz h q fh k | fr z nt j no jy k lz jp l z h qhm j qk fr z n u

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

: 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.

Adems de estas opciones que afectan a cada imagen las opciones generales indican lo siguiente: 1. Especica desde qu dispositivo se arrancar el sistema 2. 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. 3. Indica qu dispositivo se montar como root ( ). 4. 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. 5. Fichero que se instala como sector de arranque. La opcin por defecto es . 6. Nmero de dcimas de segundo que el sistema espera antes de arrancar la imagen por defecto. 7. Localizacin del archivo map que contiene los kernels con los que es posible arrancar y su localizacin en el disco. 8. Modo de texto VGA en el que se arranca el ordenador. 9. La opcin muestra la informacin acerca de los kernels disponibles y espera da decisin del usuario durante un tiempo jado en la opcin

14 El programa GRUB El nombre , acrnimo de and nied ootloader, corresponde al que hoy por hoy es probablemente el mejor cargador de sistemas (bootloader) disponible y que, casualmente, entra dentro del software ofrecido por GNU3 . La aplicacin es independiente del sistema o sistemas operativos instalados en el ordenador. Podemos considerar a GRUB 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 esto ltimo nos proporciona entornos tanto 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 a sus anchas con l. En concreto demuestra todo su potencial cuando se instala en sistemas que cuentan con mltiples sistemas operativos y modos de arranque, propios de aquellos usuarios que gustan de probar simultneamente diferentes distribuciones GNU/Linux y que 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 tareas de rescate del sistema en caso de problemas. A continuacin supondremos que el programa est instalado en el ordenador y describiremos como instalarlo en el MBR de un oppy y de nuestro disco duro. En Debian forma parte de la distribucin estndar y si no estuviera instalado en el sistema es muy simple aadirlo usando las herramientas para la gestin de paquetes de Debian. En principio reconoce multitud de sistemas de cheros, pero al ser lo ms frecuente 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:

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:

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 La versin que incorpora en la actualidad Debian Sarge es GRUB Legacy, mientras que est en desarrollo la nueva versin GRUB2. Vase la pgina web

15

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 tanto en Windows Me, instalado en , como en GNU/Linux con un Kernel 2.4.x siendo /dev/hda2 el dispositivo montado en la particin raz ( ). 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:

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 es diferente de la que emplea Linux (      ). La forma de referirse en  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 debido a que no slo se utiliza con Linux sino con otros muchos sistemas operativos, cada uno con una convencin diferente a la hora de designar 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:
            !   "   ## "#$    % & "  # $

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 . (/  0) que copiamos a 1 2

3 4*/  22) :
5 6 5 7   5 7

16
8 9:;;< : => ? @ ?A B CB =@DE BD?FG H I:;;< : => J 8 9 @F < @@? KD L M KDNO ? K? ;B PQR SM KDN O F @@? TA EU VJW > BFD B; SXY ;KDNZ F @@?[SEBX SA E:\ F @ KD K?FE[SKD K?FE HKY L 8 9 @F < @@? KD L ] KD E@^ C _B ? K? ;B ] KD E @^ C _ B < @@? Y BDN F @@?D @XBF KIG TA EU VU W Y :> B:=? KXB =A : KD ;@:EBF ` J 8 9 @F KD C?:;;KD L PaRb KD ? @ ?A B A :FE E KC> ? K? ;B cD C?:;; PaRb KD ? @ ?A B A :FE E KC> F @@? TAEU VJW CB?Nd TAEU W 8 eA :D LB ?A B =@;@F C H ? K? ;B eA :D LB ?A B =@;@F C =@;@F ;KLA ? fLFBBD S< F @^D < ;KD> fGB;;@^ S< ;N B

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 ghi j en el MBR del disco duro o cambiar el esquema de colores de la pantalla de presentacin de ghi j . Desde el men podemos aadir parmetros al kernel en el momento del arranque pulsando la tecla kl m tras seleccionar la opcin a la que queremos aadir algn parmetro y tambin podemos trabajar en el modo intrprete de comandos pulsando la tecla k nm . Para terminar veremos como instalar ghi j en el MBR desde el intrprete de comandos una vez que nos hayamos acostumbrado a ghi j 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 ghi j 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 o poq . La instalacin de ghi j en el MBR es una operacin muy parecida a la que hemos llevado a cabo para instalar ghi j en el diskette. Por ejemplo podemos crear un directorio rs qqt ruv ws r 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 ro ps ruv ws r px y z {| n o en el directorio que corresponda en tu distribucin particular al directorio rs qqt ruvw s r comprobando cuidadosamente que } l~w o t tambin est entre los cheros aadidos. A continucin se entra en el modo de comandos de ghi j y se ejecutan los siguientes comandos:
LFN< F @@? TA EU VJW LFN< CB?Nd TA EU W LFN< N K?

Terminado. Ya tienes un sistema con ghi j en el MBR que te permitir iniciar tu ordenador con toda comodidad en el sistema operativo que ms te interese.

17

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 el ordenador est arrancando. Estos niveles de arranque, llamados runlevels, suelen estar congurados en sistemas UNIX usando dos alternativas diferentes: BSD o SystemV. En el caso de Debian se utiliza el sistema SystemV, que explicaremos brevemente a continuacin, pero otros UNIX, y alguna distribucin GNU/Linux (como Slackware, por ejemplo) utilizan el modelo BSD. En el caso del esquema 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 usuario. Cualquier programa que coloquemos en lugar de se ejecutara cuando el kernel hubiera terminado de cargarse. 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. Como lleva a cabo esta tarea init se congura, como dijimos, desde el chero . En la gura 1.1 vemos un chero tpico del que describiremos someramente su contenido. La sintaxis del chero es bastante simple. Las lneas que comienzan por # son comentarios, el resto de las lneas tienen la forma

donde es una secuencia de uno a cuatro caracteres que dene la entrada, es el o los runlevels a los que afecta la lnea, describe que accin se va a llevar a cabo y es el proceso que se va a ejecutar. En la pgina puede encontrarse una descripcin detallada de este chero, explicando, por ejemplo, las diferentes opciones posibles en el campo . As hace que el sistema ejecute el proceso al entrar en el runlevel y espere a que este termine para proseguir, o , que implica que una vez terminado el proceso el sistema vuelva a lanzarlo. Como puede verse en la gura 1.1 lo primero que hace el proceso , tras denir el nivel por defecto de ejecucin (el dos en nuestro caso) es correr un script inicial en bash que en un sistema Debian es . Este script se encarga de jar en una primera denicin algunas variables del sistema, 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 conlleva que se inicien una serie de programas y servicios, orientados a un determinado funcionamiento. En la tabla 1.1 se encuentra la descripcin de los niveles de acuerdo con el estndar LSB 1.34 y su traduccin a Debian. La ltima tarea que realiza es iniciar algunos procesos , con lo cual se obtienen 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.

18

Figura 1.1: Ejemplo de chero de conguracin .

19 Runlevel 0 LSB 1.3 Parada Descripcin Finaliza servicios y programas activos, as como desmonta lesystems activos y para la CPU. Finaliza la mayora de servicios. Permite acceder slo al root en consola para mantenimiento y correccin de errores. No se inicia el sistema de red. Multiusuario normal Tpicamente es igual que el 3. Multiusuario en xdm o equivalente. Para todos los programas y servicios, y reinicia el sistema. Debian Parada

Monousuario

Monousuario

2 3 4 5 6

Multiusuario sin red Multiusuario normal Reservado para uso local Multiusuario entorno grco Reinicio

Multiusuario normal Multiusuario normal Multiusuario normal Multiusuario normal Reinicio

Cuadro 1.1: Niveles de arranque en Debian GNU/Linux.

El nivel en el que arranca Debian por defecto es el nivel dos, aunque como puede verse en la tabla 1.1 Debian parte de que los niveles multiusuario sean todos equivalentes, permitiendo que el administrador del sistema dena las diferencias que crea pertinentes. As pues, en Debian el X Windows 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. Segn el runlevel escogido, el sistema al arrancar consulta los cheros contenidos en el direc torio 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 cada servicio. Un servicio es una funcionalidad proporcionada por el ordenador. La activacin o parada de servicios se realiza mediante la utilizacin de scripts. Como veremos en el captulo 2, la mayora de servicios estndar suelen tener su correpondiente chero o directorio de conguracinen el directorio y se controlan mediante los scripts presentes en el directorio . En este directorio suelen aparecer scripts con nombre similar al servicio al que van destinados, y aceptan parmetros de activacin o parada. Estos servicios no slo se arrancan al iniciar el ordenador y se detienenal apagarlo, sino que el superusuario puede controlarlos en cualquier momento. arranca el servicio, para el As servicio y primero para y despus arranca el servicio. Si, por ejemplo, hemos de reiniciar el demonio de impresin haremos como superusuario



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.
4 Ver,

                 ! " # $     % '    por ejemplo,            & &  ( &

20 Una serie de comandos de sistema son los que perminten manejar los niveles de ejecucin, entre ellos cabe mencionar: , permite parar ( 1* de halt) o reiniciar el sistema ( 12 de reboot). Puede darse tambin un intervalo de tiempo para hacerse, o bien inmediatamente. Para estas tareas tambin existen los comandos * 3 4, y 2 56 . ., . , 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 )* + , - ./ 0 suele utilizarlo de forma automtica. , utilidad que permite averiguar el PID (Process ID) asociado a un proceso. Con 7 ) obtenemos los listados de procesos, y si queremos eliminar un servicio o proceso, mediante : 84 4 necesitaremos su PID. permite la gestin de los runlevels al instalar o borrar servicios en uno o ms runlevels (Vase = 30 + 7 - 3, 5 12 ; <- ). Si, por ejemplo, tenemos un sistema que utiliza > - = para que los usuarios entren en el sistema y nos interesara eliminar esa posibilidad de hacer login grco haramos como root:
? @AA BC DEF GH I @? B JK L MI JA N IO K B O PQ B GH I @?B JK L MI D RB? LR ST S? MI RN IO BU SV? V IG K ST N K L MI HG KNB WL P T ? ST G ST N X Y B O PQ ST N @T C VC V?B O V? @K? GH Z ST[ V A P K RB? LR ST S? MI RN IO MMM RB? LRK L\ MI R] \ ^N IO RB? LRK L ^ MI R] \ ^N IO RB? LRK L_ MI R`aaN IO RB? LRK Lb MI R`aaN IO RB? LRK Lc MI R`aaN IO RB? LRK Ld MI R`aaN IO RB? LRK Le MI R] \ ^N IO + 7 - 3, 5 12 ; < 7 8- .9 / 344 )* + , - ./ 0

Para crear de nuevo los links pertinentes


? @AA BC DEF GH I @? B JK L MI N IO I BA@ G Z ? V fII ST N VC V? B O V? @K? GH A P K RB? LR ST S? MI RN IO MMM RB? LRK L\ MI R] _\N IO Jg MMR ST S? MI RN IO RB? LRK L ^ MI R] _\N IO Jg MMR ST S? MI RN IO RB? LRK Le MI R] _\N IO Jg MMR ST S? MI RN IO RB? LRK L_ MI R`_\N IO Jg MMR ST S? MI RN IO RB? LRK Lb MI R`_\N IO Jg MMR ST S? MI RN IO RB? LRK Lc MI R`_\N IO Jg MMR ST S? MI RN IO RB? LRK Ld MI R`_\N IO Jg MMR ST S? MI RN IO

Existen opciones (como siempre, ver = 30 ) para particularizar niveles usando el comando 5 12 ; < . Otro comando que resulta interesante cuando se administra un sistema es el comando , 5 4 80 8, , que nos permite cambiar al nivel de ejecucin que queramos. Por ejemplo, necesitamos hacer una tarea crtica como superusuario, sin usuarios trabajando. Para ello podemos hacer un , 5 4 80 8, h (tambin puede usarse S) para pasar a runlevel monousuario. Una vez terminada dicha tarea haremos un , 5 4 80 8, i para volver a multiusuario. Tambin puede utilizarse el comando 80 8, , para lo mismo, aunque , 5 4 80 8, aporta algn parmetro extra. En caso de que queramos directamente arrancar el sistema en modo monousuario basta con aadir una j mayscula tras el nombre del Kernel en el prompt de 4 84 . o editar la entrada correspondiente de kl m n , aunque en sistemas Debian, por defecto, cada kernel denido en GRUB viene acompaado de una opcin de arranque en modo monousuario etiquetada como 2 5 ; .o 52 p = .- 5 .
+ 7 - 3,

21

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 qr s t u. Este no es un sistema de cheros convencional sino que es el lugar 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. En principio el directorio r s t u se limitaba a contener informacin acerca de los diferentes procesos existentes, pero en la actualidad cumple otras muchas tareas. Los datos contenidos son tanto de naturaleza esttica como dinmica (varan durante la ejecucin) y muchos programas utilizan la informacin suministrada por 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
v wx wvy z{| }~ v  x }  } w x } x z z w v x w } ~ w z z ~ z v w x w v w z } z }~ } y w z w z y v z z } ~ z z } v w z } w z z ~ z v } x ~ } } vx x }~ } ~ v x w z v wx wvy z{|

Hay que tener el cuenta que al ser qr s t u 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 Una de sus caractersticas ms interesantes es que en el directorio qr s t u podremos encontrar las imgenes de todos los procesos en ejecucin, junto con la informacin que el kernel maneja de ellos. Cada proceso del sistema se puede encontrar en el directorio qr s t uqr r s t u t , donde hay cheros que representan su estado. Esta informacin es til para programas de depuracin, o bien para los propios comandos del sistema como r o tr , que pueden utilizarla para ver el estado de los procesos.

22 Por otra parte en podemos encontrar otros cheros de estado global del sistema, comentamos brevemente a continuacin alguno de los cheros que podremos examinar: Fichero

Descripcin Directorio con informacin de los buses (PCI, USB, input etc.) Opciones de la lnea de arranque del kernel Informacin de la CPU Dispositivos del sistema (caracteres o bloques) Informacin de algunos mdulos de hardware (kernel 2.4.X) 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 (kernel 2.4.X) Directorio de dispositivos scsi, o IDE emulados por scsi Version y Fecha del Kernel

1.3.2.

Procesos

Los procesos que en nuestro ordenador se encuentren en ejecucin en un determinado momento sern de diferente naturaleza, pudiendo distinguirse entre: Procesos de sistema, ya sean procesos asociados al funcionamiento local de la mquina y del kernel, o procesos llamados demonios (daemons)5 asociados al control de diferentes servicios que pueden ser locales o de red. En este ltimo caso podemos estar ofreciendo el servicio (actuamos en modo servidor) o recibindolo (actuamos como 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: , , , ... Estos son usuarios virtuales que el sistema utiliza para ejecutar ciertos procesos. Para ver los usuarios virtuales 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. 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 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).

[from Maxwells Demon, later incorrectly retronymed as Disk And Execution MONitor] A program that is not invoked explicitly, but lies dormant waiting for some condition(s) to occur. The idea is that the perpetrator of the condition need not be aware that a daemon is lurking (though often a program will commit an action only because it knows that it will implicitly invoke a daemon).

5 daemon:

23 : 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 envo 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. de un proceso podemos utilizar o . Para conocer el : 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 con el proceso raz, dependiendo de l el resto rbol de procesos siendo el proceso de procesos. Las aplicaciones y nos permiten obtener este rbol de procesos. Si, por ejemplo queremos acceder a la informacin acerca de todos los procesos de un usuario podemos hacer

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 lo han hecho. Por tanto 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 correspondiente6 , algo que se cumple para los kernels precompilados de las principales distribuciones, Debian entre ellas. Adems debemos instalar los paquetes que posibi litan esta gestin de procesos, lo que en Debian implica instalar el paquete , lo que podemos hacer por ejemplo con :

 

 
 

  
6 CONFIG_BSD_PROCESS_ACCOUNTING

24
           ! "# $$ $%   &' $( $) *( + & ( , ' $- ./ 0 $ $ $ 1.    2     ' $( $) *( + 0 $ $ $ 1 !     ! " . 3 3   "2    4 - " . $

La instalacin del paquete hace que comience la gestin de procesos y la aade a la lista de servicios que se lanzarn en el arranque. El superusuario puede detenerla o reiniciarla cuando ms convenga. Si la gestin de procesos no est incluida dentro de los servicios que se lanzan en el arranque, y si es as procederamos a lanzarla usando el comando 5 6 67 89 :
: ; < < => ?@A BC DE B DF GH B ; I I: J H BK ; E B ; I IJ C H : BL ; I I:

Con esto comienza la gestin de procesos por parte del sistema, aunque el proceso de instalacin de Debian se encarga de llevar a cabo estos pasos. A menos que se congure de otra forma7 las aplicaciones de este paquete deben ser ejecutadas por el superusuario. En concreto una vez instalado el paquete debe existir el chero donde se lleva a cabo el almacenamiento de la informacin, llamado MN 5O M 5 6 68P 9 7 MQ 5 6 67 (de Q rocess 5 6 6oun7 ing). Si no existe dicho chero lo crearemos antes de iniciar la gestin de procesos con la orden 7 8P 6R MN 5O M 5 6 68P 9 7 MQ 5 6 67 . 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 Q 5 6 67 . Para comprobar cual es el contenido de Q 5 6 67 se dispone del comando S 5 T7 68U U .
  .V 4WX Y 3 "# # 1 .Z # [ 1 Y 3 "# # 2 / . .   Y c     ! . 3  ! . 3 / "Z .1 .Z # [ #  3c !" !"  ! " V   .! !" / Y !" d Y "  Y. $$$ ! "" ! "" 2 ! ! Z 2 ! ! Z 2 ! ! Z 2 ! ! Z 2 ! ! Z 2 ! ! Z 2 ! ! Z ! "" 2 ! ! Z 2 ! ! Z 2 ! ! Z 2 ! ! Z 2 ! ! Z 2 ! ! Z 2 ! ! Z 2 ! ! Z 2 ! ! Z 2 ! ! Z \\ 3 - .!! \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ ] $]] ] $]] `'] $+ ' ] $][ ] $]] ] $] ` ] $]] ] $]] ] $aa ] $]] ] $]] ] $]] ] $]] ] $]] ] $] ` ] $]] ] $] _ ] $]] ] $]] ] $]] 3.  3 3.  3 3.  3 3.  3 3.  3 3.  3 3.  3 3.  3 3.  3 3.  3 3.  3 3.  3 3.  3 3.  3 3.  3 3.  3 3.  3 3.  3 3.  3 3.  3 12  12  12  12  12  12  12  12  12  12  12  12  12  12  12  12  12  12  12  12  ^ V ^ V ^ V ^ V ^ V ^ V ^ V ^ V ^ V ^ V ^ V ^ V ^ V ^ V ^ V ^ V ^ V ^ V ^ V ^ V _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, `[ 4] ] `( 4)a `( 4[ ( `( 4( ( `( 4[ ` `( 4[ ` `( 4[ ` `( 4[ ` `( 4_( `( 4( ] `( 4_[ `( 4_[ `( 4_[ `( 4_[ `( 4_[ `( 4_[ `( 4_[ `( 4_[ `( 4_[ `( 4_[

b b

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 S 5 T7 68U U la opcin e 68U U 59 f nombre del comando. Tambin se puede seleccionar la impresin de procesos pertenecientes a un usuario concreto con la opcin eP TgO y en general es posible obtener mucha ms informacin. Como siempre hay que mirar en ... las pginas U 59 !
7 Vase p.e. la subseccin 2.3.1 acerca de la estructura de usuarios y grupos o la seccin 2.4 donde se tratan las 32 32 - " aplicaciones y para ver como proporcionar a otros usuarios parte o todos los privilegios del superusuario.

25

1.3.3.

Memoria

Respecto a la memoria del sistema tendremos que tener en cuenta que disponemos tanto de la memoria fsica instalada en el ordenador como de 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 al ser la memoria fsica de menor tamao que el necesario lo que 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: chero h ij kh l mj no : Aparece la particin de swap (si existiese) con un comando de l p q mr podemos averiguar su tamao.
m: permite conocer que procesos tenemos, y con las opciones adecuadas nos provee del porcentaje de CPU y memoria usada. s

: versin de s m 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.
jt l u i i : 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 vhw o x l l iu mh kn ky i z. {| mj nj :

Informacin del estado de la memoria virtual, y en qu esta siendo utilizada

1.3.4.

Discos y sistemas de cheros (lesystems)

En esta seccin tendremos en cuenta como examinar los discos que tenemos disponibles, como estn organizados, y qu particiones y sistemas de cheros (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 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, podemos hacer uso de la informacin de arranque del sistema (comando p | i m} ), donde se detectan los dispositivos presentes. Entre los dispositivos ms frecuentes encontramos: hp i { hy p ~ (dispositivos IDE ATA o PATA) y hp i { h mp ~ (dispositivos SCSI, SATA, discos duros conectados a travs de un puerto USB, discos ash (los de tipo pendrive), 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 lgicas8 . Diferentes particiones pueden contener distintos tipos
8 Estas particiones se crean sobre una particin extendida, que permite colocar mltiples particiones lgicas sobre una fsica.

26 de lesystems, asociados a un mismo operativo o a sistemas operativos diferentes.9 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:

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). La fuente ms importante de informacin al respecto es el chero  . En este chero se indica que dispositivos se montarn cada vez que arranque el sistema o que dispositivos extraibles podrn ser montados por los usuarios cuando interese. 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 podr montarlos bajo demanda el superusuario. Un ejemplo de chero  es el siguiente:

9 Un

documento de gran ayuda a la hora de decidir como partir un dispositivo puede encontrarse en .

27


La explicacin de las diferentes opciones de montaje puede encontrarse haciendo    , cabe destacar las opciones     que hace que el sistema no se monte de forma automtica en el arranque, o la opcin   que hace que los usuarios puedan montar el sistema de cheros en el punto de montaje denido. En el ejemplo analizado se incluyen los sistemas estndar, como root en /dev/hda5, la particin de swap en hda8 o el directorio proc anteriormente analizado. Los comandos ms relevantes a este respecto son:
  .

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

                      . 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:
#$  ! !  "     % &'( & $

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.

28 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 0 de los usuarios, podemos eliminarlos peridicamente, o evitar su generacin; (b) El sistema , de 3 4 5 , 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 -8 -8 -8 cuotas existe la aplicacin 6 7 4 (ver 3 49 : 6 7 4 y 3 49 ; 6 7 4 9 ).
-1 2

1.4. Gestin de sistemas de cheros


Como ya hemos comentado en la seccin anterior toda unidad de almacenamiento posee un archivo especial de dispositivo asociado, siendo los ms frecuentes: IDE: Dispositivos < disco esclavo del <> 4 disco maestro, 1er conector IDE; < <> / 2= / / 2= // <> 0 maestro segundo conector, < <> 1er conector, < esclavo segundo conector. SCSI: Dispositivos < , ... siguiendo la numeracin que tengan los perif< 4, < < ricos en el Bus SCSI. Los pendrives y discos duros 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 / 2= /BC B <@ :D D . 1.44MB en la disquetera A seria < / 2= /A / 2= +/ / 2= +/ ? / 2= / / 2= /?

Respecto a las particiones presentes, el numero que sigue al dispositivo representa el ndice de la / 2= / particin dentro del disco, y es tratado como un dispositivo independiente. < <> 4 : primera / 2= +/ < 0E , segunda particin del tercer dispositivo SCSI. particin del primer disco IDE, o < A continuacin analizaremos brevemente los procesos bsicos que podemos realizar con los discos y sus sistemas de archivos asociados

1.4.1.

Creacin de particiones y sistemas de cheros

La creacin o modicacin de particiones en el entorno de Linux se lleva a cabo con coman/ +F / +F + / +F dos como @ 5 , o similares ( 0@ 5 , @ 5 ). Una herramienta propietaria de gran utilidad es . G 18 8 4 5 5 9 H 4 5 0 que se ejecuta en entorno Windows TM. / +F El uso de @ 5 resulta bastante intuitivo, y generalmente en un sistema no es frecuente variar el esquema de particiones tras la instalacin, al menos en los discos estticos. Asociada a la creacin de particiones se encuentra la tarea de formateo de disquetes. Para dis/ -1 8 quetes pueden utilizarse diferentes herramientas entre las que destacan @ @ 3 4 (formateo bajo + 21 -1 8 -1 8 nivel), 7 I @ 3 4 (formateo a diferentes capacidades en formato msdos), 3 @ 3 4 (formateo especico creando lesystem msdos estndar).

29 Es importante particionar de forma adecuada un sistema de cheros, dependiendo de cual sea el uso que luego vaya a drsele. Una decisin adecuada permite optimizar los recursos y la estabilidad del sistema. La conguracin mnima suele ser de dos particiones: la correspondiente a / (root lesystem) y la correspondiente al rea de intercambio o de swap. Esta ltima se formatear como tipo Linux swap, mientras que hay una gran cantidad de opciones para la primera. Otra conguracin habitual, ms adecuada que la anteriormente citada de J + swap, es de tres particiones: J , swap y /home. En este caso JK LM N es la particin donde residen las cuentas de los usuarios. Al separar las cuentas de los usuario del sistema, situndolas en particiones separadas obtenemos varias ventajas. Facilitamos la gestin de las cuentas de usuario, evitamos que un llenado de la particin de usuarios afecte al sistema, podemos compartir dicho espacio de usuarios entre varias distribuciones de GNU/Linux y, especialmente, hacemos posible la actualizacin o reinstalacin del sistema manteniendo a salvo la informacin de los usuarios. Otro esquema muy utilizado, y ms completo que los dos anteriores, consiste en separar en particiones diferentes las secciones estticas y dinmicas del sistema. Por ejemplo, en una particin se coloca J incluyendo la parte esttica ( JO PQ , J RO PQ y JS RT ) que se espera no va a sufrir variaciones sensibles y rpidas de tamao. En otras particiones se incluira la parte dinmica ( JU VT , JW M X , J LX W , JS RT J Y L ZV Y ). Esto permite ajustar mejor el espacio de disco, dejando ms espacio a las partes del sistema que lo necesiten y minimiza los problemas en caso de llenado accidental de una particin o de fallo en el disco duro -fallara una particin, pudiendo recuperarse la informacin del resto de particiones. Un vez partido el disco es necesario crear sistemas de archivo, lo que en Linux se hace mediante el comando M [ \ R. Hay versiones especcas de este comando para crear diferentes lesystems (M [ \ R ]N^ W _ , M [ \ R ]N^ W ` ), incluso lesystems no linux (M [ \ R ]U \ VW , M [ \ R ]M Ra L R , M [ \ R ]M PQ P^ ). El comando M [ P RL \ R crea los istemas de archivos del tipo P RL b c c d , (con extensiones joliet o rock ridge) sobre cdroms. Esto junto a comandos como Za T N ZLT a permite grabar cdroms. Un caso particular es la orden M [ Re VX que permite crear reas de intercambio, que despus se pueden activar o desactivar con Re VX LQ f Re VX L \ \ El tipo N^ W _ ha sido en Linux el tipo de por sistema de archivo usado por defecto hasta los kernels de la familia 2.4. En la actualidad ha sido sustituido en gran parte por el sistema N^ W ` , que es una mejora del anterior. Resulta compatible con este, pero dispone de journalling10 . 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 U \ VW , Q W \ R , Rf RU , T N P R NT \ R, g \ R o ^ \ R . Nuestro sistema GNU/Linux puede leer datos (o sea cheros y directorios) de todos estos sistemas de cheros, y escribir en la inmensa mayora. Una excepcin que presenta algunos problemas es el caso de ntfs. Existe soporte para este sistema pero en versin experimental (ya que existen dos versiones llamadas ntfs y ntfs2, 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).
10 El journalling consiste en tener un registro de los cambios que sufre el sistema de cheros, lo que permite recuperaciones ms rpidas en caso de error.

30

1.4.2.

Montaje de los sistemas de cheros

El montaje y desmontaje de los lesystems se consigue usando los comandos h ij k l y jh ij k l respectivamente. El proceso de montaje se realiza mediante la orden h ij k l con el siguiente formato:
h ij k l ml n op q rs rl qh ml s t q u qv o wq h ij k l mt i ok l

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:
h ij k l ml xj l i y u qv y ru x z yh qu ox yj r{ | z

: monta la segunda particin de un pendrive o disco usb en el punto yh qu ox yj r{ | z dejando al sistema la eleccin del tipo de sistema de cheros. : montara el cdrom (si es el IDE que esta en la segunda controladora como maestro) en el punto yh k l y wu ih . : montara el cdrom, y u qv y wu ih se usa como sinnimo (es un enlace o link) del dispositivo donde esta conectado.

h ij k l ml o ri } ~ ~  y u qv y u w yh k l y wu ih

h ij k l ml o ri } ~ ~  y u qv y wu ih yh k l y wu ih

h ij k l ml v n xl y u qv yn u   yh k l y n p it t s

: montara un disquete, y u qv y n u   Seria la disquetera A en alta densidad (1.44MB), tambin puede usarse yu qv y n u  .

h ij k l ml k l n r y u qv y u x z yh k l y ok

: montara la segunda particin del primer dispositivo IDE (la C:), como tipo ntfs (por ejemplo un Windows XP).

Para aquellas particiones que se utilicen con frecuencia y cuya entrada est incluida en el chero y ql wy n rl x{ el proceso de montaje se simplica mucho, ya que puede hacerse ahora simplemente indicando el dispositivo o el punto de montaje:
h ij k l yh k l y wu ih h ij k l yu qv y n u 

ya que el sistema extrae el resto de la informacin necesario de y ql wy n rl x{ . El proceso contrario, el desmontaje de particiones, es bastante sencillo, basta con utilizar el comando jh ij k l indicando el punto o dispositivo que se desea desligar:
j h ij k l yh k l y wu ih j h ij k l yu qv yn u 

En el caso de medios extrables, tipo cdrom (u otros) puede usarse eject para la extraccin del medio: q q wl yu qv y wu ih o slo q q wl en este caso. Los comandos h ij k l y jh ij k l con -a montan o desmontan todos los sistemas disponibles. En el chero y ql wyh l x{ se mantiene una lista de los sistemas montados en un momento concreto, se puede consultar o ejecutar h ij k l sin parmetros para obtener esta informacin. Una ltima tarea de gran importancia es la vericacin del estado de los sistemas de cheros. La principal herramienta de vericacin de lesystems en Linux es el comando n r w , que comprueba las diferentes reas del sistema de cheros y verica su consistencia detectando posibles errores y, en los casos que sea posible, corrigindolos. El propio sistema activa automticamente

31 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 tras superar un nmero predeterminado de arranques en el sistema. 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 . Existen versiones de este comando particularizadas para un sistema de cheros: . El proceso normalmente se activa con el dispositivo en modo de solo lectura y con la particin bajo examen desmontada. Se recomienda siempre desmontar las particiones para realizar el chequeo. En determinados casos, por ejemplo si el sistema de cheros bajo examen es el raz y se detecta algn error crtico, se nos pedir que cambiemos el modo de ejecucin del sistema (runlevel) a modo monousuario, y llevemos a cabo la vericacin en este modo. Es importante llevar a cabo procesos de respaldo (backup) del sistema: ya sean de todo el disco, bloques del disco, particiones, lesystems, cheros, etc. 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. En la segunda parte del curso se presentarn de forma ms detallada estas aplicaciones en el marco de la gestin de un cluster de ordenadores. Otros comandos que resultad de inters para llevar a cabo diversas tareas en este mbito son: , para encontrar bloques defectuosos en el dispositivo, , para obtener informacin sobre lesystems Linux o permite hacer tuning de los lesystems linux de tipo ext2 o ext3 ajustando diferentes parmetros de los mismos.

1.5. Ficheros de registro


El kernel, los daemons de servicios y las diferentes aplicaciones o subsistemas de GNU/Linux generan mensajes que son almacenados en 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 emplear bastante tiempo en procesarlos y analizar sus contenidos. En esta seccin vamos a presentar estos cheros, su ubicacin y contenido, como controlar la inforamcin almacenada y como gestionarla de manera eciente.

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 del ordenador, 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 ya sea por la velocidad de los mensajes, o porque estos estn ocultos tras cartulas grcas, puede ser imposible 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.

32 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 : cheros que utiliza el kernel para almacenar la informacin que gestiona. En particular resulta muy interesante activar la opcin de bootlog lo que se consigue editando el chero en el que debemos escribir la lnea

Al activar todos los mensajes de arranque quedarn almacenados en .

1.5.2.

El demonio es el servicio ms importante de obtencin de informacin dinmica del sistema. El proceso de anlisis de los cheros de registro o logs generados por este demonio nos ayudar 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 s 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. Dependiendo de la distribucin puede estar congurado de diferentes formas: en Debian se generan los cheros en el directorio (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, 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. En este sentido resulta ms prctico denir un nodo remoto que reciba los mensajes del sistema. se realiza la conguNo tenemos espacio en esta seccin para describir detalladamente cmo racin de , aunque siempre nos queda el manual... Pero daremos una breve descripcin de la sintaxis que emplea el chero de conguracin 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

33

dene que a aquellos mensajes del sistema que pertenezcan a la categora con prioridad se asigne la accin escribir en el chero . Las categoras informan acerca de qu parte del sistema emite el mensaje, y las denidas en GNU/Linux son , , , , , , , , , , , , y a . El carcter comodn signica cualquier categora y equivale a ninguna categora. Las prioridades indican la importancia del mensaje, y mantienen una relacin jerrquica. Son, en orden de importancia creciente: , , , , , , y . Tambin tienen aplicacin 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:

  

  

34
           !"  # $% & $' ( )$' ( * % +   " & !%  ), $"-    " & - $ . ) "# /   "   3   "- "%2   4   

01+ $% 1 .2 1- " / /$2 " /

5 /"% +  , % 0( - "

 6  , $ "-   - $ .  &  "# / !%   "# / "%%  "# /   !" &   , "7 ' 2      &    !"  # $% 81 , "+ 19 ! / ."

Algunos comentarios 1. Envo de informacin estndar. Los mensajes de cualquier prioridad en todas las categoras salvo :; < = y :; < = > ? @A se envan al chero BA :? B C DE B FG FC DE . El signo H 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 que soporta el sistema para aquellos cheros donde se accede con frecuencia. 2. Los mensajes de cualquier prioridad en las categoras :; < = y :; < = > ? @A se envan al chero BA :? B C DE B :; < = IC DE . 3. Divide los registros correspondientes a J : @C para facilitar su manejo. 4. Todos aquellos mensajes que tengan la prioridad @K L D , K D< @ MN y O :? K excepto los pertenecientes a :; < = , :; < = > ? @A , M? DK , P : NJ DK , J : @C y K NO F tengan estos la prioridad que tengan, son almacenados en BA :? B C DE BJ N F F:E N F. 5. Enva a todo el mundo los mensajes con la prioridad de emergencia. 6. Enva todos los mensajes generados a la mquina remota FN? A @P D? H= DJ N . En el servidor remoto hay que activar la opcin H? en el chero B N< MB @K @< IP B FG FQ C DE P para que el servidor acepte la entrada de mensajes enviados por otros sistemas. 7. Selecciona ciertos mensajes para enviarlos en modo L @L D al dispositivo BP NA BR MDK FD C N . Esto permite acceder a esta informacin en tiempo real con el comando R MDK FD C N HL @C N BP NA BR MDK FD C N . El demonio FG FC DE P se lanza con el script B N< MB @K @< IP B FG FQ C DP que permite sincronizar el lanzamiento de FG FC DE P y Q C DE P (el demonio de registro del kernel). Este demonio puede lanzarse con diferentes opciones que pueden consultarse en J :K FG FQ C DE P . Adems es muy conveniente instalar y lanzar en el arranque del sistema el programa C DE ? D< :< N que nos permite mantener bajo control el tamao de los cheros de registro, comprimiendo y borrando de acuerdo con el tiempo transcurrido. A veces la cantidad de mensajes generados por el sistema hace muy difcil examinar aquellos que resulten de inters. Es posible ltrarlos con aplicaciones como FG FC DE HF;J J :? G .

35 Otros comandos interesantes relacionados con el registro del sistema son S TU U VW (un comando que permite a los usuarios interaccionar con el sistema XY XS TU ), Z [ \ ]^ V (tiempo que hace que el sistema esta activo) o S _ X\ (analiza el registro de entradas/salidas en el sistema generalmente presente en `a _W ` S TU `b \^ [ ). En Debian puede instalarse el paquete XY XS TU cd U , que proporciona una versin ms actualizada de esta aplicacin, mucho ms congurable y exible a la hora de denir ltros para la seleccin de mensajes.

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

hiijjj kf lmg knop 12 e ffg hii f lmg knop 13 e ffg hiijjj km qr stu knop i m n v iw tux t l y i m qr stu z o q{ q o qu v q
11 e ffg

36

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 donde manda o desde los que recibe informacin.

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. cheros ordinarios que contienen datos. 2. cheros especiales que nos permiten acceder a dispositivos y perifricos. 3. 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 el tree en general no pertenecen a un nico dispositivo sino que habr archivos combinados pertenecientes a diferentes sistemas de cheros como vimos en la seccin 1.4. 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 37

38 (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 working directory que es el obtenido tras correr el comando . Conviene tambin sealar que si  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 :

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 exclusivamente 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 | |  : Documentacin. |

11 Release 6.

39 : 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 los procesos.
(*) Ficheros que utiliza el cargador del sistema o bootloader.

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 debian1 . 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 sistema (caso de ) o se evitan (o minimizan) daos en caso de que se llene por completo un 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).

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 sistemas de archivos, ya sea particiones de disco u otros dispositivos de almacenamiento. En las mquinas en que esta instalado GNU/Linux junto a otros sistemas operativos ha de utilizarse algn sistema de arranque (LiLo o Grub) y pueden existir particiones asignadas a los
1

40 diferentes operativos. Muchas veces es interesante compartir datos entre los diferentes sistemas, ya sea para leer sus cheros o modicarlos. A diferencia de otros sistemas (que slo tienen en cuenta sus propios datos, lase windows, 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. Y hay que seguir el mismo proceso si se trata de un dispositivo de almacenamiento externo ya sea disquete o oppy. En la seccin 1.4. Dependiendo de la distribucin se usan diferentes convenciones a la hora de denir los puntos de montaje. Y tambin los podemos crear nosotros de forma arbitraria. Normalmente suelen existir o bien como subdirectorios del directorio raz, por ejemplo /cdrom /win /oppy, o bien como subdirectorios de o . Este ltimo es el punto estndar de montaje en Debian (aparecen pues ...).

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. Por ejemplo una cuenta de usuario llamada suele pertenecer a la persona responsable 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 ciertos privilegios para la administracin del sistema. 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

                     

y la entrada en donde se dene los grupos a los que est asociado el usuario sera
   ! "# "$ $% "&' (  )* +, )- . ) +/ (- / 0  / ( ! ! ! "# "$ $ $ "& ' (  )* +/ ) . / ( +1 (  (

41 En la lnea correspondiente al chero 2 3 4 45 6 hay varias entradas separadas por dos puntos. La primera corresponde al 7 489 : 3; 8 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 = 8> ?= 4@ 3 6 A5 . En tercer lugar encontramos el nmero de identicacin del usuario o UID, en este caso B B B B. En cuarto lugar tenemos el nmero de identicacin del grupo primario al que pertence el usuario o GID ( B B B). El resto de campos en el chero 2 3 4 45 6 nos dan el nombre del usuario (C @ A9 D: E 3F 8: 4@ D8 G6 ), su directorio HOME ( =@ A; 8 => @ A9 D: ) y la shell en la que entra por defecto ( =H D: =H 3 4@ ) al hacer login. Como podemos ver en la entrada de = 8> ?= I 9 A7 2 el grupo principal al que pertenece thorin es el grupo H A 4 48 4 aunque adems el usuario Thorin forma tambin parte del grupo 65 39 J 8 4. 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 2 3 4 45 6 y I 9 A7 2 es mediante los comandos 36 6 7 4 89 , 3 6 6 I 9 A7 2 , 6 8 G7 4 89 y 6 8 G I 9 A7 2 , especialmente pensados para un sistema Debian y ms fciles de usar que 7 489 3 6 6 , 7 4 89 6 8 G y 7 489; A 6 . El comando 36 6 7 4 89 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:
K LM LKN OPQ RS S T M UV W X UM S UM Y SS LZ T T M UVW [X UM S UM \ ]^_ ^` a b b b c UZ d b K LM LKN OPQ RS S V edM f fLZ T M UV W X UM S UM g R h M U T Y SS LZ T V edM [g R h M U T \ b b b Y SS LZ T Z di V edM [g R h M U T \ ]^_ ^` a i LKN T M UV W [X UM S UM \ b j M d R K LZ T N UX d S LM d kK UM l [m N UX d m g R h M U T \ b j UW l LZ T n L h d e n M UX [m dK k m eo d h \ p Z K dM Z di q r st W R e ei UM S O u dK lW d Z di q r st W R e ei UM S O W R e ei S O W R e ei UM S V W S R K d S eV k kd e e n V h h l j N R Z T LZ T KN d V edM LZ n UMX R K LUZ n UM g R h M U T p Z K dM KN d Z di v R h V d w UM W M d ee p r x p u n UM KN d S d n R V h K y V h h r R X d z{ O u U UX rVX g dM z{ O | UMo }N UZ d z{ O ~ UX d }N UZ d z{ O  KN dM z{ O s e KN d LZ n UMX R K LUZ kUM M d kK zl m r { l K LM LKN OPQ

K LM LKN OPQ k R K m dK k m W R e ei S T M dW g R h g R h M U T O O^_ ^` O^_ ^` O w w w Om N UX d m g R h M U T Om g LZ m g R eN K LM LKN OPQ k R K m dK k m T M UV W T M dW e kU X UM S UM O O^_ ^` O

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 2 3 4 45 6 y I 9 A7 2 :

El comando ; A6 7 4 89 nos permite modicar los parmetros que denen a un usuario o grupo y los comandos 6 8 G7 489 y 6 8 G I 9 A7 2 nos permiten eliminar usuarios o grupos. Estos comandos junto con los dos anteriores permiten controlar de forma exhaustiva las caractersticas del usuario que se aade, como se puede comprobar consultando las correspondientes pginas ; 3: . Para los que sean amigos de las GUIs (interfaces grcas) exister un gestor de usuarios y grupos bastante avanzado en KDE ( 7 489 ).

42

2.3.2.

Interpretacin de los permisos


,

Supongamos que el usuario thorin ejecuta el comando


desde uno de sus directorios.

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 o a , como podemos ver en el ejemplo proporcionado anteriormente:

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 para ejecutar. As pues en el caso de el usuario thorin puede ejecutar el programa, 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

43 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

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 hayamos activado el permiso de escritura ), con la instruccin . Por ejemplo, si el usuario thorin quiere que un chero en su directorio HOME llamado pueda ser ledo, modicado y ejecutado por todos los usuarios (generalmente no es la mejor poltica, pero bueno...), escribir:

   

  

Donde la letra  indica que el cambio de permisos afecta al usuario, grupo del usuario y resto de usuarios. Si, por ejemplo, el usuario quiere cerrar el acceso a un 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
 

  

! "      

Si queremos cambiar los permisos del propietario utilizamos para referirnos a este la clave # , para el grupo la clave y para el resto de usuarios la clave . As que si queremos eliminar todos los permisos de ejecucin del programa haremos
$

   

  

Como es fcil imaginar, la combinacin empleada, # es equivalente a indicar  : # =  .

2.3.4.

El sticky bit

Este es un permiso especial que slo afecta a directorios. Imginemos que el usuario thorin quiere crear un directorio llamado %   & al que todos los miembros de su grupo principal (' & & &) puedan aadir informacin:
 ! 

! 

"


    "       " "   ! 
( (! 
(! 


! 

"




    "       " "   ! 
(

Aqu surge un inconveniente. El permiso de escritura permite a los compaeros del grupo 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
' & & &

44 sido aadidos por ellos sino por otros miembros del grupo ) * + +, +. Un permiso especial llamado sticky bit nos permite evitar este problema. Cuando se activa este bit pegajoso2 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 o el superusuario. 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
-./ 01 23 4 0/ 5 6 71 86

9 : ;<

En nuestro caso, por ejemplo, si el usuario thorin quiere activar el sticky bit para el directorio , + har:

3 86 83. =>? -./ 01 23 @ AB4 7 CD 3 86 83. =>? A C E1 A @ AB4 7 C 16F G 6F G EEH I 3. 06 84 5 0 C C7 C JK IL I K KM EKN EKN JO =KI @ AB4 7 C

Ntese la P 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, o sea, que la seal del sticky bit no encubre una seal de ejecucin, Q asociada al grupo * ther. Si al nal de los permisos se encuentra una R minscula entonces indica que se ha activado el sticky bit y que el directorio es accesible a todos los usuarios. Esta es la nica diferencia entre la marca R y la marca P . 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
3 86 83. => D@ AB4 7 C ? A C EB A 3 03 B A M 16F G 6F G EEH I 3. 06 84 5 0 C C7 C JKIL I K K M EKN EKN 16F G 6 EG 6 EG L 3. 06 84 5 0 C C7 C JKIL I K K M EKN EKN E6F E6 EE6 EE J T B4 1 B AU 5 0 C C7 C JI M I K K M EKN EKN E6F E6 EE6 EE J 3. 06 84 5 0 C C7 C J JL I K K M EKN EKN E6F E6 EE6 EE J 5 8A5 0 5 0 C C7 C I I Y I K K M EKN EKN ?

JO =JI JO =K N JO =JN JO =JK JO =J J

S SS @ AB4 VB4 8AA0 @ AB4 VB3 BWX 7 @ AB4 VABT 0

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 9 : ;< Z : ;[ * que ha incluido el usuario bilbo e intenta borrarlo:
T B4 1 B AU \3 86 83. =D. 0/ 7 D3. 06 84 D@ AB4 7 C ? 6/ @ AB4 VABT 0 6/ = 6 7/ 0] 7 F 6 83 7 E@ 6 03 7 -3 71 6 7TX AB6 U 8A7 ^@ AB4 VABT 0 _` a 6/ = -B4 4 03 6 7/ 0] 7 ^@ AB4 V ABT 0 _ = b@ 76 B3 804 4 03 @ 76/ 83 3 71 ?

Por supuesto el usuario thorin s puede borrar o modicar el archivo 9 : ;< Z : ;[ * al ser l quin posee el directorio en el que est el archivo.
2 sticky: adj. having the properties of glue. En versiones antiguas de UNIX el sticky bit en un chero ejecutable afectaba su localizacin en memoria aunque en la actualidad slo tiene sentido al aplicarse a directorios.

45

2.3.5.

Permisos cd ef y c g ef

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: el permiso hi jk h i jk hl jk h l jk ( et ser entity y el permiso ( et roup entity. hi jk 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 asociados al usuario propietario del chehl jk ro 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 m no op o qr que tiene el mismo efecto que ejecutar el comando st uv wt x uy v ws nr up o qr x zup o qr { o q| w , que thorin permite a los miembros de su grupo ejeborrando el chero p o qr { o q| w . Supongamos hi jk con el comando }vt w~  z um no op o qr : cutar este programa y adems lo hace

Si ahora el usuario gandalf trata de borrar el chero p o qr { o q| w 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:
m no op o qr z

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. hl jk El permiso especial tiene un efecto similar pero con los grupos. Si se activa el bit de un ejecutable con el comando }vt w~ |  z chero y el chero puede ser ejecutado por usuarios no pertenecientes al grupo ( w ), entonces al ejecutarse el programa corre con la GID asociada a su propietario y no al usuario que lo ejecuta. hi jk hl jk En ambos casos, y , este permiso slo tiene efecto sobre programas binarios (compilados), no sobre scripts. hi jk hl jk 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.

hi jk

2.3.6.

Permisos numricos

Hasta ahora para especicar los permisos asignados a un chero hemos utilizado las letras a los diferentes conjuntos de usuarios y s , 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.
q , w , | y (all, other, group y user) para representar y (read, write y execute) combinndolas con los

46 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 ejemplo 0740 implica ningn permiso especial activado, para el usuario, para el grupo y 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

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... La explicacin de esto radica en que no trabaja directamente con los modos. El resultado 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 el chero o .

2.4.

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

47

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, esto es, se inicia una login shell. Si al comando no se le da un nombre de usuario entonces se 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

 

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 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 estuviera 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 es muy simple, pero nos puede dar una idea de como funciona   . Si, por ejemplo, el superusuario desea permitir a gandalf borrar el archivo         perteneciente a bilbo puede aadir al archivo    la lnea
 

Una vez salvada la nueva versin de    entonces el usuario gandalf puede ejecutar

Tras los cual se le pide que introduzca su password (atencin, su propio password y no el de root) y cuando 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.

48

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

3 http://www.debian.org/doc/manuals/debian-reference 4 http://www.debian.org

Captulo 3

Conguracin de perifricos
Una vez que el sistema est instalado en el disco duro y las partes esenciales del hardware del sistema han sido reconocidas satisfactoriamente: teclado y ratn, tarjeta de vdeo, tarjeta de red, modem, lectores y grabadores de CD/DVD, an es preciso que funcionen otros perifricos que en la mayor parte de los casos resultan imprescindibles. En particular la mayor parte de los usuarios precisa de una impresora, un scaner y algn dispositivo de memoria USB. Aunque GNU/Linux tiene soporte para la mayor parte del hardware que hay en el mercado, no debe sorprendernos que haya algn dispositivo no soportado. En lo que sigue ensearemos a congurar una impresora, un scaner y un dispositivo USB, suponiendo que todo el hardware est soportado GNU/Linux. Si ste no fuera el caso, no hay que desesperarse, ya que hay herramientas, que no son las que se explicarn a continuacin, con las que se puede llevar a cabo la conguracin.

3.1. Impresoras
3.1.1. CUPS

Tradicionalmente se han utilizado en Unix dos sistemas de impresin: Berkeley Line Printer Daemon (LPD) y el AT&T Line Printer, creados en los aos 70 para usar las impresoras matriciales de la poca. Ms tarde, con la evolucin de estos perifricos incorporando las tecnologas lser o de chorro de tinta, estos sistemas fueron adaptndose e incluyendo controladores que permitieran su uso en este tipo de impresoras, aunque sin mejorar sustancialmente sus capacidades originales. A nales de los aos 90 surgieron diferentes iniciativas orientadas a la creacin de un sistema estndar de impresin, establecindose las especicaciones del protocolo IPP (Internet Printing Protocol) como una extensin del HTTP (HyperText Transfer Protocol) -en el que se basa la navegacin por Internet- con el propsito de proporcionar servicios de impresin remota. CUPS (Common UNIX Printing System) es software libre, distribuido conforme a los trminos de la Licencia Pblica General (GPL) y basado en este protocolo IPP, apareciendo su primera versin en octubre de 1999 con el objetivo de dotar de una solucin moderna, en materia de impresin, a los sistemas tipo Unix. El sistema de impresin CUPS ha sido desarrollado por la empresa californiana Easy Software Products (http://www.easysw.com/) y toda la informacin sobre el mismo puede encontrarse en la direccin de Internet: http://www.cups.org. 49

50 El demonio de impresin Aunque hayas instalado GNU/Linux en un ordenador aislado, sin conexin con ningn otro, debes saber que tienes funcionando un sistema de red. El ncleo est concebido con una estructura modular, de modo que permite aadir o suprimir servicios individualmente sin comprometer la estabilidad del resto del sistema. La idea es muy sencilla y, a la vez, muy efectiva. Los servicios se ofrecen con el modelo habitual de las redes, es decir, basados en la losofa cliente servidor, de manera que las aplicaciones demandan cualquier tipo de tarea al ncleo a travs de un determinado puerto -podramos considerarlos como diferentes lugares identicados por un cdigo numrico a travs de los que el ncleo escucha las peticiones- y ste les responde con el servicio correspondiente. Los programas encargados de regular estos dilogos se conocen con el nombre de demonios. En el caso concreto de GNU/Linux, el demonio encargado de regular las peticiones de impresin proporcionado por CUPS, es cupsd (CUPS daemon), por lo tanto, necesitamos que se encuentre ejecutndose para que la impresora pueda recibir nuestras instrucciones. Normalmente, el sistema est preparado para que este demonio se active durante el arranque del ordenador, por lo que es probable, no tengamos que hacer nada en este sentido. No obstante, no est de ms que aprendamos a parar y a iniciar este servicio, ya que el procedimiento es similar al que debemos utilizar con cualquier otro demonio del sistema. En primer lugar, vamos a comprobar si se est ejecutando. Accedemos al men de Gnome Aplicaciones | Herramientas del sistema | Panel de control | Servicios. Por supuesto, se nos pedir la clave de administracin -la clave de root que jamos durante la instalacin- y nos mostrar una ventana con todos los servicios del sistema, junto a una casilla de vericacin que nos informar de cules se encuentran en ejecucin. En este caso debemos jarnos si se encuentra marcada la casilla correspondiente a cupsys. En caso de no ser as, la marcaramos y pulsaramos sobre el botn Aplicar. Otra forma de comprobar el estado de CUPS sera, abrir una terminal y ejecutar la orden:
"#$ #% &' ( ) *+, -./ 0 1 2 3 ( ) 4 56 $ 1 #( 1 27 6 8 89 : +; < =< < => > , < ? , @A + B C @: -, > < -< @ D( 2 6 D 2E &' D #( 1 27 5 6 &F 3 % 7 8 2 +; : : < =< < =@ +< , + > ; ? 1 9 2 D @ G + @ -? < < -< < 5 6 $ 1 #( 1 27

Recordemos que estamos haciendo una peticin al sistema para que nos muestre todos los procesos (ps) y ltramos (|) la salida de la orden (grep) para que nos muestre slo aquellos que contengan la instruccin cupsd. Este comando nos devuelve dos lneas: la primera es la que realmente nos informa de que el demonio cupsd est en ejecucin, y la segunda es el proceso correspondiente a nuestra propia peticin. Pero, qu hacer si cupsd no est activo? Bien, hemos de activarlo. Para ello podemos utilizar el entorno grco, como hemos descrito anteriormente, o bien hacerlo desde la lnea de comandos. En cualquier caso, debemos convertirnos en el superusuario del sistema -esto ser necesario para todas las tareas de administracin-, accediendo a una consola virtual, por ejemplo, con la combinacin de teclas Control + Alt + F2, y registrndonos como root. Otra forma de conseguirlo, sin abandonar nuestro entorno grco, es abrir una terminal y ejecutar la orden su (de superusuario), nos pedir la contrasea de administracin y asumiremos la identidad del root en esta terminal. Una vez all, ejecutaremos:
"#$ #% &' ( ) *+, -./ H D $9 #D &' &9 =7 D #( 1 2I 2 2 9 3 6 9

51 Una impresora no es una impresora Este epgrafe puede parecer una broma un tanto desconcertante, pero no es as. Simplemente queremos destacar que en GNU/Linux no debemos confundir el concepto de impresora con el objeto fsico, es decir, con una impresora real, al menos, no tiene por qu ser as. En la mayora de las ocasiones, cuando nos referimos a una impresora o cuando enviamos un trabajo a imprimir, en realidad, deberamos precisar que se trata de una cola de impresin congurada conforme a unas caractersticas particulares establecidas por el usuario. Aclaremos esta situacin con un ejemplo. Supongamos, como es mi caso, que tenemos una impresora de inyeccin de tinta con calidad fotogrca. Es este caso, deseamos congurarla correctamente, de modo que nos permita imprimir las fotos e ilustraciones con unos resultados ciertamente vistosos. Sin embargo, qu ocurre cuando necesitamos imprimir una o varias pginas de texto puro? Pues, seguramente, la conguracin con calidades altas no mejorar en gran medida el aspecto de nuestros textos impresos, tan slo ocasionar un mayor gasto de tinta y, como consecuencia, un despilfarro que, aunque leve, no menos indeseable. La solucin pasa por denir distintas colas de impresin que el sistema asumir como impresoras, aunque se trate, en realidad, del mismo dispositivo fsico. Podramos denir una impresora -as entendida con resoluciones altas, llamada foto, por ejemplo, para enviar a ella los trabajos que requieran de una impresin de calidad. Otra, llamada normal, para imprimir documentos a color, pero sin unas exigencias de nitidez elevadas, por ejemplo, pginas de Internet. Finalmente, una tercera impresora, borrador, a la que enviaremos los trabajos que slo contengan texto puro, congurada con una calidad econmica. De esta forma, el sistema se comporta como si tuvisemos tres impresoras distintas cuando, en realidad, se trata del mismo dispositivo congurado adecuadamente para cada necesidad. Ni que decir tiene que esta caracterstica del sistema es totalmente opcional, quedando a criterio del usuario la utilizacin que hace de ella. Sin embargo, es conveniente aclarar que cuando decimos congurar la impresora, vamos a congurar realmente una cola de impresin. Conguracin de la impresora con el navegador Una de las caractersticas de CUPS es la posibilidad de realizar todas las tareas de administracin de los servicios de impresin desde un navegador. Por lo tanto, elegiremos nuestro navegador favorito, Mozilla Navigator, Mozilla Firebird o Epiphany y escribiremos en la barra de direcciones:
J K K L MN N O P QR O J P S K MTU V

O bien, el nombre del ordenador:


J K K L MN NW PX MT U V

En cualquiera de los casos, como nos hemos asegurado que el demonio cupsd est ejecutndose a la espera de recibir peticiones, accederemos al men principal de administracin. Pulsaremos sobre el enlace Manage Printers y, seguidamente, sobre Add Printers, el sistema nos solicitar el nombre de usuario (root) y la contrasea de administracin, e iniciar el asistente para aadir una nueva impresora al sistema. La primera pantalla nos pedir el nombre de la impresora -en realidad, el nombre de la cola de impresin que no puede contener espacios en blanco, la localizacin y la descripcin. Estos dos ltimos campos son de tipo informativo, por lo tanto, podemos incluir los comentarios que describan la cola de impresin sin temor a que intereran en algn aspecto esencial de la conguracin.

52 A continuacin, debemos elegir el modo de conexin con la impresora, seleccionando el dispositivo adecuado. Si nuestra impresora es de tipo USB, indicaremos USB Printer 1. Si se encuentra en el puerto paralelo, Parallel Port 1. Si se trata de una impresora de red, AppSocket/HP Direct, o el puerto correspondiente si no se trata de ninguno de los anteriores. Pulsando Continue debemos indicar a CUPS la marca del fabricante de nuestra impresora y, seguidamente, el modelo de la misma. Ahora es el momento de elegir los ajustes de impresin acordes con las caractersticas de la cola que estamos deniendo, por ejemplo, si se trata de la impresora con calidad fotogrca, es aqu donde debemos establecer los parmetros para que nuestras fotografas se impriman con la calidad deseada. Una vez completado el proceso, regresaremos a una ventana de administracin donde CUPS nos informar de las caractersticas que hemos denido para nuestra impresora y tendremos la oportunidad de imprimir una pgina de prueba. Establecer la impresora predeterminada Probablemente nos haya parecido una buena idea denir distintas colas de impresin para un mismo dispositivo. En ese caso, debemos indicarle al sistema cul de ellas utilizar como predeterminada impresora por defecto, para ello, hemos de registrarnos como administrador y ejecutar la orden:
YZ [\] ^_ `\ _ a] b c d `^] Z c d eac [

donde nombre-impresora es el que corresponda a la cola de impresin deseada que jamos durante la instalacin. Este nombre no es sensible a maysculas y minsculas. En concreto:
fg d g Y ^_ h i `jk lmn o eh p [ e eq ac \ l c a_ lrs a] d rt c ^] [ Y\ a eu YZ [\] ^_ `\ _ ac] [ Y v wx

Esta secuencia jara la cola normal810 como impresora predeterminada del sistema. Impresin desde la lnea de comandos En estos momentos ya tenemos a GNU/Linux en condiciones de comunicarse con nuestra impresora y atender nuestras peticiones en este sentido. Ahora bien, cmo hemos de imprimir? Vamos a ver el ejemplo ms sencillo de uso de las posibilidades de este sistema. Para ello, con la impresora conectada -y con algo de papel-, abrimos una terminal y ejecutamos, uno a uno, cualquiera de los comandos siguientes:
fg d g Y ^_ h i `jk lmn o Y e y YZ c dz h d e{ ^\ ^ e _ ac] [ Yv wx `j | }w ~ ^Y d }e   fg d g Y ^_ h i `jk lmn o YZ Z ac zh d ^ { i { c dz h d e{ ^\ ^ e _ ac] [ Yv wx `j }w ~ ^Y d }e   fg d g Y ^_ h i `jk lmn o YZ `\ ~ a{ a v wx ^] [ t d_ Z _ t

En el primer caso hemos pedido al sistema que nos muestre el contenido (ls) del directorio m en el que estamos situados -el smbolo , que representa nuestro directorio personal- y hemos redireccionado (|) la salida hacia la impresora (lp). Observaremos cmo la impresora empieza a funcionar y expulsa una hoja con el listado de archivos.

53 En el segundo caso, enviamos a la impresora (lp) un archivo (porquevi.txt) que se encuentra situado en el directorio actual, si estuviese en otra ubicacin, deberamos expresar la ruta completa del archivo. De la misma forma, obtendremos automticamente el documento impreso. Por ltimo, en el tercer caso, enviamos (lp), seleccionando (-d) como impresora de destino (foto810), el archivo (imagen.png) que se imprimir con los parmetros de calidad establecidos en la conguracin de esta cola. Para imprimir desde cualquier aplicacin del sistema, bastar indicar la orden lp en la ventana del dilogo de impresin que dicha aplicacin nos facilite. De esta forma, enviaramos el documento a la impresora establecida como predeterminada. Si deseamos utilizar otra diferente, lo indicaremos utilizando el modicador -d seguido del nombre de cola.

3.1.2.

Lprng

El sistema lprng es un spooler de impresin que proporciona los servicios esenciales de impresin para sistemas operativos de tipo UNIX. Aunque GNU/Linux no incluye este servicio (puede instalarse si se desea) consideramos muy conveniente comentar brevemente los rudimentos para ponerlo a funcionar ya que es un sistema que sigue usndose muy a menudo. El paquete debian que contiene este servicio es lprng y y los comandos que tiene asociados son: lpr -Pcola le: permite imprimir cheros. lpq -Pcola: permite ver el estado de una cola de impresin. lprm: permite borrar un trabajo de impresin lpc: programa interactivo para controlar las colas de impresin. Es muy conveniente instalar los paquetes debian ifhp y magiclter que corresponden a ltros de impresin que permitirn congurar gran cantidad de impresoras: laser, chorro de tinta, etc. El chero donde se almacena la informacin sobre las colas de impresin es . Para ver algunas de sus opciones analizaremos un chero printcap concreto:

54

Como puede verse, al denir las colas hay una primera lnea donde se dene el nombre o nombres de la cola de impresin. lp se reere al dispositivo de impresin, que puede ser local o remoto. sd, af, lf y cd se reeren al directorio de spool y a diferentes cheros de registro. ifhp y if se reere al ltro de impresin que se emplea, en uno de los casos se usa ifhp y en el otro magiclter. Adems de este chero deben crearse con los permisos adecuados los directorios de spool (los cheros de registro se crean automticamente). Si no se entiende muy bien el anterior proceso, pero an se quiere usar lprng puede emplearse el frontal grco lprngtool (hay que instalar previamente el paquete lprngtool) con el cual pueden generarse de forma sencilla las distintas colas de impresin del printcap y tambin se crean de forma automtica los distintos directorios de spool.

3.2. Scanner
A diferencia de lo que ocurre con las impresoras, el hecho de que un scanner est o no soportado por Guadalainex depende bastante del tipo de conexin y del chip concreto que incorpore el dispositivo, incluso un mismo fabricante puede producir modelos con distintos chips, algunos sin soporte. En cualquier caso, para salir de dudas podemos mirar en la pgina http://www.saneproject.org/, donde se centraliza todo lo relativo al funcionamiento de los scanners bajo GNU/Linux, concretamente en http://www.sane-project.org/sane-supported-devices.html tenemos una relacin completa, clasicada por fabricantes, con el driver y las indicaciones pertinentes para hacer funcionar nuestro scanner. Bsicamente, podramos decir que si se trata de un modelo con conexin SCSI, seguro que estar soportado y no tendrs ningn problema para su conguracin y uso en GNU/Linux, al igual que la mayora de escneres con conexin USB. Hoy en da, los fabricantes estn colaborando con el proyecto SANE, conscientes de las posibilidades que representa este creciente mercado de usuarios de sistemas libres. Si ests pensando en adquirir un escner, asegrate previamente que funcionar a pleno rendimiento en GNU/Linux, consultando en la pgina referenciada ms arriba. Qu es SANE? SANE son las siglas de Scanner Access Now Easy. Es una interfaz de acceso estandarizado a cualquier dispositivo de captura de imgenes, concebida con unas caractersticas muy avanzadas que la sitan por encima de otros proyectos similares. Permite, por ejemplo, el acceso al escner a travs de una red, o la posibilidad de escanear desde la consola de texto -lo que simplica la automatizacin de tareas mediante scripts-, separando claramente la interfaz de usuario para la captura de imgenes de los controles del dispositivo. Se trata de software de dominio pblico y puede distribuirse conforme a los trminos de la Licencia GPL. GNU/Linux proporciona todos los elementos necesarios para hacer funcionar a cualquier escner soportado sin mucho esfuerzo

55 en la conguracin; sin embargo, son varios los elementos del sistema que intervienen en el proceso, incluso con algunas variaciones dependiendo del tipo de conexin y del modelo de escner que poseamos. Comprobando los dispositivos GNU/Linux, durante la instalacin, habr efectuado un exhaustivo reconocimiento de nuestro hardware y tendremos un ncleo preparado para gestionar nuestra instalacin. No obstante, podemos comprobar si tenemos correctamente conectados y reconocidos los dispositivos, proceso que vamos a explicar a continuacin. Si nuestro escner es SCSI ejecutaremos:

Esta orden nos mostrar toda la cadena de perifricos SCSI conectados a nuestro sistema, en este caso, un scanner y una grabadora de CDs. En el caso de tener un scanner USB, el comando sera:

El sistema devolvera un bloque informativo similar a ste para cada dispositivo USB presente y reconocido. Hasta aqu, todo correcto, sin embargo, nuestro scanner estar accesible para GNU/Linux en un chero de dispositivo del directorio que, en el caso SCSI, ser:

Es decir, el acceso ser mediante el dispositivo sg0 -scsi generic, si se trata del primer elemento de la cadena SCSI conectada a nuestro equipo-, para ello, hemos pedido un listado (ls) detallado (-al) del chero para asegurarnos que estaba presente. Observamos que el dispositivo pertenece al root y slo l puede usarlo. Para permitir a los usuarios usar el scanner, es una buena idea crear un grupo dueo del chero -llamado, por ejemplo, scanner- e incluir en l a los usuarios que puedan usarlo, otorgndole los niveles de acceso adecuados:

56 En el supuesto de conexin USB:



                                    

Congurando SANE Tanto si nuestro scanner es USB o SCSI, GNU/Linux habr instalado un kernel con el soporte adecuado para el control de todos los dispositivos de esta naturaleza que puedan estar presentes, pero necesitaremos unos retoques en la conguracin de SANE para adaptarlo a nuestra instalacin personal. El primer chero donde miraremos ser en el del cargador dinmico de drivers proporcionados por SANE, es decir:

         

         !   "        # $% & ' ( )   *    $ #   #     )    ) +    *    #   (           #  "#  #   *     "   ++     , +    - #     -   ,+ +      .      ) +   /   

SANE carga, en tiempo de ejecucin, controladores -backends- para entenderse con cada scanner de los fabricantes listados en el archivo anterior. Observaremos que algunos estn precedidos del signo # y otros no. sta es una caracterstica habitual de muchos tipos de cheros en GNU/Linux y, por tanto, en GNU/Linux, para indicar al sistema que no tenga en cuenta las lneas que comienzan con el smbolo #. En estas lneas se suelen indicar los comentarios que ayuden en futuros desarrollos o, en este caso tambin, para evitar trabajo superuo al indicarle a SANE que cargue slo aquellos controladores susceptibles de hacerle funcionar a nuestro scanner. De modo que debemos incluir un # antes de las entradas que no correspondan con el nuestro y dejar sin #,

57 descomentada, la lnea que identique a nuestro scanner. Veamos ahora el contenido del directorio de conguracin de SANE:
012 13 45 67 89: ;<= > 3 ? @ 2A 1@ ?B5 2 CD @ BE BA F5 C1F5 G D 19H C1F5 G I 4 1J FA 2K 9 C1F5 G ?5 BL ? 1B5 C1F5 G BM G BG F 16 ? C1F5 G D 33 C1F5 G I 41J FA 2K C1F5 G ?L NH 1 C1F5 G BL L 32 C1F5 G D I 1 C1F5 G I 6 ?A 2K C1F5 G ?A O PP C1F5 G BJ A 2 1 C1F5 G 2L ?F5 C1F5 G I 6 ?A 2K QLL C1F5 G A BI BJ B 1K C1F5 G BJ A 2 1Q2L 36 ?O R6 C1F5 G G6 S 4A ?6 C1F5 G I 6 ?A 2K Q6 ?E C1F5 G A 2 1F N C1F5 G BT 4? 4F5 C1F5 G MLU FA F9 C1F5 G 5 2 1 C1F5 G A 2 1F9 C1F5 G EU C1F5 G MA VR7 7 C1F5 G 5 2A C1F5 G A 2 1F: C1F5 G 1B5 F5 V: P6 C1F5 G U L HO PP C1F5 G L 42 C1F5 G A 2 ?A C1F5 G 1B5 F5 C1F5 G UL C1F5 G L 36 ?A 2K C1F5 G 6I B7 N99P6 C1F5 G 1B5 F5 QL L C1F5 G UL ?S H ? C1F5 G W 1BI C1F5 G 6I B7 C1F5 G 1F F3 ? 1B5 9 C1F5 G 4EI C1F5 G J 41FU C1F5 G 6I B7 QLL C1F5 G 1F F3 ? 1B5 C1F5 G 32 F C1F5 G ?XP : V C1F5 G T O 3 C1F5 G D 19 NP C1F5 G I B NHP X C1F5 G ? 12LAJ 2 C1F5 G D 19O P C1F5 G I BA ?6 ?U 4A B C1F5 G ?U BJL C1F5 G

Aqu se encuentra la conguracin especca de nuestro modelo de scanner, y es donde debemos jar los parmetros adecuados para que SANE pueda acceder sin problemas al dispositivo. No debemos preocuparnos, los cheros ya estn preparados a falta, generalmente, de indicarle el tipo de conexin. Veamos, a modo de ejemplo, el correspondiente a un scanner Epson:
012 13 45 67 89: ;<= > 1BA @2A 1@ ?B5 2 CD @ 2L ?F5 C1F5 G Y 2L ?F5 C1F5 G Y Y U 2J 2 BJ 2 ?FI 2 27 BI L 32 ? G FJ U FZ A F 1F5 G 4M6J 2 AU 2 [ \ ] ^_ E B 1K 25 D Y Y ]` ] a ? 1B55 2J ; Y ? 1? 4 [\ ]^_ Y Y \ BJ B3 32 3 L FJA ? 1B55 2J ; Y L 4F P7 9bR Y L 4F P7 : bR Y L 4F P7 :c ` Y Y d ]c ? 1B5 5 2J 8 F5 3e 25 BE 3 2 A U 4? 4G e F6 U BT 2 B5 [\ ] ^_ ? 1B5 5 2J C aA 1F6 3 D Y FAU 2JZ 4?2 E 3F 1K e F6 J 5 F5 8[\ ]^_ ? 1B5 5 2J GJ FI E 2 45 M Y J 2 1FM5 4f 2 D C Y g 2L 25 D 45 M F5 e F6 J D 4?A J 4E6 A 4F5 h e F6 I Be 5 22 D 2 4A U 2J AU 2 Y G 4J ?A FJ AU 2 ?2 1F5 D 25 AJ e C Y 6 ?E @ D 2T @6 ?E ? 1B5 5 2J P 6 ?E @ D 2T @6 ?E @ ? 1B5 5 2J P

En este caso, al ser un scanner USB, slo es necesario descomentar la lnea 6 ?E @ 2T @6 ?E @ ? 1B55 2J P , tal y como recoge el contenido del chero. Si nuestro scanner Epson tuviese una conexin SCSI o al puerto paralelo del ordenador, nicamente habra que descomentar la entrada correspondiente y dejar el resto comentado.

58

3.2.1.

Escaneando con XSANE

Una vez realizados todos los pasos descritos anteriormente, estaremos en condiciones de utilizar nuestro scanner bajo GNU/Linux. Para ello, abrimos una terminal y tecleamos xsane directamente.

3.3. Dispositivos de memoria usb


Las unidades de memoria ash y las cmaras digitales pueden parecer, en principio, dos dispositivos totalmente dispares. En parte es cierto, sin embargo, tambin es verdad que comparten algunas caractersticas que les han hecho desarrollarse casi a la par. Ambos poseen una memoria de almacenamiento de datos que puede comunicarse con un ordenador a travs de cualquier puerto USB, en este sentido ha estado ligado su desarrollo hasta alcanzar las capacidades de hoy en da. GNU/Linux trata estos dispositivos como si fueran discos SCSI, de hecho, los drivers usados son los mismos y, tanto los memory driver como las tarjetas compact ash, estn soportados como dispositivos de lectura/escritura, es decir, una comunicacin total, en ambos sentidos. Si posees una unidad de memoria ash -llamada comnmente llavero USB- o una cmara digital, GNU/Linux acceder perfectamente a los datos que puedan contener, siempre y cuando estos dispositivos respeten los estndares internacionales USB. En el caso de llavero USB, seguramente GNU/Linux habr creado las entradas correspondientes a los puertos USB en el archivo i jk lim nk op y, del mismo modo, habr creado el directorio de montaje iq rk is np t y iq rk is np u. De esta forma, slo tendremos que conectar nuestro llavero al puerto USB y seleccionar, en el men del botn derecho del ratn, Discos | usb0, para que aparezca un icono en el escritorio representando un disco duro. Si pulsamos dos veces sobre l con el botn izquierdo del ratn, se abrir una ventana de Nautilus mostrndonos el contenido de la unidad. Si conectamos nuestra cmara digital, en lugar del llavero, accederemos de la misma forma al contenido de la tarjeta de memoria y podemos recuperar nuestras fotografas, retocarlas y/o almacenarlas en el disco duro, independientemente del modelo de nuestra cmara. Por ltimo, si deseamos cambiar el nombre de los directorios de montaje, tendremos que registrarnos como administrador del sistema y ejecutar:
v ~ lj lw xrs y z{| } q iq rk is np t iq r k i ww o j v ~ lj lw xrs y z{| } x ijk lim nk op oq p xoq n wo w r j o } i j i n o u iq rk is np t m ok jm os wk n r osk s nj t t nk o s j lrk xjr j jw rs j s rk j q rk o j } i j i n o u iq rk iw wo j m ok jm os wk n r os k s nj t t

Es decir, renombramos como iq r k i ww o j el directorio iq rk is np t y editamos el chero i jk lim nk op para cambiar tambin la entrada correspondiente. A partir de ese momento, el contenido de nuestra unidad de memoria se encontrar en el directorio iq r k i wwo j cuando sea montada.

3.4. Bibliografa
1. Guadalinex. La gua de instalacin y primeros pasos, Jos J. Grimaldos, Edit Lin Editorial (2004).

Captulo 4

Compilando el kernel
4.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 fue escrito este documento es la 1 . En concreto daremos las instrucciones de compilacin rerindonos a la versin en un sistema con Debian Sarge.

4.2. Compilando el kernel


4.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 :
1 Un lugar donde poder descargarnos el cdigo fuente de los ltimos kernels publicados es .

59

60 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 sistema2 . 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 PCI3 disponibles en el ordenador.

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   .
2 Dont

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

61 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 deb4 . Tras ello tendremos la fuente del kernel comprimida en el directorio     . Se descomprime y desempaqueta:
             !  " !  # $   ! #% &' &( & ) &* + %             ) , -. ! " !  # $   ! #% &' &( & ) &* + %                           !  " !  # $   ! #% &' &( !  " !  # $   ! #% &' &( & ) &* + %

/0

A partir de ahora comenzar la compilacin del kernel y para ello trabajaremos en el directorio 023 0 35 67 68 . 1 4  

4.2.2.

Compilacin del kernel


/0 02 3 0 35 67 68

Una vez que estamos en el directorio  1 un primer paso antes de co 4   menzar la compilacin del kernel es salvar la conguracin presente en el sistema, por si fuera necesario recuperarla ms tarde para lo que hacemos
            !  " !  # $   ! #% &' &(  9 & &  "  ,  & $ " . : & &  "  ,  & $ " . : & ); ! / 0H I2 0

y decidir que etiqueta vamos a usar en el campo < = > ? @ A < ? B CDE del chero F G
J K L M NOP Q % R S T U V WK J K W Q ' MX Y W K J K W Q ( K Z T L S J K L M NOP Q   $  "

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
  * [ $\  !  ] J K L M NOP &] R S T UV W K J K W &] MX Y WK J K W # ] K Z T L S J K L M NOP   * [ $\  !  % &' &( # $  " ^ 4   En el directorio       1 se encuentra un chero ? < @ _ F < 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 6 Ia 8 7 0H H Ic procesador que podemos encontrar en  G `  o el chero de conguracin b 41 que Debian instala en el directorio d 4 4e si queremos modicar un kernel de una versin que tenemos instalada en nuestro ordenador5 . A continuacin limpiamos totalmente de cheros provenientes de compilaciones anteriores el sistema.
4 Por 5 En

/0

02 3

0 35 67 6

ejemplo seleccionando en dselect el paquete kernel-source-2.6.8 r s rsr nuestro caso ser fg hhi f jhk l mn op q q op o .

62
t uv utw xyz { v y { v | y} ~ v ~ {z v | ~ | y u z t uv utw xyz { v y { v | y u z } ~ v v ~ v

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 .
t uv utw xyz { v y { v | y u z | y} ~ v ~ {z v | ~ t uv utw xyz { v y { v | y} ~ v ~ {z v | ~ } ~ |  u

Una vez decidida la conguracin del kernel podemos directamente pasar a compilar el kernel6 para lo que haremos
t uv utw xyz { v y { v | y} ~ v ~ {z v | ~ } ~ ~

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
t ~ u | ~ u { t {~ |t v t ~ { ~ t z u { t ~ { { t ~ u { } ~ v  ~ x v |w y u y t y ~ u { v ~ t uv utw xyz { v y { v | y} ~ v ~ {z v | ~

on esto ha temrinado la compilacin del kernel que en nuestro caso estar en el chero
yz { v y { v | y} ~ v ~ {z v | ~ y v |w y u y t y ~

Ahora debemos compilar los mdulos asociados al nuevo kernel con la orden
t uv utw xyz { v y { v | y} ~ v ~ {z v | ~ } ~ z ~ {

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.
t uv utw xyz { v y { v | y} ~ v ~ {z v | ~ } ~ z ~ { u { t
6 En

el caso de los kernels de la familia es necesario ejecutar previamente el comando .

63 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

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 se ha creado un chero hay que incluir la consiguiente opcin consiguiente. En tendramos que incluir las siguientes lneas en el chero

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

como superusuario para que el nuevo

4.3. Bibliografa
1. Kernel Rebuild Guide HOWTO, Kwan L. Lowe, en

2. Gua de referencia DEBIAN8 , Osamu Aoki (Trad. al espaol coordinada por Walter O. Echarri) (2005). 3. Administracin avanzada de GNU/Linux, Josep Jorba Esteve y Remo Suppi Boldrito. XP04/90785/00019, Formacin de posgrado Universidad Oberta de Catalunya (2004).

      versin en                 .

         8        !    "   
7 ltima

64

Captulo 5

Uso de scripts para administracin del sistema


5.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 scripts en # $ %& y la segunda en Perl. 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).

5.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 65

66 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: tcsh: C shell, con sintaxis parecida al C (versin desarrollada a partir de , -. . bash: Bourne again shell, shell por defecto de Linux. zsh: Z shell. ksh: Korn shell. 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 no estn familiarizados con la shell / 0 -. . Una vez que hemos entrado en nuestra 1 2 345 podemos 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: 6. , 6. 3 78 o 6 6. 3 78 . Por ejemplo, si queremos conocer las posibles opciones del comando 1 2 345 podemos hacer:
9: ;< => ?9 =< =9: @AB C 9 D<E F: D GH IJ D<E KLMN O P QRS D @ C 9 D<E TF;H 9 =;> Q UUUV TFD W;EE R> X R<S Q V Y : D< D ;H 9 =;> Q => WGP X D @ FZ[ L\ ] Fa Fb WW> FJ Q9< => S FZ[R: FZ[R = FZ[R Y Fg >PE g D< FZ[g W Fg W^ E =GG =QD W;> X Q Fg W> E =GG =QD W;> X Q Fg X W;G;< FZ[g X W Fg S W;G;< Fg Y >PE g D< FZ[ Wg FWW WGR QQ< R> S D FZ[ Wih j Y =X9: FWGR QQ Q9< => S FZ[ WE FZ[ W> FW< W;G;< UUU B 9P <> ;> Z;^^ _`Z L\ ] W;GPE > Q Y =9 W: => S => 9D< WDH 9 W;> Q;GD E D QQRS D Q QGRc D E ;X D ;> d99e WW d f ^ =GD X D QW< =H 9 ;< d> d 9 =9 GD > RE D ^ ;< Y => X ; Y 9P <> ;> Z;^^ R G Y Re Q : =S: G =S: 9 9P <> ;^^ Z;> R W9 =c D =W;> 9P <> ;> Z;^^ RP 9 ; Y < RH R< ;P> X => 9D<> R G g ;<X D< => H = C DG Q 9P <> ;> Z;^^ 9 D C 9 WP < Q;< g G =>h => S 9 =E D 9 D C 9 WP < Q;< =Q ;^^ Y : D> g G=>h => S 9 =E D 9 D C 9 WP < Q;< =Q ;> Y : D> g G=>h => S g ;<X D< W;G;< 9P <> ;^^ Z;> X =QH GRe ;^ g ;GX R Q W;G;< g R Wh S< ;P> X W;G;< g ;<X D< Y =X9: => H = C D G Q 9P <> ;> Z;^^ WP 9 F9 ; Fg DS =>> => S F;^ FG => D =>: =g =9 QH D W=^e RXX =9 =;> R G W: R<R W9 D< WGR QQD Q 9P <> ;> Z;^^ GDS R We a kl Y =X9: W;> c D> 9 =;> WGR QQ Q9< => S KIJ D<E O 9P <> ;^^ Z;> mn b o W;G;< E ;X D 9P <> ;> Z;^^ WP 9 > D Y G => D =>: =g =9 9 D C 9 WP < Q;< W;G;<

67 y muchas ms opciones. Si desea consultarlas todas puede subir y bajar una pgina en su p q rst 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 t uv o el wv x y para dicho comando. Toda shell tiene denidos una serie de comandos internos como u z wu { o rp | ys q pero tambin pueden ejecutarse utilidades Linux como z { o t } ~ ws entre otras. En la seccin 5.3 se dar una lista de los comandos bsicos, que debemos dominar con soltura, que se usan cuando se trabaja dentro de una shell. Adems es conveniente conocer una serie de combinaciones de teclas que resultan de suma utilidad, entre ellas 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. Esto nos permitir 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 corriendo la sesin.

Nombre del usuario (username). Shell activa.

Path del directorio home del usuario. Lista de directorios donde se buscan ejecutables.

Denicin del prompt del usuario.

68 El valor de estas preferencias puede consultarse mediante el comando sin aadirle opcin 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

chero .

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


Los cheros se leen siempre al entrar en el sistema o al abrir una y slo se lee cuando se abre una login shell. Hay que destacar que terminal, pero el los cheros 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.

5.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 funciona miento y opciones de estos comandos puede obtenerse con comando. El administrador de un 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:

69 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 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

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

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

Empaquetar cheros en un archivo

70 Informacin y entorno

mostrar o cambiar fecha y hora del sistema mostrar o cambiar fecha y hora en hardware

     

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

5.4. Scripts en Perl


5.4.1. Introduccin
El lenguaje de programacin Perl, creado por Larry Wall1 es un lenguaje interpretado que se   
encuentra a medio camino entre lenguajes como el  y los   . Es ms sencillo de  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 CPAN2 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     en el paquete  . Esto se debe a que muchos de los scripts bsicos en Debian estn escritos en este lenguaje. En caso de que ese fuera el nico paquete Perl instalado nos conviene instalar                , siguiendo el procedimiento habitual de tambin los paquetes y instalacin de paquetes Debian.

5.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
   !"# $ %  & ' % ($  ) *+) , -&. / , - &. / #
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 2 1223 455666 78 3 9: 7;<=

- &. 000 +) +) * (

- &. 000

71 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:
@ ABC DE BF GH BI JE K C DJ DLE GML N C DJ O PEH GHQ D N I E GH L RSH T UKP V W U KP XXX SH SH R N

y lo salvamos con el nombre YZ Y[ \ ] ^_ ` a\ ]b . Para ejecutarlo le cambiamos los permisos y adelante:


L GE GLW cde MWf Ug C hi DME GIL j k XI Ki L GE GLW cde XB DME GIL j k XI Ki T UKP V W U KP XXX

Como podemos ver la primera lnea del script ha de indicar el PATH al programa \ Yl ] , 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
@ ABC DE BF GH BI JE K C DJ DLE GML N C DJ O PEH GHQ D N I E GH L RmH LE UgC n MP KP L Jf I JE PLC E P JH op c R N MW Uf I qf r e L Jf I p s tuvw mx y z N f r e L Jf I{ s e L Jf I p h |}~ Xk N I E GH L R P L Jf I JE PLC E P e L Jf I p op MUEE J DI UH gJ P e L Jf I { { SH R N e

y lo salvamos con el nombre YZ Y[ \ ]^_ a\ ]b o con el que queramos. El uso de la extensin \ ]b es comn para denotar un ejecutable en Perl, pero no es en absoluto necesario3 . Repetimos la operacin anterior y ahora:
L GE GLW cde MWf Ug C hi DME GIL j| XI Ki L GE GLW cde XB DME GIL j| XI Ki mHLE UgC n MP KP L Jf I JE PLC E P JH op c || X~ P L Jf I JE PLC E P || X~ op MUEE J DI UH gJ P | X  {

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 sustituyen por su valor. Si las comillas son simples no tiene lugar esta sustitucin. 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:
@ ABC DE BF GH BI JE K C DJ DLE GML N
3 La

extensin suele emplearse en el caso de mdulos.

72

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 do cumentacin sobre Perl que habr en nuestro sistema si hemos instalado el paquete haciendo

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




  
               

                   

73
  ! " # $ % & '( ! $+ & '! ) * )*

, ,

$- . ! " # $ % / ! " 0 1 2 3 + $4 # 5 6 $7% 8 86 $4 ! 8 84 " % $ 0 5 9'( ) 95 ! " 0 : 7! ;<4 5 * 3 + $4 # 5 6 $7% 8 86 $4 ! 8 84 " % < 4 5 $- . =. ! $+ : 3 # $:4 >> ! $+ 1 1 * ? ?9 5 0+ @! $+ 51 ?

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
A B CD EF A GHI JK L CF MN O PQ JN RS H T KU VW B K O U V F MX KU VW B K O U V F MX K JY E LU PN F VZ MRB KU VW B K O U V F MX K JY E LU P U M L O V F [ KU VW B K O U V F MX K J\ E] O U V F MO [ KU VW B K O U V F MX K N REX B L KU VW B K O U V F MX K N REX B LK N REX PEO E^] B KU VW B K O U V F MX K N REX B LK N REX PEX MR R V KU VW B K O U V F MX K N REX B LK D MR RN R EX L KU VW B K O U V F MX K N REX B LK D MR RN R EX L JC KU VW B K O U V F MX K O W N KU VW B K O U V F MX K JBW E C L JA KU VW B K O U V F MX K JBW E C L JA K E] O V _L E` B _ R M L O I

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 g h f y empaquetar aquellos cheros modicados despues de cierta fecha:
ab cd ef A B CD EF A GHI JK L CF MN O PQ JN RS _ _X V A MF H T KU VW B K O U V F MX K JY E LU PN F VZ MRB KU VW B K O U V F MX K JY E LU P U M L O V F [ KU VW B K O U V F MX K J\ E] O U V F MO [ KU VW B K O U V F MX K N REX B LK N REX PEO E^] B KU VW B K O U V F MX K N REX B LK N REX PEX MR R V KU VW B K O U V F MX K N REX B LK D MR RN R EX L KU VW B K O U V F MX K N REX B LK D MR RN R EX L JC I

Este script combina varias de las posibilidades que hacen de Perl un lenguaje tan atractivo. Por ejemplo utiliza el mdulo i ej k l li eb d 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 expresn n n n sions): m d ho p q r s tu d v s w w d ho p q r s t u d v u xu d v s y es una condicin que comprueba si el argumento del nmero de das tiene realmente formato de nmero.

74

5.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...
z {| } ~{ z | | { {| {  } { }

Enva a la salida estndar todos los cheros en le list pero comenzando por la ltima lnea de y terminando en la primera4 .
z {| } ~{ z | } | | { {| {  } { }

Igual que el anterior, pero tambin invierte las lneas.


z {| } ~ } { z | } | | { {| { 

Invierte las lneas que vamos introduciendo por la entrada estndar. | } ~ para salir.
z {| } ~z ~ ~ ~{  | |  } { }

Reemplaza todas las ocurrencias de la cadena | por la cadena | en los cheros inclui dos en le list dejando una copia del chero original con la extensin
z {| } ~{  z | | | 

Imprime la lista de cdigos y caracteres .


z {| } ~ { z |  } { }

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


z {| } ~ { z | } {  } { }

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


z {| } ~ ~ { z | } { } { }

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:
} z {| } ~ {

 z { } { ~{ { ~{ | { {

Cambia en los nombres de archivos en el directorio donde se ejecute la orden la cadena por la cadena 5 .
~ { ~z | z {| } ~ } { }

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

75

5.5. Bibliografa
1. Administracin avanzada de GNU/Linux, Josep Jorba Esteve y Remo Suppi Boldrito. XP04/90785/00019, Formacin de posgrado Universidad Oberta de Catalunya (2004). 2. Gua de referencia DEBIAN6 , Osamu Aoki (Trad. al espaol coordinada por Walter O. Echarri) (2005). 3. Linux Programmers Reference, Richard Petersen, Ed. Osborne McGraw Hill (2000). 4. Learning Perl, Randal L. Schwartz y Tom Phoenix, Ed. OReilly (2001). 5. Programming Perl, Larry Wall, Tom Christiansen y John Orwant, OReilly (2000). 6. Classic Shell Scripting, Arnold Robbins and Nelson H.F. Beebe, OReilly (2005). 7. Shells: Users Guide, Hewlett Packard (1992).

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

76

Captulo 6

Ejecucin asncrona de tareas


6.1. Introduccin
En esta seccin trataremos acerca de cmo programar tareas para que el sistema las realice de forma automtica con una periodicidad dada ( o o simplemente para que se realicen una sola vez transcurrido un cierto intervalo de tiempo ( ). El dominio de estas herramientas permite ahorrar mucho tiempo y hacer nuestro sistema mucho ms eciente ya que evitaremos tener que realizar tareas importantes, como las copias de seguridad, gracias a que el sistema las realizar por nosotros y podremos programar tareas que consuman muchos recursos del sistema cuando ste est desocupado, como por ejemplo por las noches de los nes de semana.

6.2. cron
es un demonio que ejecuta tareas en determinados das y a ciertas horas. Dichas tareas pueden ser simples comandos o complejos . se inicia automticamente desde en todos los niveles de arranque. Una vez que se ha iniciado, lee cada minuto el area de y el chero donde se especican las tareas que se deben ejecutar as como su periodicidad. Por tanto, la periodicidad mnima de una tarea es de un minuto.

6.2.1.

El chero

y el directorio

El el chero se especican las periodicidades, mensual, semanal y diaria, con las que se ejecutarn los contenidos en tres directorios: . El contenido del chero es el siguiente:

77

78

 

La primera lnea especica que todos los 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. contenidos en se ejeLa segunda lnea especica que todos los cutarn a las 6 horas y 47 minutos todos los das del mes, todos los meses, pero slo los domingos.  contenidos en se ejeLa tercera lnea especica que todos los cutarn a las 6 horas y 52 minutos el 1 de cada mes, todos los meses, todos los das.  Hay sistemas en los que existe un directorio denominado y la siguiente  lnea en el chero :

Dicha lnea especica que se ejecuten todos los contenidos en el primer minuto de cada hora. Queda claro que pueden aadirse lneas analogas a las anteriores con otros directorios periodicidades.  Un pequeo inconveniente de es que los contenidos en cada uno de los directorios a los que hace referencia se ejecutan con la misma periodicidad, por lo que no se puede especicar una periodicidad diferente para un nico . La forma de conse guir esto es mediante el directorio . Aqu se almancenan otros que se co rren con cualquier otra periodicidad especicada en el propio . Por ejemplo, el tiene el siguiente contenido:

y se lanza siempre a las horas en punto ms 5 minutos. Para que se realice la tarea el chero debe existir y tener permiso de ejecucin. Aqu tenemos otro ejemplo:


     

tiene permiso de ejecucin. se lanza cada minuto. En este caso se verica si Hay que tener presente que todos los cheros que estn contenidos en alguno de los directorios controlados por no pueden contener un punto . en su nombre ya que si no sern ignorados y adems tienen que tener permiso de ejecucin (esto sucede para Debian, pero este comportamiento no es preciso que puede depender de la distribucin que se emplee). En el directorio los cheros tengan permiso de ejecucin pero no pueden contener un . en su nombre para que sistema realice la tarea programada.

6.2.2.

Indicando la periodicidad

Aunque el lector ya habr intuido cmo se especica la periodicidad a la luz de los anteriores ejemplos, paseremos a describirla a continuacin en ms detalle. Cada lnea que indica la periodicidad tiene la siguiente estructura:
    

   

79 Donde: C5: da de la semana. De 1 para lunes a 7 para domingo. Un * indica que la tarea se ejecute todos los das de la semana. C4: mes. De 1 a 12. Un * indica que la tarea se ejecute todos los meses. C3: da del mes. De 1 a 31. Un * indica que la tarea se ejecute todos los das del mes C2: hora. De 0 a 24. Un * indica que la tarea se ejecute todas las horas C1: minuto. De 0 a 59. Un * indica que la tarea se ejecute todos los minutos. Para especicar una periodicidad inferior a la hora se usa para C1 el formato   donde XX indica la periodicidad en minutos. 1 para cada minuto, 10 para cada diez minutos, etc. Obviamente no tiene sentido especicar una XX superior a 59. Por ejemplo, si especicamos 17, la tarea se ejecutar a 00, 17, 34, 51, 00, etc.
 

es el usuario que realiza la tarea. En el caso de las tareas del sistema suele ser   . es el comando o  ! '( a ejecutar. Puede ser una nica tarea como

!" #$ %  # &  ! #

por ejemplo:
 !  ! '(  ( % #  ) !  

o un conjunto de tareas especicadas como scripts en un directorio:


 $ )( #  ) ) (   ! ! $ *+  , -. 

6.2.3.

Crontab para un usuario cualquiera

Los usuarios que deseen correr tareas peridicamente deben crear un chero ! $ #/ apropiado y despus correr la instruccin ! $ #/ , debiendo estar previamente autorizados por el   en el chero   !  ! $ *#- -+ . Como ya hemos visto el sistema en cambio, para correr tareas automticas emplea el contenido del chero   !  ! $ #/ y del directorio   !  ! $ *% . La autorizacin de los usuarios para correr tareas programadas se controla con   !  ! $ *# -- + y   !  ! $ *% $. . Si el primer chero existe, los usuarios autorizados son los listados en dicho chero. Si   !  ! $ *# -- + no existe y   !  ! $ *% $ . existe, los usuarios listados en este ltimo chero no estn autorizados a usar ! $ #/ y el resto s. Si ninguno de los dos cheros est presente, todos los usuarios estn autorizados o slo el    dependiendo de la conguracin del sistema. En el ordenador en el que uno de los autores (JEGR) est escribiendo estas lneas, ninguno de los cheros antes nombrados est presente y todos los usuarios estn autorizados a usar ! $ #/ , como ocurre en los sistemas Debian. Para programar una tarea el usuario debe crear un chero con un formato similar al de los contenidos en   !  ! $ *% aunque sin indicar el campo correspondiente al usuario. Por ejemplo:
 01     2  ! '(  / # !,( 

Para ello puede emplear el comando ! $ #/ ) con lo que proceder a editar dicho chero empleando 3 '. Tambin puede crear el chero con la tarea con su editor favorito y despus escribir ! $ #/ 4 ' !5   . Con ambas instrucciones crear el chero 3 #  (  -  ! $  ! $ #/   & 6 #"   donde & 6 #"   es el usuario que creo la tarea. Si desea ver el contenido actual de su crontab corra ! $ #/ ), si por contra desea borrarlo teclee ! $ #/ )

80

6.3. anacron
El uso de 78 9: es muy recomendable, pero qu se hace cuando se tiene un sistema que no est siempre funcionando: la respuesta es usar ;: ; 78 9: A ;: ; 78 9: se inicia automticamente desde <=> 7< ?: ?> @ < en todos los niveles de arranque. Una vez que se ha iniciado lee el chero < => 7<;: ; 78 9:> ;B donde se especican las tareas que se deben ejecutar as como su periodicidad. La diferencia con 78 9: 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 <=> 7< ;: ; 78 9: > ;B la tarea se ejecutar. Para poder establecer los periodos de tiempo transcorridos, cada vez que ;: ; 78 9: ejecuta una tarea escribe una marca de tiempo en un chero especial. El contenido de <=> 7< ;: ; 78 9: > ;B es el siguiente:
C < => 7<;: ; 78 9:> ;B D 79: E ?FG8 ;> ?9: E ?H = E 98 ;: ; 78 9: KL A ML A == ;: ; 78 9: J ;: ;: ; 78 9:> ;B J E 98 => ; ?H N @

C I

IO P QQR <B ?: < NS TUV O R < NB ?: D<B ?: D<G N8 < NB ?: D<G N8 <B ?: C V S = N= 8 =W H; 7= 78 9: XN =: >8 ?= N Y M A 78 9: @ ; ?HZ \ Y] ^ 78 9: @ = =_ HZ `a YM a 9:>S HZ 78 9: @ 9:>S HZ A : ?7= 8G : [W ;8> N [[8 =W 98 > < => 7< 78 9: @ ; ?HZ ^ : ?7= 8G : [W ;8> N [[8 =W 98 > < => 7< 78 9: @ ==_ HZ a : ?7= 8G : [W ;8> N [[8 =W 98 > < => 7< 78 9: @ 9: >S HZ

Los campos del chero se reeren a (de izquierda a derecha): Periodo, expresado en das. Es posible hacer referencia a un periodo con un nombre. En la `a actualidad slo existe 9: >S HZ . Retardo, expresado en minutos. Identicador. Comando.

6.4. at
;> permite ejecutar N 78 ?W> N en B ; NS a una hora determinada y una nica vez. Su uso es muy

simple:
;> [7 N 78 ?W > V bc P

TIME admite muchos formatos, en particular puede especicarse una hora en el formato HH:MM a o indicando fecha y hora (ver ;: ;> ). En el chero N 78 ?W> deben estar contenidos las instrucciones que se ejecutarn. Al igual que para usar 78 9:> ;B , para usar ;> tambin se requiere autorizacin del 8 9 9> . El A control de los usuarios se realiza con los cheros <=> 7< ;> @;H H9 ^ y con <=> 7<;> @ =: Z de forma A idntica a como se realizaba con < => 7< 78 9: @;HH 9 ^ y con <=> 7< 78 9: @ =:Z .

81

6.5. Output de las tareas


Una pregunta obvia es dnde enva la salida estandar o la de error un programa que se ejecuta de forma asncrona. La respuesta es muy sencilla, dicha salida se enva al d e ef (o al usuario que envi la tarea) como un mensaje. Esto implica que hay que ser muy cuidadoso al programar el gh d ij f , evitando que tenga errores de sintaxis y adems generando slo las salidas que sean precisas. Tngase en cuenta que un error en una actividad programada con mucha periodicidad puede inundar el buzn de correo. Para ilustar el problema tengamos en cuenta el siguiente ejemplo:
k lmn mn p gq io hr ms gt g m q t d eu p m r tw m s ~ ~ hw x mn p hy s g mn p hy s f d v j j zf { v z | } o  t p s t hq hy h th t hq t n p hy s || e j ed d f e e dd ed o j

En este ejemplo se realiza la copia de seguidad de las cuentas de usuario. La salida estandar de m m s~~ este comando puede contener miles de lneas, por lo que es conveniente tirarla a r tw o . Lo mismo sucede con la salida de error. El nico mensaje que se enviar po correo ser uno conteniendo una nica lnea indicando si el backup se realiz o no correctamente. Puede ser tambin conveniente redirigir la salida del programa a un chero que pueda mirarse en caso de necesidad. Por ejemplo:
k lmn mn p gq io hr ms gt g m q t d eu p m r tw m s ~~ m w p m ~ m t n p hy ~ hw x mn p hy s g mn p hy s f d v j j zf { v z } o } d e{ dd ed z e{  t p s n p s t hq hy h th t hq t hy || e j ed d f e e dd ed o j

En este caso, si existe un error en a copia de seguridad puede recurrirse al chero de registro mw p m ~ m t n p hy ~ d e{ dd ed z e{ para saber exactamente lo que ha sucedido.

6.6. Bibliografa
1. Manual page de h d eo .
pn 2. Manual page de h d eof . p p 3. Manual page de o hd eo .

4. Manual page de f .

82

Captulo 7

TCP/IP y aplicaciones de red


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.

7.1. Origen de TCP/IP 7.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:

Para comprobar la direccin MAC de los interfaces de red de nuestra mquina podemos utilizar la instruccin ifcong, que nos mostrar algo como:

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:

7.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. 83

84 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 principales caractersticas aumentar de forma signicativa el nmero de direcciones utilizables, incrementar la seguridad (al ser las conexiones codicadas a nivel de red), o incorporar el equivalente a DHCP a nivel de red.

7.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:

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 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

85 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 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 9.2.1 veremos que es posible que equipos con direccin IP privada salgan a Internet.

7.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:

Existen nmeros de puertos estndar. Por ejemplo: 21 ftp 80 http 110 pop3 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 .

86

7.5. Nivel de aplicaciones: conexiones seguras


Las aplicaciones tradicionales para realizar conexiones entre ordenadores a travs de Internet han sido stas han sido de gran utilidad y a lo largo del tiempo se les ha aadido una gran cantidad de variantes y opciones que las han hecho casi imprescindibles. Sin embargo, tienen un gran problema que es la seguridad, ya que la comunicacin no se realiza de forma codicada. Debido a esto, todas las aplicaciones que comentaremos en este apartado se aprovechan del encriptado de clave pblica, propuesto por primera vez por Dife y Hellman en 1976 y que ha supuesto una verdadera revolucin en el mundo de la criptografa y de la informtica al permitir algo que pareca imposible: establecer una comunicacin segura a travs de un canal inseguro. El proceso de rma electrnica se basa en este formalismo que permite certicar la autenticidad (el emisor es realmente quien dice ser) y condencialidad (el mensaje es ledo nicamente por el receptor). Este sistema se basa en que cada usuario (p.e. Paco) genera dos claves, una pblica (cpub) y otra privada (cpri). La cpub se proporciona a toda persona interesada, siendo por tanto una clave accesible, mientras que la cpri queda en secreto y slo es visible para Paco. Es MUY importante que cpri no caiga en manos de otras personas pues desmontara toda la seguridad de este esquema. Pablo puede encriptar (codicar) sus mensajes tanto con la cpub como con la cpri. Si encripta con cpub desencripta con cpri y viceversa, siendo imposible de desencriptar de otra forma (salvo que uno disponga de mucho tiempo o de una mquina innitamente potente si el algoritmo de encriptacin es alguno de los usados en GNU/Linux). Supongamos otro usuario (p.e. Yolanda) que a su vez ha generado sus claves cpub y cpri. Veamos como consigue Paco enviar un mensaje a Yolanda de manera segura teniendo en cuenta que el canal que utiliza es inseguro (en el caso de Internet siempre es as). Vamos a considerar tres casos dependiendo de lo que se quiera conseguir con el mensaje. 1. Paco encripta el mensaje con la cpub de Yolanda y se lo enva. Paco conoce la cpub de Yolanda porque sta es accesible a todo el mundo, pero la decodiciacin del mensaje requiere conocer la cpri de Yolanda, algo que slo ella conoce. Si Antonio est escuchando en el canal puede recibir una copia del mensaje encriptado, pero no tiene forma de desencriptarla. Yolanda as est segura que nadie ms que ella y el emisor han podido leer ese mensaje. 2. Paco encripta el mensaje con su propia cpri y se lo enva a Yolanda. Al recibir el mensaje Yolanda lo desencripta con la cpub de Paco lo que le permite conrmar que Paco es el emisor de dicho mensaje. Si Antonio sigue escuchando y recibe el mensaje puede desencriptarlo usando la cpub de Paco, pero no puede realizar modicacin alguna del mensaje ya que no dispone de la cpri de Paco que necesitara para su encriptacin. De este modo se asegura la identidad del emisor. 3. Paco encripta el mensaje usando tanto su propia cpri como la cpub de Yolanda. De esta forma combinamos las ventajas de los dos casos anteriores. Yolanda al recibir el mensaje y desencriptarlo con la cpub de Paco y su propia cpri se asegura que nadie ha sido capaz de leer el mensaje y de que Paco es el emisor del mismo. Antonio puede seguir a la escucha pero probablemente termine decidiendo dedicarse a otra cosa ante tanto intento infructuoso. Es importante resaltar que en ninguno de los casos es necesario transmitir otra clave que no sea la pblica a travs del canal inseguro, lo que distingue a este mtodos de los mtodos criptogrcos tradicionales y le conere su especial potencia y seguridad. Los comandos que describimos a continuacin se basan en este algoritmo de clave segura y lo hacen de forma transparente al usuario, lo que los hace de fcil manejo.

87

7.5.1.

ssh

El reemplazo seguro tanto de como de y se consigue con el comando , abreviatura de Secure SHell. As, para iniciar una sesin en una mquina remota de modo seguro podemos escribir

o tambin

Por ejemplo si el usuario clinux quiere iniciar una sesin segura en el nodo clinux-22 tendr que escribir

Tras introducir el password comienza la sesin remota. Si en la conguracin de SSH se activa la opcin llamada X11 Forwarding adems de iniciar sesiones remotas podemos enviar salidas grcas a nuestra terminal de modo seguro. Para probar esta opcin una vez que hayamos iniciado la sesin en la mquina remota debemos iniciar una aplicacin grca como puede ser . Adems de permitirnos iniciar sesiones remotas tambin sustituye a de forma segura y nos permite lanzar una aplicacin en un nodo diferente al que estemos conectados. De este modo

permite al usuario paco correr el comando en la mquina alquer.ur.es y ver quien est conectado a dicho ordenador (siempre que el usuario paco tenga acceso a dicho ordenador, claro).

7.5.2.

scp

El comando scp (Secure CoPy) es la alternativa segura a rcp permitindonos la copia de cheros de una mquina a otra. La sintaxis que se emplea en este comando es

Por ejemplo si el usuario paco desea copiar el chero que se encuentra en su directorio $HOME en su ordenador de la ocina llamado al ordenador que tiene en su domicilio y que llamaremos , donde su nombre de usuario es , en el directorio cambindole el nombre a tendra que hacer lo siguiente

La segunda forma, ms abreviada, utiliza el comportamiento por defecto de que toma como referencia el directorio $HOME del usuario remoto y en este caso adems suponemos que paco se encuentra en el directorio de donde est el chero por lo que no es necesario que escriba su trayectoria completa.

88

7.5.3.

sftp

Este programa, acrnimo de Secure File Transfer Protocol es el reemplazo seguro para el uso del protocolo FTP en la transferencia de cheros entre mquinas. Puede explotar todas las caractersticas de este protocolo sin comprometer la seguridad del usuario y es la aplicacin que debemos emplear siempre que queramos utilizar FTP en una red que sea pblica. El inicio de una sesin de FTP seguro se lleva a cabo ejecutando

siendo los comandos y procedimientos a seguir en lnea de comandos similares a los la versin no encriptada. Tambin existen frontends grcos para establecer una sesin de SFTP, por ejemplo con gftp.

7.5.4.

Cmo generar y transmitir la clave pblica

Para generar una clave pblica basta con emplear el comando . Una posible forma de ejecutar este comando sera,

pudiendo usarse en lugar de dsa la opcin rsa que corresponde a otro tipo de codicacin. La salida que obtendremos en pantalla ser:

                                                         
!


donde puede emplearse tambin una frase clave, aunque nosotros no la hemos usado. Esto hace que para decodicar, adems de la clave pblica se precise de la frase clave. Esta frase clave hay que enviarla al receptor por algn canal ms o menos seguro: telfono, correo postal. Una vez generado el par clave pblica/clave privada, encontraremos stas en el directorio ./ssh:
   

donde  es la clave privada y    es la clave pblica. Para poder acceder a una mquina remota sin necesidad de password es preciso transferir a sta nuestra clave pblica para que dicha mquina reconozca nuestra identidad y nos permita entrar en el sistema. La transferencia de la clave pblica puede hacerse con scp
       ! 

A continuacin hay que entrar en la mquina remota y ejecutar:


    "" # 

89 Una forma alternativa de realizar esta operacin es emplear $$% &'() * &+, :
$$% &'() * &+, &+ -$$% . +, /, $0 -) 12 1 $34 /4 35 (6 (7 '8 +91 : & ;<

En el chero 016% (4 += 3, /> 3* $ puede haber almacenadas innidad de claves pblicas, por lo que es importante emplear en los anteriores comandos ?? en lugar de ? ya que en este caso destuiramos el contenido previo del chero 016% (4 += 3, /> 3* $ incluyendo slo la ltima clave pblica. Hay que hacer notar que ssh usa el sistema de clave pblica para reconocer a los usuarios autorizados pero no para codicar la cominicacin. Para este menester usa alguno de los siguientes algoritmos: 2 8 (@ A +$% B C, 3 $ , 3 $. Por ltimo hay que destacar el chero:
-$ $% .>9 (@ 9 /% ( $6 $

donde se almacenan las claves asociadas a la identicacin de mquinas conocidas. Este chero permite reconocer a una mquina que intenta hacerse pasar por otra, ya que poseer una identicacin diferente a la que nosotros tenemos almacenada. Un pequeo problema asociado a esta medida de seguridad surge cuando actualizamos el sistema operativo de una mquina conocida. En este instante se modica la identicacin de la mquina y cuando intentamos conectarnos a ella recibimos un mensaje de aviso o incluso se nos impide la conexin. Esto se soluciona eliminado la lnea de la mquina a la que deseamos entrar del chero -$$% .>9 (@ 9 /% ( $6 $.

7.6. Bibliografa
1. Computer networks, Andrew S. Tanenbaum, Prentice-Hall (1996). 2. SSH, the Secure Shell, Daniel J. Barrett and Richard E. Silverman, OReilly (2001). 3. Manual page de ssh.

90

Captulo 8

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.

8.1. Conguracin del cliente


Abrimos una terminal como usuario D EEF y editamos el chero G HF IGJ HFK ED L G MJ F HD N O IH P e incluimos o modicamos el prrafo correspondiente a nuestro interfaz de red, de manera que slo incluya las lneas:
OQ F E HFR S MN O IH HF R S MJ HF TR IU

donde es posible tener que cambiar HF R S por el interfaz de red que corresponda. Por ltimo habr que reiniciar el demonio J HFK ED L MJ V para que esta modicacin sea efectiva:
GHF IG MJ MF WT GJ HFK EDL MJ V D H PF OD 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.

8.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 TR IU , por lo que tendremos que hacer:
OU F XV HF MJ PF O YY TR IU

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:
GHF IG MJ MF WT GTR IU PF EU

91

92 Para congurar este servicio es necesario editar el chero de conguracin Z[\ ]Z^_ ]` ^ a]bc d , del que podemos obtener informacin con la pgina del manual:
ef c ^_ ]` ^ a]bc d

Lo ms frecuente es querer asignar direcciones IP privadas de forma aleatorias, para lo que necesitaramos un chero de conguracin con las siguientes caractersticas:
g h f k e f [ ]i [j ^ i [ `i [^ [ l mc ]ni mj ]b [c \ j mb l g f f e ^ [d i n\ on[ l[ o\ m [ pqq r e fs f e on[ l[ o\ m [ t uqq r ef b`\ mbc li vc [\ o lw u xx au xx aux x aq r f f f b`\ mbc vj b ^ ] l\ o ^^j [ l l yzu ayp{ ay aux x r b`\ mbc j bi\ [j l yz u ayp{ ay au x| r ef fe b`\ mbc ^ b mc oc [ ol[j} [j l yzu ayp{ ay ay ~ yzu ayp{ ay au r ef fe e ef b`\ mbc ^ b mc oc [  ^ b mc abj  r ef liv c [\ yz u ayp{ ay aq c [\ lw u xx au xx aux x aq f j c [ yzu ayp{ ay ayq yzu ayp{ ay ayq q r f j c [ yzu ayp{ ay ayxq yz u ayp{ ay auqq r

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 (j bi \ [j ), direcciones IP de los servidores de nombres y nombre del dominio. 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:
ff _ b l\ _ [c f f _ j ^ j [ [\ _ [j c [\ q q q q uv | ] x z u r s f d m [^ o ^ ^j [ l l yzu ayp{ ay auu u r

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 f Z [\ ]Z^ [d i n\ Z^_ ]` , en el que debemos incluir una lnea como:
h [\_ y [\_ u 

si queremos que el servidor dhcp ofrezca direcciones IP a travs de las interfaces de red [\_ y y [\_ u . Si no especicamos nada, el servicio se ofrecer a travs de [\ _ q .

8.3. Bibliografa
1. Manual page dhcpd.conf

Captulo 9

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:

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 IP y/o puertos origen y/o destino. Podemos ver el estado de estas tablas con la orden:

93

94 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.

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.

9.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. 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.

95

9.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.

En primer lugar borramos todas las reglas que pudieran existir previamente:

El siguiente paso es establecer la poltica por defecto:


Y ahora empezamos a aplicar reglas:


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.

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


     

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

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.

9.2.1.

Enmascaramiento IP

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

Y ahora utilizar iptables para que modique las direcciones IP, de privadas a pblicas y viceversa. Esto se har en la tabla nat, de acuerdo con la siguiente instruccin:
 !  " 
     # ! $   

9.2.2.

Creacin de un script de iptables

Utilizamos nuestro editor preferido y escribimos:


% &   % %   '   (  % ) * +  ) % ,       ) -        "   !  "     % ( (              !  " 
     # ! $   

97
./ 01 23 4 5 5 56 27 8 90 :; 5 </ => ?@ A <2 ;86 B <7 8 C7 <<D7 41 8 EE <5 F B GHI GHJ GE KE <L / MMN ?A 27 8 90 :; 5 </ => ?@ A <2 ;86 K <7 8 C7 <<D7 41 8 EE <5 KOE GKHF GB GB PEQ <L / M MN ?A ./ 01 23 4 5 7 R ;1 8 4 A M? F B 9 :9 1 ;D :4 C9: S 27 8 90 :; 5 </ => ?@ A <2 ;86 K <7 8 C7 <<D7 41 8 FB <5 KOE GKHF GB GB PEQ <L / M MN ?A .? 41 T :8 23 4 U 4 7 ;13 28 23 4 5 : 9 ;U8 1 9D 9 D ; 7 9VR ;8 ; 5 71 4W ;U 2;U 8 ; 5 D ; . =U8 ;1U ;8 VR ; 8 ;U X 9U 7 41 D ; 58 2U 4 :4 5 7 1 23 ;1 4 5 KB EQ 7R ;18 4 5 @ Y ? Z A M? S 27 8 90 :; 5 </ => ?@ A <2 ;86 B <7 8 C7 <<D7 41 8 K SKB EQ <L Y[ \? 27 8 90 :; 5 </ => ?@ A <2 ;86 B <7 R D7 <<D7 41 8 K SKB EQ <L Y[ \?

Ponemos este chero en


C63 4D ]^ 278 90 : ; 5 G56

P;8 CP 2U 28 GD P

y le damos permisos de ejecucin:

Por ltimo tenemos que enlazarlo de forma apropiada para que se ejecute al iniciar el sistema, P ;8 CP 2U 288 90 para ello vericamos en el nivel de ejecucin por defecto del sistema En Debian es 2 si no se modica y hacemos:
:U <5 P;8 CP 2U 28 GD P 278 90 : ; 5 G56 P;8 CP1 CE GD P _EB 27 8 90 : ; 5

La prxima vez que iniciemos el sistema las reglas de iptables se ejecutarn, lo cual deberemos comprobar con:
27 8 90 :; 5 <` <U

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. 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.

9.3. Bibliografa
1. Manual page iptables

98

Parte II
Construccin de un cluster GNU/Linux

99

Captulo 10

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.

10.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 tienen un sistema operativo Debian GNU/Linux ya instalado. Lo primero que haremos ser crear un chero abc dae f gc g:
hij khlm kh khn hij khlm kh khh hij khlm kh khj hij khlm kh khv hij khlm kh khx hij khlm kh kh{ hij khlm kh khl hij khlm kh kh| k k gop qf r e r b g st r su u kr r k f e bg u u kr r k p f o de f e bg w k k f df gf r e r b g y tw u kr r k f qzf e bg wry kr r k qc f e b g t w u k k f o c q df r e r b g u u kr r k p z o do qb} b g e b g gop qf st r su u f u u p f o de f w f df gf y tw u f qzf wry qc f t w u f o c q df u u p zo do qb} b g

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.
hij khlm kh kh{ hij khlm kh khl hij khlm kh kh| wry k k qc f r e r b g t w u kr r k f o c q df e b g u u k k p z o do qb} b g r e r b g t y t ~ w gb } q f c b t y t~ gb } q f p o d t y t~ w gb } q f e f b

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 a bc dae f gc g: 101

102

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. Tngase en cuenta que aunque en cada lna slo se indican dos alias para cada direccin IP, pueden aadirse otras ms. Es conveniente introducir los nombres de las distintas mquinas que forman el cluster en el chero :

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.

10.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.

103 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 CLF. 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.

10.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 gura 10.1 se muestra cmo los diferentes servicios son ofrecidos por los servidores a un nodo particular del cluster. En la gura 10.1, blancanieves tiene un servidor NIS y sirve adems 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

104

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


blancanieves

passwd /temp

NIS mudito
Figura 10.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 alguna dicultad con la red.

10.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-home En esta mquina estar alojado: Servidor NIS maestro. Servidor NFS del directorio . Servidor NFS del directorio que se monta en los clientes en . Servidor NFS del directorio de spooler de correo electrnico .

105 servidor-local En esta mquina estar alojado: Servidor NFS de utilidades que no son Debian, contenidas en los directorios y . servidor-temp En esta mquina estar alojado: 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: Servidor NFS del directorio donde se realizarn copias de seguridad del servidor. Servidor NFS del directorio donde se realizarn copias de seguridad de los directorios de los clientes. Servidor NFS del directorio donde se realizarn copias de seguridad diarias. 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 .

106

Captulo 11

NIS y NFS
11.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: 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 dnde 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.

11.2. NIS
11.2.1. Paquetes Debian
El nico paquete que tiene que estar instalado es el paquete que puede instalarse con:

107

108

Si se quiere congurar un servidor tambin es preciso el paquete 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 est instalado y funcionando correctamente.

11.2.2.

Demonios y scripts de inicio

El script de inicio es:


Para crear la base de datos de NIS existe otro script asociado que est en:

11.2.3.

Ficheros de conguracin

Los cheros de conguracin a tener en cuenta son:


en l se indica el nombre o direccin IP del servidor NIS que se emplear. No es imprescindible indicar en dicho chero la direccin IP (o nombre) del servidor NIS, ya que el sistema puede localizar dicho servidor a travs del nombre de la red NIS denida en

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


en l se ajusta la subred a la que se le servir NIS.


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

11.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

109 acceder a sus propios cheros y tambin puedan acceder a la informacin presente en el servidor. Los pasos bsicos para activar un servidor NIS son los siguentes: 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.

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



                 

Tan slo las mquinas en la subred 192.164.1.0 podrn acceder al servidor NIS. 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:

     

Donde servidor-nis es el nombre del servidor NIS maestro. El contenido del chero tpico el siguiente:
      no debe ser modicado siendo su aspecto

 
           

Modique el chero de forma que la opcin, que aparece al comienzo de chero sea    !" ! # . En este momento es preciso construir la base de datos de los cheros que el servidor NIS exportar con la instruccin:
   

Obteniendo como salida:


%




$
  

        &



%


 ' %  ( ) 
  

*
    + +  

110
,- . / 0- 1233 4 1. 5 67 89 : 7 ; 7 < 4 9 44= -2> 4 > 0 9 ? . 4 - . 2 @ ? 0A= ./ 4 = B. B@ B -4 - CC C D ? 0A= 0 9 E 8F B3 87G 8 1 ? 3 -2A 0 9? H 87G -43 F 43 - C CC I ? 99 0 9 E 8F B3 87 G 8J BK 4L 0A4 CC C > BK 4 6M ; : N9 . 43 0 9 E = 03 4 1. 23 7 O8F B3 87G 8 1 ? 3 -2A 0 9 ?H P Q G = B. 0 9 E G B - -R = C@ 79 B> 4 CC C Q G = B. 0 9 E G B - -R = C@ 7? 0= CCC Q G = B. 0 9 E E 3 2 ?G C@ 7 9 B> 4 CCC Q G = B. 0 9 E E 3 2 ?G C@ 7 E 0= C CC Q G = B. 0 9 E / 2 -. - C@ 7 9 B> 4 CCC Q G = B. 0 9 E / 2 -. - C@ 7 B= =3 CCC Q G = B. 0 9 E 3 G 1 C@ 79 B> 4 CC C Q G = B. 0 9 E 3 G 1 C@ 79? > @ 43 CCC Q G = B. 0 9 E -43 F 0 14 - C@ 79 B> 4 CC C Q G = B. 0 9 E -43 F 0 14 - C@ 7 -43 F 014 9 B> 4 CC C Q G = B. 0 9 E 9 4. 0= C@ 7 9 B> 4 CCC Q G = B. 0 9 E G 3 2. 2 12A - C@ 7 9? > @ 43 C CC Q G = B. 0 9 E G 3 2. 2 12A - C@ 7 9 B> 4 C CC Q G = B. 0 9 E 9 4. E 3 2 ?G CC C Q G = B. 0 9 E 9 4. E 3 2 ?G C@ 7 / 2 -. CC C Q G = B. 0 9 E 9 4. E 3 2 ?G C@ 7? -43 CC C Q G = B. 0 9 E 9 4.R 23K - C@ 7 B==3 CC C Q G = B. 0 9 E 9 4.R 23K - C@ 79 B> 4 CC C > BK 4 6M ; : S 4B F 0 9 E = 03 4 1. 23 7 O8F B3 87G 8 1 ? 3 -2A 0 9? H P

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. A continuacin arranque el servidor NIS con:
8 4. 1 8 0 9 0. C= 89 0- -. B3 .

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


?G = B. 4 T3 1 C= TL 9 0- = 4L B ? A. -

Al construir la base de datos de NIS por primera vez es muy importante que el cliente NIS est parado
8 4. 1 8 0 9 0. C= 89 0- -. 2 G

Se observar que el proceso tarda ms tiempo del habitual y aparecen errores. Una vez creada la base de datos la primera vez se lanzar NIS
8 4. 1 8 0 9 0. C= 89 0- -. B3 .

111 y se volver a crear la base de datos


UV WX U Y Z[ U\ ] U\] Z^ Z_ `a

En esta ocasin la base de datos se crear sin ningn problema. Es muy recomendable que el servidor sea cliente de s mismo. Cmo hacer esto se ver en la siguiente seccin. Utilice:
X ] b Z^ c d `V Yd beYf d W_ \ ] WgXh \] WgXh

para saber si

se comunica correctamente con

] dX_a e] gX

Tenga en cuenta que en este momento en el servidor an no est usndose el cliente NIS.

11.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. Dena el nombre del dominio en el chero . Dicho nombre deber usarse en todos los clientes y debe coincidir con el usado en el servidor NIS.
g bf d bVX WdY Z^ Vj k U g_ bUi gc eV Y_ i da e Z^ U g_ bUi gc eV Y_ i da e Z^

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


g bf d \ ] WgXh gX WgXh Zi dX `^ ZW k U g_ bU\ ] lbd^ c

Como ya se dijo, no es imprescindible introducir la direccin IP del servidor NIS. Modique el chero c e Y Wg de chero sea m no opqr pq s .
Ug_ bUi gc eV Y_ U^ ZW

de forma que la opcin, que aparece al comienzo

A continuacin arranque el servidor NIS con:


U g_ bU Z^ Z_ li U^ ZW W_ eX_

E incluya el servidor NIS en el proceso de arranque con (si no lo est ya):


V ] i e_ g `X b li `c ^ ZW i gc eV Y_ W

Utilice:
X ] b Z^ c d `V Yd beYf d W_ \ ][ Z^ i \] [ Z^ i ] dX_a e] gX

para saber si

se comunica correctamente con


U g_ bU] e W Wt i

Aada al nal del chero


u vvw vw vv v

la lnea

112 Aada la nal del chero x yz {x|} ~ la lnea


Modique en el chero xyz {x z { {~ la lnea correspondiente a shadow de forma que tenga el siguiente aspecto:
xyz {x z { {~ y {~ | } z ~ ~ y y} {y z {  {z ~ z ~ y z y | { ~ { ~ { | y z y z} ~ { y y} {y z { ~} ~} z ~ ~z z y |} ~ ~ ~ z yz ~} } ~z ~ {~ y} {y yz y} } { yz |} ~ {~ z {~ z y y y y y y y

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. Esta modicacin de los cheros x yz {x y x yz {x|} ~ debe hacerse tambin en el servidor para que emplee tambin el cliente NIS. Si realiza alguna modicacin como las descritas anteriormente cuando el cliente NIS est ya activo, recuerde que debe reiniciar servicios como ssh o X (gdm o kdm) para que dichos cambios tomen efecto sobre las nuevas conexiones ssh o sobre la sesin X. 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, xyz {x  y} {~ 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:

y en los clientes:

113 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:

11.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 el password. Es conveniente crear los siguientes alias en : passwd > yppasswd chsh > ypchsh chnf > ypchfn El uso de los comandos sin yp se restringe a los usuarios locales. 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 11.2.4, aunque en las ltimas versiones de adduser esto se realiza de manera automtica. 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.

11.2.7.

El chero /etc/netgroup

Aunque los cheros esenciales que se exportan con NIS son y existen otros que facilitan notablemente el mantenimiento de un cluster. El primero de ellos es en el que se asignan direcciones IP a ordenadores que 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:

114

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.

11.3. NFS
11.3.1. Paquetes Debian

Hay dos paquetes que deben estar instalados para el correcto funcionamineto de NFS y que pueden instalarse con:

De nuevo es preciso tener instalado el servidor portmap.

11.3.2.

Demonios y scripts de inicio

Los scripts de inicio son:


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.

11.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:


115 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 ltimos comentarios ntese que no existe espacio entre el nombre de la maquina a la que se exporta y la apertura del parntesis, , adems, cuando en una misma lnea se indican varias mquinas, stas van separadas por un espacio. Con el chero fstab puede montarse de forma automtica un directorio va NFS. Como ejemplo de su uso, aqu se incluye un ejemplo:

Con este ejemplo de chero fstab, se 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 sera equivalente a un montado manual con:

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.

11.3.4.

Puesta en marcha de un servidor

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:

116
                 ! !        " #   $       "                    $              %& ' ()      * !                

Como puede observarse se exportan distintos directorios al grupo de mquinas A continuacin hay que inicializar los distintos demonios:
    +!  ,  *      -           +!  ,          

         

Si estos servicios ya estuvieran funcionando habra que emplear restart en lugar de start. Problemas en el arranque de un ordenador con servidor NFS Cuando se arranca una mquina que exporta cheros va NFS pueden aparecer problemas al arrancar si no se puede acceder a la red correctamente. Habitualmente si no hay red el ordenador se quedar parado durante el proceso de inicio del servidor NFS. Esto es debido a que el servidor de NFS intenta conectar con los servidores de nombres que se tengan denidos. Algo parecido sucede cuando se intenta apagar el ordenador. Para evitar esto hay que congurar el proceso de encendido        - +   , y apagado de forma que el chero aparezca vaco cuando es inicie/pare el servidor de NFS.

11.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   ,  . puede hacerse de forma manual con mount o empleando el chero . Si se opta por esta ltima opcin, el montaje automtico se realizar la prxima vez que se reinicie el ordenador.

11.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

11.4.1.

Paquetes Debian

El nico paquete que es preciso instalar es el autofs que puede instalarse con:
/ 0        , 

117

11.4.2.

Demonios y scripts de inicio

El script de inicio de este servicio es:


123 41 56 53 78 1 9: 3 ;< =

11.4.3.

Ficheros de conguracin

Ya que se exportan cheros va NFS, en el servidor debe existir un chero


123 41 2> ? ;@3 =

apropiado. El resto de cheros de conguracin es:


123 41 9: 3 ; 7A 9 =3 2@

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
BB BBB BB BB BBB BB BB BBB BB BB BBB BB BB BB BBB BB BB BBB BBB BB BBB B BB BB BBB BBB BB B B C D8 E 6 5= F6 < = 73 2> GH I 7J JK K L 1 K M 1 J N I K EO P EIQ R 2S@ 9 A ; = T> ? C B B U 9 A ? V 2 9:3 ; 7A 9 =3 2@ < 5V 2 B WX 5= 5= 96 9:3 ; A ;: 63 2@ A 9? 96 8 53 X 9 = 3 X 2 < ;VV ;Y 56 S < ;@ A 93 B Z 2[ \ FA ;:6 3 F;? 3 5;6 = F=2? 9@ 93 2 8 F] [ F4; AA 9 ^ V ; 493 5;6 B _ ;@ 8 23 9 5V = ;< 3 X 2 < ;@ A 93 V ;; Z 93 9:3 ;< = `M a 7 1: =2@ = 123 41 9: 3 ; 7X ; A 2 F F3 5A 2 ;: 3 b LK 1@ 2 A ;3 2 FV 56 Z 123 41 9: 3 ; 7@ 2 A ;3 2 FV 56 Z FF3 5A 2;:3 b Jc K BB BBB BB BB BBB BB BB BBB BB BB BBB BB BB BB BBB BB BB BBB BBB BB BBB B BB BB BBB BBB BB 123 41 9: 3 ; 7X ; A 2 BB BBB BB BB BBB BB BB BBB BB BB BBB BB BB BB BBB BB BB BBB BBB BB BBB B BB BB BBB BBB BB B C D8 E 6 5= F6 < = 73 2> GH I 7J JK K L 1 K M 1 J N I K EO P EIQ R 2S@ 9 A ; = T> ? C B WX 5= 5= 96 9:3 ; A ;: 63 2@ A 9? 96 8 53 X 9 = 3 X 2 < ;VV ;Y 56 S < ;@ A 93 B Z 2[ \ FA ;:6 3 F;? 3 5;6 = F=2? 9@ 93 2 8 F] [ F4; AA 9 ^ V ; 493 5;6 B d 23 9 5V = A 9[ ] 2 < ;:6 8 56 3 X 2 9: 3 ;< = `M a A 96 ? 9S 2 B T> 9 A ? V2 = BZ 2@6 2V B ] ;;3 B 48 B < V;? ?[

F@ ; <3? 7Z 2@ 6 2V 7;@ S E1? :] 1V 56: > F< =3[ ? 2b 2>3 J E1 8 2 H 1 X 8 9 I F< =3[ ? 2b 5=; N LLK G@ ; E1 8 2 H 1 X 8 4 F< =3[ ? 2b 9:3 ; G6 ; =: 5 8 G6 ; 8 2 H E1 8 2 H 1< 8 K

F@Y =2@ H 5 8 ;@ FX ; A 2 E1: =2@ =1 X ; A 2 X ;A 2 BB BBB BB BB BBB BB BB BBB BB BB BBB BB BB BB BBB BB BB BBB BBB BB BBB B BB BB BBB BBB BB

118 y e fg heijg k lm fn kg f op qr s
t tt ttt tt tt ttt tt tt ttttt tt ttt tt tt ttt tt tt tt ttt ttt ttt tt ttt ttt tt ttt t tu m m q hv f k w x f hkr y qzj i hqkr x fp {| }~ fg h m o k wf m m qx k ov kn f efg h

t m m m h ig hv x q f hg k g fn t  i qp o m wf m m m qx k ov kn f e i e w kk pen i qp o m wf m m qx k og fn eg fn

n i qp

t m m q f hg k qk x f i hs j m m m i hs ohp o wf qx k o i hs e i hs ohp t tt ttt tt tt ttt tt tt ttt tt tt ttt tt tt ttt tt tt tt ttt ttt ttt tt ttt ttt tt ttt t

11.4.4.

Puesta en marcha de un servidor

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

11.4.5.

Puesta en marcha de un cliente

Cuando se emplea autofs hay que tener presente que los directorios remotos que se van a montar van 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:
m m n s x q ej wf w m m n s x q e fn kg f op qrs

El chero e fg heijg k ln i wg f m tendr el aspecto:


t t t t t t t m x r qw or y w lg f l e e fz in k w ~

m in pf ijg k ln i wg f y qpf m m v qw qw ir ijg kn kjr g f n i ir x qg v i w g v f y k ppk qr z y k n ig m sf on kjrg okg qkr w owf i ig fx o ohkn n i pk hig qkr u m m k x fg i qp w ky gv f y k n ig pk ks ig ij g ky w l m ej wf w e fg heijg k lv kn f oog qn fkjg m m e fn kg f op qrs e fg heijg k l fn kg f op qr s o og qn fkj g

Donde la opcin timeout indica el nmero de segundos que tardar el directorio en desmontarse desde su ltimo uso. El chero efg heijg k lv kn f ser

119

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 , de forma que el directorio remoto se ver recordar que este directorio est contenido en como . 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:

120 Antes de crear dichos links es preciso vericar que los directorios no existen. Resulta curioso que si ejecutamos el directorio estar vaco (incluso puede 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 .

11.5. Problemas de interaccin NIS, NFS, autofs, RPC


Hay acasiones, especialmente cuando se realiza algn cambio en los cheros de conguracin de los servidores NIS o NFS o cuando las conexiones a travs de la red no se realizan de forma adecuada, que deja de funcionar el sistema correctamente. Aunque hay ocasiones en que el problema parece estar localizado en el NFS puede que la causa est en el NIS o en el RPC. A continuacin se dan una serie de instrucciones que hay que correr para intentar resolver el problema. Puede ser necesario correrlas en otro orden o incluso varias veces. Hay unas instrucciones que hay que ejecutar en el servidor y otras en los clientes: -Servidor

-Clientes

11.6. Bibliografa
1. http://es.tldp.org/Tutoriales/NISNFS/nis-nfs98/ por J.E.ez Zuleta. 2. Administracin avanzada de GNU/Linux, Josep Jorba Esteve y Remo Suppi Boldrito. XP04/90785/00019, Formacin de posgrado Universidad Oberta de Catalunya (2004). 3. LINUX: Rute Users Tutorial and Exposition, Paul Sheer (2001). 4. Manual page de nfs. 5. Manual page de ypbind. 6. Manual page de ypserv. 7. Manual page de nsswitch. 8. Manual page de autofs.

Captulo 12

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. Actualmente pensamos que el segundo proceso de instalacin se realiza con mayor rapidez que el primero.

12.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.

12.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:

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. 121

122 Tener claro si hay que conservar alguna de las particiones existentes en su ordenador. 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 o CD 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.

12.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:

  

para crear las particiones y despus correr:





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:

  

El contenido del script es el siguiente:


                       

123
! . 3 7 < $% "# "# "# "# "# "# $%&' ( )*+ , /&' ( )*+ , $&' ( )*+ , $%&' ( )*+ , $&' => 16 ? @ 84 : ( )* +, -0 12 -45 6 -+ 82 -9 : ;19 / -A :5 @

= ) 8@ B+ )@2 @* 1C 1D )2 5 1 8 6 124 ) ;):* @ 8 A 1E 1 8@ D @ 86 + @ 8 D @ 9 8> 16 F @ 8 D @ ; )2 F @*42 @ 9 1 6 @* + 94 )5 1 G 91 + 94 )5 1 9 )* @1 H I J( JK L M8N D )8O "9 -D @0 -A D 1 PE2 @6 Q )8O P1> O RS 6 2 )*4 TU V RM W K JX L M8ND )8O "9 -D @0 -A D 1 PE2 @6 W * )4 8 P1> O RS 6 2 )*4 T! V RM = JYZL M1> O R[ Z & JK S 6 2 )*4 )* 4 \ RTI J( JK R] RTW K JX R- $% /^ - $% /^ _ V RM @ ;A : `I )9 )* D2 : 8 a ` TI J( JK `= )b @ ;)9 )* D2 : a ` TW K JX `= )b @ cQ a ` T = JYZ

X !L T \ \TI J( JK ] !%% % -T = JYZ __ X .L T \ \TI J( JK ] $%% % -T = JYZ __ X 3L T \ \TI J( JK ] $%% % -T = JYZ __ X 7L T \ \TI J( JK ] !%% % -T = JYZ __ X <L T \ \TI J( JK ] $%% % -T = JYZ __ 8N D )8O -D @0 -A D 1 dd Z ef FF7 ! g g g FTX ! F7U FTX . F7U FTX 3 F7U FTX 7 F7U FTX < F7 / FF7U Z ef @ ;A : `Z 84 1 8 8:* 8+ 8 6 124 ); ):* @ 8 ` 8N D )8O "9 -D @0 -A D 1 @ ;A : f :25 14 @ 1* D : HH H 5 O N 8 H@, 4 U ") /%^ 7 -D @0 -A D 1 ! 5 O N 8 H@, 4 U ") /%^ 7 -D @0 -A D 1 . 5 O N 8 H@, 4 U ") /%^ 7 -D @0 -A D 13 5 O N 8 H@, 4 U ") /%^ 7 -D @0 -A D 17 5 O N 8 H@, 4 U ") /%^ 7 -D @0 -A D 1 $% @ ;A : I2 @ 1* D : 8> 16 H HH 5 O 8> 16 -D @0 -A D 1 <

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

124 todo el disco duro. A continuacin de crean las particiones adyacentes 5, 6, 7, 8, 9 y 10 que correspondern a los directorios h , hi jk , hlm n , ho pk hq r sjq t , swap y hu rm v , respectivamente. 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. copy-nfs Para ejecutar este script teclee:
wh srnx yz { p ysrnx

El contenido del script es el siguiente:


|} h~ z h pu h~ z h p~ z ho pk h~ z ho pk h p~ z w | srnx yz { p w vkm l v q j srn j v oz p pl vm j rn vk jl i r zo v p v o z | rk vz j rk k vm rl r w | | x w w jk s j jm r p w r pl r y vn l vm ~ k v w | ql m j m r { sj s rz t y y w | | v su r v su r v su r v su r v su r v su r v su r v su r yyy yy yy yyy yy yy yyy yy yy yy yyy yy yy yyy yy yy yyy y y k r k jm j n jk j qj z pl j qj srz v zo y y m v jz l v srn j k v sl j v p v oz rk v y y y z j rk k vm rl r w y y z sqo v rnl rz p y yyy yy yy yyy yy yy yyy yy yy yy yyy yy yy yyy yy yy yyy y

{ rk rn l rz z r sj pv rnl rz z y{ rkm jl | | k vj s rz v q j p n jk l  srz v p w | whn jk l

ysrnx vki  rk k vm rl r v zo v p v vq o v pv k vj q  j q j srn j w wt w w | p sr ok r u j u jt u ~ u ~ t w |

125

126



                                                    

127
       ! " #  $  # %& '&  ' &   ( & % ! % )  % )  * + &     % $   # ,' % ' %(- &  % .' # !! ! % )   /   .& %0 1 #/ . $ .' #  . ( .  $ .' # 22 + 1 3( # 1 45 6%- %+ 17 89:; < => 4: 69:; < => ?: 6@ 9:; < => A : 8 3@ .& %0 1 #/ . $ .' #  * +   %(   % $   .' # .(   (? % )  % )  * + &     % $   # ,' % ' %(- &  % .' # .(   (? ! !! % )   . ( .(  (? 2 2 + 1 B .& %0 1 #/ . ( ( ?

                * %   &  %   % $   #                  * %   &  %   % $   # ! % )  % )  * % &     % $   # !! ! % )   /   .& %0 1 #/ . $ . &$ .  /   .& %0 1 #/ . $ .+  .  * % &  % ( & / # % )  % )  * % )  (& 1 # (& 1 # (& 1 # (& 1 # (& 1 # (& 1 #

%   &  % ( &/ # ! !! .& %0 1 #/ . .& %0 1 #/ . .& %0 1 #/ . .& %0 1 #/ . .& %0 1 #/ . .& %0 1 #/ . $ . $ . $ . $ . $ . $ . % $ % 1( &/ .C  / 1%$  1( .& %0 1 #/ . $ .C  / 1%$  1( % $ % 1( &/ .C  / 1%$  1( .& %0 1 #/ . $ .C  / 1%$  1( % $ % 1( &/ .)  % 1D % .& %0 1 #/ . $ .)  % 1D % % $ % 1( &/ .$ % + .& %0 1 #/ . $ .$ % + % $ % 1( &/ .  ( .& %0 1 #/ .7  . #+  (.  ( % $ % 1( &/ . %$  .& %0 1 #/ .%$ . %$  1(

% )  % )  E  &   $ + ! !! % )   .& %0 1 #/ . $ .$ + .22  1

% )  % )  *  C &   + $ %  & % #  $ + !! ! % )  )  F 0 G .& %0 1 #/ . $ .$ +

128
H I JKK LM J M N O J P Q RST NK J P M N U L RO N ST J N ST J I JKK LV M J Q RST NK J P M N U L RO WW W N ST J KU XV NY ZM RP[ X\ LK X P] J JO XU L RO X ^ H _ J] RLV M J Q P` La N ST J N ST J _ J] RLV M J Q P` La WW W N ST J S] Q P` La XV NY ZM RP[ XK J J` XN` S N ST J N ST J b cd e f gh ih jk f hl k mn h k c_h e f gh cd okh gh _ cmd N ST J N ST J f O P Rpq RNV` N ] L PJ N P \ NK RQ R SLK rXV NY ZM RP[ XK JJ` X N` SXQ P` La r N ST J ss ZT tZT N O] u N ST J rl PLp N ZSJ]v M RK N S` SJ] v r N ST J r ZQ JKU L` QM RP[ LV M Q JKU L` r N ST J r ZT w ZT NO] k T RP T NO] r ss ^u N ST J rd J` \ L O RM J]` RJV W oN N ZT N O] r N PL S M JV N ss

En este script se asume que se han creado las particiones que aparecen en el script part. Se X X\ LK Xq PK XOJ SL Ox asume tambin que en el servidor hay tres particiones diferentes para , y . 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; X` NU ] 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.

129 1. Nombre de la mquina. Modique el chero /new-disk/root/etc/hostname de acuerdo al nuevo nombre. 2. Direccin IP. Modique el chero /new-disk/etc/network/interfaces para incluir el nuevo valor IP. 3. Aada el mdulo correspondiente a su tarjeta de red, caso de ser necesario, en el chero /new-disk/root/etc/modules. 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 (no recomendado) Edite y modique convenientemente el chero /new-disk/root/etc/lilo.conf El aspecto del chero a modicar es:
y z {| {} ~ { | y { {  {  { {  { ~ ~} ~ }  { ~ ~} ~

A continuacin teclee

}  | { } 

y seguidamente

Instalacion del Grub (recomendado) Edite y modique convenientemente el chero /new-disk/root/boot/grub/menu.lst


y {|  {{ } | } ~ { } y } |  ~ } y } }  } ~} { } y ~| } ~} { } { ~  y y  { { y { ~  { | { | { } { ~ ~ ~  |  { { ~  {| } y | } ~  { }  {| } { | {  { y } { } } ~| {  { {   { }  { ~| z | {}| {

130

A continuacin teclee

y seguidamente

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. Cambio del passdw del root con el comando /usr/bin/passwd. 2. 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. 3. 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. 4. 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. 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. 6. 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/default/nis, la variable NISSERVER debe tener el valor false. 7. 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:

131 /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. 9. 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 10. No olvide comentar la lnea

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.

12.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 y la parte ms delicada del proceso va a ser no olvidar ningn chero de conguracin asociado a los servicios bsicos del cluster.

12.2.1.

Requisitos

El servidor de cheros debe exportar el directorio a la nueva mquina que se va a instalar. Si dicha mquina ya era un mquina del cluster no habr que hacer ninguna modicacin. Si por contra la mquina es nueva habr que aadir su nombre en los cheros del servidor:

132 y habr que ejecutar las instrucciones:


CD de instalacin de Debian. Direccin IP y nombre que tendr su mquina. Tener claro si hay que conservar alguna de las particiones existentes en su ordenador. Cercirese que en su ordenador la secuencia de arranque presenta la unidad correspondiente al CD antes que el disco duro.

12.2.2.

Instalacin

Se proceder a la instalacin del sistema base de Debian. Dentro del proceso de conguracin es importante congurar de forma adecuada: Pas, teclado y mapa de caracteres. Se realizarn las siguientes particiones con estos tamaos
  


  

  

La direccin IP denitiva que va a tener la mquina. A la hora de seleccionar los paquetes se optar por la instalacin mnima. Congure exim para entregar correo local o para que emplee un smarthost. Una vez que se ha realizado la instalacin mnima, se seleccionarn los correspondientes mirror de Debian para continuar con el proceso de instalacin a travs de la red (es conveniente que sean los mismos que en la mquina que nos servir los cheros). Para decidir los paquetes que debemos instalar, correremos en la mquina que nos servir los cheros:
   

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


      ! "#$  %  &'(   

A continuacin entraremos en dselect y continuaremos la instalacin de la forma habitual. De las mltiples cuestiones que se nos harn slo algunas sern importantes: NIS: congrelo como cliente y escriba el defaultdomain que corresponde al cluster. XFree86.

12.2.3.

Conguracin
)   "* +  !+ ! ! , ) #($  *- " #* . # )  /+  ! +  !+ ! ! , + !+ ! ! , +  !* "  +(  &   ! $ 0 + !+ ! ! , +  !* "  +(  &   ! $ 0 ! "$  ( ) #( $ +  !+  ! ! , * )  "* +  !+ ! ! , $ ,  +*  ) #   "$ + ! + !+  ! ! ,

El proceso de conguracin consistir en:

De esta forma quedarn congurados todos los servicios y links que harn que la nueva mquina quede integrada dentro del cluster.
1 2 34 56 3 78 1 9 :; 5< = = > ?< @A= B =8 B :>6 C 5D C 5EB 7 C; >F 7B;G B; H8 >F B 1 I8 57 7:; 5<= @>B 76 J= ;?6 A= 7B;G B; H8 >F B 1 :A 7B A@@ B@ K 1 H:E 5B6= K :>< L A EE =8 B 6 B :B 77A;L C 5EB 7 C >; 7B== 56D ?< A :E 5B6 = M 1 6 > A;D?F B6= 7 K F AN B 7 =8 B 7= A6 @ A;@ ?< @ A= B M 1 O 5G B; PQQQ HRSST 1 1 UV A@ 5; >< : 5>6 B 7 < A; A 6 > 56 7= AEA; : 5B;= > 7 7B;G 5:5> 7 :>F > 778 W E< ; W 6 57 C B :8 AX Y@A= B Z[@[4 [L Y 8 >; AX Y@A= B Z[\ K[] Y ^@ 5CC 3B= :3B= :H:EC 38 > 7= 7 3B= :38 > 7= 7 _ `3@ BG 36? EE a bb c ^:< 3B= :3B= :H:EC 38 > 7= 7 3B= :38 > 7= 7a 7B;G 5@ >; d8 >F BX Y:A= 3B= :38 > 7= 7 bD; B< e7B;G 5@>; H8 >F B e bD; B< HG 4 A :N bAfN Jg < ; 5 6 = hR i JY 7B;G 5@ >; dE> :A EX Y:A= 3B= :38 > 7= 7 bD; B< 7B;G 5@>; HE> :AE bAfN Jg < ; 56 = hR i JY 7B;G 5@ >; d= BF < X Y:A= 3B= :38 > 7= 7 bD; B< 7B;G 5@ >; H= BF < bAf N Jg < ; 56 = hR i JY 7B;G 5@ >; d4 A :N X Y:A= 3B= :38 > 7= 7 bD; B< 7B;G 5@ >; H4 A :N bD; B< HG 8 >F B bAfN Jg <; 56 = hR i JY 1jkl >; jkOm] 7 5= BX h 7B;G 5@ >; d8 >F B 1n 57=; 54? = 5>6

134
o pqr s tu q vvw xy qpz{ |} x~o v{  |~ y p{ r t y } pr x ry x ~y } s to vv y p{ r vp{ qr ~ uu~r pz{ v~y } pr x ry x t ~ qx  p{

{ qr ~u~ pz{ o x { u px{ r x vu px{r z{ py ~ pz{ ox ~u q~ { qr ~u~ pz{ o x xy{ x u q x y xw pqpz{ o x ~yr ppz{ x q x } z  u px{ r qxr o z{ x x } z z y{ pr} zr ~y x{r q x } z p{ ~ uu y{ ~{ ~uu x } z z{ r xr xr vu x } z y o py xr xr vu x } z u{ v q y x zr x vu p{ xr xr xr vu ~ r z q o vq ~ r z q o xw { uu || ~ r v xr p{ qr ~ uu ~ r z q o vq ~ r z q o xw { uu p r} x{ zy pp p{ ~ r z ~ qr xy ~r z y x zr x vu p{ ~r z } z x oz r x qr vx xr pp r x qr vx xr pp xr pp xr pp xr xr vu qy p r q u px{r pp xr pp o z{ x r x qr vo qxy q o py qxy q xr p{ pr o ~ r z q qr z xr p{ pr o ~ r z q qr ~yr x u qx x } z x } z z q} z uo p{ qr ~uu ~ r z q x } z p { pq zy pp p{ z{ qxyw z{ qxyw qx y x{ xr q o x~ ur { pq oz r x qr vx xr pp r x qr vx xr pp xr pp xr pp xr xr vu qy p r q u px{r pp xr pp o z{ x ~r xr ~ qq o |y x u x v ~ } p{ x q o xw { uu || x } z u x v ~ } p{ x q xr ~ qq o

135

136







       
           

137
      !  "  # "$ %& ' #( ')  * ++ $ ,  '* "  # "$ %& ' #( ')  *    !  "  # "  # !# ) ( "$ %& ' #( ')  * ") - . $ !# ) ( !( ')  * + + / #0 "  # "  # !# ) ( "$ %& ' #( ')  * ")- . $ !# ) ( !( ')  * / "  # "$ %& ' #( ')  * ")- . $ !# ) ( !( ')  * 1 ' ( ( "  # " 0 * '  # % 0 "  # "  # !# ) ( " 0 * '  # % 0 2 " 3 "4 )) 5 6 6 / 1#0 "  # "  # !# ) ( " 0 * '  # % 0 "  # " 0 * '  # % 0 7 "  # " ' ' 8 ") 0 * & *    %*  5 ('

9 ) ' , 999 9 9   # !# ) (     :;     %$  : < = * 3 ' * >; $ ++     !? "  # "  # !# ) ( ++     !  "  # "  # ! 1 ) + + )  "* $   ) ' , " " " ) 5 # ( !(  ! #  #  # !# ( 9; $  ! %@ *     :;     %$  : < = * 3 ' * >A % # , ++     !? "; $  ! %@ * + + 1) !(  "* $    ! ) ' , " ; $  ! %@ * "; $  ! %@ * 5 9A % # , !   # !# )    !? "A % # , !   # !# ) + + 1) !(  "* $    ! ) ' , "A % # , !   # !# ) "A % # , !   # !# ) 5 9     :;     %$  : < = * 3 ' * >A % # ,++     !? "A % # , !   # !# ) + + 1) !(  "* $    ! ) '  , "A % # , !   # !# ) "A % # , !   # !# ) 5 9  $ 0     :;     %$  : < = * 3 ' * >  $ 0 ++     !? "  $ 0 + + 1) !(  "* $    ! ) ' , "  $ 0 "  $ 0 5 9 ) # % ) B ) # % )C    !  "4 * ") # % )C + +     !? "4 * ") # % )C + +$ ,  '* "4 * ") # % )C     !  "4 * " ) # % )C ") # % ) B ++ ) !(  "4 * ") # % )C ") # % ) B "4 * " ) # % ) B 9D % ')     :;     %$  : < = * 3 ' * >; $ ++ )  ! ) "3 %* "  0  )"$ % ') 6&*  0 E "3 %* "$ % ') E " 3 "4 ) )+ + *$ "3 %* " 0  )"$ % ')     :;     %$  : < = * 3 ' * >; $ ++ )  ! ) "3 %* "  0  )"$ % ') 6&*  0 E 88"$ % ') E2 " 3 "4 ) )++ *$ "3 %* "  0  ) "$ % ')     :;     %$  : < = * 3 ' * >; $ ++     !? "3 %* " 0   )"$ % ')++ 1) !(  "* $    ! ) ' , "$ % ') "3 %* " 0  ) "$ % ') 5     :;     %$  : < = * 3 ' * >; $ ++     !  "3 %* "$ % ')+ + 1$ 3 "3 %* "$ % ') "3 %* "$ % ')>F GH 5     :;     %$  : < = * 3 ' * >; $ ++     !? "3 %* "$ % ')++ 1) !(  "* $    ! ) ' , "$ % ') "3 %* "$ % ') 5  # ;  EG # 4 % ) 'I % # ' * % ) 'I % %  ) = (  # ; % % )%  = ; * % E2 2 "  $ 0 "4 0  %   !# ) ( 8)& J '  K 77  % #

Finalmente deber modicar el UID y GID del usuario que cre durante la instalacin ya que coincidir con alguno de los usuarios denidos en el cluster con NIS.

138

Captulo 13

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 modicaciones en la conguracin comunes de los ordenadores de manera asncrona o simplemente ejecutando una instruccin.

13.1. Conguracin asncrona


13.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, y caso de ser distintos puede mantenerse una copia de los mismos en un directorio concreto, 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.

13.1.2.

Requisitos

Tener algn directorio del servidor montado va NFS en todos los nodos. Habitualmente todos los nodos deben tener montado el directorio L MN O del servidor en el directorio L MN OL MN O POQ . Por supuesto el directorio LR SMT SLU VW M tambin es visible desde todos los nodos. cron activo.

13.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. Z Z\ En todos los clientes (en el servidor no hay que hacerlo) debe existir un chero L MN OL OT VX Y LR [ N M POQ] que contiene:
N M SN PM L MN OL MN O P OQ] L S OT a[ N SLR [ cc Z\ L MN OL MN O POQ] L S OT a[ N SLR [ N M PMN O ^_ ` ` ` ` T V VN Z\ N M PMN Ob

139

140 Dicho chero se ejecuta todas las horas y quince minutos. En primer lugar chequea si existe el chero d ef gd ef g h gij d k gl mn f kdo n p qf e hef g y despus lo ejecuta. El chequeo inicial es conveniente por si el servidor no responde. El chero d ef gd ef g h gij d k gl mn f kdo n p qf e hef g tiene el siguiente aspecto:
rs r r r r j e gv q p qf e p t v xl q p qf e mj hl d ef gd ef g hgij dz xf p f v eu r xz o u e k rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr dt mu d kv w gl mn f f x o n p qf e f v e gxu j my j mi e k jl xz t i qu gqu me{ e k |o k |e k } v m k k gl mn f p x e ku ~f l o u xu t i qu gqu me{ e k 

gn d ef gd ef g h gij dz xf p d ef gdz xf p gn d ef gd ef g h gij dn l xj mi e |gij d ef gdn l xj mi e |gij gn d ef gd ef g h gij dv x kf k |e f l q d ef gdv x kf k |e f l q gn d ef gd ef g h gij dv x kf k |q i i x d ef gdv x kf k |q i i x gn d ef gd ef g h gij d ke g hi m kf |gij d ef gd ke g hi mkf |gij gn d ef gd ef g h gij d qo f x |i x gq i hi mu d ef gd qo f x |i x gq i hi mu gn d ef gd ef g h gij dv x kf k d ef gdv x kf k gn d ef gd ef g h gij dv x kf k |e o m{ d ef gdv x kf k |e o m{ gn d ef gd ef g h gij dl e kx i{ |gxu j d ef gdl e kx i{ |gxu j gn d ef gd ef g h gij d k gl mn f kdn l mu f gqn d ef gdn l mu f gqn f e kf he d ef gd gl xu |p q mi d e mz z { d ef gd gl xu |p q mi d e mz d ef gd gl xu |p q mi d e mz |u x r l mu f el  j xl o eo e mu in in i q kel po n i e kpo n i e k mz n i e px f e kf s he d{ ql d kn x x i d in p d o eo e z p ml d{ ql d kn x x i d in p d o eo e

gv x u p q ez xu |in d{ ql d kn x x i d in p d o eo e e gv x gf o q i m q g mxu l e q i m qp q e i j e gv q q i q k v xl q dfz n do n p qf e hgij |i xy jm e mf

Como se dijo antes, este script se ejecuta en todos los clientes pero se crea en el servidor, estando alojado en d ef gd k gl mn f kdo n p qf e hef g. 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 d ef g del servidor, si la conguracin es idntica en el servidor y en los clientes, o bien desde el directorio d ef gd k gl mn f k si la conguracin cambia entre el servidor y los clientes. Como se observa, pueden crearse directorios 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. Siempre hay que recordar que periodicamente se realizan copias de cheros de conguracin

141 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 . NOTA: actualmente existen dos versiones del chero de actualizacin: y (este ltimo es el que se usa cuando se instala un nuevo cliente). En estos momentos se estn unicando ambos cheros y en un futuro existir exclusivamente el chero que podr correrse sin opciones, como se hace actualmente, o con opciones para realizar tareas concretas. Se est tambin cambiando la forma en que se especican los cheros a copiar. Prximamente se informar acerca del nuevo uso de dicho script.

13.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.

13.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 . Tener en el PATH del sistema los directorios y . Tener creado con permiso de ejecucin el chero en el servidor.

13.2.2.

Uso

Su uso es expremadamente simple,


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,

142
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,

tambin puede usarse para instalar paquetes Debian,


o para chequear si algn proceso est corriendo en las distintas mquinas del cluster:

13.2.3.

Variantes

Existen modicaciones de multiscr para realizar tareas concretas:


. Este script slo puede ejecutarlo el root del servidor y realiza una vericacin de ciertos servicios para saber si las diferentes mquinas estn bien conguradas. . Este script puede correrlo cualquier usuario y proporciona informacin sobre la CPU, memoria y disco duro de los distintos ordenadores del cluster.

Captulo 14

Copias de seguridad
14.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.

14.2. Copias de seguridad de las cuentas de los usuarios


14.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 . Si el proceso de copia no se lanza desde el servidor de cheros sino desde otra mquina,

 es preciso que el directorio est exportado a dicha mquina con la opcin     

. 143

144 Uso 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:
         ! " # $% & 

que se lanzar una vez a la semana (los domingos a las 6 horas) y tiene por contenido:
' ( )  *% ' '   *  )#  

! " #  %  +,-./0 " * * 1 2 )* 3" * *% &  4  ' ' 5  )    "  6 "  7 ! !8  " *  *9 '  ,: ; ; <= >0  ?@ A BC C ' ' 2 " * *% &     *  )#  * $D  ! " # 2       9 & # & # 2       *  )#  * !  "#  !  "# * 

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:
' ( )  ! *% ! " # * ? ? ' E !&  ' F !  ?@  BC C C AG  B?  A? ?? A A A? ? B : *!8  H # ! ! D )%   # ! ! # )! 2  *8" )2 !2 ' 2  2 )    ) " * *% &  2  *I )2  $% &  ' ' J "  * *! I !  *!& ) !  * 32  *!  )I !2  !  " ! &   4 '  ,: ; ; <= >0  ! 2 K /  ' '  %  +!   %  * !&  + 2 !   %   %  L LL LL LLL LL LL LLL LL LL LLL LL LL LLL LL LL L  %  , # )! 2  M8" )2 !2  %  L LL LL LLL LL LL LLL LL LL LLL LL LL LLL LL LL L  %  D  % !N +2 !  OL 2L L + ' , # )! * ! & !  !2 ! * PQ ,R N A "  ) 2   !2  'S 2    34 T   N + * $ B U8 # !  U  $ +   N +V # W  $ W PQ ,R O B + )D X W   $8 ? Y

" * *% & 

145
Z[ \] \ ^[ _ \ ^[ _ `a _bb c] d _ e c ^_f gc d \ h\ij b gd cd k c h c]Z gij c ll l` \ ^[ _ e h m nZ oib \f p c ^q oZ c ge m] r ^_] Z os cb i h bk tg u vv vvv vv vv vvv vv vv vvv vv vv vvv vv vv vv vvv vv vv vvv vvv vv vvv v vv vv vvv vvv vvv v w \ cek c ^\] c ec ^_f gc d \ h\ijb gd cd \] h\b x gd _b mp c ^q h g \ hZ c v v c ^Z gx _ y h g ] _ y ] _ h\ b \c e gz c v vv vvv vv vv vvv vv vv vvv vv vv vvv vv vv vv vvv vv vv vvv vvv vv vvv v vv vv vvv vvv vvv t f g] i mb n h\bx gd _b mp c ^q { |d \x |] j e e }{ |d \x |]j ee \b ~ r  g t r \b ~ Z[ \] \ ^[ _ \ ^[ _ `h\bx gd _b mp c ^q c ^Z gx _ ll l` \ ^[ _ ^d |p c ^q m^e|p c ^q jf m[ _k \ d \ e\Z \ \ ^[ _ \ ^[ _ `b \c] d _ ^_f gc d \ h\ijb gd cd l ll` \ ^[ _ ^d |j h\b h|[ _k \ | Z cb ^ t |p c ^q m^e|p c ^qj f h\bx gd _b m[ _k \[ _k \ r t \ ^[ c lZ cb lp z } l ^d |p c ^q m^e k x p c ^q jf h\bx gd _b m[ _k \ [ _k \ p c ^q jf m[ _k \ \ ^[ _ \ ^[ _ `w c _] cb c a cp ` \ s gZ tg v \ ^[ _ \ ^[ _ `h\bx gd _b mp c ^q g] c ^Z gx _ l w a l ll` \ ^[ _

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 servidor-back est activo o no. Caso de no estar activo no se realiza la copia ya que no habra sitio en un directorio local para almacenar el chero. Como puede verse las copias se almacenan en |p c ^q m^e|p c ^qj f m[ _k \ .

14.2.2.

Con rdist

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.

146 Requisitos rdist disponible. fping disponible. cron activo. Clave pblica del root en la mquina servidor-back. Si el proceso de copia no se lanza desde el servidor de cheros sino desde otra mquina, es preciso que el directorio est exportado a dicha mquina con la opcin . 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:

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


Este script lanza un rdist que usa como chero de conguracin cuyo contenido es:

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.

147

14.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. Si el proceso de copia no se lanza desde el servidor de cheros sino desde otra mquina, es preciso que el directorio est exportado a dicha mquina con la opcin . 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:

Cuyo contenido es:


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

148 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.

14.2.4.

A una unidad de cinta

Requisitos Unidad de cinta disponible. cron activo. Espacio disponible en cinta. Si el proceso de copia no se lanza desde el servidor de cheros sino desde otra mquina, es preciso que el directorio est exportado a dicha mquina con la opcin
. 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:

      


Cuyo contenido es:


     
  

              
   
           
   ! "  #   $ #   $
 % #   $ 
& '     () *
+ "   
+ +"      " 
   "  
 
 "
 %    
   " + + "    ,  "
  - .
 "
  / 
0 + + "     2 1  
% $  "
  "
%  "
  "

149
3 4 56 7 89 : ;4 56 : <=> ;? @>6 = >4 A BA C D 8E F4 >G H I ?A A <A J 8KG G 5A E L 4 56 8: FE >9 FA @4 M ;? @>6 N4 J7 4 56 8: FE >9 FA @4 M ;? @>6 N4 J7 > 8O K I ?AA <A J 8KGG 5A E 6G ;? @>6 N4 J 7 6G ;? @>6 N4 J 7

:< E KA > > 8O K > 8O K P 5 8Q? H ;A ? @>6 @ RR ;= KJ: <= > > 8O K

3 I >S <A E 4 5H > G 4 6 >S <A E : K6 ? @>6 <A ; = <@4 5 EK > 8O K TU >6 <:V <A J ;? @>6 N NN NT R R; =KJ : <=> 4 56 4 : FE >9 FA @4 M DRFE >9 FA? = = WW X > 8O K T;? @>6 L 9 >6 <: <>E T R R ; =KJ: <=> YY X > 8O K T;? @>6 L >66 K6 @ <A 9 >6 <:V T R R; =KJ : <=> <: Z ; [ \>] M ^ 4O >A > 8O K T;? @>6 L 9 >6 <: <>E T >= @> > 8O K T;? @>6 L >66 K6 _@ ` <A 9 >6 <:V T DRW a :< G 4 : @: D E KA > > 8O K P 5 8Q? H E KA > E 54 > RR ;= KJ: <= > 854 ;=KJ: <= > Y G 5 <= \@ TbA : K6G > E > c 5 8Q ?H E > = def G K6 Kh6 KG 5A4 < 8K N? @ N> @ X 6 K K4 h6 KG 5A4 < 8K N? @ N> @ gE 54 > gT X

Por supuesto para que el proceso de copia funcione, alguna persona debe encargarse de cambiar la cinta una vez que la copia est hecha.

14.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. F>4 8 F9 56 F=KJ 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 F9 56 F @H KK =FG 5 <= .

150

14.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 ij k lm nlo . 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:
i pq li lr st uv st qw ox ij k lm yz n{ kr i pq li lr st uv st qw ox ij k lm yz npq l

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):
| }ij ~t i w | | lr st  lr ~zq q s j k lmy z q w p pq l ~r p lq srx r s v kq ~ls uy  up  i pq l u | | r ~q q pt jx lyrr s ly rr s kr k srt uy  up  | j x u | | l i pq l i pq li  lr ~z q ij k lm yz ij lmz pq l i i

donde el script bckpetc contiene:


| }ij ~t ij k w | k v p j lmz pq l u | kq p i i i i i i k p r pz kr k ~lw pr s z kr k lsz ~k p pyr ~ k | p ~r p lq sr ~s i pq l p pr { ~ sr nw s v p | | y p p k o{ k pt k v ul~ lk up  p k lq ~{ k s k lq y k o v ptq p | | | j x u kt p lw s lkq i pq liw s qt k v p kq p p lw s p lw s p lw s sz ~k p pyr ~ k i pq l

151

152

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

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.

14.4. Bibliografa
Manual page de tar. Manual page de pdumpfs. Automating Unix and Linux Administration, Kirk Bauer Apress (2003).

Captulo 15

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.

15.1. Seguridad en el cluster


Poltica sobre el superservidor inetd. Centralizacin de todos los cheros de registro y generacin de informes diarios con logcheck o logwatch. Activacin del demonio portsentry o snort 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. Instalacin de un rewall en cada nodo del cluster

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

15.3. Seguridad fsica


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

15.4. The Windows corner


Acceso a particiones con Windows. Conguracin de emuladores de Windows o de programas que funcionen como mquinas virtuales. 153

154 Conguracin de un servidor Samba.

15.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. Mejora del comportamiento de los clientes ante caidas del servidor.

MATERIAL ANEXO

Gua de instalacin de Debian

Captulo 6. Usando el instalador de Debian


6.1. Funcionamiento del instalador
El instalador de Debian est compuesto por un conjunto de componentes de propsito especco para realizar cada tarea de la instalacin. Cada componente realiza una tarea, formulando al usuario las preguntas que sean necesarias para realizar su trabajo. Se asignan prioridades a cada una de las preguntas, jando su prioridad al arrancar el instalador. Cuando se realiza una instalacin estndar, solamente se formular las preguntas esenciales (prioridad alta). Esto tiene como consecuencia un proceso de instalacin altamente automatizado y con poca interaccin del usuario. Los componentes son ejecutados automticamente en una secuencia predeterminada. Los componentes a ejecutar dependern del mtodo de instalacin que use y de su hardware. El instalador usar los valores predeterminados para las preguntas que no son formuladas. Cuando exista un problema, el usuario ver el error en pantalla, y es posible que se muestre el men del instalador para que elija de ste alguna accin alternativa. El usuario no ver el men del instalador si no se produce ningn problema, simplemente tendr que responder las preguntas formuladas por cada componente en cada paso. Se ja prioridad crtica (critical) para cualquier noticacin de un error serio, por lo que el usuario siempre ser noticado de estos errores. Algunos de los valores predeterminados que usa el instalador pueden ser modicados mediante el paso de argumentos de arranque en el inicio del debian-installer. Si, por ejemplo, desea forzar la conguracin de red esttica (se usa DHCP como opcin predeterminada si este protocolo est disponible), puede utilizar el parmetro de arranque netcfg/disable_dhcp=true. Puede consultar todas las opciones disponibles en Seccin 5.2.1. Es posible que los usuarios avanzados estn ms cmodos si utilizan la interfaz basada en men, donde el control de cada paso lo tiene el usuario en lugar de que stos se ejecuten de forma automtica en una secuencia predeterminada por el instalador. Para usar el instalador en el modo manual, gestionado a travs de un men, aada el argumento de arranque debconf/priority=medium. Deber iniciar el instalador en modo expert si para hacer funcionar o detectar su hardware es necesario que indique opciones a los mdulos del ncleo conforme se instalen. Esto puede realizarse ya sea usando la orden expert al iniciar al instalador o bien aadiendo el argumento de arranque debconf/priority=low. El modo experto le da control total del debian-installer. Las pantallas del instalador estn basadas en caracteres (distinto de la, cada vez ms familiar, interfaz grca). El ratn no est operativo en este entorno. A continuacin se indican algunas teclas que puede usar para moverse en los diversos dilogos. El Tabulador o la tecla con la echa derecha realizan desplazamientos hacia adelante, la combinacin tecla Shift-Tabulador y la tecla con la echa izquierda desplazan hacia atrs entre los botones y opciones mostradas. Las teclas con la echa arriba y abajo mueven entre los distintos elementos disponibles en una lista desplazable, y tambin desplazan a la lista en s (cuando se llega al nal de la pantalla, N. del t.). Adems, en listas largas, usted puede escribir una letra para hacer que la lista se desplace directamente a la seccin con elementos que se inicien con la letra que ha escrito y usar las teclas Re-Pg (Retroceso de pgina) y Av-Pg (Avance de pgina) para desplazarse entre la lista por secciones. La barra espaciadora marca un elemento, como en el caso de una casilla. Pulse Enter para activar las opciones elegidas. Los mensajes de error son redireccionados a la tercera consola. Puede acceder a sta pulsando Alt Izq-F3 (mantenga presionada la tecla Alt mientras presiona la tecla de funcin F3). Para volver al proceso de instalacin principal pulse Alt Izq-F1.

48

Captulo 6. Usando el instalador de Debian Tambin puede encontrar los mensajes de error en /var/log/messages. Este registro se copia a /var/log/debian-installer/messages en su nuevo sistema una vez nalizada la instalacin. Durante el proceso de instalacin puede encontrar otros mensajes en /var/log/, y en /var/log/debian-installer/ despus de que el ordenador haya sido iniciado con el sistema instalado.

6.2. Introduccin a los componentes


A continuacin se muestra una lista de los componentes del instalador con una breve descripcin del propsito de cada uno. Puede encontrar los detalles que necesite conocer de un determinado componente en la Seccin 6.3. main-menu Muestra al usuario la lista de componentes durante el trabajo del instalador, e inicia el componente elegido cuando se selecciona. Las preguntas de main-menu tienen prioridad media (medium), de modo que no ver el men si dene su prioridad a valores alto (high) crtico (critical). El valor predeterminado es alto. Por otro lado, se reducir temporalmente la prioridad de alguna pregunta si se produce un error que haga necesaria su intervencin de forma que pueda resolver el problema. En este caso es posible que el men aparezca. Puede volver al men principal pulsando repetidamente el botn Volver hasta salir del componente que est ejecutando. languagechooser Muestra una lista de idiomas y sus variantes. El instalador mostrar los mensajes en el idioma elegido, a menos que la traduccin para este idioma no est completa. Los mensajes se muestran en ingls cuando la traduccin para stos no est completa. countrychooser Muestra una lista de pases. El usuario puede elegir el pas en donde vive. kbd-chooser Muestra una lista de teclados, de la cual el usuario elije el modelo que corresponda al suyo. hw-detect Detecta automticamente la mayora del hardware del sistema, incluyendo tarjetas de red, discos duros y PCMCIA. cdrom-detect Busca y monta un CD de instalacin de Debian. netcfg Congura las conexiones de red del ordenador de modo que ste pueda comunicarse a travs de Internet. iso-scan Busca sistemas de cheros ISO, que pueden estar en un CD-ROM o en el disco duro.

49

Captulo 6. Usando el instalador de Debian choose-mirror Presenta una lista de los servidores de rplica del archivo de Debian. El usuario puede elegir la fuente que se utilizar para sus paquetes de instalacin. cdrom-checker Verica la integridad de un CD-ROM. De esta forma el usuario puede asegurarse por s mismo que el CD-ROM de instalacin no est daado. lowmem Lowmem intenta detectar sistemas con poca memoria y entonces realiza varios trucos para eliminar partes innecesarias del debian-installer en la memoria (a costa de algunas caractersticas). anna Annas Not Nearly APT (Anna casi no es APT, N. del t.). Instala paquetes que han sido obtenidos del servidor espejo escogido o del CD-ROM. partman Permite al usuario particionar los discos conectados al sistema, crear sistemas de cheros en las particiones seleccionadas y aadirlos a los puntos de montaje. Incluye algunas caractersticas interesantes como son un modo totalmente automtico de particionado o el soporte de volmenes lgicos (LVM). Se trata de la herramienta de particionado recomendada para Debian. autopartkit Particiona automticamente todo el disco de acuerdo a unas preferencias de usuario predenidas. partitioner Permite al usuario particionar los discos conectados al sistema. Se elige un programa de particionado apropiado para la arquitectura de su ordenador. partconf Muestra una lista de particiones y crea sistemas de cheros en las particiones seleccionadas de acuerdo a las instrucciones del usuario. lvmcfg Ayuda al usuario con la conguracin del gestor de volmenes lgicos ( Logical Volume Manager LVM , N. del t.). mdcfg Permite al usuario congurar sistemas RAID (Redundant Array of Inexpensive Disks) por software. Este RAID por software habitualmente es mejor que los controladores baratos RAID IDE (pseudo hardware) que puede encontrar en placas base nuevas. base-installer Instala el conjunto de paquetes ms bsico que permitir que el ordenador opere con Linux cuando se reinicie.

50

Captulo 6. Usando el instalador de Debian os-prober Detecta los sistemas operativos instalados actualmente en el ordenador y entrega esta informacin a bootloader-installer. ste le ofrecer la posibilidad de aadir estos sistemas operativos al men de inicio del gestor de arranque. De esta manera el usuario podra fcilmente elegir qu sistema operativo iniciar en el momento de arrancar su sistema. bootloader-installer Instala un gestor de arranque en el disco duro. ste es necesario para que el ordenador arranque usando Linux sin usar un disco exible CD-ROM. Muchos gestores de arranque permiten al usuario elegir un sistema operativo alternativo cada vez que el ordenador se reinicia. base-cong Incluye preguntas para congurar los paquetes del sistema base de acuerdo a las preferencias del usuario. Esto se hace usualmente despus de reiniciar el ordenador, tratndose por tanto de la primera ejecucin en el nuevo sistema Debian. shell Permite al usuario ejecutar un intrprete de rdenes ya sea desde el men o desde la segunda consola. bugreporter Ofrece una forma para que el usuario pueda guardar informacin en un disco exible cuando se encuentre ante un problema. De esta forma puede informar despus, adecuadamente, sobre los problemas que ha tenido con el programa del instalador a los desarrolladores de Debian.

6.3. Usando componentes individuales


En esta seccin describiremos en detalle cada componente del instalador. Los componentes han sido agrupados en etapas que sern reconocibles por los usuarios. stos se presentan en el orden en el que aparecen durante la instalacin. Note que no todos los mdulos sern usados en cada instalacin; los mdulos que realmente son usados dependen del mtodo de instalacin que use y de su hardware.

6.3.1. Congurar el instalador de Debian y conguracin de hardware


Asumamos que el instalador de Debian ha arrancado y est visualizando su pantalla inicial. En este momento, las capacidades del debian-installer son todava algo limitadas. ste no conoce mucho sobre su hardware, idioma preferido, o incluso la tarea que deber realizar. No se preocupe. Porque debian-installer es bastante intuitivo, puede automticamente explorar su hardware, localizar el resto de sus componentes y autoactualizarse a un programa moderno y bien construido. Sin embargo, todava deber ayudar al debian-installer suministrndole la informacin que no puede determinar automticamente (como elegir su idioma preferido, el mapa del teclado o el servidor de rplica deseado). Notar que debian-installer realiza la deteccin de hardware varias veces durante esta etapa. La primera vez se enfoca especcamente en el hardware requerido para cargar los componentes del instalador (como su CD-ROM o tarjeta de red). En vista de que no todos los controladores podran estar disponibles en esta primera ejecucin, la deteccin de hardware necesita repetirse despus, durante el proceso.

51

Captulo 6. Usando el instalador de Debian

6.3.1.1. Comprobacin de la memoria disponible


Una de las primeras cosas que realiza debian-installer, es comprobar la memoria disponible. Si esta es reducida, este componente realizar algunos cambios en el sistema de instalacin que, con un poco de suerte, le permitirn instalar Debian GNU/Linux en su sistema. No todos los componentes estarn disponibles a lo largo de una instalacin con poca memoria. Una de las limitaciones que se encontrar es que no podr seleccionar el lenguaje en el que se har la instalacin (el lenguaje predeterminado ser el ingls).

6.3.1.2. Seleccin del idioma


El primer paso de la instalacin es la seleccin del idioma en el que quiera realizar sta. Los idiomas se muestran listando tanto el nombre de stos en ingls (a la izquierda) como en el propio idioma (a la derecha). Los nombres en la parte de la derecha se representan con su propia grafa. La lista est ordenada por los nombres en ingls. Se utilizar el idioma que escoja durante el resto del proceso de instalacin, siempre que exista una traduccin de los mensajes que se le muestren. El instalador mostrar un mensaje en ingls si no se dispone de una traduccin en el idioma que ha seleccionado. Tambin se utiliza el idioma que haya seleccionado para ayudarle en la seleccin de la conguracin de teclado ms adecuada para vd.

6.3.1.3. Seleccin del pas


Puede especicar aqu el pas si selecciona un idioma en Seccin 6.3.1.2 que pueda estar asociado a ms de un pas (lo que sucede con el chino, ingls, francs y muchos otros idiomas). Podr elegir de entre todos los pases, agrupados por continentes, si elige el ltimo elemento de la lista: Otro. Su seleccin se usar ms adelante en el proceso de instalacin para elegir la zona horaria y la rplica de Debian apropiada de acuerdo a su ubicacin geogrca. Si los valores mostrados por omisin en el instalador no son correctos podr escoger de entre otras opciones. El pas seleccionado, as como el idioma seleccionado, pueden afectar tambin a las opciones de localizacin de su nuevo sistema Debian.

6.3.1.4. Eleccin del teclado


Normalmente los teclados estn sujetos a los caracteres usados en un determinado idioma. Seleccione un teclado de acuerdo al modelo que use, o seleccione algo parecido a ste si no encuentra su modelo de teclado. Una vez que la instalacin haya nalizado, podr seleccionar un modelo de teclado de entre un rango ms amplio de opciones (ejecute kbdcong como superusuario cuando haya completado la instalacin). Mueva el cursor hacia la seleccin de teclado que desee y presione Enter. Utilice las teclas de direccionado para mover el cursor estn en el mismo lugar en todos los modelos nacionales de teclado, as que son independientes de la conguracin de teclado. Un teclado extendido es uno con las teclas F1 a F10 en la lnea superior.

6.3.1.5. Bsqueda de la imagen ISO del instalador de Debian


Al instalar usando el mtodo hd-media, habr un momento en el que se requiera localizar y montar la imagen ISO del Instalador de Debian para obtener el resto de los cheros de instalacin. El componente iso-scan hace exactamente esto.

52

Captulo 6. Usando el instalador de Debian En primer lugar, iso-scan monta automticamente todos los dispositivos de tipo bloque (p. ej. particiones) que tengan algn sistema de cheros conocido y busca secuencialmente cheros que terminen en .iso (o .ISO). Tenga en cuenta que en el primer intento slo se buscan cheros en el directorio raz y en el primer nivel de subdirectorios (esto es, puede localizar /loquesea.iso, /data/loquesea.iso, pero no /data/tmp/loquesea.iso). Despus de localizar una imagen ISO, iso-scan comprobar su contenido para determinar si la imagen es o no una imagen ISO de Debian vlida. Si es una imagen vlida se naliza la bsqueda, en caso contrario iso-scan busca otra imagen. En caso de que falle el intento anterior de encontrar la imagen ISO del instalador, iso-scan le preguntar si quiere realizar una bsqueda ms exhaustiva. Este paso no slo buscar en los directorios de primer nivel sino en todo el sistema de cheros. En el caso de que iso-scan no sea capaz de encontrar la imagen ISO del instalador, deber reiniciar, arrancar su sistema operativo original y comprobar que el nombre de la imagen es correcto (verique que termina en .iso), se encuentra en un lugar reconocible por debian-installer, y no es una imagen defectuosa (verique la suma de control). Los usuarios de Unix ms expertos pueden hacer esto sin reiniciar, utilizando para ello la segunda consola.

6.3.1.6. Conguracin de la red


En este paso, si el sistema detecta que tiene ms de un dispositivo de red, se le pedir que elija cual quiere usar como interfaz de red primaria, esto es, la que quiera usar para la instalacin. El resto de las interfaces no se congurarn en este momento. Podr congurar las dems interfaces una vez se haya terminado la instalacin; lea la pgina de manual interfaces(5).
debian-installer intenta congurar automticamente la tarjeta de red de su ordenador mediante

DHCP por omisin. Usted no tiene que hacer nada ms si la solicitud de DHCP tiene xito. Un fallo de esta solicitud puede deberse a muchos factores, variando desde un cable de red desconectado, hasta una mala conguracin del entorno DHCP. Puede que ni siquiera tenga un servidor DHCP en su red local. Compruebe los mensajes de error que se presentan en la tercera consola para obtener ms informacin. En cualquier caso, se le preguntar si quiere volver a intentarlo o si quiere realizar la conguracin manualmente. A veces los servidores DHCP tardan bastante en responder, vuelva a intentarlo si vd. cree que todo est congurado correctamente. La conguracin de red manual pregunta sucesivamente datos acerca de la red, principalmente:
direccin IP, mscara de red, pasarela, direcciones de los servidores de nombres, y el nombre de la mquina. Adems, si tiene una interfaz de red inalmbrica, se le pedir que proporcione el ESSID inalmbrico y la clave WEP. Rellene las respuestas con la

informacin de Seccin 3.3.


Nota: A continuacin se indican algunos detalles tcnicos que posiblemente encuentre tiles (o no): el programa asume que la direccin IP de la red es el resultado de aplicar la operacin AND a nivel de bit a la direccin IP de su sistema y a su mscara de red. Obtendr la direccin de broadcast a travs de una operacin OR a nivel de bit de la direccin IP de su sistema con el valor negado a nivel de bit de la mscara de red. Tambin intentar adivinar su pasarela. Debera utilizar las sugerencias del programa si no sabe las respuestas a algunas de las preguntas que se le presenten. Si es necesario, podr cambiar estos valores una vez est instalado el sistema editando /etc/network/interfaces. Tambin puede instalar etherconf, un programa que le guiar en la conguracin de su red.

53

Captulo 6. Usando el instalador de Debian

6.3.2. Particionado y eleccin de punto de montaje


En este momento, despus de que ha sido ejecutada la deteccin de hardware por ltima vez, debian-installer deber estar en su total capacidad, adaptado para las necesidades del usuario y listo para realizar el verdadero trabajo. Como lo indica el ttulo de esta seccin, la tarea principal de los prximos componentes radica en particionar sus discos, crear sistemas de cheros, asignar puntos de montaje y opcionalmente congurar temas estrechamente relacionados como LVM o dispositivos RAID.

6.3.2.1. Particionando sus discos


Es hora de particionar sus discos. Si no se siente a gusto particionando, o simplemente quiere conocer ms detalles, lea el Apndice B. Primero se le dar la oportunidad de particionar automticamente todo el disco. A esto tambin se le llama particionado guiado. Si no quiere autoparticionar, elija Editar manualmente la tabla de particiones en el men. Si elije el particionado guiado, podr elegir entre los distintos esquemas que se muestran en la tabla siguiente. Todos los esquemas tienen sus pros y sus contras, algunos de stos se discuten en Apndice B. Si no est seguro, escoja el primero. Tenga en mente, que el particionado guiado necesita un cierto espacio libre mnimo para operar. Si no le asigna al menos un 1 GB de espacio (depende del esquema seleccionado), el particionado guiado fallar. Esquema de particionado Todos los cheros en una particin Ordenador de escritorio Estacin de trabajo multiusuario Espacio mnimo 600 MB 500 MB 1 GB Particiones creadas
/, intercambio /, /home, intercambio /, /home, /usr, /var, /tmp, intercambio

Despus de seleccionar un esquema, la siguiente pantalla le mostrar la nueva tabla de particiones, incluyendo a qu particiones se dar formato, cmo, y dnde se montarn. La lista de particiones podra ser como la siguiente:
IDE1 master (hda) - 6.4 GB WDC AC36400L #1 primary 16.4 MB ext2 /boot #2 primary 551.0 MB swap swap #3 primary 5.8 GB ntfs pri/log 8.2 MB ESPACIO LIBRE IDE1 slave (hdb) - 80.0 GB ST380021A #1 primary 15.9 MB ext3 #2 primary 996.0 MB fat16 #3 primary 3.9 GB xfs #5 logical 6.0 GB ext3 #6 logical 1.0 GB ext3 #7 logical 498.8 GB ext3 #8 logical 551.5 GB swap #9 logical 65.8 GB ext2

/home / /var swap

Este ejemplo muestra dos discos duros IDE divididos en diversas particiones, el primer disco tiene algo de espacio libre. Cada lnea de particin est conformada por el nmero de particin, su tipo, tamao, banderas opcionales, sistema de cheros y punto de montaje (si fuese el caso).

54

Captulo 6. Usando el instalador de Debian Esto naliza con el particionado guiado. Si est satisfecho con la tabla de particiones generada, puede elegir Finalizar el particionado y escribir los cambios en el disco desde el men para implementar la nueva tabla de particiones (como se describe al nal de esta seccin). Si no le gusta, puede elegir Deshacer los cambios realizados a las particiones, para ejecutar nuevamente el particionado guiado o modicar los cambios propuestos de forma manual tal y como se describe a continuacin. Una pantalla similar a la mostrada anteriormente se mostrar si elige particionar manualmente excepto que se mostrar su particin actual sin los puntos de montaje. Cmo congurar manualmente sus particiones y el uso de stas en su sistema Debian nuevo se explican al nal de esta seccin. Si elige un disco nuevo que no tiene ni particiones o espacio libre en l, se le podra ofrecer a crear una nueva tabla de particiones (esto es necesario para que pueda crear nuevas particiones). Despus de esto una nueva lnea titulada ESPACIO LIBRE deber aparecer bajo el disco seleccionado. Si elije el espacio libre, se le ofrecer crear nuevas particiones. Tendr que responder rpidamente un conjunto de preguntas sobre su tamao, tipo (primaria o lgica) y ubicacin (al inicio o nal del espacio libre). Despus de esto, se le presentar una perspectiva detallada sobre su nueva particin. Existen opciones como punto de montaje, opciones de montaje, bandera arrancable o tipo de uso. Si no le gustan las opciones predeterminadas, no dude en cambiarlas a su gusto. Por ejemplo, si selecciona la opcin Usar como:, puede elegir un sistema de cheros distinto para esta particin, incluyendo la posibilidad de usar la particin como intercambio, RAID por software, LVM, o simplemente no usarla. Otra caracterstica interesante es la posibilidad de copiar datos desde una particin existente a sta. Cuando est satisfecho con su nueva particin, elija Se ha terminado de denir la particin y regresar a la pantalla principal de partman. Si decide que desea cambiar algo en su particin, simplemente elija la particin, lo cual le conducir al men de conguracin de la particin. Debido a que es la misma pantalla que cuando crea la particin, puede cambiar el mismo conjunto de opciones. Algo que podra no ser muy obvio a primera impresin, es que puede redimensionar el tamao de la particin seleccionando el elemento que muestra el tamao de sta. Los sistemas de cheros que se conoce que funcionan con esta opcin son por lo menos fat16, fat32, ext2, ext3 y swap. Este men tambin le permite eliminar una particin. Asegrese de crear al menos dos particiones: una para el sistema de cheros raz (que debe montarse en /) y otra para el espacio de intercambio. Si olvida montar el sistema de cheros raz, partman no le dejar continuar hasta que corrija esto. Se pueden extender las capacidades de partman con mdulos para el instalador, pero dependen de la arquitectura de su sistema. As que si no estn disponibles todas las funcionalidades que esperaba, compruebe que ha cargado todos los mdulos necesarios (p. ej. partman-ext3, partman-xfs, o partman-lvm). Cuando est satisfecho con el particionado, seleccione Finalizar el particionado y escribir los cambios en el disco del men de particionado. Se le presentar un resumen de los cambios realizados en los discos y se le pedir conrmacin para crear los sistemas de cheros solicitados.

6.3.2.2. Conguracin del gestor de volmenes lgicos (LVM)


Si trabaja con ordenadores como administrador del sistema o usuario avanzado, seguro que se ha visto en alguna situacin en la que alguna particin del disco (normalmente la ms importante) tena poco espacio, mientras que otras particiones tenan mucho espacio libre malgastado, y ha tenido que solucionarlo moviendo cosas de un lado para otro, realizando enlaces simblicos, etc. Para evitar sta situacin puede usar el gestor de volmenes lgicos (Logical Volume Manager LVM , N. del T.). Una descripcin sencilla de LVM es que con l puede combinar sus particiones (volmenes fsicos en jerga LVM) para formar un disco virtual (llamado grupo de volmenes), que

55

Captulo 6. Usando el instalador de Debian puede dividirse en particiones virtuales (volmenes lgicos). Los volmenes lgicos (y por supuesto, los grupos de volmenes que hay debajo) pueden extenderse a lo largo de varios discos. En esta situacin, cuando detecte que necesita ms espacio para su vieja particin /home de 160 GB, simplemente puede aadir un nuevo disco de 300 GB al ordenador, unirlo al grupo de volmenes existente, y entonces redimensionar el volumen lgico que sostiene su sistema de cheros /home y presto!, sus usuarios vuelven a tener espacio en su nueva particin de 460 GB. Por supuesto, este ejemplo est muy simplicado. Si an no lo ha ledo, debera consultar el CMO LVM (http://www.tldp.org/HOWTO/LVM-HOWTO.html). La conguracin LVM con el debian-installer es bastante sencilla. Primero, tiene que marcar las particiones que va a usar con volmenes fsicos para el LVM. Esto se hace con partman en el men Conguracin de la particin: donde puede seleccionar Utilizar como:volumen fsico para LVM. A continuacin, ejecute el mdulo lvmcfg (o bien directamente con partman o desde el men principal del debian-installer) y combine los volmenes fsicos en un grupo o grupos de volmenes debajo del men Modicar los grupos de volumen (VG). Despus de esto, debe crear volmenes lgicos encima de los grupos de volmenes desde el men Modicar los volmenes lgicos (LV). Despus de volver de lvmcfg a partman, ver los volmenes lgicos como si fuesen particiones ordinarias (y debe tratarlas como tales).

6.3.2.3. Conguracin de dispositivos multidisco (RAID)


Si tiene ms de un disco duro1 en su ordenador, con mdcfg puede congurar sus discos para un mayor rendimiento y/o una mayor seguridad de los datos. El resultado se denomina Dispositivo multidisco (o como su variante ms conocida RAID). Bsicamente el metadispositivo es un grupo de particiones de distintos discos combinadas para formar un dispositivo lgico. Este dispositivo puede usarse como una particin ordinaria (p.ej. puede darle formato con partman, asignarle un punto de montaje, etc.). El benecio obtenido depende del tipo de MD creado. Actualmente los tipos soportados son: RAID 0 Su principal objetivo es el rendimiento. RAID 0 divide todos los datos de entrada en franjas y los distribuye igualmente por cada disco en el sistema RAID. Esto puede aumentar la velocidad de las operaciones de lectura/escritura, pero cuando falle un disco, perder todo (parte de la informacin todava est en el disco o discos que funcionan, la otra parte estaba en el disco que fall). Es tpico el uso de RAID 0 en una particin para edicin de vdeo. RAID 1 Es adecuado para los casos en los que la seguridad sea lo primordial. Consiste en varias (normalmente dos) particiones del mismo tamao donde cada particin contiene exactamente los mismos datos. Esto signica tres cosas. Primero, si un disco falla, todava tiene una copia de los datos en los discos restantes. Segundo, slo puede usar una fraccin de la capacidad disponible (con ms precisin, el tamao de la particin ms pequea del sistema RAID). Tercero, la carga producida por la lectura de cheros se reparte entre los discos, lo que puede ampliar el rendimiento de algunos servidores, como los servidores de cheros, que tienden a tener ms carga de lecturas que escrituras.
1. Siendo honestos, puede construir un MD (Metadispositivo) incluso con particiones de un mismo disco fsico, pero no tiene ninguna ventaja.

56

Captulo 6. Usando el instalador de Debian Opcionalmente puede tener un disco de reserva en el sistema que tomar el lugar del disco defectuoso en caso de fallo. RAID 5 Es una buena eleccin entre velocidad, conabilidad y redundancia de datos. RAID 5 divide todos los datos de entrada en tipos y los distribuye igualmente en todos los discos (similar a RAID 0), a excepcin de uno. A diferencia de RAID 0, RAID 5 tambin calcula la informacin de paridad, la cual se escribe en el disco restante. El disco de paridad no es esttico (esto sera RAID 4), sino que cambia peridicamente, de modo que la informacin de paridad se distribuye entre todos los discos. Cuando falla uno de los discos, la parte faltante de la informacin puede reconstruirse desde la informacin existente y su paridad. Debe utilizar al menos tres particiones activas para un sistema RAID 5. Opcionalmente, puede tener un disco de reserva, el cual se utilizar en lugar del primer disco que falle dentro del array. Como puede ver, RAID 5 tiene un grado similar de conabilidad a RAID 1 logrando menos redundancia. Por otro lado podra ser un poco ms lento en operaciones de escritura que RAID 0 debido al clculo de la informacin de paridad. Resumiendo: Tipo Dispositivos mnimos 2 Dispositivo de reserva no Soporta el fallo de un disco? no Espacio disponible Tamao de la menor particin multiplicado por el nmero de dispositivos en el sistema RAID. Tamao de la menor particin en el sistema RAID. Tamao de la particin ms pequea multiplicada por el nmero de dispositivos en RAID menos uno.

RAID 0

RAID 1

opcional

RAID 5

opcional

Si quiere saberlo todo acerca de RAID, consulte (http://www.tldp.org/HOWTO/Software-RAID-HOWTO.html).

el

CMO

de

RAID

Para crear un dispositivo MD necesita marcar todas las particiones que desea utilizar para su uso con RAID (puede hacerlo con partman en el men Conguracin de la particin donde debera seleccionar Utilizar como:volumen fsico para RAID).

Aviso
El soporte para MD es una caracterstica relativamente nueva del instalador. Puede que experimente

57

Captulo 6. Usando el instalador de Debian


algn problema para algunos niveles RAID en combinacin con algunos gestores de arranque si intenta usar MD para el sistema de cheros raz (/). Es posible que los usuarios experimentados puedan solucionar estos problemas ejecutando algn paso de conguracin o instalacin manualmente desde una shell.

A continuacin, debe elegir Congurar RAID software desde el men principal de partman. En la primera pantalla de mdcfg simplemente seleccione Crear un dispositivo MD. Se le presentar una lista de tipos de MD soportados, de los que debe elegir uno (p. ej. RAID 1). Los siguientes pasos dependen del tipo de MD seleccionado.

RAID0 es simple se le presentar una lista de particiones RAID disponibles y nicamente tendr que seleccionar las particiones que formarn el MD. RAID 1 es un poco ms complejo. Primero, se le preguntar el nmero de dispositivos activos y el nmero de dispositivos de reserva que formarn el MD. A continuacin, necesita seleccionar de la lista de particiones RAID disponibles las que estarn activas y las que quedarn en reserva. El total de las particiones seleccionadas debe ser igual al que se dio unos segundos antes. No se preocupe. Si comete algn error y selecciona un nmero distinto de particiones, debian-installer no le dejar continuar hasta que solucione el problema. RAID5 tiene un procedimiento de conguracin similar al de RAID1, con la excepcin que necesita usar por lo menos tres particiones activas.

Es perfectamente posible tener varios tipos de MD a la vez. Por ejemplo, si tiene tres discos duros de 200 GB dedicados para el MD, cada uno con dos particiones de 100 GB, puede combinar la primera particin de los tres discos en un RAID 0 (una particin rpida de 300 GB para edicin de vdeo) y usar las otras tres (2 activas, 1 de reserva) en un RAID 1 (una particin bastante segura de 100 GB para /home). Despus de congurar los MD a su gusto, elija Terminar en mdcfg para volver a partman y crear los sistemas de cheros en sus nuevos MD y asignarles los atributos habituales, como los puntos de montaje.

6.3.3. Instalar el sistema base


Aunque esta etapa es la menos problemtica, consume la mayor parte del tiempo de instalacin debido a que descarga, verica y desempaqueta el sistema base completo. Si tiene un ordenador o conexin de red lentos, esto podra tomar algn tiempo.

6.3.3.1. Instalacin del sistema base


Durante la instalacin del sistema base, los mensajes de desempaquetado y conguracin de los paquetes se redirigen a tty3. Puede acceder a este terminal presionando Alt izquierdo-F3; y volver al proceso principal del instalador con Alt izquierdo-F1. En caso de que la instalacin se realice a travs de una consola serie los mensajes de desempaquetado y conguracin generados por la instalacin del sistema base se guardan en /var/log/messages. Se instalar un ncleo de Linux como parte de la instalacin. En la prioridad predeterminada, el instalador elegir por usted el que mejor se adapte a su hardware. En los modos de menor prioridad, podr elegir uno entre una lista de ncleos disponibles.

58

Captulo 6. Usando el instalador de Debian

6.3.4. Hacer su sistema arrancable


Si est instalando una estacin de trabajo sin disco, obviamente, arrancar desde el disco local no es una opcin signicativa, de modo que esta etapa se saltar. Note que el arrancar mltiples sistemas operativos en una misma mquina todava es un arte oscuro. ste documento no intenta documentar los diferentes gestores de arranque, que varan por arquitectura e incluso por subarquitectura. Deber consultar la documentacin de su gestor de arranque para ms detalles.

6.3.4.1. Deteccin de otros sistemas operativos


El instalador intentar encontrar otros sistemas operativos instalados en la mquina antes de instalar un gestor de arranque. Se le informar al respecto en el paso de instalacin del gestor de arranque, si se encuentra un sistema operativo que est soportado. Tambin, se congurar al ordenador para que arranque este sistema operativo adems de Debian. Tenga en cuenta que el arranque de ms de un sistema operativo en la misma mquina es an una especie de magia negra. El soporte automtico para detectar y congurar los gestores de arranque de forma que puedan arrancar otros sistemas operativos vara con la arquitectura, e incluso con las distintas variantes de la arquitectura. Si no funciona en su caso debera consultar la documentacin de su gestor de arranque para obtener ms informacin.
Nota: El instalador puede no ser capaz de detectar correctamente otros sistemas operativos si la particin en la que se encuentran est montada mientras se realiza la deteccin. Esto puede ocurrir si selecciona un punto de montaje (p.ej. /win) para una particin que contenga otro sistema operativo en partman, o si ha montado la particin manualmente desde la consola.

6.3.4.2. Instalacin del gestor de arranque Grub en un disco duro


Grub es el principal gestor de arranque para i386. Grub es un gestor de arranque exible y robusto y una buena opcin predeterminada tanto para los usuarios principiantes como para los veteranos. De forma predeterminada, grub se instalar en el registro maestro de arranque (MBR), donde tendr todo el control del proceso de arranque. Tambin puede instalarlo en algn otro lugar si lo preere. Consulte el manual de grub para ms informacin. Si no quiere instalar grub, use el botn de vuelta atrs para regresar al men principal, y desde ah seleccione el gestor de arranque que quiere usar.

6.3.4.3. Instalacin del gestor de arranque LILO en un disco duro


El segundo gestor de arranque para i386 es LILO. Es un programa antiguo y complejo que ofrece muchas funcionalidades, incluyendo la gestin de arranque de los sistemas operativos MS-DOS, NT y OS/2. Por favor, lea cuidadosamente las instrucciones en el directorio /usr/share/doc/lilo/ si tiene necesidades especiales. Tambin debera consultar el Mini-CMO de LILO (http://www.tldp.org/HOWTO/LILO.html).
Nota: Actualmente la instalacin de LILO slo crear entradas en el men para los sistemas operativos que puedan arrancarse de forma encadenada (chainloaded ). Esto signica que puede necesitar aadir manualmente una entrada en el men para sistemas operativos como GNU/Linux y GNU/Hurd despus de la instalacin.

59

Captulo 6. Usando el instalador de Debian

debian-installer le da a escoger entre tres opciones para instalar el gestor de arranque LILO:

Registro maestro de arranque (Master Boot Record o MBR, N. del t.) De este modo LILO tendr todo el control del proceso de arranque. Nueva particin de Debian Escoja esta opcin si quiere usar otro gestor de arranque. Se instalar LILO al principio de la nueva particin de Debian y har las veces de gestor de arranque secundario. Otra opcin Esta opcin es til para usuarios avanzados que quieran instalar LILO en otro lugar. En ese caso se le preguntar el lugar deseado. Puede usar nombres de tipo devfs, como los que empiezan con /dev/ide, /dev/scsi, y /dev/discs, as como nombres tradicionales, como /dev/hda o /dev/sda.

Si despus de este paso no puede volver a arrancar Windows 9x (o DOS), necesitar usar un disco de arranque de Windows 9x (MS-DOS) y usar la orden fdisk /mbr para reinstalar el registro maestro de arranque. Esto signica, sin embargo, qu tendr que usar otro mtodo para volver a arrancar Debian! Para obtener ms informacin sobre cmo hacer sto consulte Seccin 8.3.

6.3.4.4. Continuar sin gestor de arranque


Esta opcin se usa para nalizar la instalacin, incluso cuando no se instale un gestor de arranque, bien porque la arquitectura o subarquitectura no disponga de uno o bien porque no es necesario (p. ej. cuando vaya a usar un gestor de arranque que ya exista en el sistema). Si planea congurar manualmente su gestor de arranque, deber vericar el nombre del ncleo instalado en /target/boot. Tambin deber vericar la presencia de un chero initrd en este directorio; probablemente deba indicar al gestor de arranque que lo utilice si existe. Necesitar tambin conocer, como informacin adicional, el disco y particin que ha elegido para su sistema de cheros / (raz) y tambin su sistema de cheros /boot, si elige instalar /boot en una particin separada.

6.3.5. Finalizar la primera etapa


Estas son las ltimas cosas a hacer antes de reiniciar su nuevo sistema Debian. En su mayora consiste en ordenar despus del debian-installer.

6.3.5.1. Terminar la instalacin y reiniciar


ste es el ltimo paso en el proceso de instalacin inicial de Debian. Se le pedir que extraiga el medio de arranque (CD, disquete, etc.) que us para arrancar el instalador. El instalador realizar algunas tareas nales y entonces reiniciar cargando su nuevo sistema Debian.

60

Captulo 6. Usando el instalador de Debian

6.3.6. Miscelnea
Los componentes listados en esta seccin usualmente no estn involucrados en el proceso de instalacin, pero estn esperando en el segundo plano para ayudar al usuario en caso de que algo falle.

6.3.6.1. Guardado de los registros de instalacin


Si la instalacin es satisfactoria, los cheros creados durante el proceso de instalacin se guardarn automticamente en el directorio /var/log/debian-installer/ de su nuevo sistema. Si escoge la opcin Grabar logs de depuracin en el men principal podr guardar los registros en un disquete . Esto puede ser til si se encuentra con problemas crticos durante la instalacin y quiere estudiar los registros en otro sistema, o adjuntarlos en un informe de instalacin.

6.3.6.2. Uso del intrprete de rdenes y consulta de registros


Hay una opcin en el men denominada Ejecutar un intrprete de rdenes (shell, N. del t.). Si la opcin no est disponible cuando desee utilizar el intrprete, presione Alt izquierdo-F2 (en un teclado Mac, Opcin-F2) para cambiar a la segunda consola virtual. Esto es, la tecla Alt a la izquierda de la barra espaciadora, y al mismo tiempo la tecla de funcin F2. Esta consola es una ventana aparte que ejecuta un clon del intrprete de rdenes Bourne llamado ash. En este punto de la instalacin ha arrancado desde un disco que utiliza la memoria RAM, y, consecuentemente, slo dispone de un nmero limitado de utilidades Unix. Puede ver los programas disponibles con la orden ls /bin /sbin /usr/bin /usr/sbin y tambin si escribe help. El editor de textos es nano. El intrprete tiene algunas caractersticas que le pueden ser tiles como una funcin para completar rdenes y un histrico. El intrprete de rdenes y los programas se proporcionan para situaciones en las que no funcione correctamente el instalador, le aconsejamos que haga uso de los mens para realizar cualquier tarea que pueda realizar con ellos. En particular, siempre debe usar los mens y no el intrprete para activar la particin de intercambio, ya que el programa de mens no detectar que lo ha efectuado si lo hace desde el intrprete. Puede volver a los mens pulsando Alt izquierdo-F1 o, si us la opcin del men para abrir el intrprete de rdenes, escribiendo exit.

6.3.6.3. Instalacin a travs de la red


Uno de los componentes ms interesantes es network-console. ste le permite hacer una gran parte de la instalacin a travs de la red mediante SSH. El uso de la red implica que tiene que llevar a cabo los primeros pasos de la instalacin a travs de la consola al menos hasta llegar al punto en el que se congura la red (aunque puede automatizar esta parte con Seccin 4.7). Este componente no aparece en el men de la instalacin por omisin, por lo que tiene que pedirlo explcitamente. En el caso de que est instalando desde CD debe arrancar jando la prioridad a media o llamar al men de instalacin y seleccionar Cargar componentes del instalador desde CD y seleccionar de la lista de componentes network-console: Continuar la instalacin de forma remota utilizando SSH. Si el componente se carga correctamente ver una nueva entrada de men llamada Continuar la instalacin de forma remota utilizando SSH. Despus de seleccionar esta nueva entrada se le preguntar la contrasea a utilizar para conectarse con el sistema de instalacin, y se conrmar esta nueva contrasea. Eso es todo lo que necesita. Ahora debera poder ver una pantalla que le indica que debe conectarse de forma remota con el identicador de usuario installer y la contrasea que introdujo. Un detalle importante a destacar es

61

Captulo 6. Usando el instalador de Debian que se le indicar tambin la huella digital del sistema que est instalando. Tiene que transferir esta huella de forma segura a la persona que continuar con la instalacin remota. Siempre puede pulsar Enter para continuar con la instalacin local si lo desea. Si lo hace se le mostrar el men principal y podr elegir otro componente. En el otro extremo de la comunicacin, como prerequisito, deber conguar su terminal para que utilice codicacin UTF-8, porque es la que utiliza el sistema de instalacin. Si no lo hace podr hacer la instalacin pero puede que vea caracteres extraos en la pantalla, como puedan ser bordes de cuadro de dilogo rotos o caracteres no americanos ilegibles. Para conectarse al sistema de instalacin remoto slo tiene que escribir:
$ ssh -l installer sistema_a_instalar

donde sistema_a_instalar es o bien el nombre o bien la direccin IP del equipo que est instalando. Antes de conectarse se le mostrar la huella digital del sistema remoto y deber conrmar que es la correcta.
Nota: Si instala muchos sistemas de forma consecutiva y, por casualidad, comparten la direccin IP o nombre de equipo, puede tener problemas para conectarse a stos porque ssh se negar a conectarse a ellos, ya que cada sistema tiene una huella digital distinta, lo que para ssh es indicativo de un posible ataque de suplantacin. Si est seguro de que no se trata de ningn ataque deber eliminar la lnea del equipo en cuestin del chero ~/.ssh/known_hosts y volver a intentarlo.

Despus de acceder al sistema se le mostrar una pantalla de instalacin inicial donde tendr dos posibilidades: Arrancar men y Arrancar consola. La primera de estas opciones le llevar al men de instalacin, donde podr seguir con la instalacin como lo hace habitualmente. La segunda de estas opciones ejecuta un intrprete de lnea de rdenes desde el que puede examinar, y quizs arreglar, el sistema remoto. Slo debera arrancar una sesin de SSH para el men de instalacin, aunque puede tener tantas sesiones como quiera con consolas remotas.

Aviso
Una vez ha arrancado la instalacin por SSH de forma remota no debera volver a la sesin de instalacin que se est ejecutando en la consola local. Si lo hace, podra corromper la base de datos que guarda la conguracin del nuevo sistema, al realizar accesos simultneos a ella. Esto podra llevar a que la instalacin fallara o a que tuviera problemas con el sistema que ha instalado. Adems, si est ejecutando la sesin SSH desde un terminal de X no debera cambiar el tamao de la ventana, ya que esto hara que se desconectara la sesin.

6.3.6.4. Ejecucin de base-cong desde el debian-installer


Es posible congurar el sistema base en la primera etapa del instalador (antes de reiniciar desde el disco duro), ejecutando base-cong en un entorno chroot. Esto slo es realmente til para probar el instalador y habitualmente se debera evitar.

62

Captulo 7. Arrancando su nuevo sistema Debian


7.1. El momento de la verdad
El primer arranque autnomo de su sistema es lo que los ingenieros elctricos llaman la prueba de humo. Si est arrancando directamente en Debian y el sistema no inicia, debe usar o bien el medio original de instalacin o insertar el disquete de arranque a medida, si tiene uno, y reiniciar su sistema. Es posible que, en su caso, tenga que introducir algunos argumentos adicionales al arranque como root=root, donde root es su particin raz, como por ejemplo /dev/sda1.

7.2. Conguracin (bsica) de Debian despus del arranque


Una vez haya arrancado, tendr que completar la conguracin de su sistema base, y luego elegir los paquetes adicionales que desea instalar. La aplicacin que le gua en este proceso se llama base-config. Su formato es muy similar al de debian-installer desde la primera etapa. De hecho, base-config est constituido por un nmero de componentes especializados, donde cada componente gestiona una tarea de conguracin, contiene un men oculto en el segundo plano y tambin usa el mismo sistema de navegacin. Si desea volver a ejecutar base-config en cualquier momento despus de nalizada la instalacin, ejecute como superusuario la orden base-config.

7.2.1. Conguracin de su zona horaria


Se le pedir congurar su zona horaria despus de mostrarle la pantalla de bienvenida. Primero debe elegir si el reloj de hardware de su sistema est congurado a la hora local o a la hora del Meridiano de Greenwich (Greenwich Mean Time, GMT UTC). La hora mostrada en el dilogo le ayudar a elegir la opcin correcta. Los sistemas que (tambin) ejecutan DOS o Windows usualmente estn congurados a la hora local. Elija hora local en lugar de GMT si desea tener arranque dual. A continuacin se le mostrar solamente una zona horaria o bien una lista de zonas horarias que sean relevantes, dependiendo de la ubicacin elegida al inicio del proceso de instalacin. Si se le muestra slo una opcin puede seleccionar la zona horaria mostrada seleccionando S para conrmarla. Puede seleccionar No para elegir su zona de la lista completa de zonas horarias. Si se le muestra una lista, deber elegir su zona horaria de entre los valores mostrados o elegir Otra para seleccionar su zona de la lista completa.

7.2.2. Conguracin de usuarios y contraseas


7.2.2.1. Conguracin de la contrasea del superusuario
La cuenta root tambin se conoce como superusuario. Se trata de un usuario que se salta todas las

63

Captulo 7. Arrancando su nuevo sistema Debian protecciones de seguridad en su sistema. La cuenta del superusuario slo debe ser usada para tareas de administracin del sistema y slo durante el menor tiempo posible. Cualquier contrasea que cree deber contener por lo menos seis caracteres y utilizar caracteres en maysculas y minsculas, as como caracteres de puntuacin. Al tratarse de un usuario con privilegios especiales debe tener mucho cuidado cuando dena la contrasea del superusuario. Evite la utilizacin de palabras de diccionario de cualquier tipo de informacin personal que pueda adivinar fcilmente. Sea extremadamente precavido si cualquier persona le dice que necesita su contrasea de superusuario. Normalmente no debera proporcionar la contrasea de superusuario a ninguna persona, a no ser que la mquina la est administrando ms de un administrador.

7.2.2.2. Creacin de un usuario corriente


Aqu el sistema le preguntar si desea crear una cuenta de usuario corriente. Este usuario debera ser la cuenta con la que usted accede usualmente al sistema. No debe usar la cuenta del superusuario para uso diario o como su usuario personal. Usted se podr preguntar Por qu no?. Una de las razones justicadas para evitar el uso de la cuenta de superusuario es que es muy fcil daar al sistema de forma irreparable con esta cuenta por error. Tambin, podran engaarle y hacerle ejecutar un caballo de troya (o troyano), es decir, un programa que hace uso de la ventaja que suponen los poderes especiales en el sistema del superusuario para comprometer la seguridad de ste sin que usted se d cuenta. Un buen libro sobre administracin de sistemas Unix cubrir este tema con ms detalle, debera considerar leer sobre este problema si este tema es algo nuevo para usted. Se le preguntar en primer lugar por el nombre completo del usuario. A continuacin se le pedir un nombre para la cuenta de este usuario; generalmente es suciente con el nombre o algo similar. De hecho, el valor predeterminado ser ste. Finalmente, se le pedir la contrasea de acceso para esta cuenta. Puede utilizar la orden adduser para crear otra cuenta en cualquier momento una vez haya terminado la instalacin.

7.2.3. Conguracin de PPP


Se le preguntar si desea instalar el resto del sistema usando PPP si no se ha congurado la red durante la primera fase de la instalacin. PPP es un protocolo usado para establecer conexiones telefnicas usando mdems. El sistema de instalacin podr descargar paquetes adicionales o actualizaciones de seguridad desde Internet durante las siguientes fases de la instalacin si congura el mdem en este momento. Puede obviar este paso si no tiene un mdem en su ordenador o si preere congurarlo despus de la instalacin. Necesitar algunos datos de su proveedor de acceso a Internet (en adelante, ISP, Internet Service Provider) para congurar su conexin PPP. Estos datos son: un nmero de telfono al que llamar, un nombre de usuario, una clave y los servidores DNS (opcionalmente). Algunos ISPs ofrecen guas de instalacin para distribuciones Linux. Puede usar esta informacin incluso si no est especcamente orientada a Debian, puesto que la gran mayora de parmetros de conguracin (y software) son similares entre las distintas distribuciones de Linux. Se ejecutar un programa llamado pppcong si elije congurar PPP en este momento. Este programa le ayudar a congurar su conexin PPP. Asegrese de utilizar provider (del ingls, proveedor, no debe traducirlo) como nombre de su conexin de acceso telefnico cuando se le solicite.

64

Captulo 7. Arrancando su nuevo sistema Debian Con un poco de suerte, el programa pppcong le guiar a travs de una conguracin de PPP libre de problemas. Sin embargo, si esto no funciona para su caso, puede consultar a continuacin algunas instrucciones detalladas de la instalacin. Para congurar PPP, necesitar saber realizar las operaciones bsicas de edicin y visualizacin de cheros en GNU/Linux. Para ver cheros, deber usar more, y zmore, en el caso de cheros comprimidos con extensin .gz. Por ejemplo, para ver README.debian.gz, escriba zmore README.Debian.gz. El sistema base dispone de un editor llamado nano, que es muy simple de usar pero que no tiene muchas caractersticas. Es posible que desee instalar despus editores y visores con ms funcionalidades, como puedan ser jed, nvi, less y emacs. Debe editar el chero /etc/ppp/peers/provider y sustituir /dev/modem por /dev/ttyS# , donde # es el nmero de su puerto serie. En Linux, los puertos serie se numeran desde el cero. Para Linux el primer puerto serie (es decir, COM1) es /dev/ttyS0. El siguiente paso es editar /etc/chatscripts/provider e insertar el nmero telefnico de su proveedor, su nombre de usuario y clave. Por favor, no elimine el carcter \q que precede a la clave, evita que la clave aparezca en los cheros de registro. Muchos proveedores usan PAP CHAP para la secuencia de autenticacin de acceso en modo texto. Otros usan ambos. Deber seguir un procedimiento distinto en funcin de que su proveedor utilice PAP CHAP. Comente todo lo que hay despus de la cadena de marcado (la que empieza con ATDT) en /etc/chatscripts/provider, modique /etc/ppp/peers/provider como se ha descrito anteriormente, y aada user nombre donde nombre es su nombre de usuario para el proveedor al va a conectarse. A continuacin, edite /etc/ppp/pap-secrets o /etc/ppp/chap-secrets y ponga all su clave de acceso. Tambin deber editar /etc/resolv.conf y aadir las direcciones IP de los servidores de nombres (DNS) de su proveedor. El formato de las lneas de /etc/resolv.conf es el siguiente: nameserver xxx.xxx.xxx.xxx donde las x s son los nmeros de la direccin IP. Opcionalmente, puede aadir la opcin usepeerdns al chero /etc/ppp/peers/provider, el cual habilitar la eleccin automtica de los servidores DNS apropiados, usando la conguracin que generalmente proporcionar el sistema remoto. Vd. habr terminado, a menos de que su proveedor tenga una secuencia de acceso diferente de la mayora de ISPs. Inicie la conexin PPP escribiendo pon como superusuario, y supervise el proceso de conexin usando plog. Para desconectarse, use poff que deber ejecutar, de nuevo, como superusuario. Consulte el chero /usr/share/doc/ppp/README.Debian.gz para leer ms informacin sobre el uso de PPP en Debian. Para congurar conexiones estticas SLIP, necesitar aadir la orden slattach (del paquete net-tools) en /etc/init.d/network. Para congurar las conexiones SLIP dinmicas tendr que tener instalado el paquete gnudip.

7.2.3.1. Conguracin de PPP a travs de Ethernet (PPPOE)


PPPOE es un protocolo relacionado con PPP que se utiliza en algunas conexiones de banda ancha. Actualmente no existe soporte de base para asistirle en su conguracin. Sin embargo, el software necesario est instalado, lo que signica que puede congurar PPPOE manualmente en este momento de la instalacin si cambia a VT2 (segunda consola virtual) y ejecuta la orden pppoeconf.

65

Captulo 7. Arrancando su nuevo sistema Debian

7.2.4. Conguracin de APT


El mtodo principal de instalacin de paquetes en un sistema es el uso de un programa llamado apt-get, que pertenece al paquete apt.1 Otras interfaces de la gestin de paquetes, como aptitude, synaptic y el viejo dselect tambin hacen uso y dependen de apt-get. A los usuarios nveles se les recomienda stas interfaces puesto que integran algunas caractersticas adicionales (bsqueda de paquetes y vericacin de estado) en una interfaz de usuario agradable. Debe congurarse APT para que sepa de dnde recuperar los paquetes. La aplicacin de ayuda que asiste en esta tarea se llama apt-setup. El siguiente paso en su proceso de conguracin es indicar a APT dnde puede encontrar otros paquetes Debian. Tenga en cuenta que puede volver a ejecutar esta herramienta en cualquier momento despus de la instalacin ejecutando apt-setup, o cambiar la conguracin editando manualmente el chero /etc/apt/sources.list. Si en este punto vd. tiene un CD-ROM ocial dentro de su unidad lectora, entonces ste se congurar automticamente como fuente apt sin hacerle ninguna pregunta. Se podr dar cuenta porque podr ver que se est leyendo del CD-ROM para analizarlo. Si no dispone de un CD-ROM ocial, se le mostrarn diversas opciones para que indique un mtodo a utilizar para acceder a paquetes Debian, ya sea a travs de FTP, HTTP, CD-ROM o utilizando un sistema de cheros local. Puede tener ms de una fuente APT, incluso para el mismo repositorio de Debian. apt-get elegir automticamente el paquete con el nmero de versin ms alto de todas las versiones disponibles. O, por ejemplo, si tiene conguradas fuentes que usan el protocolo HTTP y tambin el CD-ROM, aptget utilizar automticamente el CD-ROM local si es posible y solamente utilizar el protocolo HTTP si se dispone de una versin ms actualizada a travs de ste que la que hay en el CD-ROM. Sin embargo, no es una buena idea aadir fuentes de APT intiles dado que esto tender a alargar en el tiempo el proceso de vericiar los repositorios disponibles en red para determinar la existencia de nuevas versiones.

7.2.4.1. Conguracin de las fuentes de paquetes en red


Si planea instalar el resto del sistema a travs de la red, la opcin ms comn es elegir como fuente
http. Tambin es aceptable la fuente ftp, pero sta tiende ser un poco ms lenta en establecer las

conexiones. El siguiente paso a dar durante la conguracin de las fuentes de paquetes en red es indicar a aptsetup el pas en que se encuentra. Esto congura a qu sistema de la red de rplicas (tambin llamados servidores espejos) de Debian en Internet se conectar su sistema. Se le mostrar una lista de sistemas disponibles dependiendo del pas que elija. Lo habitual es elegir el primero de la lista, pero debera funcionar cualquiera de ellos. Tenga en cuenta, sin embargo, que la lista de rplicas ofrecidas durante instalacin se gener cuando se public esta versin de Debian, por lo que es posible que algunos de los sistemas no estn disponibles en el momento en que realiza la instalacin. Despus de elegir una rplica, se le preguntar si se es necesario usar un servidor proxy. Un servidor proxy es un servidor que reenva todas sus solicitudes HTTP FTP a Internet. Se utiliza habitualmente para optimizar el acceso a Internet en redes corporativas. En algunas redes solamente tiene permitido acceso a Internet el servidor proxy, si este es su caso deber indicar el nombre del servidor proxy. Tambin podra necesitar incluir un usuario y clave. La mayora de los usuarios domsticos no tendrn
1. Tenga en cuenta que el programa que realmente instala los paquetes se llama dpkg. Sin embargo, este programa es una herramienta de ms bajo nivel. apt-get es una herramienta de alto nivel que invocar a dpkg cuando sea necesario y tambin sabe como instalar otros paquetes necesarios para el paquete que est intentando instalar, as como obtener el paquete de sus CD-ROMs, de la red o de cualquier otro lugar.

66

Captulo 7. Arrancando su nuevo sistema Debian que especicar un servidor proxy, aunque algunos proveedores de Internet ofrecen servidores proxy para sus usuarios. Su nueva fuente de paquetes en red se comprobar despus que elija una rplica. Si todo va bien, se le preguntar si desea aadir o no otra fuente de paquetes. Intente usar otra rplica (ya sea de la lista correspondiente a su pas o de la lista mundial) si tiene algn problema usando la fuente de paquetes que ha elegido o intente usar una fuente distinta de paquetes en red.

7.2.5. Instalacin de paquetes


A continuacin se le presentar un nmero de conguraciones de software preestablecidas disponibles en Debian. Siempre podr elegir, paquete por paquete, lo que desea instalar en su nuevo sistema. ste es el propsito del programa aptitude, descrito a continuacin. Tenga en cuenta, sin embargo, que esto puede ser una ardua tarea ya que hay cerca de 15250 paquetes disponibles en Debian!. As, puede elegir primero tareas, y luego aadir ms paquetes de manera individual. Las tareas representan, a rasgos generales, distintas cosas que podra desear hacer con su ordenador como usarlo para entorno de escritorio, servidor de web, o servidor de impresin.2. La Seccin C.3 muestra los requisitos de espacio disponible en disco para las tareas existentes. Seleccione Finalizar una vez que haya elegido sus tareas. aptitude instalar los paquetes que ha seleccionado a continuacin.
Nota: Aunque no seleccione ninguna tarea, se instalarn todos los paquetes con prioridad estndar, importante o requerido que an no estn instalados en su sistema. Esta funcionalidad es la misma que obtiene si ejecuta tasksel -ris en la lnea de rdenes, y actualmente supone la descarga de aproximadamente 37 MB en cheros. Se le mostrar el nmero de paquetes que van a instalarse, as como cuntos kilobytes es necesario descargar.

Si quiere elegir qu instalar paquete a paquete seleccione la opcin seleccin manual de paquetes en tasksel. Se llamar a aptitude con la opcin --visual-preview si selecciona al mismo tiempo una o ms tareas. Lo que signica que podr revisar 3 los paquetes que se van a instalar. Si no selecciona ninguna tarea se mostrar la pantalla habitual de aptitude. Debe pulsar g despus de haber hecho su seleccin para empezar la descarga e instalacin de los paquetes.
Nota: No se instalar ningn paquete por omisin si selecciona seleccin manual de paquetes sin seleccionar ninguna de las tareas. Esto signica que puede utilizar esta opcin si quiere instalar un sistema reducido, pero tambin signica que tiene la responsabilidad de seleccionar cualquier paquete que no se haya instalado como parte del sistema base (antes del rearranque) y que pueda necesitar su sistema.

Las tareas que ofrece el instalador de tareas slo cubre un nmero pequeo de paquetes comparados con los 15250 paquetes disponibles en Debian. Si desea consultar informacin sobre ms paquetes, puede utilizar apt-cache search cadena a buscar para buscar alguna cadena dada (consulte la pgina de manual apt-cache(8)), o ejecute aptitude como se describe a continuacin.
2. Conviene que sepa que base-cong slo llama al programa tasksel para mostrar esta lista. Para la seleccin manual de paquetes se ejecuta el programa aptitude. Puede ejecutar cualquiera de ellos en cualquier momento posterior a la instalacin para instalar (o eliminar) paquetes. Si desea instalar un paquete en especco, simplemente ejecute aptitude install paquete, una vez haya terminado la instalacin, donde paquete es el nombre del paquete que desea instalar. 3. Tambin puede cambiar la seleccin por omisin. Si desea seleccionar algn paquete ms utilice VistasNueva vista de paquetes.

67

Captulo 7. Arrancando su nuevo sistema Debian

7.2.5.1. Seleccin avanzada de paquetes con aptitude


Aptitude es un programa moderno para gestionar paquetes. aptitude le permite seleccionar paquetes individualmente, conjuntos de paquetes que concuerdan con un criterio dado (para usuarios avanzados) o tareas completas. Las combinaciones de teclas ms bsicas son: Tecla Arriba, Abajo Enter + d g q F10 Accin Mueve la seleccin arriba o abajo. Abre/colapsa/activa un elemento. Marca el paquete para su instalacin. Marca el paquete para su eliminacin. Muestra las dependencias del paquete. Descarga/instala/elimina paquetes. Sale de la vista actual. Activa el men.

Puede consultar ms rdenes con la ayuda en lnea si pulsa la tecla ?.

7.2.6. Interacciones durante la instalacin de software


Cada paquete que elija, ya sea con tasksel o aptitude, es descargado, desempaquetado e instalado en turnos por los programas apt-get y dpkg. Si un programa particular necesita ms informacin del usuario, se le preguntar durante este proceso. Adems, debera revisar la salida en pantalla generada durante el proceso, para detectar cualquier error de instalacin (aunque se le pedir que acepte los errores que impidieron la instalacin de un paquete).

7.2.7. Conguracin del agente de transporte de correo


Hoy en da el correo electrnico es una parte muy importante de la vida diaria de las personas. Por eso no es sorprendente que Debian le permita congurar su sistema de correo como parte del proceso de instalacin. El agente de transporte de correo estndar en Debian es exim4, que es relativamente pequeo, exible y fcil de aprender. Puede preguntarse es sto necesario incluso si mi ordenador no est conectado a ninguna red? La respuesta corta es: S. La respuesta larga es que algunas herramientas propias del sistema (como es el caso de cron, quota, aide, . . . ) pueden querer enviarle noticaciones de importancia utilizando para ello el correo electrnico. As pues, en la primera pantalla de conguracin se le presentar diferentes escenarios comunes de correo. Debe elegir el que mejor reeje sus necesidades: Servidor en Internet (Internet site) Su sistema est conectado a una red y enva y recibe su correo directamente usando SMTP. En las siguientes pantallas deber responder a algunas preguntas bsicas, como el nombre de correo de su servidor, o una lista de dominios para los que acepta o reenva correo.

68

Captulo 7. Arrancando su nuevo sistema Debian Correo enviado a travs de un smarthost En este escenario su sistema reenva el correo a otra mquina llamada smarthost, que es la que realiza el trabajo real de envo de correo. Habitualmente el smarthost tambin almacena el correo entrante dirigido a su ordenador de forma que no necesite estar permanentemente conectado. Como consecuencia de esto, debe descargar su correo del smarthost a travs de programas como fetchmail. Esta opcin es la ms habitual para los usuarios que utilizan una conexin telefnica para acceder a Internet. Solamente entrega local Su sistema no est en una red y slo se enva y recibe correo entre usuarios locales. Esta opcin es la ms recomendable an cuando no tenga pensado enviar ningn mensaje. Es posible que algunas herramientas del sistema enven diversas alertas cada cierto tiempo (como por ejemplo, el simptico Se ha excedido la cuota de disco ). Tambin es conveniente esta opcin para usuarios nveles, ya que no le har ninguna pregunta adicional. Sin conguracin de momento Elija sta opcin si est absolutamente convencido de que sabe lo que esta haciendo. Esta opcin dejar su sistema de correo sin congurar. No podr enviar o recibir correo hasta que lo congure, y podra perder algunos mensajes importantes que le enven las herramientas del sistema. Si ninguno de estos escenarios se adapta a sus necesidades, o si necesita una conguracin ms especca, deber editar los cheros de conguracin en el directorio /etc/exim4 una vez nalice la instalacin. Puede encontrar ms informacin acerca de exim4 en /usr/share/doc/exim4.

7.3. Acceso
Se le presentar el cursor de login (acceso, N. del t.) despus de que haya instalado los paquetes en su sistema. Puede acceder usando la cuenta personal y clave que ha denido durante la instalacin. Su sistema est ahora listo para ser usado. Si usted es un usuario novel, tal vez quiera explorar la documentacin que ya est instalada en su sistema mientras empieza a utilizarlo. Actualmente existen varios sistemas de documentacin, aunque se est trabajando en integrar los diferentes tipos disponibles. Aqu encontrar algunas guas que le indicarn dnde empezar a buscar. La documentacin que acompaa a los programas que ha instalado se encuentra en el directorio
/usr/share/doc/, bajo un subdirectorio cuyo nombre coincide con el del programa. Por ejemplo,

la Gua de usuario de APT que le indica cmo utilizar apt para instalar otros programas en su sistema, se encuentra en /usr/share/doc/apt/guide.html/index.html. Adems, existen algunos directorios especiales dentro de la jerarqua de /usr/share/doc/. Puede encontrar los CMOs de Linux en formato .gz, en /usr/share/doc/HOWTO/en-txt/. Encontrar un ndice navegable de la documentacin instalada en /usr/share/doc/HTML/index.html una vez instale dhelp. Una forma fcil de consultar estos documentos es ejecutar cd /usr/share/doc/, y escribir lynx seguido de un espacio y un punto (el punto indica el directorio actual). Tambin puede escribir info programa o man programa para consultar la documentacin de la mayora de los programas disponibles en la lnea de rdenes. Si escribe help se le mostrar una ayuda sobre las rdenes del guin de lnea de rdenes. Habitualmente, si escribe el nombre de un programa seguido de --help se le mostrar un breve resumen del uso de este programa. Si la salida

69

Captulo 7. Arrancando su nuevo sistema Debian es mayor que el tamao de su pantalla, escriba | more despus de la llamada anterior para hacer que los resultados se pausen antes de que sobrepasen el tamao de la pantalla. Puede tambin ver la lista de todos los programas disponibles que empiezan con una cierta letra. Simplemente, escriba la letra en cuestin y luego presione dos veces el tabulador. Puede leer una introduccin ms completa a Debian y GNU/Linux en
/usr/share/doc/debian-guide/html/noframes/index.html.

70

Breve tutorial de bash

en BASH - COMO de introduccion Programacion


Mike G (mikkey) disponible en dynamo.com.ar Traducido por Gabriel Rodr guez Alberich chewie@asef.us.es jueves, 27 de julio de 2000, a las 09:36:18 ART

Este art culo pretende ayudarle a comenzar a programar shell scripts a un nivel basico/intermedio. No en pretende ser un documento avanzado (vea el t tulo). NO soy un experto ni un guru de la programacion mucho con ello y puede serle util shell. Decid escribir esto porque aprendere a otras personas. Cualquier sera apreciada, especialmente en forma de parche :) aportacion

Contents
1 Introducci on 1.1 1.2 1.3 ltima versi Obteniendo la u on . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Requisitos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 3 3 3 3 4 4 4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 4 5 5 5 5 5 6 6 6 6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 6 7

Usos de este documento

2 Scripts muy sencillos 2.1 2.2 T pico script hola mundo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Un script de copia de seguridad muy simple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

3 Todo sobre redirecci on 3.1 3.2 3.3 3.4 3.5 3.6 Teor a y referencia r apida

Ejemplo: stdout a un chero . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ejemplo: stderr a un chero . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ejemplo: stdout a stderr Ejemplo: stderr a stdout . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Ejemplo: stderr y stdout a un chero . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

4 Tuber as 4.1 4.2 4.3 Qu e son y por qu e querr a utilizarlas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ejemplo: una tuber a sencilla con sed . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ejemplo: una alternativa a ls -l *.txt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

5 Variables 5.1 5.2 5.3 Ejemplo: Hola Mundo! utilizando variables

Ejemplo: Un script de copia de seguridad muy simple (algo mejor)

Variables locales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

CONTENTS

6 Estructuras Condicionales 6.1 6.2 6.3 6.4 6.5 Pura teor a . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

7 7 8 8 8 8 9 9 9 9 10 10 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 10 11 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 11 12 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 12 12 13 13 13 13 14 14 14 15 18 18 18 18

Ejemplo: Ejemplo b asico de condicional if .. then . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ejemplo: Ejemplo b asico de condicional if .. then ... else . . . . . . . . . . . . . . . . . . . . . . . . Ejemplo: Condicionales con variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ejemplo: comprobando si existe un chero . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

7 Los bucles for, while y until 7.1 7.2 7.3 7.4 Por ejemplo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . for tipo-C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ejemplo de while . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ejemplo de until . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

8 Funciones 8.1 8.2 Ejemplo de funciones

Ejemplo de funciones con par ametros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

9 Interfaces de usuario 9.1 9.2 Utilizando select para hacer men us sencillos

Utilizando la l nea de comandos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

10 Miscel anea 10.1 Leyendo informaci on del usuario 10.2 Evaluaci on aritm etica 10.3 Encontrando el bash

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

10.4 Obteniendo el valor devuelto por un programa

10.5 Capurando la salida de un comando . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 Tablas 11.1 Operadores de comparaci on de cadenas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11.2 Ejemplo de comparaci on de cadenas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11.3 Operadores aritm eticos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11.4 Operadores relacionales aritm eticos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . tiles 11.5 Comandos u 12 M as scripts 12.1 Aplicando un comando a todos los cheros de un directorio. . . . . . . . . . . . . . . . . . . . . . . 12.2 Ejemplo: Un script de copia de seguridad muy simple (algo mejor) 12.3 Re-nombrador de cheros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

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

1. Introducci on

12.4 Re-nombrador de cheros (sencillo) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 Cuando algo va mal (depuraci on) 13.1 Maneras de llamar a BASH 14 Sobre el documento 14.1 (sin) Garant a . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14.2 Traducciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14.3 Agradecimientos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14.4 Historia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14.5 M as recursos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

20 20 20 20 20 21 21 21 21

Introducci on

1.1 Obteniendo la ultima versi on


http://www.linuxdoc.org/HOWTO/Bash-Prog-Intro-HOWTO.html

1.2 Requisitos
til tener una cierta familiaridad con la l Le ser au nea de comandos de GNU/Linux y con los conceptos b asicos de la programaci on. Aunque esto no es una introducci on a la programaci on, explica (o al menos lo intenta) muchos conceptos b asicos.

1.3 Usos de este documento


til en las siguientes situaciones Este documento intenta ser u Si tiene alguna idea de programaci on y quiere empezar a programar algunos shell scripts. Si tiene una idea vaga de programar en shell y quiere alg un tipo de referencia. Si quiere ver algunos scripts y comentarios para empezar a escribir los suyos propios. Si est a migrando desde DOS/Windows (o ya lo ha hecho) y quiere hacer procesos por lotes. Si es un completo novato y lee todo COMO disponible.

Scripts muy sencillos

Este COMO tratar a de darle algunos consejos sobre la programaci on de shell scripts, bas andose profundamente en ejemplos. En esta secci on encontrar a varios scripts peque nos que esperanzadamente le ayudar an a entender algunas t ecnicas.

3. Todo sobre redirecci on

2.1 T pico script hola mundo


#!/bin/bash echo Hola Mundo

Este script tiene s olo dos l neas. La primera le indica al sistema qu e programa usar para ejecutar el chero. nica acci La segunda l nea es la u on realizada por este script, que imprime Hola Mundo en la terminal. Si le sale algo como ./hello.sh: Comando desconocido., probablemente la primera l nea, #!/bin/bash, est a mal. Ejecute whereis bash, o vea encontrando el bash para saber c omo debe escribir esta l nea.

2.2 Un script de copia de seguridad muy simple


#!/bin/bash tar -cZf /var/my-backup.tgz /home/yo/

En este script, en vez de imprimir un mensaje en la terminal, creamos un tar-ball del directorio home de un usuario. til; m til. Esto NO pretende ser un script u as tarde se ofrece un script de copia de seguridad m as u

Todo sobre redirecci on

3.1 Teor a y referencia r apida


Existen 3 descriptores de cheros: stdin, stdout y stderr (std=est andar). B asicamente, usted puede: 1. redirigir stdout a un chero 2. redirigir stderr a un chero 3. redirigir stdout a stderr 4. redirigir stderr a stdout 5. redirigir stderr y stdout a un chero 6. redirigir stderr y stdout a stdout 7. redirigir stderr y stdout a stderr El n umero 1 representa a stdout, y 2 a stderr. Una peque na nota para ver todo esto: con el comando less puede visualizar stdout (que permanecer a en el b ufer) y stderr, que se imprimir a en la pantalla, pero ser a borrado si intenta leer el b ufer.

3.2 Ejemplo: stdout a un chero


Esto har a que la salida de un programa se escriba en un chero.
ls -l > ls-l.txt

4. Tuber as

En este caso, se crear a un chero llamado ls-l.txt que contendr a lo que se ver a en la pantalla si escribiese el comando ls -l y lo ejecutase.

3.3 Ejemplo: stderr a un chero


Esto har a que la salida stderr de un programa se escriba en un chero.
grep da * 2> errores-de-grep.txt

En este caso, se crear a un chero llamado errores-de-grep.txt que contendr a la parte stderr de la salida que dar a el comando grep da *.

3.4 Ejemplo: stdout a stderr


Esto har a que la salida stdout de un programa se escriba en el mismo descriptor de chero que stderr.
grep da * 1>&2

En este caso, la parte stdout del comando se env a a stderr; puede observar eso de varias maneras.

3.5 Ejemplo: stderr a stdout


Esto har a que la salida stderr de un programa se escriba en el mismo descriptor de chero que stdout.
grep * 2>&1

En este caso, la parte stderr del comando se env a a stdout. Si hace una tuber a con less, ver a que las l neas que normalmente desaparecen (al ser escritas en stderr), ahora permanecen (porque est an en el stdout).

3.6 Ejemplo: stderr y stdout a un chero


Esto colocar a toda la salida de un programa en un chero. A veces, esto es conveniente en las entradas del cron, si quiere que un comando se ejecute en absoluto silencio.
rm -f $(find / -name core) &> /dev/null

Esto (pensando en la entrada del cron) eliminar a todo archivo llamado core en cualquier directorio. Tenga en cuenta que tiene que estar muy seguro de lo que hace un comando si le va a eliminar la salida.

Tuber as

Esta secci on explica de una manera muy sencilla y pr actica c omo utilizar tuber as, y por qu e querr a utilizarlas.

5. Variables

4.1 Qu e son y por qu e querr a utilizarlas


Las tuber as le permiten utilizar (muy sencillo, insisto) la salida de un programa como la entrada de otro.

4.2 Ejemplo: una tuber a sencilla con sed


es una manera muy sencilla de utilizar tuber Esta as.
ls -l | sed -e "s/[aeio]/u/g"

En este caso, ocurre lo siguiente: primero se ejecuta el comando ls -l, y luego su salida, en vez de imprimirse en la pantalla, se env a (entuba) al programa sed, que imprime su salida correspondiente.

4.3 Ejemplo: una alternativa a ls -l *.txt


sta es una manera m Probablemente e as dif cil de hacer un ls -l *.txt, pero se muestra para ilustrar el funcionamiento de las tuber as, no para resolver ese dilema.
ls -l | grep "\.txt$"

En este caso, la salida del programa ls -l se env a al programa grep, que imprimir a las l neas que concuerden con la regex (expresi on regular) \.txt$.

Variables

Puede usar variables como en cualquier otro lenguaje de programaci on. No existen tipos de datos. Una variable de bash puede contener un n umero, un caracter o una cadena de caracteres. No necesita declarar una variable. Se crear a s olo con asignarle un valor a su referencia.

5.1 Ejemplo: Hola Mundo! utilizando variables


#!/bin/bash CAD="<Hola Mundo!" echo $CAD

La segunda l nea crea una variable llamada STR y le asigna la cadena Hola Mundo!. Luego se recupera el VALOR de esta variable poni endole un $ al principio. Por favor, tenga en cuenta (int entelo!) que si no usa el signo $, la salida del programa ser a diferente, y probablemente no sea lo que usted quer a.

5.2 Ejemplo: Un script de copia de seguridad muy simple (algo mejor)


#!/bin/bash OF=/var/mi-backup-$(date +%Y%m%d).tgz tar -cZf $OF /home/yo/

6. Estructuras Condicionales

Este script introduce algo nuevo. Antes que nada, deber a familiarizarse con la creaci on y asignaci on de variable de la l nea 2. F jese en la expresi on $(date +%Y%m%d). Si ejecuta el script se dar a cuenta de que ejecuta el comando que hay dentro de los par entesis, capturando su salida. Tenga en cuenta que en este script, el chero de salida ser a distinto cada d a, debido al formato pasado al comando date (+%Y%m%d). Puede cambiar esto especicando un formato diferente. Algunos ejemplos m as: echo ls echo $(ls)

5.3 Variables locales


Las variables locales pueden crearse utilizando la palabra clave local.
#!/bin/bash HOLA=Hola function hola { local HOLA=Mundo echo $HOLA } echo $HOLA hola echo $HOLA

Este ejemplo deber a bastar para mostrarle el uso de una variable local.

Estructuras Condicionales

Las estructuras condicionales le permiten decidir si se realiza una acci on o no; esta decisi on se toma evaluando una expresi on.

6.1 Pura teor a


Los condicionales tienen muchas formas. La m as b asica es: if expresi on then sentencia donde sentencia s olo se ejecuta si expresi on se eval ua como verdadera. 2<1 es una expresi on que se eval ua falsa, mientras que 2>1 se eval ua verdadera. Los condicionales tienen otras formas, como: if expresi on then sentencia1 else sentencia2. Aqu sentencia1 se ejecuta si expresi on es verdadera. De otra manera se ejecuta sentencia2. Otra forma m as de condicional es: if expresi on1 then sentencia1 else if expresi on2 then sentencia2 else sentencia3. En esta forma s olo se a nade ELSE IF expresi on2 THEN sentencia2, que hace que sentencia2 se ejecute si expresi on2 se eval ua verdadera. El resto es como puede imaginarse (v eanse las formas anteriores). Unas palabras sobre la sintaxis: sta: La base de las construcciones if es e if [expresi on]; then

6. Estructuras Condicionales

c odigo si expresi on es verdadera.

6.2 Ejemplo: Ejemplo b asico de condicional if .. then


#!/bin/bash if [ "petete" = "petete" ]; then echo expresi on evaluada como verdadera fi

El c odigo que se ejecutar a si la expresi on entre corchetes es verdadera se encuentra entre la palabra then y la palabra , que indica el nal del c odigo ejecutado condicionalmente.

6.3 Ejemplo: Ejemplo b asico de condicional if .. then ... else


#!/bin/bash if [ "petete" = "petete" ]; then on evaluada como verdadera echo expresi else echo expresi on evaluada como falsa fi

6.4 Ejemplo: Condicionales con variables


#!/bin/bash T1="petete" T2="peteto" if [ "$T1" = "$T2" ]; then echo expresi on evaluada como verdadera else on evaluada como falsa echo expresi fi

6.5 Ejemplo: comprobando si existe un chero


un agradecimiento m as a mike
#!/bin/bash FILE=/.basrc if [ -f $FILE ]; then echo el fichero $FILE existe else echo fichero no encontrado fi if [ test -f $FILE]

7. Los bucles for, while y until

Los bucles for, while y until

En esta secci on se encontrar a con los bucles for, while y until. El bucle for es distinto a los de otros lenguajes de programaci on. B asicamente, le permite iterar sobre una serie de palabras contenidas dentro de una cadena. El bucle while ejecuta un trozo de c odico si la expresi on de control es verdadera, y s olo se para cuando es falsa (o se encuentra una interrupci on expl cita dentro del c odigo en ejecuci on). El bucle until es casi id entico al bucle loop, excepto en que el c odigo se ejecuta mientras la expresi on de control se eval ue como falsa. Si sospecha que while y until son demasiado parecidos, est a en lo cierto.

7.1 Por ejemplo


#!/bin/bash for i in $( ls ); do echo item: $i done

En la segunda l nea declaramos i como la variable que recibir a los diferentes valores contenidos en $( ls ). La tercera l nea podr a ser m as larga o podr a haber m as l neas antes del done (4). done (4) indica que el c odigo que ha utilizado el valor de $i ha acabado e $i puede tomar el nuevo valor. til de usar el bucle for ser Este script no tiene mucho sentido, pero una manera m as u a hacer que concordasen s olo ciertos cheros en el ejemplo anterior.

7.2 for tipo-C


Fiesh sugiri o a nadir esta forma de bucle. Es un bucle for m as parecido al for de C/perl...
#!/bin/bash for i in seq 1 10; do echo $i done

7.3 Ejemplo de while


#!/bin/bash CONTADOR=0 while [ $CONTADOR -lt 10 ]; do echo El contador es $CONTADOR let CONTADOR=CONTADOR+1 done

Este script emula la conocida (C, Pascal, perl, etc) estructura for.

8. Funciones

10

7.4 Ejemplo de until


#!/bin/bash CONTADOR=20 until [ $CONTADOR -lt 10 ]; do echo CONTADOR $CONTADOR let CONTADOR-=1 done

Funciones

Como en casi todo lenguaje de programaci on, puede utilizar funciones para agrupar trozos de c odigo de una manera m as l ogica, o practicar el divino arte de la recursi on. odigo }. Declarar una funci on es s olo cuesti on de escribir function mi func { mi c Llamar a la funci on es como llamar a otro programa, s olo hay que escribir su nombre.

8.1 Ejemplo de funciones


#!/bin/bash function salir { exit } function hola { echo <Hola! } hola salir echo petete

Las l neas 2-4 contienen la funci on salir. Las l neas 5-7 contienen la funci on hola. Si no est a completamente seguro de lo que hace este script, por favor, pru ebelo!. Tenga en cuenta que una funci on no necesita que sea declarada en un orden espec co. Cuando ejecute el script se dar a cuenta de que: primero se llama a la funci on hola, luego a la funci on quit, y el programa nunca llega a la l nea 10.

8.2 Ejemplo de funciones con par ametros


#!/bin/bash function salir { exit } function e { echo $1 } e Hola e Mundo salir echo petete

9. Interfaces de usuario

11

Este script es casi id entico al anterior. La diferencia principal es la funci on e. Esta funci on imprime el primer argumento que recibe. Los argumentos, dentro de las funciones, son tratados de la misma manera que los argumentos suministrados al script.

Interfaces de usuario

sencillos 9.1 Utilizando select para hacer menus


#!/bin/bash OPCIONES="Hola Salir" select opt in $OPCIONES; do if [ "$opt" = "Salir" ]; then echo done exit elif [ "$opt" = "Hola" ]; then echo Hola Mundo else clear echo opci on err onea fi done

Si ejecuta este script ver a que es el sue no de un programador para hacer men us basados en texto. Probablemente se dar a cuenta de que es muy similar a la construcci on for, s olo que en vez de iterar para cada palabra en $OPCIONES, se lo pide al usuario.

9.2 Utilizando la l nea de comandos


#!/bin/bash if [ -z "$1" ]; then echo uso: $0 directorio exit fi SRCD=$1 TGTD="/var/backups/" OF=home-$(date +%Y%m%d).tgz tar -cZf $TGTD$OF $SRCD

Lo que hace este script deber a estar claro para usted. La expresi on del primer condicional comprueba si el programa ha recibido alg un argumento ($1) y sale si no lo ha recibido, mostr andole al usuario un peque no mensaje de uso. El resto del script deber a estar claro.

10. Miscel anea

12

10

Miscel anea

10.1 Leyendo informaci on del usuario


En muchas ocasiones, puede querer solicitar al usuario alguna informaci on, y existen varias maneras para hacer esto. es una de ellas: Esta
#!/bin/bash echo Por favor, introduzca su nombre read NOMBRE echo "<Hola $NOMBRE!"

Como variante, se pueden obtener m ultiples valores con read. Este ejemplo deber a claricarlo.
#!/bin/bash echo Por favor, introduzca su nombre y primer apellido read NO AP echo "<Hola $AP, $NO!"

10.2 Evaluaci on aritm etica


Pruebe esto en la l nea de comandos (o en una shell): echo 1 + 1 Si esperaba ver 2, quedar a desilusionado. Qu e hacer si quiere que BASH eval ue unos n umeros? La soluci on es sta: e echo $((1+1)) Esto producir a una salida m as l ogica. Esto se hace para evaluar una expresi on aritm etica. Tambi en puede hacerlo de esta manera: echo $[1+1] Si necesita usar fracciones, u otras matem aticas, puede utilizar bc para evaluar expresiones aritm eticas. Si ejecuta echo $[3/4] en la l nea de comandos, devolver a 0, porque bash s olo utiliza enteros en sus respuestas. Si ejecuta echo 3/4|bc -l, devolver a 0.75.

10.3 Encontrando el bash


De un mensaje de mike (vea los agradecimientos): siempre usas #!/bin/bash .. a lo mejor quieres dar un ejemplo de c omo saber d onde encontrar el bash. locate bash es preferible, pero no todas las m aquinas tienen locate. nd ./ -name bash desde el directorio ra z funcionar a, normalmente. Sitios donde poder buscar:

11. Tablas

13

ls -l /bin/bash ls -l /sbin/bash ls -l /usr/local/bin/bash ls -l /usr/bin/bash ls -l /usr/sbin/bash ls -l /usr/local/sbin/bash (no se me ocurre ning un otro directorio... lo he encontrado la mayor a de estos sitios en sistemas diferentes). Tambi en puedes probar which bash.

10.4 Obteniendo el valor devuelto por un programa


En bash, el valor de retorno de un programa se guarda en una variable especial llamada $?. Esto ilustra c omo capturar el valor de retorno de un programa. Supongo que el directorio dada no existe. (Esto tambi en es sugerencia de Mike).
#!/bin/bash cd /dada &> /dev/null echo rv: $? cd $(pwd) &> /dev/null echo rv: $?

10.5 Capurando la salida de un comando


Este peque no script muestra todas las tablas de todas las bases de datos (suponiendo que tenga MySQL instalado). Considere tambi en cambiar el comando mysql para que use un nombre de usuario y clave v alidos.
#!/bin/bash DBS=mysql -uroot -e"show databases" for b in $DBS ; do mysql -uroot -e"show tables from $b" done

11

Tablas

11.1 Operadores de comparaci on de cadenas


s1 = s2 s1 coincide con s2 s1 != s2 s1 no coincide con s2

11. Tablas

14

s1 < s2 s1 es alfab eticamente anterior a s2, con el locale actual s1 > s2 s1 es alfab eticamente posterior a s2, con el locale actual -n s1 s1 no es nulo (contiene uno o m as caracteres) -z s1 s1 es nulo

11.2 Ejemplo de comparaci on de cadenas


Comparando dos cadenas
#!/bin/bash S1=cadena S2=Cadena if [ $S1!=$S2 ]; then echo "S1($S1) no es igual a S2($S2)" fi if [ $S1=$S1 ]; then echo "S1($S1) es igual a S1($S1)" fi

Cito aqu el consejo de un correo enviado por Andreas Beck, referido al uso de if [ $1 = $2 ]. Esto no es buena idea, porque si $S1 o $S2 son vac os, aparecer a un parse error. Es mejor: x$1=x$2 or $1=$2

11.3 Operadores aritm eticos


+ (adici on) - (sustracci on) * (producto) / (divisi on) % (m odulo)

11.4 Operadores relacionales aritm eticos


-lt (<) -gt (>) -le (<=) -ge (>=) -eq (==)

11. Tablas

15

-ne (!=) Los programadores de C tan s olo tienen que corresponder el operador con su par entesis.

11.5 Comandos utiles


Esta secci on ha sido reescrita por Kees (v eanse agradecimientos) Algunos de estos comandos contienen lenguajes de programaci on completos. S olo se explicar an las bases de estos comandos. Para una descripci on m as detallada, eche un vistazo a las p aginas man de cada uno. sed (editor de ujo) Sed es un editor no interactivo. En vez de alterar un chero moviendo el cursor por la pantalla, se utiliza una serie de instrucciones de edici on de sed, y el nombre del chero a editar. Tambi en se puede describir a sed como un ltro. Miremos algunos ejemplos:
$sed s/a_sustituir/sustituto/g /tmp/petete

a a Sed sustituye la cadena a sustituir por la cadena sustituto, leyendo del chero /tmp/petete. El resultado se env stdout (normalmente la consola), pero se puede a nadir > captura al nal de la l nea de arriba para que sed env e la salida al chero capture.
$sed 12, 18d /tmp/petete

Sed muestra todas las l neas de /tmp/petete excepto la 12 y la 18. El chero original no queda alterado por este comando. awk (manipulaci on de bases de datos, extracci on y proceso de texto) Existen muchas implementaciones del lenguaje de programacin AWK (los int erpretes m as conocidos son gawk de GNU, y el nuevo awk mawk). El principio es sencillo: AWK busca un patr on, y por cada patr on de b usqueda que coincida, se realiza una acci on. Si tenemos un chero /tmp/petete con las siguientes l neas: prueba123 prueba pprruueebbaa y ejecutamos:
$awk /prueba/ {print} /tmp/petete

test123 test El patr on que busca AWK es prueba y la acci on que realiza cuando encuentra una l nea en /tmp/petete con la cadena prueba es print.
$awk /prueba/ {i=i+1} END {print i} /tmp/petete

11. Tablas

16

3 Cuando se utilizan muchos patrones, se puede reemplazar el texto entre comillas por -f chero.awk, y poner todos los patrones y acciones en chero.awk. grep (impresi on de l neas que coinciden con un patr on de b usqueda) Ya hemos visto ejemplos del comando grep en los cap tulos anteriores, que muestra las l neas que concuerdan con un patr on. Pero grep puede hacer m as que eso.
$grep "busca esto" /var/log/messages -c

12 Se ha encontrado 12 veces la cadena busca esto en el chero /var/log/messages. [vale, este ejemplo es falso, el chero /var/log/messages est a alterado :-)] wc (cuenta l neas, palabras y bytes) En el siguiente ejemplo, vemos que la salida no es lo que esper abamos. El chero petete utilizado en este ejemplo contiene el texto siguiente: programaci on en bash como de introducci on
$wc --words --lines --bytes /tmp/petete

2 5 41 /tmp/petete Wc no tiene en cuenta el orden de los par ametros. Wc siempre los imprime en un orden est andar, que es, como se puede ver: l neas, palabras, bytes y chero. sort (ordena l neas de cheros de texto) Esta vez, el chero petete contiene el texto siguiente: b c a
$sort /tmp/petete

Esto es lo que muestra la salida: a b c Los comandos no deber an ser tan f aciles :-) bc (un lenguaje de programaci on de c alculos matem aticos) Bc acepta c alculos desde la l nea de comandos (entrada desde un chero, pero no desde una redirecci on o una tuber a), y tambi en desde una interfaz de usuario. La siguiente demostraci on expone algunos de los comandos. Note que ejecuto bc con el par ametro -q para evitar el mensaje de bienvenida.
$bc -q

11. Tablas

17

1 == 5 0 0.05 == 0.05 1 5 != 5 0 28 256 sqrt(9) 3 while (i != 9) { i = i + 1; print i } 123456789 quit tput (inicializa una terminal o consulta la base de datos de terminfo) Una peque na demostraci on de las capacidades de tput:
$tput cup 10 4

La l nea de comandos aparece en (y10,x4).


$tput reset

Limpia la pantalla y la l nea de comandos aparece en (y1,x1). Observe que (y0,x0) es la esquina superior izquierda.
$tput cols

80 Muestra el n umero de caracteres que caben en la direcci on x. Es muy recomendable familiarizarse con estos programas (al menos). Hay montones de programillas que le permitir an hacer virguer as en la l nea de comandos. [algunos ejemplos est an copiados de las p aginas man o los PUFs]

12. M as scripts

18

12

M as scripts

12.1 Aplicando un comando a todos los cheros de un directorio. 12.2 Ejemplo: Un script de copia de seguridad muy simple (algo mejor)
#!/bin/bash ORIG="/home/" DEST="/var/copias_de_seguridad/" FICH=home-$(date +%Y%m%d).tgz tar -cZf $DEST$FICH $ORIG

12.3 Re-nombrador de cheros


#!/bin/sh # renom: renombra m ultiples ficheros de acuerdo con ciertas # reglas # escrito por Felix Hudson Enero - 2000 # # # # primero comprueba los distintos modos que tiene este programa si la primera ($1) condici on coincide, se ejecuta esa parte del programa y acaba

# comprueba la condici on de prefijo if [ $1 = p ]; then # ahora nos libramos de la variable de modo ($1) y ponemos $2 # de prefijo prefijo=$2 ; shift ; shift # # # # una r apida comprobaci on para ver si se especific o alg un fichero si no, hay cosas mejores que hacer que renombrar ficheros inexistentes!! if [$1 = ]; then echo "no se especificaron ficheros" exit 0 fi

# este bucle for itera a lo largo de todos los ficheros que # le hemos especificado al programa # renombra cada uno de ellos for fichero in $* do mv ${fichero} $prefijo$fichero done # ahora salimos del programa exit 0 fi

12. M as scripts

19

# comprueba si es un renombramiento con sufijo # el resto es casi id entico a la parte anterior # lea los comentarios anteriores if [ $1 = s ]; then sufijo=$2 ; shift ; shift if [$1 = ]; then echo "no se especificaron ficheros" exit 0 fi for fichero in $* do mv ${fichero} $fichero$sufijo done exit 0 fi # comprueba si es una sustituci on if [ $1 = r ]; then shift # he inclu do esto para no da nar ning un fichero si el # usuario no especifica que se haga nada # tan s olo una medida de seguridad if [ $# -lt 3 ] ; then echo "uso: renom r [expresi on] [sustituto] ficheros... " exit 0 fi # elimina el resto de informaci on VIEJO=$1 ; NUEVO=$2 ; shift ; shift # # # # # # # # este bucle for itera a lo largo de todos los ficheros que le hemos especificado al programa renombra cada fichero utilizando el programa sed es un sencillo programa desde la l nea de comandos que on por andar y sustituye una expresi analiza la entrada est una cadena dada aqu le pasamos el nombre del fichero (como entrada est andar) for fichero in $* do nuevo=echo ${fichero} | sed s/${VIEJO}/${NUEVO}/g mv ${fichero} $nuevo done exit 0 fi # si se llega a esta parte es que no se le pas o nada # apropiado al programa, por lo que le decimos al usuario # c omo hacerlo echo "uso:"

13. Cuando algo va mal (depuraci on)

20

echo echo echo exit

" renom p [prefijo] ficheros.." " renom s [sufijo] ficheros.." " renom r [expresi on] [sustituto] ficheros.." 0

# hecho!

12.4 Re-nombrador de cheros (sencillo)


#!/bin/bash # renombra.sh # renombrador de ficheros b asico criterio=$1 expresion=$2 sustituto=$3 for i in $( ls *$criterio* ); do orig=$i dest=$(echo $i | sed -e "s/$expresion/$sustituto/") mv $orig $dest done

13

Cuando algo va mal (depuraci on)

13.1 Maneras de llamar a BASH


Una buena idea es poner esto en la primera l nea:
#!/bin/bash -x

Esto producir a informaci on interesante.

14

Sobre el documento

Si entase libre para hacer sugerencias/correcciones, o lo que crea que sea interesante que aparezca en este documento. Intentar e actualizarlo tan pronto como me sea posible.

14.1 (sin) Garant a


Este documento no lleva garant a de ning un tipo.

14. Sobre el documento

21

14.2 Traducciones
Italiano: por William Ghel (wizzy est a en tiscalinet.it). http://web.tiscalinet.it/penguin rules Franc es: por Laurent Martelli ? Coreano: Minseok Park http://kldp.org Corean: Chun Hye Jin Desconocido Spanish: Gabriel Rodr guez Alberich http://www.insug.org Supongo que habr a m as traducciones, pero no tengo informaci on sobre ellas. Si las tiene, por favor, env emelas para que actualice esta secci on.

14.3 Agradecimientos
A la gente que ha traducido este documento a otras lenguas (secci on anterior). A Nathan Hurst por enviar montones de correcciones. A Jon Abbott por enviar comentarios sobre la evaluaci on de expresiones aritm eticas. A Felix Hudson por escribir el script renom tiles) A Kees van den Broek (por enviar tantas correcciones y reescribir la secci on de comandos u Mike (pink) hizo algunas sugerencias sobre la localizaci on del bash y la comprobaci on de los cheros Fiesh hizo una buena sugerencia sobre la secci on de bucles. Lion sugiri o mencionar un error com un (./hello.sh: Comando no encontrado.) Andreas Beck hizo varias correcciones y comentarios.

14.4 Historia
A nadidas nuevas traducciones y correcciones menores. tiles reescrita por Kess. A nadida la secci on de comandos u Incorporadas m as correcciones y sugerencias. A nadidos ejemplos sobre la comparaci on de cadenas. v0.8 abandono del versionamiento. Supongo que con la fecha es suciente. v0.7 M as correcciones y algunas secciones TO-DO escritas. v0.6 Correcciones menores. v0.5 A nadida la secci on de redireccionamiento. v0.4 desaparici on de su sitio debido a mi ex-jefe. Este documento tiene un nuevo sitio en: http://www.linuxdoc.org. Anteriores: no me acuerdo y no he usado rcs ni cvs :(

14.5 M as recursos
Introducci on a bash (bajo BE) http://org.laol.net/lamug/beforever/bashtut.htm Programaci on en Bourne Shell http://207.213.123.70/book/

You might also like