curso de administración de sistemas linux

Upload: juan-eslo-mismo

Post on 06-Jul-2015

341 views

Category:

Documents


0 download

TRANSCRIPT

I CURSO DE ADMINISTRACIN DE SISTEMAS OPERATIVOS GNU/LINUX

Gua del alumno

Febrero de 2005

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

1

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

Curso de Administracin GNU/Linux45 45 45 45 47 49 51 51 51 54 56 56 56 60 61 63 63 63 64 64 64 65 65 65 66 66 67 69 69 69 71 72 73 74 74

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

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

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

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

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

II Construccin de un cluster GNU/Linux9. Descripcin de un cluster modelo 9.1. Las mquinas del cluster . . . . . . . . . . . . . . . . . . . . . 9.2. Caractersticas de los nodos del cluster . . . . . . . . . . . . . . 9.3. Esquema de servicios del cluster . . . . . . . . . . . . . . . . . 9.4. Descripcin detallada de todos los servicios de un cluster modelo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

7779 79 80 81 82

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

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

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

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

Curso de Administracin GNU/Linux123 123 123 123 123 124

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

Captulo 0

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

6

Curso de Administracin GNU/Linux

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

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

Curso de Administracin GNU/Linux

7

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

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

8

Curso de Administracin GNU/Linux

Parte IAdministracin local de GNU/Linux

9

Captulo 1

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

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

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

11

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

El programa

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

2 En

Debian puede encontrarse en

"

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

% # $$

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

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

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

' $S

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

3. 4.

5. 6. 7. 8. 9.

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

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

# $

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

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

#

% ( &$

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

.

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

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

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

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

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

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

l j i $kh

% # $k

l j i k$h

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

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

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

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

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

16x E Y V o Q F3HAHP

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

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

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

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

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

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

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

1.2.2. El proceso

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

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

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

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

1

Monousuario

2

Multiusuario (entorno texto)

4 5

Multiusuario Multiusuario (entorno grco)

6

Reinicio

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

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

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

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

"

&&

"$&

&&

l j i k$h

&k &

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

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

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

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

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

y

C P SS s

s

para ver cmo proporcionar a otros usuarios parte o todos los

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

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

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

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

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

' ' 0 ( $!

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

# kS!

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

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

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

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

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

24 &S$ bkS&D

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

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

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

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

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

) $&!)

IDE: Dispositivos 1er conector,

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

( % $&&$T

( '

( % "&$9

( '

( "&$%

( "'

26 k$4

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

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

Montaje de los lesystems: comandos

.

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

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

( 4 1 &"4

4 4 g ( $"

'

&g(" g ( "

# ( &

, o parecidos

'

# ( & g 0

$

g 0

"k$ ' 4 1 !9"4

' 1 t"$h4

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

27

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

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

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

cheros

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

f e d b X Y g3ca`X

1.5.2.

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

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

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

.

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

( '

$

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

1.

Algunos comentarios

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

2.

Los mensajes de cualquier prioridad en las categoras .

y

$$( # g

$(

3.

Divide los registros correspondientes a

( &'

4.

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

para facilitar su manejo.

,

y excepto los pertengan estos la prioridad que

# (

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

5.

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

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

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

7 8

' g S$

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

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

Captulo 2

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

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

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

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

2.2.1. Principales directorios en un sistema GNU/Linux &

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

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

)

!$g

' &)

V 4 ) ) 0 !`!$ )

P

0

)

:

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

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

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

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

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

0 )

34 g $$)

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

2.2.2. Puntos de montajeAparte del lesystem principal /, y de sus posibles divisiones (/usr /var /tmp /home) en particiones extras, otro aspecto a tener en cuenta es la posibilidad de dejar puntos de montaje preparados para el montaje de otros lesystems ya sea particiones de disco o otros dispositivos de almacenamiento. En las mquinas en que esta instalado GNU/Linux compartiendo con otros sistemas operativos la mquina mediante algn sistema de arranque (LiLo o Grub), pueden existir varias particiones asignadas a los diferentes operativos. Muchas veces es interesante compartir datos con estos sistemas, ya sea para leer sus cheros, o modicarlos. A diferencia de otros sistemas (que slo tienen en cuenta sus propios datos, lase windows, en el cual en algunas versiones no se soportan algunos de sus propios sistemas de