Beruflich Dokumente
Kultur Dokumente
Febrero de 2005
Autores: Jos Enrique Garca Ramos Alberto Molina Coballes Francisco Prez Bernal
Fuentes: Gua de referencia Debian, O. Aoki (traducido por W.O. Echarri). (http://www.debian.org/doc/manuals/reference/reference.es.html) Linux: a network solution for your ofce, V.T. Toth (Sams, Indianapolis, 1999). Manual Debian de seguridad, A. Reelsen, J. Fernndez Sanguino Pea (http://www.nl.debian.org/doc/manuals/securing-debian-howto/index.es.html) Linux mxima seguridad, Annimo (Prentice Hall, Madrid, 2000). http://www.ecn.wfu.edu/ cottrell/wp.html publicado por Allin Cottrell y traducido por Jos Mara Martn Olalla. debian-reference, que puede encontrarse en http://www.debian.org/doc/manuals/debianreference. LINUX: Rute Users Tutorial and Exposition, Paul Sheer (2001). Administracin avanzada de GNU/Linux, Josep Jorba Esteve y Remo Suppi Boldrito. XP04/90785/00019, Formacin de posgrado Universidad Oberta de Catalunya (2004). HOWTOs en ingls.
Versin 0.1. Copyright c 2005 J.E. Garca Ramos, A. Molina Coballes y F. Prez Bernal. Este manual es software libre, puede ser redistribuido y/o modicado bajo los trminos de la licencia GNU General Public License publicada por la Free Software Foundation. Este texto se distribuye con la esperanza de que sea til, pero no existe ninguna garanta sobre l.
ndice general
0. Motivacin y objetivos 0.1. Antecedentes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 0.2. Motivacin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 0.3. Objetivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 5 6 7
9
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 11 11 11 17 19 19 20 22 23 25 27 27 27 30 31 31 31 32 34 36 36 37 39 39 40 41 42 43
2. Sistemas de archivos 2.1. Introduccin . . . . . . . . . . . . . . . . . . . . . . . . 2.2. La estructura de archivos del s.o. GNU/Linux . . . . . . 2.2.1. Principales directorios en un sistema GNU/Linux 2.2.2. Puntos de montaje . . . . . . . . . . . . . . . . 2.3. Permisos: su signicado y cmo variarlos . . . . . . . . 2.3.1. Usuarios y grupos . . . . . . . . . . . . . . . . 2.3.2. Interpretacin de los permisos . . . . . . . . . . 2.3.3. Modicacin de permisos . . . . . . . . . . . . 2.3.4. El sticky bit . . . . . . . . . . . . . . . . . . . . 2.3.5. Permisos y . . . . . . . . . . . 2.3.6. Permisos numricos . . . . . . . . . . . . . . . 2.4. y . . . . . . . . . . . . . . . . . . . . . . . . . 2.5. Bibliografa . . . . . . . . . . . . . . . . . . . . . . . .
!!
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
2 3. Compilando el kernel 3.1. Introduccin . . . . . . . . . . 3.2. Compilando el kernel . . . . . 3.2.1. Antes de compilar . . 3.2.2. Compilacin del kernel 3.3. Bibliografa . . . . . . . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
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
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
77
79 79 80 81 82
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 . . . . . . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
Captulo 0
Motivacin y objetivos
0.1. Antecedentes
El primer contacto de los autores con el sistema operativo GNU/Linux data de octubre de 1995, en ese momento GNU/Linux ya contaba con 4 aos de vida y el proyecto GNU tena ms de 10 aos de existencia. En esa poca la instalacin y conguracin del sistema no era tan cmoda como lo es actualmente pero a pesar de las dicultades rpidamente comprendimos que era un sistema operativo que se adaptaba perfectamente a nuestras necesidades. Las principales ventajas que observamos en el sistema fueron las siguientes: El coste del sistema era 0, si excluimos el precio del CD de instalacin, que en muchas ocasiones poda obtenerse al comprar alguna revista informtica. Se trataba de un sistema operativo tipo UNIX. Era un sistema multiusuario y multitarea. No era tan slo un sistema operativo sino que incorporaba software muy variado: editores de texto, latex, representaciones grcas, paquetes matemticos, compiladores de C y Fortran. Permita compartir fcilmente recursos: lectores de CDs, discos duros o impresoras. Posea navegadores de internet. Tena clientes y servidores de correo electrnico. Permita conectarse fcilmente a otros ordenadores, pudiendo usarse incluso aplicaciones grcas de dichos ordenadores remotos, lo que permita trabajar con varios ordenadores a la vez. Podamos conectarnos a nuestros ordenadores desde ordenadores remotos, pudiendo acceder a todos nuestros documentos y programas. Otras personas podan usar nuestro ordenador sin que pudieran cambiar nuestra conguracin personal o acceder a nuestros documentos o programas. Incluso para personas inexpertas era muy difcil daar el sistema operativo. No existan virus. 5
Todas las anteriores caractersticas eran tremendamente atractivas para nosotros, al haber usado otros sistemas operativos multiusuarios como el UNIX de Hp o el VMS (de Digital), y estar inmersos en el mundo universitario al pertenecer al departamento de Fsica Atmica, Molecular y Nuclear de la Universidad (FAMN) de Sevilla donde se dispona de varios PCs y de una red de datos que permita una buena conectividad entre ellos. En esos das nuestro trabajo en GNU/Linux era exclusivamente a nivel de usuario e incluso cambiar el fondo de pantalla supona un gran esfuerzo. No obstante siempre estabamos abiertos a ayudar a cualquiera que tuviera problemas, con lo que poco a poco empezamos a comprender mejor los entresijos de GNU/Linux y a realizar tareas que no son las habituales de un simple usuario, transformndonos por arte de magia en superusuarios. Con el anterior comentario debe quedar claro para los lectores que nosotros no somos programadores, aunque sabemos programar, o profesionales de la informtica, aunque gran parte de nuestro trabajo este relacionado con ordenadores, simplemente conocemos ligeramente GNU/Linux y tenemos mucha experiencia congurando sistemas y resolviendo problemas. Durante los primeros aos de nuestro trabajo con GNU/Linux, en el Departamento de FAMN existan unos 10 ordenadores con la distribucin Slackware (distribucin que an existe) instalada, pero cada uno de estos ordenadores era independiente del resto, de forma que podamos entrar de un ordenador en otro (siempre que tuvieramos una cuenta de usuario) y almacenar informacin o correr programas, pero obligaba a copiar los cheros de uno a otro ordenador y a crear constantemente cuentas de usuario. De forma anloga la conguracin de los ordenadores deba hacerse uno a uno, invirtiendo bastante tiempo en realizar cambios en todos los ordenadores del Departamento o en instalar nuevos programas. Otro inconveniente era que si un usuario deseaba usar el ordenador de un compaero, se deba invertir cierto tiempo copiando la informacin de su cuenta. Todo esto nos llev en abril de 1999 a tomar la decisin de construir un verdadero cluster de ordenadores en los que se compartiera todo cuanto fuera posible: cuentas de usuario, cheros de conguracin, copias de seguridad, servidor de correo, etc. Adems se opt por emplear la distribucin Debian de GNU/Linux. Los motivos para ello fueron: La estructura del proyecto Debian garantizaba que en el futuro la distribucin seguira siendo completamente gratuita. Se podan realizar actualizaciones sin necesidad de rebotar los ordenadores. Posea un cuidado sistema de dependencias entre los diferentes paquetes, de forma que nunca faltaban libreras al instalar un nuevo programa. Existan mltiples sitios Debian ociales desde los que podan obtenerse o actualizarse nuevos programas. Existan actualizaciones constantes de paquetes relativas a fallos de seguridad del sistema. Finalmente en agosto de 1999 tenamos un cluster con la mayor parte de las caractersticas que necesitabamos, y cuya estructura era muy similar a la de los actuales CLF (Cluster Linux FAMN) del Departamento de FAMN y CLGEM (Cluster Linux GEM) del Grupo de Estructura de la Materia (GEM) de la Universidad de Huelva.
0.2. Motivacin
Despus de todos estos aos trabajando con GNU/Linux, estamos rmemente convencidos de que ste ofrece muchas ventajas frente a Windows(TM), aunque ni mucho menos despreciamos dicho sistema operativo. Simplemente estamos ms cmodos en nuestro trabajo diario con
GNU/Linux. Creemos que deben usarse aquellos programas que faciliten al mximo nuestro trabajo, ya sean programas GNU/Linux o Windows(TM). Bajo este prisma consideramos que el trabajo de un grupo de personas que tienen la posibilidad de compartir recursos informticos e informacin en su lugar de trabajo, se optimiza empleando un cluster GNU/Linux donde se compartan el mximo de recursos. El inconveniente de este sistema es que debe haber una persona responsable de todo el sistema. Ya que dicha persona tiene habitualmente otras obligaciones, adems de las informticas, es preciso minimizar sus tareas informticas asociadas al mantenimiento del cluster. De nuevo consideramos que un cluster GNU/Linux donde se compartan el mximo de recursos reduce notablemente su trabajo. Aunque llevemos varios aos trabajando con un cluster GNU/Linux, nunca hemos impartido un curso al respecto ni hemos documentado la estructura de nuestro cluster. Consideramos que dicho curso y dicha documentacin pueden ser tiles para muchas personas y adems reducir en el futuro nuestras tareas como administradores, ya que muchos de nuestros compaeros podrn resolver sus problemas por s mismos.
0.3. Objetivos
En este curso hay dos objetivos: Conocer las tareas bsicas que debe realizar un administrador de sistemas GNU/Linux en general y de sistemas Debian en particular. Aprender a construir un cluster GNU/Linux donde se compartan el mximo de recursos posibles. En relacin al primer objetivo es imposible estudiar en detalle cada una de las diferentes tareas que debe realizar el superusuario ya que pueden abordarse de muy diversas formas. En este manual se explicar la forma en la que nosotros solemos abordar dichas tareas y se darn referencias para que el lector pueda optar por otra forma de trabajar que se adapte mejor a sus necesidades. Al cubrir el segundo objetivo mostraremos como se construye un cluster GNU/Linux muy particular: uno anlogo al CLF o al CLGEM. Aunque el diseo del cluster puede ser mucho ms eciente, pensamos que el lector tendr con este manual las ideas bsicas para construir un cluster, con unos requerimientos mnimos, que pueden ir siendo ampliados hasta adaptarse perfectamente a las necesidades del grupo de usuarios que trabajar con l. Debe quedar claro que en este manual no daremos una descripcin detallada de los diferentes demonios y servicios que usaremos, ms bien proporcionaremos una forma particular de usarlos, apoyndonos sobre todo en los cheros de conguracin que se emplean en el CLF o en el CLGEM.
Parte I
Administracin local de GNU/Linux
Captulo 1
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
"
% # $$
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
3. 4.
5. 6. 7. 8. 9.
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
#
% ( &$ &#
: Si la imagen se encuentra en una particin diferente a la particin root por defecto. : Fichero usado por el kernel al arrancar.
14 El program GRUB El nombre , acrnimo de and nied ootloader, corresponde al que hoy por hoy es probablemente el mejor cargador de sistemas (bootloader) y que, casualmente, entra dentro del software ofrecido por GNU3 . es independiente del sistema o sistemas operativos instalados en el ordenLa aplicacin dor y podemos considerarlo como un minsculo sistema operativo en s mismo. El propsito de este mini s.o. es reconocer sistemas de cheros y cheros que sean imgenes de arranque del sistema, y trabajar con ellos, para lo cual nos proporciona tanto entornos de men como de consola. En particular este ltimo entorno es particularmente til y potente, ya que por ejemplo cuenta con un historial de comandos y algunas caractersticas que hacen que aquellos que estn acostumbrados a trabajar con bash se sientan como en casa. En concreto demuestra todo su potencial cuando se instala en sistemas que cuentan con mltiples sistemas operativos y modos de arranque, propios de aquellos que gustan de probar simultneamente diferentes distribuciones GNU/Linux y a la vez conservan otros sistemas operativos en su ordenador. Incluso si sigue siendo el cargador que utilicemos por defecto es interesante contar con un oppy en el que hayamos instalado y que nos permita realizar est tareas de rescate del sistema en caso de problemas. A continuacin supondremos que instalado en el ordenador y describiremos como instalarlo en un oppy y en el MBR de nuestro disco. forma parte de la distribucin estndar y si no estuviera instalado en el sistema En Debian es muy simple aadirlo usando las herramientas estndar de Debian descritas ms adelante en la gua. En principio reconoce multitud de sistemas de cheros, pero por aquello de qu es lo ms comn vamos a instalarlo en un oppy con un sistema de cheros FAT. De paso eso nos va a permitir presentar algunas herramientas importantes. Lo primero insertar un en la disquetera, le damos formato FAT y creamos el sistema de cheros:
l j i $kh l j i $kh @ DDF3AAXU!W s SP s t s SSg a x x W i Q W W6 x 8t C g o x P o I R Q P HDFHAHFI s SP s ~h s SSg C g E o Q r S|AD{ Uq Ao q c S} C P t t t Q r w Q r S|DA{ Uq DFg c Sz C P t t t r E E V C t y x d d 8 w HDDhxDE q f 3V f DHFSw f V c FI f Q s Uur s f V c tDs"ADP Ds FY D`q V i Y V E C v t E 8 E x r P Q q Q B C x P o I R Q P I E V C o P o 5 nm T HD3SAHFpFg c SADFX3E q c q E l j $& i $h g g $!4 l j i k$h l j i k$h l j i $kh l j i k$h l j i $kh
Por cierto, esto destruye toda la informacin que hubiera en el oppy, esperemos que no sea demasiado tarde... Ahora hemos de copiar algunos cheros al diskette, as que lo montamos para poder acceder a l y copiamos los cheros que necesita GRUB para funcionar:
w i i C Y o I SD`DHFpE r `FFX3E C g 5 nm T BD c FIHEFDC B`IHwSiDi`CDYHoFISHFHE s I f 9 DDa q I D c FI B q AI c s `pi f FX3E C Q V i v B Y I 5 nm T B I E C B I w i i C Y o I i D c FSFAC `SSA`DSFp9 c q HS~FX3E P g 5 nm T w i i C Y o I x P o I R Q P SD`ASFHD3SAHFI s SP s UE r U~FX3E C g E C g 5 nm T
la pgina web
Aunque lo hayamos desmontado no sacaremos el oppy pues an nos queda el paso ms importante, que es instalar el cargador de en el MBR del disco. Por cierto, donde estn los cheros de depende de la versin y la distribucin que estemos usando, otras posibilidades a la dada en el texto son los directorios o . A continuacin ejecutamos el comando con lo que entramos en un emulador del intrprete de comandos de y ejecutamos
3 Vase
) 0 g ) % # ) # ( ) "!$"&$kk$"&!"# )
l j i $kh
% # $k
l j i k$h
q c q q c q q c q q c q E E E E
15
t t t t DDD{ @ HAeDFAQ x P o6 i E Dq tAAC A UAs "ADo Dq SFDUHE s P Q Y T r q r E V s Q i w E g Q @ DDeFDC x P o6 E C # !$ l j i k$h 1 !hf$' ) l j i $kh 1 1 1 % ) ) ( ) $$k!"!k&&&) l j i !k$h 0 ( # $!&$! l j i k$h g & ( ) $!!"!k) l j i $kh kU l j i !k$h E q 3 D c B t "Q r Sq C Q r hq f T B s D c Q s w s AY q z c D c B ( & BD BD BD B D c c c c
Con esto hemos completado la instalacin de en el oppy y podemos arrancar el sistema con el mismo. Supongamos que tenemos un sistema simple, que puede arrancar en Windows Me residente en o en Linux con un Kernel 2.4. con /dev/hda2 como sistema root ( ). Al arrancar con el diskette que hemos preparado anteriormente obtenemos un prompt de desde el que podemos interaccionar con el sistema. Con el comando obtenemos una lista de los comandos de los que disponemos. Veamos primero como arrancar Windows TM, para lo cual damos la siguiente secuencia de comandos:
E C C B FD~ 8 pc HAAAY Uq T f Q P V C r V Q HR q E f D3V V Q g @ xr x P T6 w b&HSuAo q c H3C r FDC c Q R E C
Y tendremos enseguida en marcha el familiar (para algunos) proceso de arranque de un sistema Windows. No vamos a explicar en detalle los comandos de grub empleados, aunque si conviene dar una breve explicacin de la convencin que emplea para etiquetar las particiones, ya que ). La forma de referirse en es diferente de la que emplea Linux ( a una particin es como donde indica comenzando por cero la unidad de disco de que se trate (0 si es la primera como en nuestro ejemplo) e indica tambin comenzando por cero, que particin es la que queremos utilizar. La primera en nuestro ejemplo. El porqu de este cambio es no slo se utiliza con Linux sino con otros muchos sistemas operativos, cada debido a que uno con una convencin diferente a la hora de desginar discos y particiones. Es por ello que se ha denido un esquema propio de , independiente de todo sistema operativo. Para arrancar el kernel Linux en haremos, en el caso del sistema que tenemos como ejemplo:
E C C B B FD~ D c s HASDDADASA&ADDHDFHApP c E Uq H Uq u Q E w B x x x W W x r x x x Q d P y x q r r g q P c E Uq HDP c E hq D c t B q r I G q r d x x G Q q r x x d 8 x G i E FHADDDADDH Ds &DHhADD3AQ s &HAS9H Uq u r Q V g B r C c HHS`HAHFHDFDC c S Uq `3HQ r c S~ D c W V P T I R Q P I G E C r Y g R I Y Q B a x Q i w DDAFAE r C q E q E c |r s FSDAQ Dq 3DUHE s w s AY q z V i o W E s Q i w E g Q Q @ 8 r x P T6 G E C F9&HSu&HFDC c D c B x a E C Q DH`Hg q E t s f Q s Da c QHEDoAVpFAHV f q FhSS`FD5 x w Y Y E V g C E V E C C y Q AY q o r C q EAV c 3 q o r C f r FDC FY SUA5 Q g E C B Q i g V % ) % # ) g g 4 &&$kk&$!) t w c E r E s c q t3FDC |&FY 3HFHtH5 Q o Q T E E C B r E V o Q P w y
Et voil! Tenemos al ordenador correctamente arrancado en Debian/Linux. El comando es necesario siempre que el kernel necesite de una imagen initrd para su arranque. Si no lo proporcionamos podemos terminar en un simptico . Despus de arrancar varias veces nuestro sistema de este modo es posible que nos sintamos un poco cansados de tanta orden y queramos congurar un men que nos permita elegir como arrancar. Nada ms fcil, denimos un chero llamado que copiamos a :
16
x E Y V o Q F3HAHP
Como podemos ver al arrancar de nuevo, una vez que el chero ha sido copiado al diskette, tenemos ahora un men en el que podemos escoger entre arrancar el sistema en cualquiera de las dos opciones, instalar en el MBR del disco duro o cambiar el esquema de colores de la pantalla de presentacin de . Desde el men podemos aadir parmetros al kernel en el momento del arranque pulsando la tecla tras seleccionar la opcin a la que queremos aadir algn parmetro y tambin podemos trabajar en el modo intrprete de comandos pulsando la tecla . en el MBR desde el intrprete de comandos una Para terminar veremos como instalar vez que nos hayamos acostumbrado a usando el oppy. Con el paso intermedio por el oppy tratamos de evitar algn efecto colateral no deseado en caso de que nos equivoquemos, una postura conservadora que es adecuado seguir cuando se trabaje como superusuario. De todos modos es buena idea conservar el diskette con ya que puede ser de gran ayuda en caso de que nos encontremos con un sistema con el MBR daado o con algn problema en . La instalacin de en el MBR es una operacin muy parecida a la que hemos llevado a cabo para instalar en el diskette. Por ejemplo podemos crear un directorio en cualquier particin de cualquiera de nuestros discos, aunque lgicamente es preferible hacerlo en aquella particin que utilicemos ms a menudo y sea ms estable, vamos, que no sea en la que experimentamos instalando diferentes sistemas... Una vez hecho esto se copian todos los archivos que se encuentren en o en el directorio que corresponda en tu distribucin particular al directorio y asegurate que tambin est entre los que aades. A continucin entra en el modo de comandos de y ejecuta los siguientes comandos:
l j i $kh $" ) % # ) % &$kk&&) l j i !k$h l j i k$h $ l j i k$h l j i k$h &9f' 1 l j i !kkh l j i k$h ) % # ) % &$kk&&) 0 g ) % # ) S"!$&&$$&% &) E q F D c B @ HSuDFAQ s D c x P T6 i E B @ 8 r x P T6 E C F9&HSuFDC c D c B l j i !k$h 0 "
Y terminado. Ya tienes un sistema con en el MBR que te permitir iniciar tu ordenador con toda comodidad en el sistema operativo que ms te interese.
l j i k$h
@ 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
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"$)
18 Runlevel 0 Funcin Parada Descripcin Finaliza servicios y programas activos, as como desmonta lesystems activos y para la CPU Finaliza la mayora de servicios, permitiendo slo la entrada del administrador (root). Se usa para tareas de mantenimiento, y correccin de errores crticos No se inicia el entorno grco. En distribuciones diferentes a Debian este nivel es generalmente el 3. No suele usarse tpicamente es igual que el 3. Se inician todos los servicios incluyendo los grcos asociados a X Window. Para todos los programas y servicios, y reinicia el sistema.
Monousuario
4 5
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 .
$!
"
&&
"$&
&&
l j i k$h
&k &
20
Sh D&D& D &ADk $ SH!& $ &`Skx
Hay que tener el cuenta que al ser /proc fuertemente dependiente del kernel esto hace que su estructura dependa de la versin que disponga el sistema y los cheros pueden cambiar de una versin a otra (los comentarios que siguen se reeren a un kernel de la serie 2.4.x). Una de las caractersticas interesantes es que en el directorio /proc, podremos encontrar las imgenes de los procesos en ejecucin, junto con la informacin que el kernel maneja de ellos. Cada proceso del sistema se puede encontrar en el directorio /proc/pid-proceso, donde hay un directorio con cheros que representan su estado. Esta informacin es til para programas de depuracin, o bien para los propios comandos del sistema como o , que pueden utilizarla para ver el estados de los procesos. Por otra parte en /proc podemos encontrar otros cheros de estado global del sistema, comentamos brevemente algunos cheros que podremos examinar: Fichero /proc/bus /proc/cmdline /proc/cpuinfo /proc/devices /proc/drive /proc/lesystems /proc/ide /proc/interrups /proc/ioports /proc/meminfo /proc/modules /proc/net /proc/pci /proc/scsi /proc/version Descripcin Directorio con informacin de los buses PCI y USB Linea de arranque del kernel Informacin de la CPU Dispositivos del sistema de caracteres o bloques Informacin de algunos mdulos de hardware Sistemas de cheros habilitados en el kernel Directorio de informacin del bus IDE, caractersticas de discos Mapa de interrupciones hardware (IRQ) utilizadas Puertos de E/S utilizados Datos del uso de la memoria Mdulos del kernel Directorio con toda la informacin de red Dispositivos pci del sistema Directorio de dispositivos scsi, o IDE emulados por scsi Version y Fecha del Kernel
g & g
1.3.2. Procesos
Los procesos que se encuentren en ejecucin en un determinado momento sern de diferente naturaleza, pudiendo encontrar: Procesos de sistema, o bien procesos asociados al funcionamiento local de la mquina y del kernel, o bien procesos llamados demonios (daemons) asociados al control de diferentes servicios ya sean locales, o de red. En este ltimo caso podemos estar ofreciendo el servicio (actuamos de servidor) o recibindolo (actuamos de clientes). La mayora de estos procesos aparecern asociados al usuario root, aunque no estemos en ese momento presentes como superusuario. Algunos servicios se asocian a otros usuarios, llamados usuarios de sistema como son: lp, bin, www, sys.... Estos son usuarios virtuales que el sistema utiliza para ejecutar ciertos procesos y para saber todos los que hay denidos basta con examinar el contenido del chero . Procesos del superusuario: en caso de actuar como root nuestros procesos interactivos o aplicaciones lanzadas tambin aparecern como procesos asociados al usuario root.
( g ) 0 &$&&$)
21 Procesos de usuarios del sistema: asociados a la ejecucin de sus aplicaciones, ya sea tareas interactivas en modo texto o en modo grco. Como comandos rpidos y ms tiles para el control de procesos podemos utilizar: : el comando estndar, lista los procesos con sus datos de usuario, tiempo, identicador de proceso, y linea de comandos usada. Una de las opciones utilizada es , pero hay muchas ms opciones disponibles (ver man). : Una versin que nos da una lista actualizada a intervalos. Un interfaz grco para en GNOME es , que proporciona una informacin ms completa. Ambos programas permiten enviar diferentes seales a los procesos. : Nos permite eliminar procesos del sistema, mediante el envi de seales, como por ejemplo la de terminacin. El comando nos proporciona una lista de las posibles seales. , donde indicamos el nmero identicador del proceso ( ). til para procesos con comportamiento inestable, o programas interactivos que han dejado de responder. Para conocer el de un proceso podemos utilizar o . : Mata procesos indicando el nombre en lugar del PID. til en caso de que necesitemos matar simultneamente varios procesos que provengan del mismo programa. En el caso de los procesos ocurre algo similar a lo que pasa con los directorios, se establece un rbol de procesos siendo el proceso con el proceso raz, dependiendo de l el resto de procesos. Las aplicaciones y nos permiten obtener este rbol de procesos. Una tcnica muy empleada para el control de lo que ha ocurre o ha ocurrido en el sistema y que permite reconstruir lo que hayan hecho los usuarios del sistema es la gestin de procesos (process accounting). Esta utilidad permite al superusuario saber qu procesos han corrido diferentes usuarios y cundo por lo que complementa a otras medidas de seguridad presentes en el sistema. Para activar la gestin de procesos es necesario que el kernel del sistema haya sido compilado activando la opcin correspondiente 4 , algo que se cumple para los kernels precompilados de las principales distribuciones, Debien entre ellas. Adems debemos instalar los paquetes que posibilitan esta gestin de procesos, lo que en Debian implica instalar el paquete . A me5 las aplicaciones de este paquete deben ser ejecutadas por el nos que se congure de otra forma superusuario. En concreto una vez instalado el paquete debe existir el chero donde se lleva a cabo el almacenamiento de la informacin, llamado (de rocess oun ing). Si no existe dicho chero lo crearemos antes de iniciar la gestin de procesos con la orden . A continuacin comprobamos que la gestin de procesos no est incluida dentro de los servicios que se lanzan en el arranque, y si es as procedemos a lanzarla usando el comando :
" 0 0 0 "$"( $&( 0 0 0 0 &( g Ak$H$S$$ kH$A&Dk$H!SShA& $ H$7kxD3A ! D H$7k&ShA& $ 0 0 ( g ) ) # ( &&!k$$"") e ! # $"$ # $& g 0 0 ( g ) 0 0 ( ) # ( $"&&$$&&&) # % ( $"$&' &$$$ g & g $ $ g " g &$ g & 4 kg g
C P SS s
22 Con esto comienza la gestin de procesos por parte del sistema. Es importante tener en cuenta que los procesos no se aaden al chero hasta que han terminado de correr y se cierran, no cuando son lanzados. Esto quiere decir que si lanzamos un proceso y lo dejamos abierto sin cerrarlo no queda registro del mismo hasta que decidamos cerrarlo. Y an ms. Si se apagara el ordenador sin haber cerrado el proceso no quedar constancia del mismo en . Una vez lanzado podemos entrar como un usuario diferente a root, por ejemplo thorin, ejecutar algunos comandos y salir. Tras ello corremos de nuevo ahora sin argumentos para detener la gestin de procesos y podemos comprobar cual es el contenido de usando el comando .
0 0 ( $"&g 0 0 & $&( ( ' 0 0 ( &"g kx$k& k SkH$ kx$k7 F& $ kx$k7 F& $ k kx$k7 F& $ kx$k7 F& $ k kx$k7 F& $ k kx$k7 F& $ S kx$k& F& $ k kx$k7 F& $ F"A kD! kx$k& F& $ & kx$k7 F& $ k kx$k7 F& $ F"A kD! H$S$k$ HF!HkA&S$H&HShF& $ HkHkA"Ak$H&HShF& $ 0 0 &&( ' 0 ( ' &$ ( ' 0 ' $!
La salida de este comando nos proporciona el nombre del comando ejecutado, nombre del usuario, terminal en la que se ejecut el proceso y el momento en el que termin dicho proceso. Si queremos informacin nicamente acerca de un tipo de procesos podemos aadir a la opcin nombre del comando. Tambin se puede seleccionar la impresin de procesos pertenecientes a un usuario concreto con la opcin y en general es posible obtener mucha ms informacin. Como siempre hay que mirar en ... las pginas !
1.3.3. Memoria
Respecto a la memoria del sistema tendremos que tener en cuenta que disponemos tanto de la memoria fsica de la propia mquina como de la memoria virtual, que puede ser direccionada por los procesos. Normalmente no dispondremos de suciente memoria para todos los procesos que tienen lugar simultneamente en el ordenador. Lo que suceder es que la memoria fsica sera menor que el tamao necesario de memoria virtual y esto obliga al sistema a utilizar un rea de intercambio (swap) sobre disco. Este zona de intercambio (swap) puede hacerse como un chero en el sistema de cheros, pero es ms habitual encontrarla como una particin de intercambio (llamada de swap) creada durante la instalacin del sistema. En el momento de particionar el disco se declara como de tipo Linux Swap. Para examinar la informacin sobre memoria tenemos varios mtodos y comandos tiles:
$$4
chero : Aparece la particin de swap (si existiese) con un comando de podemos averiguar su tamao.
% ( 4 ) 0 & ) g
: permite conocer que procesos tenemos, y con las opciones adecuadas nos provee del porcentaje de CPU y memoria usada.
# 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 &
6 Estas particiones se crean sobre una particin extendida, que permite colocar mltiples particiones lgicas sobre una fsica.
$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 ' &)
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)
) $&!)
disco maestro, 1er conector IDE; disco esclavo del maestro segundo conector, esclavo segundo conector.
( % $&&$T
( '
( % "&$9
( '
( "&$%
( "'
26
k$4
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 &&'
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
' 1 t"$h4
27
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
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.
$$( # g
$(
3.
( &'
4.
Todos aquellos mensajes que tengan la prioridad , , , , tenecientes a tengan, son almacenados en .
# (
( ' ) ) # ( !!k!!k$$"") " ( &' ' ! "0 $$( ( # # g 0 & & 4
5.
Enva a todo el mundo los mensajes con la prioridad de emergencia. y se enva al chero 29
30 Adems es muy conveniente instalar y lanzar en el arranque del sistema el programa que nos permite mantener bajo control el tamao de los cheros de registro, comprimiendo y borrando de acuerdo con el tiempo transcurrido. Otros comandos interesantes relacionados con el registro del sistema son (tiempo que hace que el sistema esta activo), (analiza el registro de entradas/salidas en el sistema generalmente presente en ).
( # &&&kk$
1.6. Bibliografa
1. 2. 3. 4. 5. 6. 7. Administracin avanzada de GNU/Linux, Josep Jorba Esteve y Remo Suppi Boldrito. XP04/90785/00019, Formacin de posgrado Universidad Oberta de Catalunya (2004). Boot with GRUB, Wyne Marshall,Linux Journal issue 85 SSC Publications (2001). From Power Up To Bash Prompt HOWTO, Greg OKeefe 7 (2000). Process Accounting, Keith Gilbertson,Linux Journal issue 104 SSC Publications (2002). syslog Conguration, Mick Bauer,Linux Journal issue 92 SSC Publications (2001). Gua de referencia DEBIAN8 , Osamu Aoki (Trad. al espaol coordinada por Walter O. Echarri) (2005). LINUX: Rute Users Tutorial and Exposition, Paul Sheer (2001).
7 8
' g S$
Captulo 2
Sistemas de archivos
2.1. Introduccin
En todas las variantes del sistema operativo UNIX el concepto de archivo o chero es ms amplio que en otros sistemas operativos y en esta parte del curso trataremos de explicar la estructura de cheros de un sistema GNU/Linux, los diferentes tipos de archivos que existen as como los permisos de los mismos, haciendo especial nfasis en la importancia de los permisos como un primer paso hacia un sistema (ms) seguro. Todos sabemos que un chero no es ms que la agrupacin de un conjunto de informacin bajo un nombre, que es el nombre del chero. Esta informacin puede ser muy variada, yendo desde grcos o texto hasta cdigo ejecutable. Lo importante de UNIX es que bsicamente todo viene representado por cheros: documentos, grcas o programas. Los directorios, que estamos acostumbrados a asociar a contenedores de cheros son en realidad cheros que contienen... listas de cheros. Incluso el lector de CDROM o de DVD, la disquetera, un lpiz de memoria y en general todos los dispositivos son para el kernel cheros que se leen y a los que se escribe.
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.
Para ilustrar el concepto de tree podemos analizar la siguiente salida del comando
HS rUq `R Y g I c HR V I S`E i g i g Q SSUHE I E C SFDC c I Uq 3 DFUQ c r Y Q E C g I P Q DV q Ag I C HP r `So E s DY C I SP c E Uq I E C SFDC B q r I Q g DhC T I Uq B r I z U s XFE q c q A hq c C FE Y nm T E r T
1 El journaling permite tener un registro de los cambios que sufre el sistema de cheros, lo que permite recuperaciones ms rpidas en caso de error
!$g
' &)
V 4 ) ) 0 !`!$ )
0
33
I s 3HP Uq C r P Y Ct r Y g HFAbS hq `R I I s c I c s Q s B s I s I SR I Uq r c s B s w s I f C c i I E i SH`C I SE r g I B q Y P Y Ct HFDb" g q P c E Uq t q r D g q P c E Uq t q r i ) "H"# ) # ( ) "" !"# ) ( 0 ) "$$"# ) ! 0 ) "!"# ) 0 ) # !"# ) % &$"# ) ) "# ) % ) 0 # g "&) % $") !) % 0 $) % ) % "$) # ) # ( ") I f FQ E I R Q SADP g hC c P f
Se pueden ver todos los subdirectorios que cuelgan del directorio raz del sistema /, que se distinguen fcilmente de los cheros porque en el caso de los directorios el nombre termina con el carcter /. Tambin pueden verse varios cheros como vmlinuz y vmlinuz.old a cuyos nombres se les ha aadido un sujo , lo que indica que son links o enlaces a otros cheros. La forma de organizar los cheros en un sistema GNU/Linux podra ser cualquiera, pero en la prctica los nombres y archivos presentes en al menos el primer y segundo nivel a partir del directorio raz vienen ya determinados. En concreto podemos distinguir
Contiene programas, en general accesibles a todos los usuarios y que forman parte del UNIX standard, p.e. . Otros programas ejecutables menos generales se encuentran en subdirectorios con el mismo nombre. Binarios (ejecutables) que en anteriores versiones de UNIX se encontraban en general son de inters para el superusuario. . En
Contiene los cheros de conguracin del sistema y sus diferentes dispositivos as como aquellos cheros que controlan los diferentes modos de arranque del sistema. Contiene bibliotecas (tambin llamadas libreras) que pueden ser llamadas por programas o utilizadas para compilarlos. Tambin contiene los mdulos de los diferentes kernels instalados. (*) Este directorio posee alguno de los subdirectorios ms importantes del sistema como son: : Librerias para programacin. : Ejecutables del sistema. : X Window System, version 11 Release 6. : Documentacin. : Cdigo fuente. : Informacin que no depende de la arquitectura del sistema en particular. : rbol de programas instalados localmente.
(*) En este directorio se suelen almacenar los cheros de log del sistema (registros de la actividad del sistema) y las colas (spool). (*) Sistema de cheros virtual con informacin acerca del sistema, el Kernel y delos procesos. (*) Ficheros que utiliza el cargador del sistema boot loader.
0 )
34
g $$)
Al igual que suele ser el directorio donde se instalen paquetes y programas ajenos a la distribucin del sistema y que se quiere hacer accesibles a todos los usuarios. (*) Contiene cheros temporales creados por los programas durante su ejecucin. En el caso de la distribucin Debian este chero se borra cada vez que arranca el sistema. (*) Directorios home de los diferentes usuarios del sistema. Contiene los cheros especiales correspondientes todos los dispositivos y perfricos del sistema. Una descripcin detallada de la jerarqua de cheros en un sistema Debian puede encontrarse en el documento Filesystem Hierarchy Standard se puede obtener al instalar el paquete o en la web de debian2 . En el caso de los directorios marcados por un asterisco se suele reservar para ellos una particin del disco duro con punto de montaje en el directorio, de este modo se facilita la actualizacin del ) o se evitan (o minimizan) daos en caso de que se llene por completo un sistema (caso de sistema de cheros. Existen dos cheros especiales que no se muestran en la anterior salida pero que estn presentes en todos los directorios. Uno es . que hace referencia al directorio en el que nos encontramos y el otro es .. que hace referencia al directorio que contiene al directorio en el que nos encontramos (esto es, implica subir un escaln en el rbol de directorios).
' ") &) g ' !k) ( 0 ) &$"# )
0 g ( % &$"S&
' &)
35
$'
El tipo de lesystem puede ser msdos (fat), vfat(fat32), ntfs(ntfs lectura), iso9660 (para cdrom), ... El dispositivo es la entrada correspondiente en el directorio /dev a la localizacin del dispositivo, los IDE tenia /dev/hdxy donde x es a,b,c, o d (1 master, 1 slave, 2 master, 2 slave) e y el numero de particin, los SCSI (/dev/sdx) donde x es a,b,c,d ... (segn el id scsi asociado 0,1,2,3,4 ...) Vamos a ver algunos ejemplos: : montara el cdrom (si es el IDE que esta en el segundo ide de forma master) en el punto /mnt/cdrom. : montara el cdrom, /dev/cdrom se usa como sinnimo (es un link) del dispositivo donde esta conectado. : montara el disquete, /dev/fd0H1440 Seria la disquetera A en alta densidad (1.44MB), tambin puede usarse /dev/fd0. : montara la segunda particin del primer dispositivo IDE (la C:), de tipo ntfs (por ejemplo un Windows XP). Si estas particiones son ms o menos estables en el sistema (o sea no cambian frecuentemente) y les queremos utilizar, lo mejor sera incluir los montajes para que se hagan en tiempo de : ejecucin, mediante congurar el chero
) k$ & D&S$$A Hk ) ) kk4 !ak Dk Sk DkHk ) k$ & kS k !S $k $S $k k$ $ S 6 D&AkW!k k S 2$$H2Sk $kS&H22$F&2k!p7$k$D!u 9 $k$D!!DkH&SH$xW$!S kFH 7 ' g g 4 ) ) H V V U H 4 ) ) ( 4 $$!k&!' W "!k!!S ) ' ) ( ) ) 4 !$"$!$!!"!k"S
Por ejemplo esta conguracin incluye algunos de los sistemas estndar, como la raz en /dev/hda2, la particin de swap que est en hdb3, el sistema proc (que utiliza el kernel para guardar su informacin). Y el disquete, el cdrom, y en este caso un disco usb de tipo ash (que se ve como un dispositivo scsi). En algunos casos se especica auto como tipo de lesystem, esto permite que lo autodetecte, si se conoce es mejor darlo en la conguracin, y por otra parte el noauto en las opciones permite que no sea montado de forma automtica siempre, sino que bajo peticin. Si tenemos esta informacin en el chero, el proceso de montaje se simplica mucho, ya que se ara o bien en ejecucin o bien en bajo demanda (para los noauto). Y puede hacerse ahora simplemente pidiendo que se monte el dispositivo o el punto de montaje:
H 4 ) ) $"&$' ' # 0 ) ) &$ &"$&' $'
ya que toda la dems informacin ya la tiene el sistema. Para el proceso contrario, desmontaje es bastante sencillo, comando umount con punto o dispositivo:
H 4 ) ) ' &!k$ ' "k&&!$ # 0 ) ' ) '
36 en el caso de medios extraibles, tipo cdrom (u otros) puede usarse eject para la extraccin del medio: o slo en este caso. Los comandos y con -a montan o desmontan todos los sistemas disponibles. En el chero se mantiene una lista de los sistemas montados en un momento concreto, se puede consultar o ejecutar sin parmetros para obtener esta informacin.
En la lnea correspondiente al chero hay varias entradas separadas por dos puntos. La primera corresponde al o nombre del usuario, la segunda corresponde a la contrasea o passwd (encriptada). Si este campo est ocupado por una entonces la contrasea encriptada se encuentra en . En tercer lugar encontramos el nmero de identicacin del usuario o UID, en este caso . En cuarto lugar tenemos el nmero de identicacin del grupo primario al que pertence el usuario o GID ( ). El resto de campos en el chero nos dan el nombre del usuario ( ), su directorio HOME ( ) y la shell en la que ) al hacer login. entra por defecto (
"$$&) # ) ' ( &!&g ( &!&g ( % ) % !"& ) w&h ( i # $ ( # ' "$k $$ ( ) 0 &" !$)
g # ) 0 "k$)
y la entrada en
donde se dene los grupos a los que est asociado el usuario sera
0 "S
Y t C P u W x Wm y 8 W s H"V q f r Q f S3GAb&U`8 !
V s d r FtFh8
( '
m p x 8m C C &`8 Um c SP c g C f s 3Q c wD`C c 3I f AAAV f FXFE q c q E i i E Q I E 5 nm T T s V`I `q B`IbmAC c HV `H9C `bHADA&`8 U&`8 U"FC c HSB B r Y B I Q g T Im r r r m p x 8m p x 8m m Y V Y V B i P s V i E Q I E Ht3Q c rD Ds UI f AAAV f FXFE q c q E 5 nm T g # "k ( &!&g
el grupo principal al que pertenece thorin es Como podemos ver en la entrada de el grupo aunque adems el usuario Thorin forma tambin parte del grupo . En este chero adems del nombre del grupo viene dado la contrasea de grupo (en general no se usa) el nmero de identicacin del grupo o GID y la lista de usuarios asociados al grupo. La forma ms sencilla de modicar esta informacin en los cheros y es mediante los comandos , , y , especialmente pensados para un sistema Debian y ms fciles de usar que , y . El comando nos permite denir un usuario, un grupo o ambas cosas a la vez. De este modo si quisiramos aadir un usuario con username balrog en el grupo mordor haremos, como superusuario:
Como vemos primero hemos creado el grupo mordor y luego hemos aadido el usuario balrog haciendo que pertenezca a dicho grupo. Adems de la contrasea se pide rellenar unos campos de informacin acerca del usuario que son optativos. En el caso que dicho grupo existiera el primer paso es innecesario. Podemos comprobar que se ha aadido la correspondiente lnea a los cheros y :
E V o Q P Q T FY 3HFHtFE c 3C
t m C C gk i t c SP c ulD`C c FC c
' #
g # $&$
( &$&&g
4 # ( "!
g # ) 0 "k$)
El comando nos permite modicar los parmetros que denen a un usuario o grupo y los comandos y nos permiten eliminar usuarios o grupos. Estos comandos junto con los dos anteriores permiten controlar de forma exhaustiva las caractersticas del usuario . Para los que se aade, como se puede comprobar consultando las correspondientes pginas que sean amigos de las GUIs (interfaces grcas) exister un gestor de usuarios y grupos bastante avanzado en KDE ( ).
38
Q v p am v x d W i Q xt ADHe"AF3F3ed E V d d pm 8 W AHtFbkU8 r 3t3ed V s xt E q Uq HB q Ab"h8 B Q z a 8 3D3Ua r Y a pm 8 o q "DAx f Hh8 q Db&UFW r 3t3Hd t x x x p pm W 8 d V s g p am v x i Q xt s UV c FC c i He"AtW 3F3ed & `" v % ! 0 Q v p am v x d W i Q xt ADHe"AF3F3ed E q Uq HB q Ab"h8 B Q z a 8 3D3Ua r Y a pm 8 S S# $ `& v % &h # # $$S$$k $# "h s Q Ds s s Q Ds s s Q Ds s s Q Ds s s Q Ds s CB CB CB CB C B rUq rUq rUq rUq r Uq # c Fv C T E c FW C T E c F8 C T E c F8 C T E c Ftd C T E U c s U c U DDU D c D DDU $"# c H c H c H c c H c c c P c P c P
El comando en cuestin nos proporciona una salida en formato extendido (opcin ) y con el tamao de los cheros en unidades humanas (opcin ). Como puede observarse, adems del nombre del chero como ocurra en el caso abreviado, aparece mucha ms informacin. En particular la primera columna se reere a los permisos, la segunda al nmero de enlaces no simblicos asociados al chero (links, ver ms adelante), las dos siguientes al propietario y al grupo asociados al chero, la quinta al tamao del chero, la siguiente a la fecha de modicacin del chero y la ltima al nombre del chero. Hay que destacar que un usuario no puede, en principio, escribir en la cuenta de otro ni borrar sus cheros. Adems tampoco podr modicar cheros de otros usuarios, a menos que estos le den el correspondiente permiso. Espero que haya quedado claro, que es muy difcil borrar informacin del sistema Linux a menos que se tengan los permisos adecuados. A continuacin veremos como se examinan los permisos y se alteran, pero hay dos cosas muy importantes a tener en cuenta. La primera es que el usurio puede hacer todo cuanto quiera, bsicamente los permisos no lo afectan. Es por tanto muy importante no usar la cuenta root a menos que sea imprescindible y cuando se use hacerlo con sumo cuidado. La segunda cuestion a tener en cuenta es llevar una poltica adecuada de permisos, lo que constituye un primer paso hacia la seguridad de vuestro sistema. Como se interpretan los permisos de un chero? La informacin que nos proporciona es algo similar a oa , como podemos ver en el ejemplo proporcionado anteriormente:
s Q Ds B s C s Q Ds B s C # # # SS$$S C T E rUq c Fv r C T E Uq c F8 U c U c H c P DDU c H c D c D c c E B g q c q A c DShC B E B g q c q A c DShC B `" v %
Los permisos vienen indicados de la siguiente forma: el primer carcter indica si se trata de un chero ( ) o un directorio ( ). As pues es un directorio mientras que es un chero. A continuacin la informacin se reparte en tres grupos de tres elementos cada uno. Estos grupos orresponden a los permisos para el usuario (el propietario del chero, thorin en este caso), el grupo (users) y para el resto de los usuarios que no pertenecen al grupo. Por ejemplo para el chero estos tres grupos son: usuario , grupo y resto del mundo . Dentro de cada uno de estos grupos, signica permiso para leer, permiso para escribir o borrar y permiso el usuario thorin puede ejecutar el programa, para ejecutar. As pues en el caso de leerlo o modicarlo, mientras que los usuarios del grupos bosses pueden leerlo o ejecutarlo, pero no modicarlo. Por ltimo el resto de usuarios no puede ni leer ni ejecutar ni modicar el chero. En caso de que estemos examinando un directorio los permisos de lectura y modicacin tienen idntico signicado que para un chero normal. Sin embargo el permiso de ejecucin tiene un signicado distinto. Tener activado el permiso en un directorio implica que es posible entrar en dicho directorio y hacerlo el directorio de trabajo con el comando , o atravesarlo para entrar en alguno de sus subdirectorios. Por tanto en el caso de nuestro ejemplo el usuario thorin tiene todos los permisos para el directorio mientras que tanto los usuarios del grupo bosses como el resto de usuarios no puede modicarlo, pero s entrar en l y examinar su contenido. Por ejemplo el usuario bombur puede entrar en el directorio y listar los archivos que contiene
FQHEt&DY q c TFE q gyDxem"xh8W c VSDDADW s Q Ds B Uq c F8 Y x p s C r C T E Y 3 s x&AHFI hq c C F3HhC UbFE Y Q v r T E I Q g T Im T I Q v r SADFI Uq c C F3P f XFE T E n nm T
39
Si, por ejemplo, el usuario quiere cerrar el acceso al directorio llamado que originalmente tiene los permisos y que l sea el nico usuario que pueda acceder al mismo tendr que eliminar los permisos que tiene otorgados el grupo ( ) y el resto de usuarios ( ). Haciendo
( {ks|$k$ A&$x 2222 y x AkhA&D& SA& $ { y x sD&SDhA&D& SA& $ # # # $k$
Por ltimo, si queremos cambiar los permisos del propietario utilizamos para referirnos a este la clave as que si queremos eliminar todos los permisos de ejecucin del programa haremos
# w c& SkzD& $k$ A&$ DD A y x A&$SxAkhA&D& SA& $ y x A&S$D`k&SDhA&D& SA& $
Aqu surge un inconveniente. El permiso de escritura permite a los compaeros del grupo bosses aadir cheros al directorio y modicarlos, pero tambin les faculta para borrar o modicar todo aquello que se encuentre en el directorio, incluyendo aquellos cheros que no han sido aadidos por ellos sino por otros miembros del grupo bosses. Un permiso especial llamado sticky bit nos permite evitar este problema. Cuando se activa este bit pegajoso 3 en un directorio limita las posibilidades de borrado y de alteracin de cheros de los usuarios con permiso de escritura en el mismo: para borrar o modicar un chero en el directorio hay que ser el propietario del chero o el propietario del directorio. En cualquier otro caso, aunque se pertenezca a un grupo con permiso de escritura en el directorio, no es posible escribir o alterar los archivos. Para activar el sticky bit se utiliza el comando , por ejemplo en nuestro caso si el usuario thorin quiere activarlo para el directorio har:
3 sticky:
A&$SxD A&$SxD
en el que todos
( &&&g
En esta seccin tratamos de dos permisos que deben de manejarse con precaucin, pues pueden ser una importante brecha en la seguridad de los sistemas si no se manejan con cuidado. Cuando se activa el bit de un chero ejecutable al correr cualquier usuario dicho chero lo hace no con sus privilegios, sino con los privilegios del usuario propietario del chero ejecutable. Del mismo modo si se activa el bit de un programa este se ejecuta con los privilegios asociados al grupo propietario del chero y no con los del grupo del usuario que lo ejecuta. Un ejemplo para aclarar este punto. Supongamos que el usuario thorin compila un programa C llamado que tiene el mismo efecto que ejecutar el comando borrando el chero . Supongamos que thorin permite a los miembros de su grupo ejecutar este programa y adems lo hace con el comando :
Si ahora el usuario gandalf trata de borrar el chero y para ello utiliza el programa nalmente tiene xito, a pesar del sticky bit, y ello es porque el programa corre con los privilegios de thorin, su propietario, y l si puede borrar el chero:
( w ( !k$$c&g ( g & ( g $&$ ) h1 " ' "}0 y &SSS&tA7S`S2D&Dk$$xF& $ 1 22H D y &SSS&@SAp$$$S h D&D& y !S&7@&A$$$S h D&D& y &$S&z &A$$$S h D&D& k ( w ( !k$$c&g ( g $" ! $
40
Ntese la mayscula al nal de la cadena de permisos. Indica que se ha activado el sticky bit y que el directorio no es accesible a usuarios fuera del grupo del propietario. Si al nal de los permisos se encuentra una minscula entonces indica que se ha activado el sticky bit y que el directorio es accesible a todos los usuarios. Este bit slo afecta al directorio en el que se ha activado, y no a sus subdirectorios. Un posible listado del contenido del directorio planes es el siguiente
Como podemos ver diferentes miembros del grupo han aadido archivos a este directorio. Supongamos que al usuario gandalf no le parece adecuada la informacin en el archivo que ha incluido el usuario bilbo e intenta borrarlo:
y k 3u7S`S 1 $S$$ $S" 2D2D D $ D3u7S`S~ 1 $S$$ F& $ 2D2D D & D3u7S`SD 1 $S$$ kk 2D2D D u7S`SD$S$$ 1 F& $ DD D31u7S`SD$S$$ F& $x G2 k k y HAp$$$S h D&D&
Por supuesto el usuario thorin s puede borrar o modicar el archivo posee el directorio en el que est el archivo.
y kDS k$S! k $Hka S &Dkx k~S x v x v pak r! kH$kkAD& &DkS y x k $7St$ $S$A k &F$HD&A& kk ( w ( &$$"g &$&&% h $k1G7HSDk$$xF& $x G2 y $$$kDAh D&D& $$S@&Ah D&D& y
( w ( &$$&g
2.3.5. Permisos
f e S3!X
f Sc&X
al ser l quin
41
y kH$kA!7 !D&D7kk s t k $S9k$H3& S!A$DD!D& k y x y x St!S&$H3& S!A$DD!D& k 1 Stu7S`SD$$$$S& 2DD A k $S9k$H3& S!A$DD!D& k y x
Si queremos activar el bit a un programa resulta obvio que dicho programa debe contar con permisos de ejecucin para el grupo o para todos los usuarios. El permiso especial tiene un efecto similar pero con los grupos. Si se activa el bit de un ejecutable con el comando chero y el chero puede ser ejecutado por usuarios no pertenecientes al grupo ( ), entonces al ejecutarse el programa corre con la GID asociada a su propietario y no al usuario que lo ejecuta. y , este permiso slo tiene efecto sobre programas binarios En ambos casos, (compilados), no sobre scripts. IMPORTANTE: Por razones obvias los permisos y pueden comprometer de forma innecesaria la seguridad de un sistema si se activan en programas pertenecientes a root o a cualquier usuario con privilegios de administrador. En estos casos deben usarse con cuidado y es siempre recomendable utilizar algunas de las herramientas para delegar la autoridad del superusuario citadas en la prxima seccin.
Esto implica segn lo que acabamos de ver ningn permiso especial, ningn permiso para el usuario y permiso de escritura para el grupo y el resto de usuarios. No parece demasiado lgico... no trabaja directamente con los modos. El resultado La explicacin de esto radica en que
( ' &
!k
k
$
k
42 es necesario restarlo a para obtener el modo de los cheros que se creen. Por tanto , un modo por defecto bastante ms lgico. Un ltimo apunte a tener en cuenta, el permiso de ejecucin slo se activa de forma automtica en el caso de directorios. Para cambiar los permisos por defecto basta con ejecutar con el valor numrico apropiado, teniendo en cuenta lo que acabamos de decir acerca de restar a . Para que este nuevo valor permanezca para cualquiier sesin se puede incluir la correspondiente lnea en o .
h h h ``H h H e H H h h h ``$n`H H H 0 $ I 4 # g w ( %1 ) $k&$!&2kP
Un problema que suele plantearse al administrar nodos con UNIX, en especial cuando se trata de un cluster con un nmero elevado de usuarios es la gran disparidad de privilegios existente entre el superusuario (root) y el resto de usuarios. Por un lado tenemos al superusuario con TODOS los permisos habidos y por haber, con la posibilidad de manejar y alterar el sistema a todos los niveles. Por otra parte los usuario de a pie tienen un nmero muy restringido de permisos y una posibilidad muy limitada de poder manejar el sistema. Esto hace que tengamos en muchas ocasiones que matar moscas a caonazos utilizando la identidad de superusuario para tratar con situaciones rutinarias que otro usuario podra resolver. Y el problema ms grave que esto acarrea -aparte del agotamiento del administrador del sistema- es que abre la posibilidad de que la contrasea del superusuario sea conocida por un crculo demasiado amplio de usuarios. Una primera solucin al problema descrito es promover en el sistema una poltica adecuada de permisos, lo que combinado con las herramientas que presentamos a continuacin, en especial , permite solventar al menos en parte este problema. El comando username nos permite transformarnos temporalmente en otro usuario, adquiriendo su identidad. Por ejemplo, si el usuario thorin quiere convertirse durante una sesin en el usuario bombur har
y3&kSDkHD!D& S$D$ x $k y $DkAh D&D& &
Al ejecutar el comando es necesario proporcionar la contrasea del usuario al que se va a acceder y tras ello tenemos los mismos permisos que dicho usuario. Si el superusuario es el que ejecuta el comando no necesita introducir contrasea alguna. Si aade un guin al comando ( username) entonces adems de entrar como el usuario se ejecutan sus cheros de conguracin, no se le da un nombre de usuario entonces se esto es, se inicia una login shell. Si al comando supone que se desea adquirir la identidad del superusuario, siendo necesario introducir el passwd de root. Una forma simple de limitar la actividad como superusuario es a travs de la opcin , que seguida de un comando hace que se ejecute ese comando con la nueva identidad regresando el usuario inmediatamente a la inicial, por ejemplo si thorin necesita realizar una bsqueda en uno de los cheros de log sin abrir una sesin de root puede hacer
0 $ y kHkkD&A3 HD&A&D3D3D{ k $k gk !Dk$ $ 7 Sn TAhD!D& `F& $ y x
Con la opcin se consigue solventar en parte el problema de limitar al mnimo el acceso como superusuario al sistema, aunque sigue siendo necesario introducir la contrasea del superusuario, una informacin que debera ser muy restringida. Un mtodo ms adecuado de solventar
2.4.
4 # g ) 0 $k&$$)
h h h `H
( ' !k
43 , el problema de acceder a aplicaciones pertenecientes a root es mediante el uso del comando cuyo nombre proviene de la contraccin peruser . Esta aplicacin permite a usuarios normales la ejecucin de aplicaciones del superusuario con la ventaja de que no es necesario que los usuarios conozcan la contrasea del superusuario y adems lleva un registro de las actividades de los usuarios a los que se ha dado permiso para ejecutar las aplicaciones. En todas las distribuciones Debian est presente este comando, si no eswtuviera instalado basta con ejecutar como superusuario. La conguracin de se lleva a cabo en el chero aunque este archivo no se edite directamente sino a travs del comando . En este archivo se denen las aplicaciones que se van a abrir a otros usuarios y cuales van a ser estos usuarios. Pongamos un ejemplo algo articial, en el sentido que esx muy simple, pero nos puede dar una idea de como funciona . Si, por ejemplo, el superusuario desea permitir a gandalf borrar perteneciente a bilbo puede aadir al archivo la lnea el archivo
!! !! # $& 6 k $SS$k S$H"S!D$SSHA"SH$$H$k ! !! $ # ) 0 $&!) ( !! $& &$( g & ( w ( &$$&g
Tras los cual se le pide que introduzca su password (atencin, no el de root) y si lo proporciona el comando es ejecutado y el chero nalmente borrado. En las pginas de , y puede encontrarse una informacin exhaustiva acerca de este comando.
2.5. Bibliografa
1. 2. 3. 4. 5. UNIX for the impatient, Paul W. Abrahams and Bruce A. Larson, Ed. Addison Wesley (1992). Filesystem Hierarchy Standard, Daniel Quinlan, Debian Policy Manual (2000). Linux Filesystem Security, Parts I and II, Mick Bauer, Linux Journal issues 126 and 127 SSC Publications (2004). Gua de referencia DEBIAN4, Osamu Aoki (Trad. al espaol coordinada por Walter O. Echarri) (2005). Manual de Seguridad de DEBIAN5 , Javier Fernndez-Sanguino Pea (2004).
4 http:
!! $
&
( '
# $!!
44
Captulo 3
Compilando el kernel
3.1. Introduccin
La compilacin del kernel, que cuando Linux comenz a difundirse era una tarea difcil y necesaria casi siempre que se instalaba, se ha simplicado mucho. Adems la introduccin de mdulos, aunque el kernel sigue siendo del tipo monoltico, ha permitido reducir el nmero de ocasiones en las que es necesario compilar nuestro propio kernel. De cualquier modo y aunque en general los kernels precompilados que se suministran con las distribuciones GNU/Linux suelen dar buenos resultados es conveniente tener una idea de como compilar el kernel para poder adaptarnos a posibles cambios de hardware no soportados en el kernel precompilado o para optimizar el kernel de acuerdo con el sistema que estemos empleando. Antes de pasar a la compilacin propiamente diche es apropiado dar alguna informacin general acerca del kernel Linux. El kernel de un sistema Linux podemos asimilarlo al corazn del sistema, es el encargado de gestionar la multitud de procesos que estn corriendo simultneamente, tanto lanzados por el mismo sistema, por los usuarios o por el superusuario. Permite tambin comunicar unos procesos con otros cuando sea necesario, es el responsable de gestionar la memoria, los cheros y el ujo de informacin con los perifricos. Las versiones del kernel Linux se agrupan en la serie de kernels inestables o experimental y la estable o de produccin. Los primeros llevan un nmero impar en la segunda cifra, mientras que los estables llevan un nmero par en la segunda cifra. La ltima versin estable en el momento en que 1 . En concreto daremos las instrucciones de compilacin fue escrito este documento es la en un sistema con Debian Sarge. rerindonos a la versin
lugar
donde
poder .
descargarnos
el
cdigo
45
1 1 92
1 1 9
1 1 2h2
fuente
de
los
ltimos
kernels
publicados
es
o o uDq j G
D q S j ` s 3V DR q ADQ c m c ADAC c E r C f C q S`V q Ag q FY Ae&DeA"DDDx w P y B Q E V Q Y Y P V P Q E xt x xm d xm x x x iFD FQ r c Q3HE q 3D q ~8 HF thQ c DDFS r C q AV c C i c C hC f AFC c |m c FDDC c E r C f AQ r c FHe&De&H"DDDx o d E T E o B V p y p y Q g E E Q E g P V y Q Y Y E Q T E o xt x xm W xm x x x x y B p D`Q f q ADP r 3C r r m f r s Q q FDAC r T f Dv j m c ADDC c E r C f AFY i Dq &Dek"DDDx R Q C Y Q v Q Y Y w V s q 8t x xm 8 xm x x x x v B p D`Q f q AHP r 3C r r m f r s Q q FDAC r T f Dv j m c FDDC c E r C f AY B q AS9C f j Se&Dek"DDDx R Q C Y Q v Q Y Y Q E V i g } xt x xm 8 xm x x x @ DxFQ c 6 c AADC c E r C s AA3FY q UHtSp 6 AAFA3AFAAFA9DAH|i c C DHE r m s AD3pe"h"D"DDDx a R Q Y Y z I z I z I y z I y z 8 x W t Y Q y at o 8m x xm x x x y @ w g V z v @ AAQ c 6 c ADDC c E r C j v j DFSp HFHp {DFFAh8 DAH i c C HDE r s"Q f Ho c HE Uq G`pb"h"D"DDDx a x R Q Y Y @ v I v 6 z I z x W t Y Q m V Q r o q Wt o 8m x xm x x x @ a x R 6 Q DAQ c HDP q c ytQ f Ho c HE r d FSp HHSp {AFFhDADwi c C HHE r "HDP q c B j Ae"h"D"DDDx V Q @ v I v 6 z I y z 8 x W t Y Q m Q xt o 8m x xm x x x @ HFQ c HDP q c ~ DADwi c C HHE r "HDP q c e&U"D"DDDx a P R 6 Q y d 8 x W t Y Q m Q B d xt Q 8m x xm x x x c AADC c E r C pu3 @ FY q UDtSp X6 DA3AFFFDA3AhAAHwi c C HHE r sm c AADC c E r C 3 te"h"D"DDDx Q Y Y o W y w g V z v z I z I z I y z I y z 8 x W t Y Q Q Y Y y yt P 8m x xm x x x @ AAQ c 7A &t3 @ FY q UDtSp X6 DA3AFFFDA3AhAAHwi c C HHE r sm c AADC c E r C 3 te"h"D"DDDx a x R 6 d 5 p y w g V z v z I z I z I y z I y z 8 x W t Y Q Q Y Y y at P 8m x xm x x x @ AAQ c 6D p&t3 @ FY q UDtSp X6 DA3AFFFDA3AhAAHwi c C HHE r sm c AADC c E r C 3 b"h"D"DDDx a x R a 5 y w g V z v z I z I z I y z I y z 8 x W t Y Q Q Y Y y Wt P 8m x xm x x x @ aAAQ c WH &t3 @ wFY q UDtSp X6 DA3AFFFDA3AhAAHwi c C HHE r sm c AADC c E r C 3 "h"D"DDDx x R 6 5 p y g V z v z I z I z I y z I y z 8 x W t Y Q Q Y Y y 8t P 8m x xm x x x @ AxAQ c 5 &ty3 @ wFY q UDtSp X6 DA3AFFFDA3AhAAHwi c C HHE r sm c AADC c E r C 3 te"h"D"DDDx a R 6 8 p g V z v z I z I z I y z I y z 8 x W t Y Q Q Y Y y xt P 8m x xm x x x R 6 W FQ c pE c d Ds Q c FH dFY q UHtHp DAFFFAFSDAFFhDADwi c C HHE r "HDP q c t f "D"DDDx C s i o @ w g V z v 6 z I z I z I y z I y z 8 x W t Y Q m Q B d 8 8m x xm x x x R FQ c 6xE c d Ds Q c FHo dFY q UHtHp DAFFFAFSDAFFhDADwi c C HHE r "HDP q c et f "D"DDDx 8 C s i @ w g V z v 6 z I z I z I y z I y z 8 x W t Y Q m Q B d x 8m x xm x x x @ d x R 6 FAQ c E c t3D Ds Q c FH tFDDwi c C HHE r "HDP q c ee"D"DDDx C d E C C s i o d p W t Y Q m Q B d xt 8 xm x xm x x x @ d x R 6 B AAQ c {AAp c ADAC c E r C w c UHtFDH|i c C HHE r s&HDP q c E s e&De"D"DDDx Q Y Y C g Q p W t Y Q m Q B C p xt x xm x xm x x x Y 5 nm T q f i s FX3E q c q E 0 g &
Versin Cmo comprobarlo Gnu C 2.95.3 Gnu make 3.78 binutils 2.12 l util-linux 2.10o module-init-tools 0.9.10 e2fsprogs 1.29 jfsutils 1.1.3 reiserfsprogs 3.6.3 xfsprogs 2.1.0 pcmcia-cs 3.1.21 quota-tools 3.09 PPP 2.4.0 isdn4k-utils 3.1pre1 nfs-utils 1.0.5 procps 3.1.13 oprole 0.5.3 Es importante tener en cuenta que compilar el kernel es una tarea que requiere de bastantes recursos y que puede tomar un tiempo considerable en una mquina que no sea demasiado potente. Sin embargo no debemos olvidar que dicha compilacin no tiene porqu llevarse a cabo necesariamente en la mquina en la que va a instalarse el kernel. Es posible compilar en un ordenador potente y una vez compilado el kernel instalarlo en otra mquina. Tambin es posible (y recomendable) compilar el kernel como un usuario que no sea root de forma que as nos evitamos meter la pata en algo bsico como root provocando un dao quizs irreparable al sistema 2 . Si contamos con las herramientas antes citadas podemos proseguir, aunque antes es conveniente tener una idea del hardware del ordenador en el que correr el kernel. Para ello es muy til la orden que nos lista todos los dispositivos PCI 3 disponibles en el ordenador.
46
Tambin es recomendable tener en cuenta la informacin acerca de la CPU de nuestro sistema lo que como hemos visto en el captulo de administracin local del sistema se consigue haciendo .
!"S& # ! 4 # g # ! "Srg # ! ' !&S$k& #&"#k0$&k$ g # 0 #&!$g ! g g W&&k% ( W #k"!0 ' # ( % w 4 $ W ! DkkGG Sk kF1 !"4 4 0 4 "k$&$ kk! ' g &k&$$4 # ! ( ' # 4 S # ! "S ' ( # ! 0 0 !"S$
4 0 ) 0 # g ) ( &$g &"&0
3 PCI:
2 Dont
take the name of root in vain... Encontrado en el kernel-source-2.6.8 Peripheral Component Interconnect
47 A continuacin hay que obtener el cdigo fuente del kernel. Si el kernel que queremos compilar es uno de los recogidos en la distribucin Debian que tengamos instalada en nuestro sistema basta con instalar el correspondiente paquete deb 4 . Tras ello tendremos la fuente del kernel comprimida en el directorio . Se descomprime y desempaqueta:
kke S`!S`$ kXSS$ kS!HkkH&SD&D! kS!HkkH&SD&D! keSkX SS$ skS!HkkH&SD&D! kb XXSS$ kS!HkkH&SD&D! 0 # ) !"# )
A partir de ahora comenzar la compilacin del kernel y para ello trabajaremos en el directorio .
Con esto conseguimos que todos cheros se reeran a esta versin particular y no perjudicamos de este modos a otros cheros presentes en el sistema. Por ejemplo, los mdulos que compilemos para nuestro kernel se instalarn en
A kA` k !AA$ t Wk 2D 2&22S 5 2222HW$ 22 k !AA$ B { B y E B B E y E B B E D y t B y
En el directorio se encuentra un chero que es de gran utilidad a la hora de obtener informacin sobre como compilar el sistema. Tambin puede haber informacin especca para alguna distribucin en el caso que hayamos instalado el paquete con el cdigo fuente asociado a dicha distribucin. El siguiente paso a la hora de compilar el nuevo kernel es decidir su conguracin. Esto puede llegar a ser una tarea realmente mproba pues hay que decidir entre un gran nmero de opciones y muchas de ellas dependen del hardware presente en nuestra mquina. Existen aplicaciones grcas que nos ayudan en este paso y que proporcionan cierta ayuda a la hora de decidirnos si incluir o no una funcionalidad en el kernel. Como punto de partida podemos utilizar el chero de conguracin por defecto para la arquitectura de nuestro o el chero de conguracin procesador que podemos encontrar en que Debian instala en el directorio si queremos modicar un kernel de una versin que tenemos instalada en nuestro ordenador 5 . A continuacin limpiamos totalmente de cheros provenientes de compilaciones anteriores el sistema.
4 Por 5 En
4
v Ski
( "v
i i i h 2&"k$`k
del chero
1 1 0 # # 2h2"$$"$
v v W t vt W AD`3e"e&` q o r C f SFAC `I I E C B
) 0 ) # # &&)
1 1 0 # # 929k"&
48
A$ i Q P Q V 3HtS3g !`1 4 0 # 0 &$
.
Una vez decidida la conguracin del kernel podemos directamente pasar a compilar el kernel 6 para lo que haremos
k&`!kk& XH`H SkSkW!Hk$D&S D&D&
y dependiendo de la CPU que dispongamos nos armaremos de ms o menos paciencia hasta que termine la compilacin. Si tenemos suerte, tras una serie de mensajes obtendremos algo similar a
XH`H SkSkW!Hk$D&S D&D& k x !`$kHk $SS$$D! u$ k 1 z2AAkH! $kkx $kD& kD$ $ ) ah7
Tras un buen rato con la CPU trabajando a tope si no hay error alguno llegaremos a recuperar el prompt con lo que podemos pasar a instalar los mdulos recin compilados. Este paso es necesario hacerlo como root as que toca hacer si hemos realizado la compilacin como usuario de a pie.
kH!A$ $ &k& XH`H SkSkW!Hk$D&S D&D&
Para congurar el kernel existen cuatro herramientas, que son : Es la opcin ms pesada de usar ya que simplemente presenta una seria de preguntas que deben ser respondidas y si nos equivocamos... vuelta a empezar. : Esta opcin lee las opciones por defecto de un chero previo y rehace los enlaces y cheros necesarios de acuerdo con l. Sirve si hemos hecho pequeos cambios en el cdigo fuente. En este caso tenemos un frontal basado en que resulta bastante intuitivo y de naturaleza similar a los mens que nos encontramos en la instalacin de Debian. Permite acceder a una pantalla de ayuda en caso de necesidad. Frontal grco bastante intuitivo y congurable con una seccin de ayuda que se muestra para cada seccin del kernel. Adems muestra posibles problemas de dependencias lo que ayuda a diagnosticar errores en la construccin del kernel. Otro posible frontal grco . es
4 0 4 0 !$' 4 0 k$ 4 0 4 0
on esto ha temrinado la compilacin del kernel que en nuestro caso estar en el chero
Ahora debemos compilar los mdulos asociados al nuevo kernel con la orden
t dt &W
Q f r Q c DAQ c r V q 3HFI s D r 9I f SFH c bt r V q 3HDD3AbFDHT Q o B Q P Y V V g C P I C B Q Pt I Im i E E Y g E T v p P y Y `ut g H g pAY q Ah HQ r c S3SH Uq D9C f E q g c `DHE q q DD`DbFAST Q I r Y I g t Q T Y V Pt I Im i E E
versin en
t !DkD! $$SWW 22t DS&DH! k $SxTS DS!`$ k& !HkkH&SD&D! B E B B t W$ 2&k2t 2Fc&uDkH $ $SS&DH! D DS!`$ k& !HkkH&SD&D! B E B B t & 2Wk2t 2Dk&`!kH$ $H !U!Sk $SS$$D! D DS!`$ k& !HkkH&SD&D! B E B B
Por ltimo hemos de congurar el gestor de arranque, ya sea este o . Daremos las instrucciones relativas a ya que es el gestor que utilizamos en el curso y se est implantando con fuerza en perjuicio de . En este caso lo nico que debemos hacer es editar el chero de conguracin de que como vimos es y le aadimos la informacin referente al nuevo kernel, que en nuestro caso podra ser algo similar a
Si hubiramos incluido en la compilacin como mdulo algn dispositivo necesario para montar el sistema de cheros raz entonces tendremos que preparar un para el kernel con el comando . Ms detalles en el Kernel Rebuild Guide HOWTO (ver seccin Bibliografa). Ya creado el kernel, compilados e instalados los mdulos slo nos resta hacer que el sistema pueda arrancar con el mismo. En primer lugar hamos de copiar algunos cheros
Si se ha creado un chero hay que incluir la consiguiente opcin consiguiente. En tendramos que incluir las siguientes lneas en el chero
4 0 1 ) 0 !32&$)
$"
l j i !k$h
# !$
$"
SS S k 6 6 A $D`$ 6 A kF S` `!kSk $Sk &U # !$ "
& l j i $kh
3.3. Bibliografa
# $
'
1.
) # 1 g 1 ) ) # g !!hfkk&$9$
3.
2.
7 ltima
Administracin avanzada de GNU/Linux, Josep Jorba Esteve y Remo Suppi Boldrito. XP04/90785/00019, Formacin de posgrado Universidad Oberta de Catalunya (2004).
Gua de referencia DEBIAN8, Osamu Aoki (Trad. al espaol coordinada por Walter O. Echarri) (2005).
.
7
49
50
Captulo 4
4.2. Shells
La palabra shell en Unix es sinnimo de interprete de comandos, una herramienta de gran potencia que sirve para comunicar al usuario con el kernel y le permite lanzar programas. El nombre proviene del hecho de que es un intermediario entre el usuario y el kernel del sistema. El objetivo de una shell es leer los comandos que le pasa el usuario a travs de una terminal alfanumrica, que puede ser una consola o una ventana de terminal. Por razones de compatibilidad es recomendable utilizar un tipo de ventana de terminal que no est ligada a un gestor de ventanas o un entorno grco determinado. De este modo podremos trabajar en diferentes ordenadores independientemente del entorno grco que estos tengan instalado. Un tipo de ventana muy comn y cmoda es la llamada . Para abrir una de ellas podemos denir un atajo en nuestro entorno grco o simplemente escribir en la ventana de terminal que nos haya proporcionado el entorno grco. Cuando se realiza un login en el sistema, cuando se entra en una terminal alfanumrica (una
' # k& ' # &
51
&&% (
( !"%
c DDC pc C s c f DAHE C Y f E Q E q B q T Uq Q Uq FQ r S f AFDI r C r c FE E o o C r r Y Q P C HFg c DDC f H r DSDFC r c FE C Y j C I o o @ Q v 6 $g c HDe hq c E As AY f r s s V Q T E V Q Y o o C r C q E r HR r C f FDP q `s w f HAAAFDI r C r c FE V Y P P V w Q s Q Ds AY c HE f V c T f HV r C q E q DADo q f i s s V f Q E q B q T rUq Q Uq 3 F3 hDUq F9ShS f AFDI r C r c FE o o C r Y o C r q r r Q B C E E Y Q Q s HH q i Uq FAP q c DP c C B r T E c DDC f P r `C c H f B C Y V c DDC f s FDFpAAi Dq P r DSDFC r c FE C Y V P Y C B o C w V Y s C I o o c ADC pc DP c C B C Y f Q Uq Uq Y B r F r C Aq c C s c f DAHg q E Q T E Q E Q r r s hq Uq B r ADFC Aq c C s c f DAHg q E Q T o o s E Q E Q r r Y Uq Uq Y B c C s c f DAHAFDI r C r c FE E Q E o o C r r Y Q Q B Y Q r s DH q i hq c HP c C HV r c HE Uq r P r `C c 3V c SS3AFDI r C r c FE V i C E V o o C Q C I o o r C f q HR q E f V r DSDFC r c FE E T Y T SF q F q T s FS3HAFDI r C r c FE w V Y V o o C C r 3SP hq c SUV r FSE q E C o Q g Q Y c Q P Q r c CSEHi q 3f s HtAY q o Df AD9 r HFDAAY s r f w E E C Q P C g Q R V Q s Q g Q Y s E i f Q r s HFV Ds ~FDC r C f S3Q c HE Uq Uq T f E q r 3`DC f Hh8 HDAFDI r C r c FE W a I x o o C r s g Y
t t ADt c DDC p`f C Y f c f I r S 3 f I g S 3 Uq c E Ds AY f r s s V T E u f I FDP q ``f S 3 Q D r V c As AY Af s V f f f I B S 3 c SSF r D9 Q B g B c DDC f H9 C Y B f SB 3 P I c DDC f H9 C Y P B B s P r C f Q Dq AY q g r f 9 s Y B s P r C f Q Dq AY q ~o f 9 s Y g f B 3 I c SSF r 9 Q B g B I FV 3 I q V 3 T I 3V 3 hq c E s U v r f r Df 3 W a I HU8 3 m Q P r q s "HSUY f Ur C q S`Q c A E i C Q T
s c VP r VgD9C f Q` DDt r C q S`` g c DD g t t E i C Q E s m Q y 8 6 "HAV s @ DU9g c HD Q v i Y Q T `HS9g c DD XFE q c q A hq c C FE Q E nm T E r T ' # &$ g &! g &
Cada una de ellas presenta sus propias particularidades y diferentes cheros de conguracin para denir las preferencias del usuario. Nosotros nos centraremos en la bash shell por ser la ms extendida entre los usuarios de GNU/Linux. Hay que destacar que la shell, adems de ser un intrprete de comandos, es en s misma un lenguaje de programacin para la construccin de scripts, programas que facilitan especialmente tareas de administracin del sistema. En el apndice situado al nal de esta gua se incluye la traduccin al espaol del HOWTO titulado BASH Programming - Introduction HOWTO en el que se presentan los rudimentos de la programacin en BASH. A continuacin damos informacin que, aunque bastante bsica, es relevante para aquellos que . Una vez que hemos entrado en nuestra podemos no estn familiarizados con la shell comenzar a dar rdenes al sistema. En concreto para casi todos los comandos de Linux puede obtenerse informacin si corremos el programa seguido de alguna de las siguientes opciones: , o . Por ejemplo, si queremos conocer las posibles opciones del comando podemos hacer:
' # k& !"% (
xterm, como hemos dicho) o cuando realizamos una conexin remota con telnet o ssh a un sistema) se entra directamente en una shell. En Unix existen distintos tipos de shells, entre las ms populares destacan:
52
k0
ksh: Korn shell. zsh: Z shell. bash: Bourne again shell, shell por defecto de Linux. .
53 y muchas ms opciones. Si desea consultarlas todas puede subir y bajar una pgina en su usando las teclas <SHIFT-RePag> y <SHIFT-AvPag>. Esta forma de consultar las opciones es rpida, pero no sirve para todos los comandos y su salida a veces es demasiado breve. Para obtener ms informacin acerca de algn comando ya se sabe: se puede consultar la pgina de manual o el para dicho comando. Toda shell tiene denidos una serie de comandos internos como o pero tambin pueden ejecutarse utilidades Linux como o entre otras. En la seccin ?? se dar una lista de los comandos bsicos que debemos dominar con soltura usados cuando se trabaja dentro de una shell. Adems es conveniente conocer una serie de combinaciones de teclas que resultan de suma utilidad, entre las que destacan: <TAB> Completa en comando que estemos tecleando. Flecha arriba y echa abajo Navega sobre las ltimas instrucciones que hemos escrito. <CTRL-e> Sita el cursor al nal de la lnea de comandos. <CTRL-a> Sita el cursor al principio de la lnea de comandos. <ESC-f> Avanza el cursor una palabra en la lnea de comandos. <ESC-b> Retrocede el cursor una palabra en la lnea de comandos. <CTRL-k> Borra desde la posicin del cursor hasta el nal de la lnea. <CTRL-y> Pega lo que se ha borrado en ltimo lugar. <CTRL-r> Busca en el historial de comandos de acuerdo con el patrn que se vaya tecleando. <CTRL-l> Borra el contenido de la terminal. <CTRL-u> Borra la lnea entera. <CTRL-d> Similar a CTRL-c. Interrumpe un proceso. <CTRL- > Deshace el ltimo cambio realizado. Podemos practicar con estas combinaciones, y acostumbrarnos a su uso nos permite alcanzar una gran rapidez al trabajar con el ordenador. Al iniciarse una sesin el usuario posee una serie de variables denidas. Algunas de las ms importantes son Nombre de la mquina o nodo donde est orriendo la sesin. c
v h i S$2U w ( ' ' # &$ # g $"$ ( !"$( # ' ! 4 &
Nombre del usuario (username). Shell activa. Path del directorio home del usuario. Lista de directorios donde se buscan ejecutables. Denicin del prompt del usuario.
i kS"j
54 sin aadirle opcin El valor de estas preferencias puede consultarse mediante el comando alguna. Estas preferencias del usuario en una bash shell se denen a travs de varios cheros que se leen durante el arranque de la sesin: Fichero de conguracin del sistema. Fichero de conguracin del usuario que complementa al .
$ 4 # g ) 0 $"$$)
chero
Los cheros y se leen siempre al entrar en el sistema o al abrir una terminal, pero el slo se lee cuando se abre una login shell. Hay que destacar que los chero se leen independientemente de la shell que usemos. En estos cheros se denen, las variables de entorno antes citadas como: , , , y tambin se denen los alias que deseemos usar o el mensaje de bienvenida que deseemos ver al abrir una sesin, si deseamos ver escritos sobre la pantalla mensajes de otros usuarios, etc.
v i cU
U h `$
T s 9 V B T s 9 V B EDSSg E T s V9 B v j u p xt e&x
0 # ( % $ &&1
v i `kh
55 Mandar solamente los mensajes de error a un chero: comando chero Mandar la salida y los mensajes de error de un comando a un chero: comando chero Aadir la salida de error de un comando a un chero (no borra el chero si existe, a diferencia de los tres casos anteriores): comando chero Especicar a un comando que lea los datos de entrada de un chero en lugar de hacerlo desde el teclado: comando chero
w ( `&' 0 "
Usar la salida de un comando como datos de entrada para otro comando: Combinar estas posibilidades: Trabajar con cheros y directorios mostrar el contenido de directorios imprimir el nombre del directorio actual cambiar el directorio actual a otro directorio o a home crear un directorio nuevo borrar un directorio vaco.
# ! 1 # 0 4 w ( ' 0 1 # 0 4 w ( ' $h2"& $$!p`&&!0 w ( ' $!0
copiar chero(s) a otro chero o a un directorio cambiar de nombre un chero/directorio, borrar un chero crear un link
!$
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
g "%
' kk0
# "# '
# &'
4
g # "k
1 Perl es un acrnimo de Practical Extraction and Report Language, aunque tambin su autor da una segunda posibilidad que es Pathologically Eclectic Rubbish Lister. Como siempre en Perl, there is more than one way to do it
$&
0 # &&&"g
' # &$"kD&"g
# "&g
( % # &&S&&g
c bt r i f AD3DbFDST C V t I Im i E E
) kak
mostrar el entorno o ejecutar un comando en un entorno especial informacin sobre usuarios activos.
57 Como se puede imaginar implica un retorno de carro. Tambin podemos hacer un script que haga lo mismo, algo tonto, pero por algo hay que empezar. Con nuestro editor favorito crearemos un chero tal como este:
qc3SnS$akS&TA& ) q r!F" ! q 4D&H7! $ $HA"SkH&S4
Como podemos ver la primera lnea del script ha de indicar el PATH al programa , las dos siguientes no son imprescindibles, pero ayudan a la hora de programar en Perl. Cada orden va seguida de un punto y coma. Si ahora nos sentimos con fuerzas para avanzar un poco ms vamos a suponer que necesitamos escribir un programa que nos permita, por ejemplo pasar de temperaturas en grados centgrado a Kelvin. No es un gran desafo pero algo es algo. El nuevo programa tiene el siguiente aspecto
# &"g y qc3H`x$Dy9kkD$kU@$Dktkk $$AkuTA& y E qyD37@kkDk9z$Dn$ 1 y 6 y q3$`tu ( 9@k$Akse$D$A 6 y q U9k $$D kA TA& q r!F" ! q 4D&H7! $ $HA"SkH&S4
y lo salvamos con el nombre o con el que queramos. El uso de la extensin es comn para denotar un ejecutable en Perl, pero no es en absoluto necesario 3 . Repetimos la operacin anterior y ahora:
k$Dkk kk $$AkE U9k $$DkkF y $b$A&HhD&D! y b$A!HS&SDhD&D! g1 w g ' &2`$"!S &g
En este segundo ejemplo hemos introducido las variables que como puede verse se indican con el carcter $ y como podemos ver en la salida del programa las variables entre comillas dobles se interpolan por su valor. Si las comillas son simples no tiene lugar esta interpolacin. Adems tambin hemos introducido la posibilidad de leer el standard input, en este caso el teclado a menos que redirijamos la entrada al escript. Ello se consigue con el FILEHANDLE . La orden lo que hace es eliminar de la variable leda el retorno de carro situado al nal de la misma. Puede comprobarse qu ocurre cuando se elimina y como afecta a la salida del script. Un tercer paso lo puede consistir este script:
h &2$ q 4D&H7! $ $HA"SkH&S4 g ' !&0
3 La
extensin
g1 w g ' "`&!`
B D s 6 r "P hq o 5 f f 2 r DDtAw c CSE f Q c q P c q P c s SQH r VT f FC rDr V Q q P c C c q P c s c q HT f m t t C E E P 5 @ SID F& Fu&SG s ADPFGTD Fu&SG s ADF6 Ds AY r P t P I n w V I P I n w V P s Q r t c BHF r tB~SE s SpEAV g c CSP q YHHVFC s VST s AVHtoFC c HFAQ q P Q g V Q C V t o V R E r w P Q B g 5 } g3S j EDo q T s G s AHFw g w V P 5 f gFS j Do q T s G c q P c s w g } E Q s HQ Y 5 2 r r s wAHPhFC3 c QSgF r c q Fu&Q fc `C s c q FC r D 3Y ut s FY q DE s AYsD"HAV s r r QxE Uq c i V o B P P i Q o V m m Q r 5 @ 8 } 5 6 AFS j Ao q 5 S@F c q FC r AFGD}3S j Do q T s u8 }FS j A6o q 8G r C q S`C c q Fw g P G E 5 E i P 5 cP Uq D"AY q tQ s r zm m Q z s Ur c HQ s 35 r q V cE f q c E s Q s 5 c t v F q Dc S~5 w B 5 5
P Q E V c FHADQ `f
0 # &&&"g
Que una vez ejecutado nos proporciona un chero llamado donde se almacenan las temperaturas introducidas y su equivalente en Kelvin. Como vemos tenemos a nuestra disposicin bucles (loops) con la orden y podemos denir FILEHANDLES diferentes a los estndar con el comando . Es posible abrir cheros en modo slo lectura, lectura/escritura, concatenacin etc. La manera de obtener una descripcin de esto es consultar la abundante documentacin sobre Perl que habr en nuestro sistema si hemos instalado el paquete haciendo
( 1 ( # ( # g ' !!"$$&&!&
58
Este script combina varias de las posibilidades que hacen de Perl un lenguaje tan atractivo. Por ejemplo utiliza el mdulo que permite realizar bsquedas de forma recursiva en un sistema de cheros. Existe una gran cantidad de mdulos para Perl (una lista exhaustiva de los mismos se encuentra en la web de CPAN) lo que ayuda mucho al administrador de sistemas. En muchos casos para la tarea que tengamos pensada ya existe un mdulo que la resuelve o nos ayuda a resolverla. Tambin se hace uso de la capacidad de Perl para reconocer patrones (regular expressions): es una condicin que comprueba si el argumento del nmero de das tiene realmente formato de nmero.
# # `$ y !S !k$HSF& $S&D$H !S !k$HSF& $S&D$H S"HH$Sk$HSF& $S&D$H kSH$Sk$HSF& $S&D$H D! k HkF& $S&D$H { H "H$D$bF& $S&D$H $H$D$bF& $S&D$H 1 y D! $A2sb$A!Hkh k&$
Este script da una lista de cheros (incluyendo posibles subdirectorios y su contenido) que se han modicado que se hayan modicado a partir de una fecha que determina el usuario. Por ejemplo, si el usuario thorin quiere saber que cheros de su cuenta se han modicado en la ltima semana har
El nmero de das no ha de ser necesariamente un nmero entero. Si utilizamos la opcin excluye los directorios y con ello tenemos una herramienta muy adecuada para combinar con el comando y empaquetar aquellos cheros modicados despues de cierta fecha:
# k&S! y D SSkH$DF& $S&D$H $DF& $S&D$H $SF& $S&D$H !S !k$HSF& $S&D$H !S !k$HSF& $S&D$H S"HH$Sk$HSF& $S&D$H kSH$Sk$HSF& $S&D$H k$HSF& $S&D$H D! k HkF& $S&D$H { H "H$D$bF& $S&D$H $H$D$bF& $S&D$H F& $S&D$H 1 y @b$A!Hkh k&$ f @ F c q P c s Q r 5 5 5 SA@ c q PFG r C q EH`C c q P36A&6o q r GUV r AP Uq D"AY q FQxE hq c i @ i Q g m m r zm m Q z r 2 r "FYDC s wFHPhr!uh sDq Q gUV r mDm"P Uq A"AY q 3QxE Uq c i t P V u r r zm m Q z r @ s AHFg q DFHFo q w V P Q E w V P 6 u P uUpG c q Fg P w u G Q E w V P w Ghg q AAHFg
# ( &
59
60
Enva a la salida estndar todos los cheros en le list pero comenzando por la ltima lnea de y terminando en la primera4 .
w 4 # # # ( ( 0 # g # & $&`$kp$&&$!$""g
Elimina las primeras diez lneas de los cheros en le list guardando una copia del original con extensin . Para terminar damos dos ejemplos de como aprovechar las tuberas que proporciona la shell combinndolas con oneliners:
R ( # }' "" 4 $&) ( % ) ( ) w R e R g ' 0 # g "&!k$&$"$$&!& F&""~& ( % &1
Borra aquellos archivos en un directorio que no se hayan modicado en la ltima semana. Si has instalado el paquete tienes en tu mquina toda la documentacin necesaria para entender las opciones usadas y como funcionan estos mini-scripts. Echa un vistazo a .
de estos scripts se han tomado de de .
( '
( !
Cambia en los nombres de archivos en el directorio donde se ejecute la orden la cadena 5. cadena
# g # g "&${&S"&$ $ h " ' ' TS!H1 ( &% !4
w 4 1 1 V &k"$`$9$fW
"`&
Reemplaza todas las ocurrencias de la cadena por la cadena dos en le list dejando una copia del chero original con la extensin
h 1 1 # 4 # 0 # w R # g e R # aS A$$`2&A@$`yyyk`Q""g # &
# &$k
para salir.
por la
0 # "!&&g
61
4.5. Bibliografa
1. 2. 3. 4. 5. Administracin avanzada de GNU/Linux, Josep Jorba Esteve y Remo Suppi Boldrito. XP04/90785/00019, Formacin de posgrado Universidad Oberta de Catalunya (2004). Gua de referencia DEBIAN6, Osamu Aoki (Trad. al espaol coordinada por Walter O. Echarri) (2005). Linux Programmers Reference, Richard Petersen, Ed. Osborne McGraw Hill (2000). Learning Perl, Randal L. Schwartz y Tom Phoenix, Ed. OReilly (2001). Programming Perl, Larry Wall, Tom Christiansen y John Orwant, OReilly (2000).
6 http: www.debian.org/doc/manuals/debian-reference
62
La primera lnea especica que todos los scripts contenidos en se ejecutarn a las 6 horas y 25 minutos todos los das del mes, todos los meses, todos los das de la semana. La segunda lnea especica que todos los scripts contenidos en se ejecutarn a las 6 horas y 47 minutos todos los das del mes, todos los meses, los domingos. La tercera lnea especica que todos los scripts contenidos en se ejecutarn a las 6 horas y 52 minutos el 1 de cada mes, todos los meses, todos los das.
( 1 # 0 ) 0 "!f""$) "$Xf&"$&&$ '1 # 0 ) 0 ) # g # $"f&"$&&$ 1 # 0 ) 0 ) # g # ( 1 # 0 ) 0 ) # g # &!f&"$&&$ $&$# # ( g $&$# # ( g $&$# # ( g ( ' !$' 0 &# &# &# # k & i i h i l}i i}i i ' ' ! $ V h ` ' % ) # ) # % ) # ) # % ) # % ) # % ) ( 0 ) ) # ) ( 0 ) # ) e U h &9 !&9 9 !9I$"$$"# 9I% !$&$&&`k !"!`2 ) % ) e U 1 2& %(&&# 0 &&&&"$2k$' "$k{!"k!$h # 4 ( 4 ( # ( ( ( 4 1 4 2$k$"&!!&&{"${$& &!' 0 # ( ( ' %&"D"$$#"{&"! "&&# 0 &$ "&!j ( # 0 ( % ( # ( % ( # 0 "$&!S ' " &$&# &) # % ( 0 ) 0 % ( # 0 ) 0 "$&"$) ( 1 # 0 ) 0 $$9"&$)
5.1. cron
Captulo 5
cron es un demonio que ejecuta comandos programados en determinados das y a ciertas horas. en todos los niveles de arranque. Una cron se inicia automticamente desde vez que se ha iniciado lee cada minuto el area de spool y el chero donde se especican las tareas que se deben ejecutar as como su periodicidad. Los usuarios que deseen correr tareas peridicamente deben crear un chero crontab apropiado y despus correr la instruccin crontab, debiendo estar previamente autorizados por el root en . El sistema en cambio, para correr tareas automticas emplear el el chero contenido del chero .
63
% ( # 0 ) 0 "$""$)
es:
% ( # 0 ) 0 "$&"$)
64 se almancenan otros scripts que se corren con cualquier Adems en el directorio otra periodicidad especicada en el propio script. Por ejemplo, este script:
0 ) g # 0 ) 0 k""&&$) ) &&!k) % ( # 0 ) 0 "$""$) ( 1 # 0 ) 0 $$hf&"$) g 0 ) g # 0 ) 0 !!!$ $"$!!) % ( 0 ( ( ) 0 &&# &"$$) ) 1 ) 0 !f"$) 1 # 0 ) 0 f""$) 1 # 0 ) 0 f""$) &# &# i i }i i i }i i r % ( &$&# 0 i ) ki (
se lanza cada minuto. Hay que tener presente que todos los cheros que estn contenidos en alguno de los directorios controlados por cron no pueden contener un punto . en su nombre ya que si no sern ignorados (esto sucede para Debian, pero este comportamiento puede depender de la distribucin que se emplee). Tambin hay que destacar que cualquier mensaje que se genere con los programas que ha lanzado cron, ya sean de aviso o de informacin, darn lugar a un mensaje que se enviar al root. oa Esto suele ser til, pero si estos mensajes quieren evitarse habr que redirigirlos a algn chero.
5.2. anacron
El uso de cron es muy recomendable, pero qu se hace cuando se tiene un sistema que no est siempre funcionando: la respuesta es usar anacron anacron se inicia automticamente desde en todos los niveles de arranque. Una vez que se ha iniciado lee el chero donde se especican las tareas que se deben ejecutar as como su periodicidad. La diferencia con cron est en que lo que tiene en cuenta el programa no es el da y hora en que tiene que correrse una tarea sino la diferencia de tiempo con la ltima vez que se ejecut. Si dicha diferencia de tiempo supera a la de la periodicidad que aparece en la tarea se ejecutar. Por tanto, cada vez que anacron ejecuta una tarea escribe una marca de tiempo en un chero especial.
5.3. at
at permite ejecutar comandos o scripts en bash a una hora determinada. Su uso es muy simple:
v h g 0 0 W}# k
TIME admite muchos formatos, en particular puede especicarse una hora en el formato HH:MM. Para ms informacin vase man at.
Captulo 6
TCP/IP
No es el objetivo de este manual dar una visin terica ni profunda de los protocolos de comunicacin, pero s resulta til comentar los principales aspectos del conjunto de protocolos ms utilizado hoy en da en la comunicacin de computadoras y en particular el utilizado en Internet. En este apartado comentaremos de forma breve las principales caractersticas de estos protocolos e incidiremos en su conguracin en un equipo con Debian GNU/Linux.
Para comprobar la direccin MAC de los interfaces de red de nuestra mquina podemos utilizar la instruccin ifcong, que nos mostrar algo como:
`````````` l l# # # # H # H H # ( $S9`Sp`r$$SU # # g ( 0 &$&kI H $
Los dispositivos de red traen de fbrica una direccin MAC, lo que se conoce como BIA Burnedin Address, cuyo primer bit es cero, indicando que se trata de una direccin MAC global. Es posible, aunque no habitual, modicar la direccin MAC de un interfaz de red, que se hara mediante la instruccin:
H # V H# H# H# H # H H # H F`4F`"$$$ !4 4 0
65
66
6.3.1. Direcciones IP
En algunos protocolos de comunicaciones se utilizan direcciones para identicar las mquinas, pero el protocolo IP utiliza lo que se denomina una direccin IP para identicar un interfaz de red NIC y puesto que una mquina puede tener varios interfaces de red, puede tener varias direcciones IP. Es ms, incluso pueden utilizarse varias direcciones IP para un mismo interfaz, haciendo uso de los alias, que aqu no comentaremos. En IPv4 las direcciones IP son nmeros de 4 bytes, normalmente expresados en notacin decimal puntuada. Por ejemplo:
h V 1 1 1 WA2$p2!k9
La direccin IP se utiliza tanto para identicar la interfaz de una computadora, como la red a la que pertenece. Los primeros bits identican la red y los ltimos la interfaz de red (la mquina) dentro de esa red. Para saber cuantos bits identican la red y cuntos identican el host se utiliza inicialmente la clasicacin de redes que a continuacin expondremos. Clases de redes Se clasican las redes en funcin de los valores de los primeros bits de la direccin IP. Las tres clases ms importantes son: Clase A B C bits inicio 0 10 110 Id. de red. 1 byte 2 bytes 3 bytes Id. de host 3 bytes 2 bytes 1 byte rango 0.0.0.0-127.255.255.255 128.0.0.0-191.255.255.255 192.0.0.0-223.255.255.255
Las clases D, E, etc. estn destinadas a otros usos y no las explicaremos aqu. Por ejemplo, la direccin IP 34.65.212.56, es de clase A, ya que el primer bit es cero (34 en binario es 00100010), de los 4 bytes de la direccin IP, el primero determina la red (34) y los otros tres identican el host dentro de la red 34 (65.212.56). Se deduce de forma inmediata que existen pocas redes de clase A, pero se trata de redes inmensas; bastantes redes de clase B, que son de tamao intermedio y muchas redes de clase C de pequeo tamao. El esquema anterior es excesivamente rgido, ya que permite slo la creacin de tres tamaos de red. Hoy da se utiliza un esquema ms exible mediante el cual se indica el nmero de bits
67 no de bytes de red y host mediante la mscara de subred o a travs de la que se conoce como notacin CIDR. Ejemplo: Supongamos que tenemos una red con IP 145.65.16.0 y con mscara de subred 255.255.255.240. Para averiguar cuntos bits de la direccin IP corresponden a la red y cuntos al host, pasamos ambos nmeros a binario: 255.255.255.240 145.65.16.0 11111111.11111111.11111111.111 10010001.01000001.00010000.000 red 00000 00000 host
Es decir, los primeros 27 bits indican la direccin de la red y los ltimos 5, determinan el host dentro de esa red. De forma abreviada notacin CIDR la direccin de esta red puede expresarse como 145.65.16.0/27. El rango de direcciones IP disponibles para hosts es: 10010001.01000001.00010000.00000001 10010001.01000001.00010000.00011110 145.65.16.1 145.65.16.30
Ya que la primera y la ltima estn reservadas para las que se denominan direccin de red y direccin de difusin.
Direcciones privadas La direccin IP debe ser nica para cada una de las mquinas que se conecten a Internet, motivo por el cual hay escasez de direcciones IP con la versin IPv4. Una manera de solucionar esto parcialmente es la utilizacin direcciones IP privadas, que son determinados rangos que no son enrutados y por tanto no salen a Internet. Las direcciones IP privadas son adecuadas para redes locales. En la siguiente tabla se presentan los tres rangos de direcciones IP privadas, cada uno correspondiente a una clase de red y que colma todas las necesidades de una red local. Clase de red A B C net. Primera direccin 10.0.0.0 172.16.0.0 192.168.0.0 ltima direccin 10.255.255.255 172.31.255.255 192.168.255.255
En el apartado ?? veremos que es posible que equipos con direccin IP privada salgan a Inter-
21 80
110
Los primeros 1024 puertos se denominan privilegiados o bien conocidos y estn asignados universalmente a aplicaciones de red conocidas. En un equipo con Debian GNU/Linux, podemos obtener un listado de los principales puertos utilizados en .
0 # ) 0 &$$!$)
Captulo 7
DHCP
DHCP son las siglas de Dynamic Host Conguration Protocol. Su conguracin es muy simple y sirve para que en lugar de congurar cada nodo de una red individualmente se pueda hacer de forma centralizada y su administracin sea ms fcil.
va:
# ( # $& && # ) 1 ) 0 "$"!f "$)
En caso de haber un servidor DHCP en la red local con direcciones IP disponibles, el interfaz de red quedar congurado de forma automtica.
Si no lo tenamos instalado anteriormente, no estar congurado de forma apropiada, por lo que lo recomendable es parar el servicio que de forma automtica se lanza al instalar el paquete:
g &g $!f "$) 0 ) 1 ) 0
69
# "k&
H
g 0 k
por el interfaz de red que corresponda. para que esta modicacin sea efecti-
Para poder utilizar asignacin esttica y dinmica de forma simultnea dentro de una subred, pueden especicarse determinadas direcciones IP a una mquina, identicndola a travs de su direccin MAC:
De esta manera el servidor ofrecer direcciones IP en los rangos: 192.168.1.10-192.168.1.100 y 192.168.1.150-192.168.1.200, por un tiempo comprendido entre 600 y 7200 segundos. Adems se le enva toda la informacin necesaria para la conguracin del interfaz de red: mscara de subred, direccin de difusin, direccin IP del gateway ( ), direcciones IP de los servidores de nombres y nombre del dominio.
Es posible que el servidor tenga ms de una tarjeta de red, por lo que ser necesario especicar la tarjeta por la que debe ofrecerse el servicio DHCP. En Debian, esto se especica en el chero , en el que debemos incluir una lnea como:
Para congurar este servicio es necesario editar el chero de conguracin del que podemos obtener informacin con la pgina del manual:
4 0 1 g 0 ) 0 !3!$)
si queremos que el servidor dhcp ofrezca direcciones IP a travs de las interfaces de red .
e i h r&$$y!`$k` g kk&&&&) 0 ) ( 4 ) 0 1 1 1 # ( $9F$ A2$$!"k"4 # # 0 V# % # H H # H H # # ( # ( kh$F0I9`F`"$&$&!& ( ( w!k$"!" # "$"# H H 1 1 1 H 1 1 1 $``9A$ F$`FFk A2 !!&# ( H H 1 1 1 FFk A2 FFk A2 !!&# H 1 1 1 ( H 1 1 1 F2`9``h2` ( ' H1 1 1 % &&{F$ A2$&$ # 1 ( ' ' ' ( ( !hf"!&F&S"' & $ g 91F1$ A12$ F1F1k A12 "$&S"' & $ # # ' ( ( g 1 1 # # g V91A$ F$"$"$ `9F$ A2$ !"k$k !k$&$ 1 1 1 # ( ( 0 ( # % g F2`9`912` H 1 1 ( ' % &D"$$ $ g H H h ' ( ( S!THS"k!$' H H ' ( ( 4 SSS&$$&&& # ( !"$' 0 # 0 g % ( # 0 !!k&"kT!!"&"i 4 0 1 g 0 !`!k ( '
70
Lo ms frecuente es querer asignar direcciones IP privadas de forma aleatorias, para lo que necesitaramos un chero de conguracin con las siguientes caractersticas:
H
. y ,
Captulo 8
Cortafuegos: iptables
Un cortafuegos rewall es un dispositivo de hardware o bien, como explicaremos en este apartado, un software que ltra el trco entre dos redes. El ltrado se puede realizar en diferentes niveles, veremos a continuacin que el programa que hace la tarea de cortafuegos en GNU/Linux iptables es capaz de ltrar el trco en el nivel de enlace, red y transporte, que desde el punto de vista prctico signica que es capaz de ltrar el trco entre dos redes en funcin de la direccin MAC, direccin IP o puerto TCP/UDP de la mquina origen y/o destino. Y bien, para qu queremos un cortafuegos en nuestro sistema? Pues principalmente por seguridad. Es importante congurar un cortafuegos cuando una mquina est conectada permanente o temporalmente a Internet para evitar ataques maliciosos. Una mquina GNU/Linux est a salvo de la mayora de ataques de virus, gusanos y dems fauna, que se expanden por la red gracias a los agujeros de seguridad de las diferentes versiones de Ms Windows(TM). Sin embargo no est a salvo de otros ataques, que podran comprometer el sistema y, en una situacin extrema, llegar a controlar completamente nuestra mquina. Un cortafuegos no evita la intrusin totalmente, pero se lo pone ms difcil al atacante. Este mismo mtodo puede utilizarse para restringir el acceso de nuestras mquinas a Internet, lo cual es muy til en redes locales, sobretodo si utilizan anchos de banda relativamente bajos como los asociados actualmente a ADSL. Iptables est vinculado al kernel de linux desde la versin 2.4 y una de sus caractersticas es que no funciona como un servicio que pueda pararse o lanzarse. Si nuestro kernel incluye iptables, no es necesario lanzar la aplicacin, que siempre estar funcionando, simplemente nos dedicaremos a aadir reglas de ltrado para nuestra red. En este apartado no explicaremos cmo se incluyen en el ncleo las opciones de iptables sino que supondremos que el kernel que estamos manejando las incluye que es el caso ms habitual en la mayora de distribuciones y en el caso de Debian, en los kernels precompilados. Las herramientas apropiadas para manejar iptables, se incluyen en Debian en un paquete con el mismo nombre, que en caso de no tener instalado podemos comprobarlo con debemos instalar con:
% ( !&"$g % ( g ( &$&&$& $"$&{"&k$( 0 g 0 ( 0 g g &$(
En iptables se denen por defecto tres tablas: mangle, nat y lter. De la primera no hablaremos porque se utiliza para reglas ms complejas. La tabla nat se utiliza para modicar las direcciones 71
72 IP y/o puertos origen y/o destino. Podemos ver el estado de estas tablas con la orden:
S ( & !! ( & !! ( & !! ( % ( % ( &"S!&"$g % ( !&"$g ( % ( $&&
donde
puede ser mangle, nat o lter, siendo esta ltima la opcin asumida por defecto.
veremos que no existe ninguna regla en nuestro sistema por defecto, lo que signica que se permitir la salida de paquetes con cualquier direccin IP o puerto destino y, lo que es ms preocupante, aceptar cualquier paquete proveniente de cualquier direccin IP origen a cualquiera de los puertos que tengamos abiertos.
0 # g # $k"$g # ( !!" h SS` $"$&U ! "&k 0 g h j (
Podemos ver que la tabla lter se compone a su vez de tres cadenas: INPUT, OUTPUT y FORWARD. INPUT Para paquetes que entran en la mquina OUTPUT Para paquetes, generados en la propia mquina, que salen. FORWARD Para paquetes que se enrutan en la mquina. Las reglas de iptables se escriben generalmente en un script de forma secuenciada, para que se ejecute en el proceso de inicio de la mquina. Un aspecto muy importante es el orden de las reglas, ya que cuando el sistema tiene que ver qu hacer con un paquete, va leyendo las reglas hasta que encuentra una aplicable y la utiliza. Es por esto por lo que se deben poner las reglas ms permisivas al nal del chero.
73 La segunda opcin es la ms segura, siempre que est bien congurada, pero exige un profundo conocimiento de todas las necesidades de la red local y debe modicarse a medida que aparezcan nuevas necesidades. Se debe especicar una poltica para cada cadena de cada tabla que se vaya a utilizar al inicio del script.
8.2. Ejemplo
Iptables es demasiado amplio para tratarlo aqu en detalle, por lo que explicaremos la conguracin de un cortafuegos en un caso tipo y dejamos al lector interesado referencias para un estudio ms detallado. Vamos a suponer que tenemos que congurar un cortafuegos para una red local con direcciones IP privadas, que acceden a Internet a travs de una mquina con doble tarjeta que hace de router y tiene una direccin externa pblica. La mquina que hace de router la denominaremos romantico.uhu.es (romantico). Utilizaremos poltica por defecto ACCEPT.
V )FkF2 H 1 H1 1 w w w w w w w ```` 0 w w w w w ``w $3 A1kF2 H1 1 w w w w w w w w w w w `````` 0 ( # $$' "~ w w w w w w w w w ````w ( 0 % g $"&` p
En primer lugar borramos todas las reglas que pudieran existir previamente:
("!$""$ % ( g !$""$ % ( g % ( g !$""$ !$""$ % ( g
H $F
hSS`$!S!&"$g i i i % ( h`$Skr!&"$g h j h j i % ( h`$`` !&"$g h j % ( # 0 4 # g ( 0 $"&&&&{ $& ("S!&"$g % ( !&"$g % ( % ( S!&"$g % ( !&"$g
# ( !"$' 0
# g g % ( # 0 &&!!k&"kT!!"&"i ) % !")
i j v `$$`&!{k
V ) H 1 H1 1 FkF2
k$T i i i i k$T
VSF&$ H # # g V H # # g SF&$
g$S g g S 0 g
h SS
V ) H1 H1 1 k A2
H # g `&$
g S $k 0 g
g S $k 0 g g S $k 0 g H
h SS$k
8.2.1. Enmascaramiento IP
Si queremos que la mquina romantico acte como router debemos activar el bit de forward con la siguiente instruccin:
Con todo esto tendramos un primer cortafuegos sencillo, para romantico, pero las mquinas de la red local no podran acceder a Internet porque tienen direcciones IP privadas. Iptables tambin soluciona sto a travs del enmascaramiento IP.
que aade (con la opcin -A) una nueva regla al nal de las existentes en la cadena INPUT. En concreto, permite el acceso a todos los paquetes que entren a travs del interfaz loopback. Dejamos abierto el puerto ssh (puerto TCP 22) a una mquina con direccin IP esttica y a las mquinas de la red local, porque queremos poder entrar en el cortafuegos desde dichas mquinas.
Y ahora utilizar iptables para que modifque las direccines IP, de privadas a pblicas y viceversa. Esto se har en la tabla nat, de acuerdo con la siguiente instruccin:
# ( # 4 w g ) V g ) ) ) 0 # g ) 0 "k!k"!$"&&k!"&""
74
Por ltimo no permitimos la entrada de paquetes provenientes de Internet que tengan por destino los primeros 1024 puertos UDP y TCP:
Abrimos el puerto TCP 80 (web), pero slo a las mquinas de la red local:
Por ltimo, mencionaremos que es posible construir un cortafuegos con algunas aplicaciones como restarter, shorewall o incluso a travs de webmin. Los usuarios que se deciden a utilizarlas normalmente consideran que iptables es muy complejo. Sin embargo, como puede comprobarse tras leer este apartado, iptables es ms sencillo de lo que a primera vista pueda parecer. Hay algunas herramientas de administracin que son muy tiles para manejar iptables, stas son netstat o nmap, por ejemplo para vericar los puertos abiertos e iptraf para comprobar que las reglas se aplican correctamente.
% ( g !$""$
Por ltimo tenemos que enlazarlo de forma apropiada para que se ejecute al iniciar el sistema, para ello vericamos en el nivel de ejecucin por defecto del sistema En Debian es 2 si no se modica y hacemos:
La prxima vez que iniciemos el sistema las reglas de iptables se ejecutarn, lo cual deberemos comprobar con:
% ( g H ) 1 0 # ) 0 &$&&"`$!) 1 % ( g ) 1 ) 0 ) U&$"&"!&$ % ( ) 0 &$ &) `!&&$g 1 % ( ) 1 ) 0 !f "$) " ' k}0 i i c$T SA$&$$ $S {k k !$""$ V H # # g g g H h j % ( g i i c$T SA$&$$ g S {k k !$""$ V H # # g 0 g H h j % ( g #kh!!"$"$!!"H!$& !! &&"{&k&$& j # g V H # ' # g # g ( % # # g % ( g ( ( # ( ' ' # g ' # &!&""$!"&$"&!"$$!H k&{"H&}! h S$``{ V ) H1 H1 1 $!$ A2$ H`$#&$$ g S{k k !$""$ g 0 g h j % ( g # ( 0 # ( $&&$( ` $&&!S$ H h # g ' # % g S{k 0 g g S {k 0 g H h jk !$""$ % ( g hk !$""$ j % ( g !S$ ' # % h S$``{ $!$ A2$$$&$$ V ) H1 H1 1 # g h 1 1 h 1 H # g `$``h2`h`9{$$&$$ i j v $$&!l${k V)H1H1k A12 2$ S "!$""$ h h j i i h i ( % ( g #k!c"!"&"k &"&$ "& ( # 4 w g ) V g ) ) ) 0 # g ) 0 # ( 0 # ( ' ( # ( 0 ( ' $$&k&{$!"$&&kk h SS`${k h h h j i i h i `$S2$ h h h j i i i S$``{!ck$ h j k % ( g !$""$
76
Parte II
Construccin de un cluster GNU/Linux
77
Captulo 9
A dicho chero le aadiremos otro conjunto de lneas en las que se denirn alias para los diferentes servidores. Esto permite cambiar de forma sencilla las mquinas donde residen los diferentes servidores.
&& $k ' # # 0 ( % # # "&& $k g ' # # !&& $k h 1 1 1 FA$ F$ FA$ F$ 1 1 1 1 1 1 FA$ F$
Hemos denido tres servidores: uno para las cuentas de los usuarios (NIS+NFS), servidorhome; otro para las copias de seguridad servidor-back; y otro que exportar un directorio visible para todo el cluster donde puede almacenarse informacin de forma temporal, servidor-temp. Adicionalmente pueden servirse otros recursos como impresoras o lectores de DVD y tener instalados otros servidores como: Samba, exim (correo electrnico), http o dhcp. Siguiendo con la : anterior poltica deniremos alias para los distintos servidores en el chero 79
) 0 !")
80
g k ! 0 # # # 0 # &$! ( % ( # &&' k! ("#&&#!H$! g ' # g # $$! # k ! % 1 ) 0 kS9 &&$) $ # $ # $ # $ # $ # # $ !hf$!"&% 1 1 ( 0 ( !hf$!"&% 1 1 ( 0 ( 1 1 ( 0 ( !hf$!"&% !h1f$1!"&% ( 0 ( &9$$2"!!' 1 1 1 1 &9$$2"!!' h 1 1 FF$ h 1 1 FF$ h 1 1 FF$ h 1 1 FF$ FF$ 1 1 1 1 FF$ A2$ 1 A2$ 1 A2$ 1 A2$ 1 A2$ 1 1 A2$
Como puede verse no existe ningn problema en denir distintos alias para una misma direccin IP. Lo que no tiene sentido es asignar distintas direcciones IP a un mismo alias ya que en este caso el sistema tan slo considerar el ltimo. Es conveniente introducir los nombres de las distintas mquinas que forman el cluster en el : chero
kS9 &&$) % 1 ) 0 i !"&% ( 0 ( 0&# ( ' "!!' $! ' # 0 k!"' & &&&% 0 ( "kk # % (
De esta forma al usar comandos como rsh o rlogin es posible entrar en los distintos nodos del cluster sin necesidad de password. Hay que notar que el empleo de rsh o rlogin est desaconsejado por cuestiones de seguridad y se recomienda el uso de ssh. Con ssh el chero deja de tener sentido ya que la autorizacin para entrar en una cuenta sin necesidad de password se consigue usando una clave pblica. No obstante, nosotros seguiremos usando este chero para denir las mquinas que constituyen el cluster como se ver posteriormente.
81 150.214.138.87, romantico.us.es. AMD-K6-450 MHz. 64 Mb RAM. Exporta: /users/home; /local-link/cdrom 150.214.138.88, blancanieves.us.es. Pent-250 MHz. 64 Mb RAM. Exporta: /local-link/cdrom. 150.214.138.95, labruja.us.es. Pent-200 MHz . 32 Mb RAM. Exporta: /local-link/cdrom 150.214.138.116, legolas.us.es. Pent-120 MHz. 32 Mb RAM. 150.214.138.117, bilbo.us.es. Pent-120 MHz. 48 Mb RAM. 150.214.138.118, aragorn.us.es. Pent-120 MHz. 64 Mb RAM. 150.214.138.119, sauron.us.es. Pent-120 MHz. 64 Mb RAM. 150.214.138.120, gandalf.us.es. Pent-120 MHz. 32 Mb RAM. 150.214.138.176, merry.us.es. AMD-K6-350 MHz. 64 Mb RAM. Exporta: /temp La cantidad de memoria RAM total era 750 Mb y la suma de espacio en los distintos discos duros era 60 Gb. La mayor parte de los lectores posiblemente tengan ordenadores personales, incluso porttiles, con el doble de la memoria RAM y el espacio en disco duro de todo el cluster CLGEM. Es tambin destacable, al comparar con las velocidades de los microprocesadores actuales, que el ordenador ms rpido era un AMD-K6 a 450 MHz. romantico, que era y sigue siendo (aunque ha sido actualizado), el servidor NIS-NFS del CLF tan slo era un AMD-K6 a 450 MHz y serva informacin a otros 14 ordenadores y unos 20 usuarios, adems era usado al mismo tiempo por un usuario como estacin de trabajo. Creo que la anterior descripcin pone de maniesto que es posible usar con GNU/Linux ordenadores que estn algo obsoletos y obtener un buen rendimiento, aunque los nuevos gestores de escritorio KDE y Gnome pueden llegar a ralentizar notablemente el ordenador. Afortunadamente existe una plyade de gestores de ventana que ocupan muy poca memoria y son sucientemente completos para satisfacer a la mayora de los usuarios.
82
passwd /temp
NIS mudito
Figura 9.1: Servicios del cluster.
si todos los servidores que tenemos estn en la misma mquina o cada uno reside en una mquina diferente. A pesar de esto, la experiencia recomienda usar el menor nmero posible de servidores, ya que esto permite que el nmero de mquinas continuamente funcionando sea pequeo y adems se minimicen los problemas que surgen cuando existe algn problema con la red.
. . .
0 0 ) 0 $$)
Servidor nfs de utilidades que no son Debian, contenidas en los directorios . servidor-temp En esta mquina estar alojado:
g ' !&) ( 0 ) $"$$"# )
Servidor nfs del directorio de scratch time-server-local En esta mquina estar alojado:
Servidor de hora para sincronizacin de tiempo de todas las mquinas del cluster. servidor-back En esta mquina estar alojado:
0 $ 0 ( % "&) 0 ( % "&)
El hecho de que existan distintos servidores no implica que todos sean mquinas diferentes. El nmero de mquinas que hay diferentes se decide en el chero . La funcin de estos servidores podra compartirse entre varias mquinas de forma que existan por ejemplo varios servidores para backup: servidor-back-1, servidor-back-2, etc. Todos estos servidores deberan estar convenientemente denidos en .
) 0 &&$) ) 0 !")
# ( ' ""&)
0 0 $
donde se realizarn copias de seguridad del servidor. donde se realizarn copias de seguridad de los
84
Captulo 10
NIS y NFS
10.1. Introduccin
Cuando se pretende tener un conjunto de ordenadores, que estn conectados empleando ethernet, con el que los usuarios puedan intercambiar sus puestos de trabajo y ver siempre la informacin de sus cuentas, adems de usar siempre el mismo password, es preciso ver directorios remotos como si fueran locales y acceder a cheros de conguracin que tambin estn en mquinas remotas. Todo esto se consigue empleando los protocolos NIS y NFS. NIS (Network Information Service) permite:
( g ) 0 !!")
Elimina informacin duplicada de usuarios, permitindole al administrador hacer cambios en un nico sitio. Por su parte NFS (Network File System) permite: Hace aparecer los sistemas de cheros remotos como si fueran locales. Los usuarios vern sus cheros, independientemente de donde estn localizados, ya sea en un disco local o en un disco compartido en un servidor. NIS y NFS se complementan, ya que al exportar cheros a una mquina remota, para saber a qu usuario pertenecen sin que se creen conictos es casi imprescindible que la informacin relativa a UID (user identication) y GID (group identication) est centralizada. NIS y NFS trabajan usando el modelo cliente-servidor. Sin entrar en muchos detalles, un cliente es una entidad que solicita un servicio y un servidor es una entidad que proporciona un recurso solicitado por el cliente. NIS y NFS para llevar a cabo la comunicacin entre cliente y servidor emplean un servicio adicional llamado RPC, que debe estar presente tanto en los clientes como en los servidores.
10.2. NIS
10.2.1. Paquetes Debian
El nico paquete que tiene que estar instalado es el paquete nis que puede instalarse con:
85
86
( ${$& ( g ) 0 ! $!") g # "k ( ! $&&g g # ) 0 $"kk$) g ( ' # g ( $&{$& g !$( g !$(
Si se quiere congurar un servidor tambin es preciso el paquete portmap que puede instalarse con:
y que es preciso para convertir los nmeros de los programas RPC en los nmeros del protocolo DARPA. En lo que sigue consideraremos que portmap est instalado y funcionando correctamente.
Para crear la base de datos de NIS existe otro script asociado que est en:
g ) g ) % ) # "$""$&)
en l se dene el nombre que se asigna a la red de ordenadores a la que se sirve NIS. Puede elegirse cualquier nombre.
4 0 1 # g ) 0 `$k)
1 1 1 # # g ) # 0 ) g ) # ( ) $"$"$$ &"&$&&!k$l 1 1 1 ( % ( ( % $$!k!&&!&k${&!"$' ' k$"{" # ) tI& 0 # # &"$0 kk ( 0 ( !&&% # k$ " $& $&$&$"$h # # 4 # # 0 # ( $k" !"$" ( 0 ( !"&% $k" !"$" # ( 1 # 0 ( g &$"$""$ $& # ( 1 &"&{""&!2"" &{&p!&&$&$!!' &{"$ # g # # 4 ( ( &{"$$0 ( k!$! 1 # # 4 !&&$k k"&$ $ !&&% ( 0 ( 1 # # "$ # }$${ $! &&{& k" $ "{&"{"&"k$ 0 4 ( 0 # 0 ( g
' D
4 0 1 g ) 0 ) # # !3fkS!
Los pasos bsicos para activar un servidor NIS son los siguentes:
Incluso en el servidor es conveniente introducir en un chero cul es el servidor NIS y eventualmente cules son los servidores NIS secundarios o esclavos. Esto se hace en el chero /etc/yp.conf:
# 0 1 # g ) 0 ) H 1 1 V 1 "&"U$pFFfF2
Dena el nombre del dominio en el chero . Dicho nombre deber usarse en todos los clientes y en cierta forma es una palabra clave para acceder al servidor NIS.
( ' ( 4 ) 0 "!&!&)
4 0 1 # g ) 0 3f$$$)
H 1 1 1 0 F2`9`92`F`& &
En este momento es preciso construir la base de datos de los cheros que el servidor NIS exportar con la instruccin:
# ( ' e i i &!$k ) 1 ) 0 k&f &)
Tan slo las mquinas en la subred 192.164.1.0 podrn acceder al servidor NIS.
de forma que la opcin, que aparece al comienzo no debe ser modicado siendo su aspecto 87
# # g 0 &$${& &
# 0 ) g ) # ( ) # 0 # ( # $"$k$ &"$""3& &"!$&WF ' ( 1 1 1 ' ( %1 $2&$ "$"!!!j # ( g 1 1 1 # ( %1 $fk"$ "$"!!!j # ( g 1 1 1 # %1 g # ( g $fk$$&k!"!!!j 1 1 1 %1 g # ( g $f &&$$&k!"!!!j 1 1 1 g # ( g $$$&k!"!!!j 1 1 1 ( %1 0 # g ( g $' "$&$&&&!!!j 1 1 1 # % ' %1 0 # g ( g $$"!$&$&&&!!!j 1 1 1 ( %1 ( g $2' &$ "!!!j 1 1 1 ( 0 # %1 0 # ( g $2' &$$!$k!!!j 1 1 1 ' ( %1 0 # ( g $2&$!$k!!!j 1 1 1 # % ' %1 0 g # ( g $f&!k$$!!!j 1 1 1 ' ( %1 0 g # ( g $2&$!!!j 1 1 1 # ( %1 ( g $f$$"$!"!!!j 1 1 1 ( %1 ( g $2' &$!"!!!j 1 1 1 %1 g # ( g $f !$f$&$!!!j 1 1 1 ( %1 g # ( g $2' &$f$&$!!!j 1 1 1 %1 ( g ( g $$f!!"!!!j 1 1 1 ' ( %1 ( g ( g $$&$f!!"!!!j $&#$0")&g)&#(&)3$&"&# "$$WF ' # 0 # # ( 1 1 1 4 $2$k "$"" $$i ( v ) g ) # ( )
Para congurar un cliente NIS hay que seguir un procedimiento parecido al seguido en la conguracin del servidor. 88 Si no va a congurar un servidor esclavo pulse CTRL-D y despus acepte la opcin yes. Ver cmo se ha construido la base de datos correspondiente a los distintos cheros que se exportan. En estas notas no se describir cmo instalar un servidor esclavo ya que consideramos que crea ms problemas de los que solucionan. Es muy recomendable que el servidor sea cliente de s mismo. Cmo hacer esto se ver en la siguiente seccin. A continuacin arranque el servidor NIS con: para saber si ypserv se comunica correctamente con portmaper
# g $ !"&S!!$$# ( 0 4 0 g ( 4 4 &&&$ 1 0 # ( g ""!!$ # ( ) 1 ) 0 &k!f"$)
Dena el nombre del dominio en el chero . Dicho nombre deber usarse en todos los clientes y en cierta forma es una palabra clave para acceder al servidor NIS.
&' !!"!k!k$) ( ( 4 ) 0
A continuacin arranque el servidor NIS con: E incluya el servidor NIS en el proceso de arranque con:
( 4 4 "&!$ 1 0 # ( g "&!!$ # ( ) 1 ) 0 $&$!&$)
A continuacin ya puede usar los usuarios denidos en el servidor NIS. Note que por el momento sus cheros de usuario an no se encuentran disponibles en el cliente.
g # ) 0 "k$) ( g ) 0 ! $&&$)
y en los clientes:
H`S&c2" H H e h w h i H H H e j w h i `S&c2"
Qu pasara si denimos en un cliente un usuario local con la misma UID (GID) que un usuario denido en el servidor NIS?, tendramos privilegios para modicar la cuenta de dicho usuario?. Intente hacerlo (una vez que est activo el servidor de NFS) y vea lo que pasa. Observar que efectivamente consigue acceso a la cuenta del citado usuario. Esto en principio no es demasiado grave ya que en cualquier caso el servidor NFS previamente debe concederme acceso y eso slo se hace con mquinas en las que se cona. El problema grave aparece cuando alguien suplanta la identidad de una maquina en la que se confa, por ejemplo cuando sta se encuentra apagada. Contra esto no hay nada que hacer a menos que se emplee un tunneling de ssh para transmitir el protocolo NIS y el NFS. En este caso es imposible suplantar a una mquina ya que en el servidor debera estar la clave pblica de la mquina suplantadora. Si quiere saber ms consulte:
) 4 ) ( ' ) ( 0 1 ( # % ( 1 ( ' ) ) # g k"!&H&32&"$"$b1 $$$h$$
4 0 1 # ( ) 0 !3f$$k$)
Ya que es posible que quieran denirse usuarios locales en una mquina donde se emplea un cliente NIS, es imprescindible modicar el chero de conguracin de adduser, de forma que la UID y GID de los usuarios no entren en conicto con los proporcionados por NIS, esto se consigue fcilmente deniendo en el servidor NIS:
H`c2" H H e h w h i H H H e j w h i `c2"
g # ) 0 &$)
la lnea
la lnea
90
donde aadiremos en una nica lnea todas las mquinas que denen el grupo de ordenadores. En nuestro caso slo es preciso aadir el nombre de las mquinas, no obstante el segundo campo se destina a un usuario y el ltimo al dominio. En la prxima seccin veremos la utilidad de denir grupos de ordenadores al exportar directorios con NFS.
10.3. NFS
10.3.1. Paquetes Debian
Hay dos paquetes que deben estar instalados para el correcto funcionamineto de NFS y que pueden instalarse con:
91
' 0 4 # # # ' $!&k"& 4 "! 4 ( !{$& g &$(
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.
donde en la primera lnea se exporta el directorio a dormilon con permisos de lectura y escritura. Este permiso de lectura no resulta vlido para el root. En la segunda lnea se exporta el directorio a dos mquinas con slo permiso para la lectura. En la tercera lnea se exporta el directorio a sabio con permiso de lectura y escritura y gracias a la opcin el root tambin tiene permiso de escritura. Esta opcin ha de emplearse con mucha precaucin. Finalmente en la ltima lnea se exporta el directorio a todo el dominio uhu.es con permiso slo de lectura. Como ltimo comentario ntese que no existe espacio entre el nombre de la maquina a la que se exporta y el apertura del parntesis, . Con el chero fstab puede montarse de forma automtica un directorio va nfs. Como ejemplo de esta utilidad aqu se incluye un ejemplo:
H 0 ) H ( 0 ) &$"# ) ( 4 &&& 0 $) ( 0 ) $&$"# ) ' # g &&S$$) ( % w # w !&$&&`& ' # g "&$$) g ) # # $$h"k!$k
Este ejemplo de chero fstab montar en el arranque el directorio exportado por grugnon en . Hay que destacar que los cheros exportados por mquinas remotas siempre pueden montarse manualmente con mount. Por ejemplo, la anterior lnea de fstab puede montarse tambin con:
g $$) # g ) g ) # % # 4 &' "S$$9I&$k"!
1 # g ' &$!0
Esta prctica es muy til pero puede causar serios problemas en el proceso de arranque si existen problemas de red. Cuando analicemos el programa autofs aprenderemos a minimizar estos problemas. Hay que comentar que en lugar de defaults pueden emplearse otras opciones que mejoren el funcionamiento, por ejemplo:
har que el directorio no se monte automticamente y que cualquier usuario pueda montar o desmontar el citado directorio sin ms que escribir . Para desmontar habr que escribir , pudiendo hacer esta operacin cualquier usuario.
92
Para poner en marcha un servidor primero debemos decidir qu cheros y directorios queremos exportar. A continuacin crearemos el correspondiente chero como se explic en la seccin anterior. Si queremos exportar directorios a un conjunto de mquinas resulta conveniente emplear la denicin de grupos que proporciona NIS. En el siguiente ejemplo mostramos un chero empleando esta capacidad:
# g ) 0 $&$$)
Como puede observarse se exportan distintos directorios al grupo de mquinas A continuacin hay que inicializar los distintos demonios:
Si estos servicios ya estuvieran funcionando habra que emplear restart en lugar de start.
# ( ' ' 0 4 ) 1 ) 0 $&$$!"!&f &) # ( # # # &&k"&$ 4 ) 1 ) 0 !"!&f &) g ) $' H ( # &$"
""#h && 0"('H$"0"'&#k0&) "$"$) ( 0 v i i &h!" &D$ &$$&$&) # 0 ( ' 0 ( 0 ) # # 0 ( ' 0 ( 0 ) # &h!" &D$ &$&$&) ( 0 ( 0 ( $"$$&!!k!&$ # 0 ( ' 0 0 ""h!& &H$"n) v h 0 ( # 4 `ST$&&&k kh!" &D !k" # 0 ( ' ' 0 ) # ' "kk)
j ( !kS!!"$"
g ) ' $
g $)
4
' # g "&$$)
g ) # # $h&k!$$
93
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
% ( 4 ) 0 &"k$)
&&' "&$$) #1 ( ) 0 1 ( ) 0 ' &2"$$) H e ' V&$HS$ &"&&&$$) ' #1 ( ) 0 &"&&) ' # H ' ' 1 ( ) 0 S&e$$H$&2&$) # k) 1 " &( 4 ( ( ' # 4 4 ( $$!&k!"&! & # "$l$k$%"("(&k!$$D ( 0 ( ' ' 0 # g g ' ('#!4 $!4&&& !g('&$' &$$h ( ( # ( ( $4 " !b&$$&&' # ( '1 ( g (
R g ( # # # H ) H ) H H rk""$9$T$$``S
es
('#!4 $$!&!& !&$' "${$ kh 4 ( ( g ( ' # ( ( R g ( g V H# # H ) H ) h 1 wkT&`$F4``$h k b&$ "R 0 '1 ( # 1 ( ) 0 ' "2"$$)
Donde la opcin timeout indica el nmero de segundos que tardar el directorio en desmontarse desde su ltimo uso. El chero ser
HS!eHS V ' ' #1 ( ) 0 &""&2&$) ' # &""&) H ' 1 ( ) 0 `!eHS' &2"$$) # k) 1 ~ "$(( 4 ( ' # 4 4 ( $k!{&!&&! & # 0"$$'$$k&("("k!$$D ( ( ' 0 % # g g ' ('#!4 $$!&!(& !g('&$' "${$ kh 4 ( # ( ( 4 # ( '1 ( g ( " &b&$"!' R g ( # # # H ) H ) H H w$k&"{$h$$$!S!$`` 1 # ( '1 ( # " !b&$ "R ) # ' " ' # ) # ' 0 $ 0 ( % ) "&9# ( ) ) # ( ) # ' # # &' $$"g &&"h$&& $k g ) # g ' # # !' "h!&& $k
94
En el servidor, o servidores, no hay que realizar ninguna modicacin respecto a lo que se hace cuando se exportan directorios va nfs
Cuando se emplea autofs hay que tener presente que los directorios remotos que se van a montar va a colgar forzosamente de algn directorio concreto que hay que especicar. Estos directorios no tienen porqu existir ya que autofs los crea y los destruye cuando son precisos y cuando dejan de serlo respectivamente. Para jar mejor las ideas nosotros crearemos estos directorios. Vamos a considerar que se va a montar el directorio de las cuentas de los usuarios y otro conjunto de directorios que pueden ser tiles. Para este n crearemos dos directorios con:
0 ( % # # &"S!$ g $
# k
0 ( % # 0 &"&& &&# # $S
# $S # 0 $&"&#
v h 0 ( # 4 0 # 0 $S!&"$k!&&&&
El chero
0 k 0 ( &"% ( &' ( ""v g &' " 0 ( 0 &# & # "S 0
# ( '1 ( ) 0 &!X2"$$)
tendr el aspecto:
0 k "&$ &&) 0 ( % ) 0 0 ( % "(' $&g &&&&) ) ) # ( ) ( ' g ' ) g !&&' &) 0 0 ) 0 ) 0 $${) ( 0 ) ) ( 0 $&$"# $&$)
&""&{ ' # ) 4 &""&{ ' # ) 4 &""&{ ' # ) 4 &""&{ ' # ) 4 ' # ) 4 &""&{
Donde se especica que el directorio remoto (que fsicamente est en servidor-home) se montar sobre el directorio home y dicho directorio se montar con permiso de lectura y escritura. Hay que recordar que este directorio est contenido en , de forma que el directorio remoto se ver en . Por otro lado el contenido de ser:
Con el que se montan los directorios local2, etc, temp, mail, back-cl dentro del directorio de forma que tendremos los directorios:
' # &""&)
Los directorios que hemos montado no estn localizados en sus posiciones estandar de forma que es conveniente hacer links simblicos para solucionar este problema:
0$ "&) 0 ( % ( ' ") g ' !&) 0 ) ( 0 $"$) &"&&) ' # &"&&) ' # &"&&) ' # &"&&) ' # &"&&) ' #
95
0 k
0 ( % ) &"h#
0 ( % # # "&& $k g
# kS
0 $
0 ( &&%
0 ( % # 0 &&{&{&"&# # k
( &' ( ""v
# k # 0 # $""&
( g ( ' 4 ( &&~""$"$ &{"7&&"" 4 % ( ' ( ( 0 ( ' ' 0 % ( # ( g g ' "$l$k$""&k!$$D ('#!4 $!&&& !&$' &$$h 4 ( ( g ( ' # ( ( R g ( g V H# # H ) H ) h w$$T&$`$F4S!S 9!k b2"$ "R 1 0 '1 ( # #1 ( ) 0 "&' "2"$$) # ) ' ) # &k)
# k
' &
96 el directorio estar vaco (incluso puede Resulta curioso que si ejecutamos no existir si hemos optado por no crearlo), pero en cuanto accedemos a alguno de los anteriores link el correspondiente directorio ser montado. Lo mismo sucede si por ejemplo tecleamos .
&"&&& ' # )
10.5. Bibliografa
Para saber ms puede consultar: http://es.tldp.org/Tutoriales/NISNFS/nis-nfs98/ por J.E.ez Zuleta. man nfs. man ypbind. man ypserv. man autofs.
( 0 $"$)
&"&&& ' # )
Captulo 11
11.1.1. Requisitos
Mquina que exporte su directorio raz y todos aquellos directorios que sean necesarios y se monten en otras particiones, por ejemplo , , . El chero debe contener la siguiente lnea:
# ( &) ( 0 ) # $&$&) &&k2!c$"&fkU& ( % w # w # ( ( % w # w # ( &&k2!c$"&fkU& &&k2!c$"&fkU& ( % w # w # ( ( % w # w # ( &&k2!c$"&fkU& ) % &&) $`"&! % ( ' w ( w w % ( ' w ( w w $`"&! $`"&! % ( ' w ( w w % ( ' w ( w w $`"&! % $") ( 0 ) $"$$"# ) # ( ") # g ) 0 $&$$) )
Hay que recordar que el uso de la opcin entraa peligro para el servidor, ya que durante el proceso de copia podra borrarse toda una particin. Es preciso tambin autorizar en el chero la direccin IP de la mquina en la que va a copiarse el sistema. Algn sistema live-CD o live-diskette. Diskette o disco usb con los scripts que a continuacin se detallan: copy-nfs, part, fstab. Direccin IP y nombre que tendr su mquina. Tener claro si hay que conservar alguna de las particiones existentes en su ordenador. 97
&&k2!c$"& ( % w # w ( 1 ) 0 $$h !")
98 Tener disponible la conguracin de su tarjeta grca (chero /etc/X11/XF86Cong-4). Discos de arranque para el nuevo sistema. Hay que tener claro en qu particin y disco duro arrancar Linux. Una alternativa muy conveniente es un diskette con Grub. Cercirese de que en su ordenador la secuencia de arranque presenta la unidad correspondiente al CD antes que el disco duro. Asegrese de que tiene permiso para montar el disco duro remoto de la mquina que le suministrar Linux. Si va a reinstalar Linux, realice una copia del contenido de su cuenta (si esto es posible) as como de toda la informacin que pueda ser importante, en un lugar seguro. Conocer el password del root del sistema origen.
11.1.2. Uso
En esta seccin se dar una descripcin detallada de los scripts de instalacin, del riesgo de su uso y de los casos en los que se han usado satisfactoriamente. En primer lugar se arranca con un live-CD o live-diskette y en lo que sigue supondremos que la red se ha congurado correctamente. Si este no es el caso no podr seguir adelante con este procedimiento. En segundo lugar hay que montar el diskette o disco usb donde estn los scripts de instalacin. Finalmente hay que ejecutar desde el directorio donde estn montados los scripts:
( ' # 4 4 g 0 ) &"!S$&h1
para proceder a la copia. Hay que recordar que al realizar este proceso de copia pueden borrarse datos del disco, especialmente al realizar el formateo. La responsabilidad sobre el uso estos scripts recae sobre el usuario y no existe ninguna garanta sobre los mismos. Se recomienda no usarlos a no ser que se comprenda razonablemente bien su contenido. part Para ejecutar este script teclee:
( ' # 4 4 g 0 ) &"!S$&h1
# ( &)
Este script hace uso de la utilidad sfdisk que permite trabajar de forma no interactiva. Se asume que el disco duro que se emplea est en hda. Primero se crea una particin extendida que ocupa todo el disco duro. A continuacin de crean las particiones adyacentes 5, 6, 7, 8, 9 y 10 que , , , swap y , respectivamente. correspondern a los directorios ,
1 1 $1 H&&&) ( ) ( ) k&&&) h ( ) S&&&) $&&&) ( ) ( ) `&&&) 1 1 $1 ( ) ) g ( !!&!k" ' g ( ( # 0 !!&"& `S{k &$h4 ' V H 1 `S{k &$h4 ' V H 1 `S{k &$h4 ' V H 1 `S{k &$h4 ' V H 1 V H `S{k &$h4 ' 1 ( ( ' # 0 &$&k!"& ( ) ) !&! 4 k$ 0 # ( g c&&$& k&&"&"& ( 0 i ( ) T$!!&!k) i h$ U"2Q h R $U&2Q h R $U2Q h h R h R $U"2Q $Uc2Q h R h$ 4 k$ $S"$`"gS~&h R ) H H H i R R e $S"$`SSgS~k!h R ) H H H i R R e $S"$`"gS~kh R ) H H H i R R e h $S"$`"gS~&h R ) H H H i R R e R ) H H H i R R e $S"$`SSgS~h R # U h j R # # 0 S2&$z!"9z&k!"$&& "SR # # 0 @!"k &"W"& V H ) V H ) h j R i R !&!`Q0~"S2$ # g h l $${ ( e 3$`& `w R # g ( j g # ( ) ) $ !{&k&"& 4 e h $Aj kw R # g ( $"kX!!&!k g # ( ) ) 4 e k$A!" 1 ( ( ' ( ( ' g ( # # 0 2$""H&{S&$&{$"$$&& g ( ( ( 0 # ( g ( ' # ( ( # % !"!!"$g &!&!k&!"$$"7&"2"kT" ' ") $(0"$)&# ) g ' !k) H h $$ T&!" i g ( % h k $ kk % h % h $ k
' ")
( 0 ) $"$$"# )
g ' !)
# ( &)
99
( e i $&$$`U ( e h i i i `!!k!2`c$U 1 &%$ k$(!!t &t$"$kk % ( # # 0 1 V 1 H e i i `9kF1hS!kkS 1(g0($(&&($"#k&k%T&&! $!"'&#& $ # # g 0 k
0 "" 0 $$$$$$$$$$$$$$$$$$$$$$$$k"" g 0 0 !!k"" 1 ' 2&&#&&7k"" # ( 0 !${!!!"&"&$(k"" # ( 0 # ( g 0 ' 0 $T! $&$(" $&"g{' "kk&kk"" 0 ( ( ( # ( ( ( # # 0 $$$$$$$$$$$$$$$$$$$$$$$$k"" 0 0 "" 1 $ 1 V H V 0 ( 0 4 ' ( ' fSk&$kSj # % g 1 ( i ( 0 # ( h 1 1 &!' $"" !&&' "{$&tfl
12"' &#&("!! # # $!!&$ T& ("#"(& $ ${&{($& #!$0 g ' g 0 ( ' 1 4 g G$#I!)"# )9I%&h# % &)9I)9IU`h`$`$ 1 % # ) # ) # % # R e U h ) % !")
copy-nfs
El tamao empleado en cada particin aparece en el script. Hay que destacar que sfdisk slo lo hemos probado en ordenadores que no tenan ninguna particin con Windows (TM). Tal y como est escrito, part destruye la tabla de particiones y crea una nueva. Una vez que estn creadas las particiones se procede al formateo de las mismas.
100
1 ( # g # 0 0 # &&&!&kk$"&g ( # ( # ( g 0 # 0 4 # # &&"&7!&&&!& $k$F !"$&&4 ) ( # 0 # ( g ( ( # # 0 % # 0 % !"$$$&{!!"g !"$&$&& &&# !!!k&{&$T!"" 1 ( 0 # ( g ( g 0 ( g 0 ( 2"{& ! &$"&$l!"&" # 0 ( ) ( 0 % # 0 # ```````````` ( g &! ````````````
1 1 $$1
i ) ( 0 $$"$$) $ "S # ) # ' i ) # ( &&) $ "S # ) # ' i ) # "&) $ "S # ) # ' 0 "& # 0 ( # # l 0 & !!"$kk!&&{"& 0 "&
1 # 0 ( ( ' # 4 ( ( 2"$$k$!k$&k!"&{k % ( 0 # ( 0 1 # 0 ( # # "{&kT&{k!$&"&2& !!"$kk$!&&"l $("$!$) 0 ) # ( ) &!$) # ) &!$) $(0"$$)"# 9Ik`kS$T"!S ) # i i R 4 #(")9Ik`kS$T"!S # i i R 4 ) # i i R 4 9Ik`kS$T"!S
1 1 $1
$0"$$) $ "!kSi`R`"!k&$S $' ( ) U ) ) # (&) $ ") i U R ) $```)"!k&$S $' &#) $ ") h`c$``"!k)&$S $' i i i U R ) 0 "& )h$`i$("' &# # i R "& 0 y``&!k) U R ) ( 0 $&${!&& !($&("$"vu"& ( 0 0 "& ( ( ( !&!&$!!S&v
( 0 $"$$) $ " ' ) # # ( &) $ " ' ) # # &) $ " ' ) # ) # $ " ' ( 0 ) ) # $"$$&$ ' # ( ) ) # &&$ ' # ) ) # &&$ ' ) # $ ' 0 "& k &)k$&& &&# !!$"W"& ) # 0 ( # 0 0 "& # ( 0 # 0 # &&"&!""&! $&&k 0 ( # ( e i k!!kk!kS`U
101
0 "" 1 ( ( 0 ( 0 1 # ( 0 4 ' 2& &${"${!"# $k& 1 # ) ( 0 % # 0 ( g f&!k$& &kn!&"&# !& # &) $ "33S"p p p p ) R H i i R R i i R R i i R R h i i R R i i R i R R V i R R i R R i R R i R R H i R R`i `2Qi `2Q i `2Q`i `2Qi `2Qi `2Q `&i`R2p&pi `2Q`"`p`i 2Q`2p& R i R i i R R h i R R i i R R i R R V i i R R i i R R &i `2Q `2S &kkH&3 0 `}$&!k$$0 i R R i i R g # ( g # ) ) 0 "" 1 ( 0 2$ !!k "" 0 ($(&$""("$"S{k!&$2!k!S&"&{"&{"" # ( # g h 1 ( g 0 ( 0 # g # ( # ( g 4 0 ( % 0 &#!!$"#{' 0&$&$S{&k!"$!!k "$"$"" # " h ( g ( # ( # % 0 0 "" 1 $11 &!k$& &kn!&"&# !!!T"" ) ( 0 % # 0 ( g 0 0 "" 12& &${"${!"# $k& ( ( 0 ( 0 1 # ( 0 4 ' 1 ) ( 0 % # 0 ( g 2&!k$& &kn!&"&# !&
1 # ) f!
e H $S&i i # kk i i e 1 ( 0 ( g&"$$"{!!!{$""&k' ( ( # ( ( % 4 k "k%k&{( S&{$(&& !"${&!!k&&( # H # ' # # g g 1 ( # ( g !"$$ &$!!{&&$ H!&($"&&&"$( &kT"$" ( ( # ( ' ( # ( % ( # % ( !'&{&&$#"&!&$(&(&&g!""& % ( ( 0 ( 0 ( g ( g 0 ( # ( # # ( # 0 # !&( (!k&$t!""&!&!!$$0&{! # # 1 # 0 # ( # ( g ( g e $i i e h $i i e k i i e ki i e V Wi i e $i i e k i i e $i i e H $i i e &i i e k!i i e h ki i e &i i e i i e V $i i e k!i i 0 # g e &&&i i ' e $&{Si i
102
1 1 $1
g ' &
0 0 ) 0 $$) k &$) ) 0 ( ) ) # ( "' $&g &&&) $ "&' ) ) ( g ' ) # !&"&) $ "!' ") ) g # ( ' ) # "&"&) $ "&' ") ) # ( k "&&&) $ "$ &") 0 0 0 ( % ) # ) 0 0 0 ( % 0 0 k "&&&) $ "$ &") 0 ( % ) # ) 0 0 0 ( %
) # "&' "#&$") k&{ ) 4 ) # "&' "#&$") k&{ ) 4 # # "&' ")&$") k&{ ) 4 # ) # "&' "&$") k&{ ) 4 # ) # "&' "&$") k&{ ) 4 "&' "&$") k&){ # ) # 4 0 "& 1 1$1 "& &(&#"& 0 0 0 "& &! 0 ( # $"$"
)&"$)"&) $ " ' 0 # g # ) # )&!' "&) $ " ' ) # ) # 0 "& 1$1$1 && &&# !!&"& # 0 ( # 0 0 "& 0 ( # $&&k 1 # 0 # !""&! ````````````````````` # 0 # !""&! $&&k 0 ( # `````````````````````
1 1 $$1
( $0"$$) $ "r 0 `$"$!$ 0 ) i ( g ( 0 ) ) 0 "& $(0"$)&# )! (!& 0 "kl!""&!"& % # 0 # ( g 0 0 "& ( 0 ) # ) # 0 ( g $$&$&&"&# $&{
R j R R i j R `&i 2Q22
1 1 $1
# ! )
# &$") k& 3r!i 2 ) # ) R j R g&#$H!&3 0 &&!$ 0 ( g # ) # ) ) # ) # "&) $ " ' ) # 0 "& % # 0 # ( g 0 "kl!""&!"& ( !& 0
103
104
1 1 $$1 ( 0 ) # $&$&) # ( ") ) i ) ( ' ) g ) # ( $&$$&!"&) k &) k# ' 0 "" ( ' # 0 4 ( # # l 0 &&&&"!!&"""
En este script se asume que se han creado las particiones que aparecen en el script part. Se y . asume tambin que en el servidor hay tres particiones diferentes para , Hechas estas aclaraciones, la nica variable que hay que cambiar es la correspondiente a la direccin IP del servidor de cheros. Se recomienda que dicha direccin no corresponda al servidor del cluster ya que en este caso habr que realizar gran cantidad de ajustes nales. Antes de correr el script es preciso vericar si el chero fstab es acorde con las particiones creadas. Si no se han modicado las opciones de los dos scripts, el chero fstab debe ser correcto. Finalmente, hay que destacar que algunos de los links que se crean pueden no tener sentido; por ejemplo, en relacin a , habr que eliminar el link si la mquina en la que se hace la copia va a ser el servidor de dicho directorio. Ajustes nales Aunque tengamos ya copiado el sistema en el nuevo ordenador an hay que hacer algunos cambios para que el sistema sea totalmente funcional: tarjeta de video, direccin IP, etc. Reconguracin del sistema I (red) Antes de arrancar el sistema puede comenzar a recongurarse para que cuando arranquemos funcione correctamente la red. 1. Nombre de la mquina. Modique los cheros /new-disk/root/etc/hostname y /newdisk/root/etc/HOSTNAME de acuerdo al nuevo nombre.
g !' ")
0 "" a%(" "4k)0$)"&#) $ ")($4 &&k!&{"$$ &"" # 0 # ( g 0 0 "" 22$$h& $}}2`!ick$$$}}{"" i h v h j h i 0 0 "" 0 $)"&#) $ "" "4 g 0 ) % ( 0 "" 1$1 %(&"4!!!T"" 1 ( g 0 0 "" % ( 4 ( g " {& a&k$h}&Sx g g 0 "" a('#&4( k4(k!4 ' # 0 "" g a$0 "& 0 # g 0$!kD"" ( j 0 g &S` g 1 g y&$f$ "$"&&"" ( 0 &i "& 0 ( "&
105 2. 3. 4. Direccin IP. Modique el chero /new-disk/etc/network/interfaces para incluir el nuevo valor IP. Aada el mdulo correspondiente a su tarjeta de red, caso de ser necesario, en el chero /new-disk/root/etc/modules. Modique el chero /new-disk/etc/mailname de acuerdo al nuevo nombre de la mquina.
Desactive el sistema xdm La parte grca del sistema es muy probable que no funcione inicialmente por lo que el sistema de arranque automtico del sistema X es conveniente deshabilitarlo, para ello teclee: rm /new-disk/etc/rc2.d/S*dm Instalacion del Lilo Edite y modique convenientemente el chero /new-disk/root/etc/lilo.conf El aspecto del chero a modicar es:
4 0 % ( # !"$&$""&!h
Reconguracin del sistema II A continuacin debe arrancar el sistema y hacer una serie de cambios en la conguracin original para que el sistema funcione correctamente. 1. 2. Cambio del passdw del root con el comando /usr/bin/passwd. Modique el chero /etc/aliases. Cambie en la linea donde aparece root: pepito, pepito por el username del usuario responsable de la mquina. A continuacin corra el programa newaliases. Vericacin de los scripts que lanza el programa cron. Tiene que analizar los directorios /etc/cron.d, /etc/cron.daily, /etc/cron.weekly y /etc/cron.monthly. Si quiere eliminar algn proceso debe ocultar el chero adecuado mediante mv /etc/cron.xxx/script1 /etc/cron.xxx/.script1. No realice cambios si no est seguro como funciona este demonio. Vericacin de los scripts que se lanzan en el arranque. Tiene que analizar el directorio /etc/rc2.d. Para aadir o eliminar procesos de la secuencia de arranque hay que usar el comando update-rc.d. No realice cambios si no est seguro como funciona este demonio.
3.
4.
&
A continuacin teclee y seguidamente tambin puede llevarse a cabo con el gestor de arranque grub.
) # &&) ) # $ "&0
i i i i i i i i i i i i ( 0 # ( v i i i i i i i i i i i i i i ( ) ) e ``````"````````r`&"&!!&# 1 1 $1
i i i i i i i i i i i i ```````2
(0#(vii````````r&"&!!&% i i i i i i i i i i i i ( ) ) e 0 % 4 0 g $&$""$!$&"
106 5. Comente o aada todas las lneas necesarias en el chero /etc/exports, dependiendo de los directorios que comparta. Si posee CDROM, mire el chero /etc/exports de un ordenador que lo posea y copie en su exports todas aquellas lneas que hagan referencia al CD. Reconguracin del NIS (No es necesario si se realiza la copia desde un ordenador diferente a servidor-home). Vamos a suponer que su ordenador no va a ser servidor, en ese caso en el chero /etc/init.d/nis, la variable NISSERVER debe tener el valor false. Conguracin de particiones DOS. Debe crear un directorio que se llame /dos, /msdos o /windows y a continuacin modicar el directorio fstab introduciendo una lnea como esta: Por supuesto esto deber realizarlo si va a tener alguna particin dos. 8. Conguracin de la tarjeta grca. Si tiene a su disposicin otro ordenador con idntica tarjeta grca simplemente copie al nuevo ordenador los cheros: /etc/X11/XF86Cong-4 Si no puede aplicar la anterior solucin, use el programa XF86Setup que le guiar hasta congurar denitivamente su tarjeta. (Nota: deje este proceso para cuando todo en el ordenador, incluido la red, funcione correctamente). Tambin puede usar el programa xf86cfg si no posee el chero adecuado de conguracin. Para que dicho programa funcione debe tener instalado el servidor Xfree86. Una vez que crea que el modo grco funciona correctamente, corra startx. Si todo va bien slgase del modo grco y siga con la conguracin. Si por desgracia las cosas no funcionan vuelva a intentarlo de nuevo con el programa XF86Setup. Activacin de xdm en el arranque (no lleve a cabo esta tarea si no ha congurado convenientemente la tarjeta grca o si piensa que puede existir algn problema relacionado con ella). Escriba: update-rc.d -f k(x,g)dm remove update-rc.d -f k(x,g)dm defaults Para ver si el sistema funciona correctamente escriba: /etc/init.d/k(x,g)dm start No olvide comentar la lnea
1 1 $$1 ( % w # w # ( % ( w ( w !"k&$&`"$h&kS' &&$ ) ( 4 "!k! &!' ) ( ) !!k!!"!k)
6.
7.
9.
10.
que aparece en el chero /etc/exports tanto del nuevo ordenador como del ordenador que se us para copiar. 11. Arranque de nuevo el sistema y vea si todo funciona correctamente.
g ) ) # ( ) # !$$&g &&&"$!) "k%l!#&"&# {!(&#$0$# !'Sk $&0 0 ( ' ( # ( # 0) g 0 # ) ($$g0$"$k!0 ) # ) g ( # # g ' &!"$&H ) 0 $) 0 $) 0 $) 0 $) 0 $) 0 $) 0 $) 1 ) 0 f"$) &' !!"!k!k$"$k!0 ( ( 4 ) 0 ) # ) g g # ) 0 ) # ) g "k&$"$k!0 4 1 ( ) 0 ) # ) g 0`#kk$"$k!0 g ) 0 ) # ) g $"#kk$"$k!0 ( ) 0 ) # ) g !" &$"$k!0 ( ) 0 ) # ) g &$&&g$"$k!0 i g 0 ) # ) g 3$)$"$k!0 k!f"0$)"$#k!0 ) 1 ) ) g $ ' 1 ) 0 ) # ) g &2&($"$k!0 &""&)$)"$k!0 ' 1 ( 0 # ) g # & &X12&0$)"$k!0 ( ' ( ) # ) g 4 "k&( ( 1 $$9 kS9 % 1 ( # 1 "$$9 0 ) # ) g &&)$"$k!0 &&)$"$k!0 0 ) # ) g ) ) # ) g &&0$"$k!0 ) 0 &&$)"$#k!0 ) g &&
Instalacin
Se proceder a la instalacin del sistema base de Debian. A continuacin se seleccionarn los correspondientes mirror de Debian para continuar con el proceso de instalacin a travs de la red. Para decidir los paquetes que debemos instalar, correremos en la mquina que nos servir los cheros:
El proceso de conguracin consistir en copiar una serie de cheros del servidor del que estamos copiando toda la informacin y crear un conjunto de links. En lo que sigue consideraremos que el el directorio est contenido o montado va nfs el directorio raz de una mquina con idntica conguracin a la que nosotros estamos creando.
# $!)
y la parte ms delicada del proceso va a ser no olvidar ningn chero de conguracin asociado a los servicios bsicos del cluster.
% ( g 0 !"&$""$&$
Conguracin
g k
107
108
Finalmente deber eliminar los cheros del usuario que cre durante la instalacin y modicar el password del superusuario. Hay que destacar que este proceso de instalacin an no est optimizado.
0 0 ) 0 k!$) "($$&!&&) ' ) g ) # ( g ' !&) k "&) 0 0 0 ( % 0 0 k "&) 0 ( % 0 $) ( &' ) g &' ") k! &") 0 0 0 ( % 0 0 k! &") 0 ( % """' """' """' """' """' &" # ) 4 &" # ) 4 &" # ) 4 &" # ) 4 # ) 4 &" & 0 0 0 0 0 0 0 ) 0 $) ) 0 $) ) 0 $) ) 0 $) ) 0 $!$) ) 0 $) ) 1 ) 0 !&$) ( ( 4 ) 0 ) # ) &' &"&!k$"$!g 4!`f$k!&$"$!g 0 1 # ) 0 ) # ) 32$k&$$"$!g 0 1 4 # g ) 0 ) # ) 4 g ) 0 ) # ) $k&#$$"$!g 4 0 1 ) ) 0 ) # ) `i" $&$"$!g 4 1 0 # ) !0`k$k &)$)"$!g && !!)!f "0$)"$!g ( 0 1 ) # ) # ( && 0 $) '1 # 0 ) 0 "$b"&$) i g )k# 0&)$)"$#k!S g 0 0 ) # "#0$0g$ 0&("%)&&'Xf&#")$)"$#!g 0 1 0 0 ) g "&% 0 ( $X&# &0)0!!"!!")& $"f&0"$"$!g 0 1 0 ) ( 1 # ) 0 ) # ) $X1&# 0&) ) 0 ( ) !!$g$& $"f&")$"$!g 0 1 # 0 0 ) # ) 1 &# &)) 0 0 0 ( &&g!1f&#"0$)"$#!g 0 ) 0 ) ) # "0
Captulo 12
12.1.2. Requisitos
Tener algn directorio del servidor montado va nfs en todos los nodos. Habitualmente todos los nodos deben tener montado el directorio del servidor en el directorio . Por supuesto el directorio tambin es visible desde todos los nodos. cron activo. La clave pblica de usuario root del servidor copiada en todos los clientes.
0 0 ) 0 k!$) 0 ) ) # ' "kk)
12.1.3. Ejemplos
Actualmente en los cluster CLF y CLGEM se dispone de los siguientes cheros y conguraciones que garantizan la copia peridica de cheros de conguracin. En todos los clientes (en el servidor no hay que hacerlo) debe existir un chero que contiene:
0 ( g ) g # 0 ) 4 0 0 ) 0 ) ""!!$&!kk!$&` 0 ( g ) g # 0 ) 4 0 0 ) 0 ) ""!!$&!kk!$ !" $&# i i }}i i r
109
4 0 ( g ) 1 0 ) 0 k$"&!!$&&# &)
4 0 1 ) 0 ) % % 4 0 1 ) # 0 ) 4 0 0 ) 0 ) g !`!"&$&3& &$g !!&$$$0 ( 1 ) 0 ) % % ( 1 ) # 0 ) 4 0 0 ) 0 ) g $$h!""S $$h!"$g !!&$$$0 ) ) &&!k$& "$ 0 ( ' # e v h i U R zr$&D`$2$c24 % % ( # ( &{"! 4 4 0 1 ) 0 ) 4 0 1 ) 4 0 0 ) 0 ) g 3& &!3!& &&$$$0 ( 1 ) 0 $$h!") &$ $$h!"$g !!&$$$0 # ( 1 ) # 0 ) 4 0 0 ) 0 ) g ) ) $"$"&$k! "$ 0 ( # Ar$$' "De v h i U R `$2$c24 0 ( # ( # ( g i $$' """c # ( 0 # ( !"$"$! ````````````````````````````` ```````````````````````````````````` "& % R ) g ) ) # ( ) g 1 ( ""&$!$$$"g &&"hf' ! & 0 ""k%R!!g$$&g &&&# 2`l&"kS`!!$$&!&& ) ) ) # ( ) ' % R ) g ) g ) # ( ) !" & g ' g $&&H!$"$k $"$${"k!$ ""k&4 g # ( g H g % # # # "$k ' ) ( 1 # 0 ) 0 "1 H$""!f""$) 'H$""!f""$!k`S$&"!"&$ && ) ( 1 # 0 ) 0 ) ' ' ) ( 1 # 0 ) 0 ) g ( 0 # g ) 0 ) g ( 0 # g ) 4 0 0 ) 0 ) g $ $$&$$$0 4 0 1 # ) 0 !3f$&&$) `!"&$$$0 4 0 1 # ) 4 0 0 ) 0 ) g kS9 &&0$kh !"&$$$0 % 1 ) ) % 1 ) 4 0 0 ) 0 ) g !"0 !"&$$$0 ) ) ) 4 0 0 ) 0 ) g &"$(&92"$$)) 0 1 ( 0 ( 0 ( ) 4 0 0 ) 0 ) g &"&91&$$&$$$0 4 0 k31f $&&k!k31f $&&k!&$$$0 0 ) 0 ) 4 0 0 ) 4 0 0 ) 0 ) g ( 1 ) 0 ) ( 1 ) 4 0 ) 0 ) g $$9 &&$$$h !"&0$$$0 ( # 1 ) 0 "$$9 &&$)&$h !")&0$$$0 ( # 1 4 0 ) 0 ) g 4 0 1 4 # g 0 k`$"$)$) 4`2&&4$$)$0 0 1 4 # g ) 0 0 0 ) g ) 0 ' $) ' &$0$)0$0 ) 4 0 ) g ' !"$! ```````````````````````````````` & !k!$ ' ) 4 0 0 ) 0 ) # 4 v # U " ( e ( # ST&&U&& % " ( e ( 0 kk$`T"!`k&"!4 $ ( &&0($"%$#9!$&$$h g # 0 &911!&(0(&%' "k4!40&"(&${"#0& # 4 g g && ) ) % 0 ( g ) # 0 ) 4 0 0 ) 0 &&$g !!&$$$)
Dicho chero se ejecuta todas las horas y quince minutos. En primer lugar chequea si existe el chero y despus lo ejecuta. El chequeo inicial es conveniente por si el servidor no responde. El chero tiene el siguiente aspecto:
0 ( g ) 0 ) 4 0 0 ) 0 &!k$g # !&k$)
110
111
4
Como se dijo antes, este script se ejecuta en todos los clientes pero se crea en el servidor, estando alojado en . Queda claro por tanto que cualquier cambio en las conguraciones queda centralizada en el servidor. Si analizamos en detalle el script vemos que en primer lugar se toma nota de la fecha y la hora para escribir al nal del script una lnea en un chero de registro. En la siguiente parte del script se copian una serie de cheros de conguracin, bien desde el directorio del servidor, si la conguracin es idntica en el servidor y en los clientes, o bien desde el directorio si la conguracin cambia entre el servidor y los clientes. Como se observa pueden crearse directorio y hacer operaciones incluso ms complejas. Hay que resaltar que antes de realizar algunas de estas operaciones es preciso realizar ciertas comprobaciones para los cheros o directorios se creen correctamente. En la parte nal del script se hacen copias diferentes dependiendo del nombre del ordenador. Siempre hay que recordar que periodicamente se realizan copias de cheros de conguracin desde el servidor. Esto supone que si hacemos una cambio directamente en un cliente, posiblemente dicho cambio se pierda en menos de una hora, a menos que modiquemos de forma apropiada . el chero
12.2.1. Requisitos
Tener algn directorio del servidor montado va nfs en todos los nodos. Habitualmente todos los nodos deben tener montado el directorio del servidor en el directorio . Tambin resulta muy conveniente tener visible en todo el cluster el directorio . La clave pblica de usuario root del servidor copiada en todos los clientes. Para correr multiscr como usuario normal hay que tener creada la clave pblica y copiada en el chero .
# 0 ) 0 0 ) 0 $g !!k!$) g 0 ) 0 # &$) ) g "!' ") 0 0 ) 0 k!$) 0 )
12.2.2. Uso
Su uso es expremadamente simple,
g # 0 ) 0 $!!)
0 $)
0 ( g ) g # 0 ) 0 k""&$$!!)
w # ( ) &&$$&$`1
0 ( g ) g # 0 ) 0 $""!!$&$)
en el servidor.
0 # g g # ( g # 0 r!&"$&$X$D!k&&'
Como puede observarse este script toma el contenido del chero para saber cules son las mquinas del cluster. A continuacin hace un bucle sobre todas ejecutando el comando que se le ha proporcionado como parmetro al script. Para el buen funcionamiento de los comandos hay que exportar algunas variables de entorno. multiscr puede usarse para lanzar servicios en todos los clientes cuando exista algn mal funcionamiento, por ejemplo,
kS9 &&$) % 1 ) 0
l l i i 0 $$2& & 0 & & R r` # 0 # ( # # ' 0 z!!!{!"!k&!!&G& & 0 & & 4 ( g &!k(&(7cg3$$$$$$$$$$$$$$$k&" 0 R 0 "$ H Te # R $4 4 giRQyy % &)$(&$)"# )9&% &&# )h% &9`$y`k & rw 0 # ) ) # ) # U h R e U h # g 0 g R " R e # ( 0 `S$lk&$"! "$ H e # R $4 R e # `! ) ) $"$&&$$&"!kn k4 ) ) 0 g R # g 0 & & $Rac&$& & 0 g # R 0 0 $$$$$$$$$$$$$$$& & " e &Rk&$"! # ( 0 ! i 0~S g&k4 S g"#k kS91 &&$(D0g!4 # % ) 0 ) 0 # H e k H e 4 # g 0 ( $`}k"$!' &${$ $g # 0("$ 0&&$T!kj ( ) $$)$ ( && #!k&&' 0 ' ( & !"") ( % ) %
o para chequear si algn proceso est corriendo en las distintas mquinas del cluster:
% 1 % ( g &2""k"k g k # 0 !k&&'
112
A continuacin presentamos el aspecto del script multiscr. Como se ve es un script en bash, aunque pueden hacerse versiones en perl e incluirle muchas ms opciones,
( ' !0 # 0 !k&&'
Captulo 13
Copias de seguridad
13.1. Introduccin
No es preciso resaltar la importancia de las copias de seguridad. En caso de problema informtico, el no tener una copia de seguridad puede suponer una gran prdida de tiempo e incluso un problema irreparable. En primer lugar deben hacerse copias de las cuentas de los usuarios, aunque tambin debe tenerse respaldo de todos los cheros de conguracin del sistema, as como de programas que no son estandar en la distribucin Debian. Algo que tambin es de vital importancia es que el proceso de copia de seguridad debe ser automtico, jams debe depender de la intervencin de una persona ya que esto crea el riesgo de que alguna copia de seguridad no se realice convenientemente. En las siguientes secciones describiriremos algunos tipos de copia de seguridad que se deben/pueden realizar en un cluster.
113
H $ $" 0 R 4 r }kn $&w$F0 " l R 0 R # g e 0 b "&"kXS!F0 0 0 ( % g # e H&$& ( # # % &"$"{! $k 0 e &$k$l ( ( 0 ( ( ( g &!k&&' $& % " ( e ( 0 kk$`T"!`k&"!4 0 & & 0 ````````````````````T& & k!#$$& ( ( g 0 & & ````````````````````T& & 0 0 & & ( &! ( ) 0 ) ( 0 0 4' "$ &&$D& & 1 ( 1 v h !S} $!r$% i i j !kj ( ( && ' ( & !"") ( % ) % ""$' (&$ 0&(!k& 0"&!U &92$`1 "$kk&k% ( ( 1 ( 0 0 ' ( ( ( ' &! $!&)#& &&# ! # # ' ) # 0 ( k!#$$k &g(&(&{&& ${&&&k ( 0 # g # 0 4 ( # ( g # `S)$$ `HS$)!)k$$H H H ) H H H ) ) h H1 H 0 g $ &"% 0 (
Este script se mueve al directorio , borra una serie de cheros que son inservibles (los core por ejemplo) y corre el script backupsc cuyo contenido es:
) # ' &) 0 g $ &"& &&$!!) 0 ( % ) g 0 ( % ) g # 0 ) 0 # 0 g ' ) g ' ) 0 1 # # 0 ) g "&$&&"!kf&&&!"$ &"&$!$!!) 0 ( % ) 4 0 g # 0 ) 0 ) # ) ' "k0 ) ) h $$`H 1 v h S} $!r$% i i j % # &! &# 0 1 1 # ( # ( # # 0 # # k!9f$!k&!S"$$ &&$0 1 ) # ) ' "kk3 # $4 v h g `S~"$$ 0 ( % # 0 &"{&$g ! ) % !")
que se lanzar una vez a la semana (los domingos a las 6 horas) y tiene por contenido:
' g &S$ 0 ( % ) &"" 1 0 ) 0 $Xf&# &)
Uso 114
Se requiere un script que realice el proceso de copia y que dicho script sea lanzado por el cron en un da y hora en el que el sistema no se est usando. Tendremos el chero:
En este script se decide cuntas copias de seguridad se quiere tener almacenadas (variable BACK). A continuacin se procede a realizar el empaquetamiento y compresin de las cuentas de usuario. Actualmente en el cluster CLGEM, empleando bzip2 para la compresin, se tarda unas 8 horas en realizar la copia. Puede observarse tambin cmo se realiza un chequeo para saber si servidorback est activo o no. Caso de no estar activo no se realiza la copia ya que no habra sitio en un directorio local para almancenar el chero. Como puede verse las copias se almacenan en .
' g &S$
1 1 G$$1
j l i i 1 0 ( &k$2kSc& "&
4 % ( l ( # ( ( 0 y$&{&&&& & 0 & & g ' "S &&' "`' "S!$&$ "&!' 0 ( % i w # # w g 0 ( % 0 k &" 0 0 ( % ) 1 !f&2& &&`&&S& k! &&$k &"k20 & %1 # ( 1 ( 0 4 R w ' w ' # # w g 0 ( % ) 0 0 ( % ) 4 # ( ) ' ) # ) $& 0 0 & & 1 1 u$1 & kk!&$&kW& & ( # ( g 0 ( # 0 0 & & "$! g ' "S &&$k &" 0 0 ( % ) 0 0 ( % ) 0 & & 1 1 G$1 " &( 0 0 ( % # # 0 "&& $k& & 0 & & & H e # R 4 R e # ` &&!k$$&$&! ) ) ) ) 0 ( % # # "&S& k S $4 # g `````````````````````````````````````` ( ( # 0 !&$&{"&&"( (&!{ 0 ( % # &&#! $ & kk!&&' $ ( # ( g 0 ( ( 0 ( ( `````````````````````````````````````` 4 'k7&b$&Rw&"b 0&"%&$XS! # # ( 0 ( ( g # 0 & & 1 u1$1 &k(!k(!$$k &0$!!("$"lD& & ( ( ' # ( g ( # # 0 0 & & &$
El programa rdist realiza copias de directorios (incluyendo la recursividad) en otra mquina (o incluso en la misma mquina), copiando slo aquellos cheros que han sido modicados y borrando aquellos otros que ya no existen en el directorio original. 115
# ( &"' &)
Uso
Su uso es muy sencillo. Se requiere un script que realice el proceso de copia y que dicho script sea lanzado por el cron cada da a una hora en el que el sistema no se est usando. As tenemos el script:
Por supuesto en servidor-back debe existir el directorio . Si el directorio se exporta a todas las mquinas, los usuarios tendrn a su disposicin una copia de todos sus cheros correspondientes al da anterior. Esta copia tambin puede hacerse localmente si en lugar de la mquina remota se especica la mquina local.
# ( &"' ") #&(' "$& ) ( h i U R "22} &`R ) # ) "' "kF ! e 0 ( % # # &&! $A &$cU e h i ) ) ) ) i # ) # ( &$&!$$"$&&gk!"&' ") H r k$91 $!k$$""$$$"$&&) # ) ) # ( ) ) T$!"%&#) &' "#' "1$k k!"&) ) ) 4 4 # ) % ) # k$h1f $!)!k$)&#(")$$$$$$& &!kR}$&&&&{"& # ( 0 4 0 ( ( 0 0 kk# &$ 0 # ) g 0 ) 0 ) ' # 0 ( % # # "&& $k $ % " ( e ( 0 $k$"&Uk& &!4 H h !` % # &! &# 0 1 1 0 ( # # &9$$k2!' "k!S" 1 ( ' # 4 fk!! # 4 g k$
Este script lanza un rdist que usa como chero de conguracin cuyo contenido es:
0 ( % ( g # 0 &""$&!{&$g ! ) % !")
Requisitos
116
Clave pblica del root en la mquina servidor-back. cron activo. fping disponible. rdist disponible.
117
Este script almacena las copias de seguridad de en un directorio denominado que puede ser local o remoto. La estructura de este directorio es la siguiente:
Como puede verse se crea un rbol de directorios con las fechas en las que se ha realizado la copia. Lo importante es que en cada uno de estos directorios estn todos los cheros de las diferentes cuentas de los usuarios. Para que haya sitio en un disco duro, al pasar de una copia a otra, para los cheros que no han sido modicados se crean links fsicos (hard links), por lo que slo ocuparn espacio los cheros que s hayan sido modicados. Si los cheros que se modican a diario no son demasiado grandes pueden tenerse copias de seguridad de varias meses.
118
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):
) % !")
) # ( $&&)
1 0 ) # 1 1 0 ( ' # !$9!h2$&h
0 $)
&#& $k!$& &&# ! ' # 0 ) # 0 k(!$$k &0&(&{&& 0${&&&k # ( g ( # g # 4 ( # ( g # V H ) ) H H H ``H`$$!H``HS$)!)k$) kH ) H 1 H 0 F"g % 0
# 0 # 0 g & &"$`T"$$
) ) $$$$H
1 1 # ( # ( # # 0 # # k!9f$!k&!S"$$ &&$0
0 &g
0 % ) g &
1 v h S} $!r$% i i j
0 ( % # 0 &"{&$g !
0 ( % ) g # 0 ) 0 &&$!!) 0 ) $0
0 k &" 0 0 ( % ) 1 2& &&`$`' "S!$&$ "&$ "&) $ & 1 ( 0 4 R w 0 w # # w g 0 ( % ) 0 0 ( % 4 0 # ( 0 ) $ 0 0 & & 1 1 u$1 ' "S!k!& kk!&$&kW& & # # 0 ( # ( g 0 ( # 0 0 & & "$! 0 g &&$k &" 0 0 ( % ) 0 0 ( % ) ( ( ( ' ( g 0 ( ( # # &$ $&&!"$&l 0 # ( &&h ````````` `` 0 & & 1 1 G$1 " &( 0 0 ( % # # 0 "&& $k& & 0 & & & H e # R 4 R e # ` ) ) ) ) &&!k$$&$&! 0 ( % # # "&S& k S $4 # g `````````````````````````````````````` &"" &! 0 ( ( 0 ( % # # &"S! k! $$&{$!&$&{ ( # ( g 0 ( ( ( # ``````````````````````````````````````
1 1 u$1
4 ' # # ( 0 R ( k7&b$&w&"b &"&$XS! 0 ( % g # 0 & & (&k!k!$$k &$!!"$"D& & ( ( ' ( # ( g 0 ( ( # # l 0 0 & & &$ H Tr$ $&4 0 R }$$l &w$30 " l R 0 R # g e 0 4e &"&$XH!!30 0 ( % g # e H"$! ( # # % &&"& k 0 H e k$l ( ( 0 ( ' ( ( g &!"&$! % " ( e ( 0 $kk``T&!`""!4 0 & & 0 ````````````````````T& & 3k! #$$$!! 0 ) ( ( g 0 & & ````````````````````T& & 0 0 & & ( &! ( ) 0 ) ( 0 0 4' & &&$D& & ( 1 S}$!r$% v h i i j
"k%
119
Este script almacena diez copias (variable BACK) de seguridad del directorio en y adems hace una copia sin comprimir en Como puede observarse se realiza la copia de seguridad aunque servidor-back est inactivo, almacenndose sta localmente. En este caso, durante la siguiente copia en la que est activo servidorback, se copiarn todas las copias de seguridad que se hayan almacenado localmente. El caso de la copia del directorio es muy similar al que acabamos de describir. Hay que destacar que este proceso de copia de debe hacerse en todas las mquinas del cluster y no slo en el servidor. Para ello deber existir el chero
con el que se lanza un script similar al descrito anteriormente. En este caso las copias de seguridad se almacenarn en el directorio que reside en servidor-back.
0 0 k!
0 ( % &&)
# 0 0 g "k! 0 $)
) # ( $&&)
% ( l ( # ( ( 0 y&{"&&$"& 0 "& 1 `2"&&R20$w' "S!& "&$k 1 ( 0 4 w # # w g 0 ( % 4 0 }1(& 0&!4kR`0w`' &! $!wc$ 0&"{! & w # # g ( % 0 # ( 0 "& G$11 0) &(k#&4&"$"& 1 0 ' ( ( 0 0 "& 4 4 "&# i w g 0 ( % ' 0 ( % ( "&{4 0 ) $ 0 i w g & ```````````````````````````````````````````` 0 ( ( & && & & 0 ( % # # ' # # ( # ( g 0 ( ( ( # "&& $k&S& k!kk!{$&&$" ```````````````````````````````````````````` 4 % ( l ( # ( ( 0 y&{"&&$"& 0 "& &&!k$$&& $k!$k &"{$ 0 ) ) ' # # 0 ) 0 0 ( % ) 0 ) ( g 0 "& 1 1 G$1 $&W"& 0 ) ( g 0 0 "& ' # # 0 ) 0 && $k!$k &"S # 0 ( % ) # ' 0 "& u1$11 ' "S!$k$k "&&"$&D"& # # 0 ) 0 0 ( % ) ( # # l 0 0 "& 0 ( g ! ``````` ` 0 g $ &"7`$`' "S!$&$ "&$!' 0 ( % i 0 w # # w g 0 ( % ) 0 ) w`S$' "S!& "&$ !& i 0 w # # w g 0 ( % ) 0 ) 0 g $ "&S$' "S!& "&!' 0 ( % i 0 w # # w g 0 ( %
120
13.4. Bibliografa
0 ( % ) '1 0 ) 0 &&&&$bf&# &) 0 g $ 0 ( % ) 0 "&$ 0 ( % "&)
man tar. .
122
Captulo 14
14.2. Sistema X
Activacin de XDMCP en xdm, gdm o kdm
124
14.5. Varios
Duplicacin peridica del disco duro del servidor en otra mquina para una recuperacin rpida de desastres en el servidor. Creacin de colas de batch.