Professional Documents
Culture Documents
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
ndice general
0. Motivacin y objetivos 0.1. Antecedentes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 0.2. Motivacin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 0.3. Objetivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 5 7 7
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
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
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 . . . . . . . . . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
3 88 88 89 91 91 91 92 93 94 95 96 96 97
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
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 . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
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
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.
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.
Parte I
Administracin local de GNU/Linux
Captulo 1
1.2.1.
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
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:
: Si la imagen se encuentra en una particin diferente a la particin root por defecto. : Fichero
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
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
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
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.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 :
1.3.4.
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
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.
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.
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.1.
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:
:
32 chero : Este es un log general del sistema, que nos contiene los mensajes generados por el kernel, y otros daemons.
:
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
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
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.
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.
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.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
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.
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
$
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 ?
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
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:
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.
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.
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.
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.
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
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
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).
8 ! "
7 ltima
64
Captulo 5
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
Path del directorio home del usuario. Lista de directorios donde se buscan ejecutables.
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 .
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.
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:
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
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
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.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
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
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
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.
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 | } | | { {| { } { }
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 | | |
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
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:
! ! '( ( % # ) !
6.2.3.
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
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
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:
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.
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
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.
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
!
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.
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.
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.
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:
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.
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[ \?
P;8 CP 2U 28 GD P
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
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.
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.
104
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.
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.
Para crear la base de datos de NIS existe otro script asociado que est en:
11.2.3.
Ficheros de conguracin
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 dene el nombre que se asigna a la red de ordenadores a la que se sirve NIS. Puede elegirse cualquier nombre.
11.2.4.
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.
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:
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 .
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 .
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
] dX_a e] gX
Tenga en cuenta que en este momento en el servidor an no est usndose el cliente NIS.
11.2.5.
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^
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
Utilice:
X ] b Z^ c d `V Yd beYf d W_ \ ][ Z^ i \] [ Z^ i ] dX_a e] gX
para saber si
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.
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:
11.3.2.
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
para el servidor y
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.
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.
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.1.
Paquetes Debian
El nico paquete que es preciso instalar es el autofs que puede instalarse con:
/ 0 ,
117
11.4.2.
11.4.3.
Ficheros de conguracin
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.
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.
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
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 .
-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
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 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:
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
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(
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
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.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:
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:
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 ! "$ ( ) #( $ + !+ ! ! , * ) "* + !+ ! ! , $ , +* ) # "$ + ! + !+ ! ! ,
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
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
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.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
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,
o para chequear si algn proceso est corriendo en las distintas mquinas del cluster:
13.2.3.
Variantes
. 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.
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:
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:
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.
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:
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.
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
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
15.2. Sistema X
Activacin de XDMCP en xdm, gdm o kdm
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
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.
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.
51
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.
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
53
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
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.
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).
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
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
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.
58
59
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.
60
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.
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.
62
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.
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.
65
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.
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
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
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
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 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
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 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Variables locales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
CONTENTS
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 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
9 Interfaces de usuario 9.1 9.2 Utilizando select para hacer men us sencillos
10 Miscel anea 10.1 Leyendo informaci on del usuario 10.2 Evaluaci on aritm etica 10.3 Encontrando el bash
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
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.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.
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.
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.
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
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.
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 *.
En este caso, la parte stdout del comando se env a a stderr; puede observar eso de varias maneras.
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).
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
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.
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.
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.
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)
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. Estructuras Condicionales
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.
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.
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.
Este script emula la conocida (C, Pascal, perl, etc) estructura for.
8. Funciones
10
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.
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.
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
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.
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.
12
10
Miscel anea
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!"
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.
11
Tablas
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
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. Tablas
15
-ne (!=) Los programadores de C tan s olo tienen que corresponder el operador con su par entesis.
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
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
# 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:"
20
" renom p [prefijo] ficheros.." " renom s [sufijo] ficheros.." " renom r [expresi on] [sustituto] ficheros.." 0
# hecho!
13
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.
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/