curso linux admi 2006

of 207/207
II CURSO DE ADMINISTRACIÓN DE SISTEMAS OPERATIVOS GNU/LINUX Guía del alumno Junio de 2006 Facultad de Física, Universidad de Sevilla

Post on 21-Oct-2015

58 views

Category:

Documents

0 download

Embed Size (px)

TRANSCRIPT

  • II CURSO DE ADMINISTRACIN DESISTEMAS OPERATIVOS GNU/LINUX

    Gua del alumno

    Junio de 2006Facultad de Fsica, Universidad de Sevilla

  • Autores:Jos Enrique Garca RamosAlberto Molina CoballesFrancisco 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 office, 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 JosMara Martn Olalla.

    debian-reference, que puede encontrarse en http://www.debian.org/doc/manuals/debian-reference.

    LINUX: Rute Users Tutorial and Exposition, Paul Sheer (2001).Administracin avanzada de GNU/Linux, Josep Jorba Esteve y Remo Suppi Boldrito.XP04/90785/00019, Formacin de posgrado Universidad Oberta de Catalunya (2004).Classic Shell Scripting, Arnold Robbins and Nelson H.F. Beebe, OReilly (2005).Automating Unix and Linux Administration, Kirk Bauer Apress (2003).HOWTOs en ingls.

    Manual Pages.

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

    1Puede encontrar una copia de la licencia en

  • ndice general

    0. Motivacin y objetivos 50.1. Antecedentes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50.2. Motivacin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70.3. Objetivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

    I Administracin local de GNU/Linux 9

    1. Administracin local del sistema 111.1. Introduccin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111.2. Arranque del sistema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

    1.2.1. Antes de Linux: El cargador . . . . . . . . . . . . . . . . . . . . . . . . 111.2.2. El proceso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

    1.3. Control del estado del sistema . . . . . . . . . . . . . . . . . . . . . . . . . . . 211.3.1. Directorio /proc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211.3.2. Procesos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 221.3.3. Memoria . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 251.3.4. Discos y sistemas de ficheros (filesystems) . . . . . . . . . . . . . . . . . 25

    1.4. Gestin de sistemas de ficheros . . . . . . . . . . . . . . . . . . . . . . . . . . . 281.4.1. Creacin de particiones y sistemas de ficheros . . . . . . . . . . . . . . . 281.4.2. Montaje de los sistemas de ficheros . . . . . . . . . . . . . . . . . . . . 30

    1.5. Ficheros de registro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 311.5.1. Arranque del sistema . . . . . . . . . . . . . . . . . . . . . . . . . . . . 311.5.2. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32

    1.6. Bibliografa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35

    2. Sistemas de archivos 372.1. Introduccin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 372.2. La estructura de archivos del s.o. GNU/Linux . . . . . . . . . . . . . . . . . . . 37

    2.2.1. Principales directorios en un sistema GNU/Linux . . . . . . . . . . . . . 382.2.2. Puntos de montaje . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39

    2.3. Permisos: su significado y cmo variarlos . . . . . . . . . . . . . . . . . . . . . 402.3.1. Usuarios y grupos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 402.3.2. Interpretacin de los permisos . . . . . . . . . . . . . . . . . . . . . . . 422.3.3. Modificacin de permisos . . . . . . . . . . . . . . . . . . . . . . . . . 432.3.4. El sticky bit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 432.3.5. Permisos y . . . . . . . . . . . . . . . . . . . . . . . . . . . 452.3.6. Permisos numricos . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45

    1

  • 2 Curso de Administracin GNU/Linux

    2.4. ! y !"# . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 462.5. Bibliografa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48

    3. Configuracin de perifricos 493.1. Impresoras . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49

    3.1.1. CUPS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 493.1.2. Lprng . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53

    3.2. Scanner . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 543.2.1. Escaneando con XSANE . . . . . . . . . . . . . . . . . . . . . . . . . . 58

    3.3. Dispositivos de memoria usb . . . . . . . . . . . . . . . . . . . . . . . . . . . . 583.4. Bibliografa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58

    4. Compilando el kernel 594.1. Introduccin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 594.2. Compilando el kernel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59

    4.2.1. Antes de compilar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 594.2.2. Compilacin del kernel . . . . . . . . . . . . . . . . . . . . . . . . . . . 61

    4.3. Bibliografa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63

    5. Uso de scripts para administracin del sistema 655.1. Introduccin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 655.2. Shells . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 655.3. Comandos ms usados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 685.4. Scripts en Perl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70

    5.4.1. Introduccin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 705.4.2. Nociones Bsicas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 705.4.3. Algunos oneliners interesantes . . . . . . . . . . . . . . . . . . . . . . . 74

    5.5. Bibliografa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75

    6. Ejecucin asncrona de tareas 776.1. Introduccin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 776.2. cron . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77

    6.2.1. El fichero $%#&'() y el directorio *+' $*$%#& ," . . . . . . . . . . . . . 776.2.2. Indicando la periodicidad . . . . . . . . . . . . . . . . . . . . . . . . . . 786.2.3. Crontab para un usuario cualquiera . . . . . . . . . . . . . . . . . . . . 79

    6.3. anacron . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 806.4. at . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 806.5. Output de las tareas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 816.6. Bibliografa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81

    7. TCP/IP y aplicaciones de red 837.1. Origen de TCP/IP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 837.2. Nivel de acceso a red . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 837.3. Nivel de red . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83

    7.3.1. Direcciones IP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 847.4. Nivel de transporte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 857.5. Nivel de aplicaciones: conexiones seguras . . . . . . . . . . . . . . . . . . . . . 86

    7.5.1. ssh . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 877.5.2. scp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87

  • Curso de Administracin GNU/Linux 3

    7.5.3. sftp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 887.5.4. Cmo generar y transmitir la clave pblica . . . . . . . . . . . . . . . . 88

    7.6. Bibliografa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89

    8. DHCP 918.1. Configuracin del cliente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 918.2. Configuracin del servidor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 918.3. Bibliografa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92

    9. Cortafuegos: iptables 939.1. Poltica por defecto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 949.2. Ejemplo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95

    9.2.1. Enmascaramiento IP . . . . . . . . . . . . . . . . . . . . . . . . . . . . 969.2.2. Creacin de un script de iptables . . . . . . . . . . . . . . . . . . . . . . 96

    9.3. Bibliografa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97

    II Construccin de un cluster GNU/Linux 99

    10. Descripcin de un cluster modelo 10110.1. Las mquinas del cluster . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10110.2. Caractersticas de los nodos del cluster . . . . . . . . . . . . . . . . . . . . . . . 10210.3. Esquema de servicios del cluster . . . . . . . . . . . . . . . . . . . . . . . . . . 10310.4. Descripcin detallada de todos los servicios de un cluster modelo . . . . . . . 104

    11. NIS y NFS 10711.1. Introduccin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10711.2. NIS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107

    11.2.1. Paquetes Debian . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10711.2.2. Demonios y scripts de inicio . . . . . . . . . . . . . . . . . . . . . . . . 10811.2.3. Ficheros de configuracin . . . . . . . . . . . . . . . . . . . . . . . . . 10811.2.4. Puesta en marcha de un servidor . . . . . . . . . . . . . . . . . . . . . . 10811.2.5. Puesta en marcha de un cliente . . . . . . . . . . . . . . . . . . . . . . . 11111.2.6. Uso de NIS y herramientas bsicas . . . . . . . . . . . . . . . . . . . . . 11311.2.7. El fichero /etc/netgroup . . . . . . . . . . . . . . . . . . . . . . . . . . . 113

    11.3. NFS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11411.3.1. Paquetes Debian . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11411.3.2. Demonios y scripts de inicio . . . . . . . . . . . . . . . . . . . . . . . . 11411.3.3. Ficheros de configuracin . . . . . . . . . . . . . . . . . . . . . . . . . 11411.3.4. Puesta en marcha de un servidor . . . . . . . . . . . . . . . . . . . . . . 11511.3.5. Puesta en marcha de un cliente . . . . . . . . . . . . . . . . . . . . . . . 116

    11.4. Autofs como complemento de NFS . . . . . . . . . . . . . . . . . . . . . . . . . 11611.4.1. Paquetes Debian . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11611.4.2. Demonios y scripts de inicio . . . . . . . . . . . . . . . . . . . . . . . . 11711.4.3. Ficheros de configuracin . . . . . . . . . . . . . . . . . . . . . . . . . 11711.4.4. Puesta en marcha de un servidor . . . . . . . . . . . . . . . . . . . . . . 11811.4.5. Puesta en marcha de un cliente . . . . . . . . . . . . . . . . . . . . . . . 118

    11.5. Problemas de interaccin NIS, NFS, autofs, RPC . . . . . . . . . . . . . . . . . 12011.6. Bibliografa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120

  • 4 Curso de Administracin GNU/Linux

    12. Proceso de instalacin de Debian Sarge en los nodos 12112.1. Instalacin por copia directa . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121

    12.1.1. Requisitos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12112.1.2. Uso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122

    12.2. Instalacin a travs de los discos de Debian . . . . . . . . . . . . . . . . . . . . 13112.2.1. Requisitos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13112.2.2. Instalacin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13212.2.3. Configuracin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133

    13. Configuracin global del cluster 13913.1. Configuracin asncrona . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139

    13.1.1. Qu es? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13913.1.2. Requisitos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13913.1.3. Ejemplos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139

    13.2. El comando multiscr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14113.2.1. Requisitos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14113.2.2. Uso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14113.2.3. Variantes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142

    14. Copias de seguridad 14314.1. Introduccin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14314.2. Copias de seguridad de las cuentas de los usuarios . . . . . . . . . . . . . . . . . 143

    14.2.1. Con tar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14314.2.2. Con rdist . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14514.2.3. Con pdumpfs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14714.2.4. A una unidad de cinta . . . . . . . . . . . . . . . . . . . . . . . . . . . 148

    14.3. Copias de seguridad de ficheros de configuracin . . . . . . . . . . . . . . . . . 14914.3.1. Con tar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150

    14.4. Bibliografa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152

    15. Ajustes finales en el cluster 15315.1. Seguridad en el cluster . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15315.2. Sistema X . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15315.3. Seguridad fsica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15315.4. The Windows corner . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15315.5. Varios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154

  • Captulo 0

    Motivacin y objetivos

    0.1. Antecedentes

    El primer contacto de los autores con GNU/Linux data de octubre de 1995, en ese momentoGNU/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 configuracin del sistema no era tan cmoda como lo es actualmentepero a pesar de las dificultades rpidamente comprendimos que era un sistema operativo que seadaptaba 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 muchasocasiones 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 detexto, latex, representaciones grficas, 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 aplicacionesgrficas de dichos ordenadores remotos, lo que permita trabajar con varios ordenadores ala vez.

    Podamos conectarnos a nuestros ordenadores desde ordenadores remotos, pudiendo acce-der a todos nuestros documentos y programas.

    Otras personas podan usar nuestro ordenador sin que pudieran cambiar nuestra configura-cin personal o acceder a nuestros documentos o programas.

    Incluso para personas inexpertas era muy difcil daar el sistema operativo.

    No existan virus.

    5

  • 6 Curso de Administracin GNU/Linux

    Todas las anteriores caractersticas eran tremendamente atractivas para nosotros, al haber usadootros sistemas operativos multiusuarios como el UNIX de Hp o el VMS (de Digital), y estarinmersos en el mundo universitario al pertenecer al departamento de Fsica Atmica, Molecular yNuclear de la Universidad (FAMN) de Sevilla donde se dispona de varios PCs y de una red dedatos que permita una buena conectividad entre ellos.

    En esos das nuestro trabajo en GNU/Linux era exclusivamente a nivel de usuario e inclusocambiar el fondo de pantalla supona un gran esfuerzo. No obstante, siempre estabamos abiertosa ayudar a cualquiera que tuviera problemas, con lo que poco a poco empezamos a comprendermejor los entresijos de GNU/Linux y a realizar tareas que no son las habituales de un simple usua-rio, transformndonos por arte de magia en superusuarios. Con el anterior comentario debe quedarclaro para los lectores que nosotros no somos programadores, aunque sabemos programar, o profe-sionales de la informtica, aunque gran parte de nuestro trabajo est relacionado con ordenadores,simplemente conocemos ligeramente GNU/Linux y tenemos mucha experiencia configurandosistemas y resolviendo problemas.

    Durante los primeros aos de nuestro trabajo con GNU/Linux, en el Departamento de FAMNexistan 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 deun ordenador en otro (siempre que tuvieramos una cuenta de usuario) y almacenar informacin ocorrer programas, pero era preciso copiar los ficheros de uno a otro ordenador y a crear constan-temente cuentas de usuario. De forma anloga, la configuracin de los ordenadores deba hacerseuno a uno, invirtiendo bastante tiempo en realizar cambios en todos los ordenadores del Departa-mento o en instalar nuevos programas. Otro inconveniente era que si un usuario deseaba usar elordenador 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 cluster1de ordenadores en el que se compartiera todo cuanto fuera posible: cuentas de usuario, ficherosde configuracin, copias de seguridad, servidor de correo, etc. Adems se opt por emplear ladistribucin Debian de GNU/Linux. Los motivos para ello fueron:

    La estructura del proyecto Debian garantizaba que en el futuro la distribucin seguira siendocompletamente gratuita.

    Se podan realizar actualizaciones sin necesidad de rebotar los ordenadores.

    Posea un cuidado sistema de dependencias entre los diferentes paquetes, de forma quenunca faltaban libreras al instalar un nuevo programa.

    Existan mltiples sitios Debian oficiales desde los que podan obtenerse o actualizarse nue-vos 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 caractersticasque necesitabamos, y cuya estructura era muy similar a la de los actuales CLF (Cluster LinuxFAMN) del Departamento de FAMN y CLGEM (Cluster Linux GEM) del Grupo de Estructura dela Materia (GEM) de la Universidad de Huelva.

    1En este manual no empleamos la palabra cluster para referirnos a una configuracin de ordenadores destinada arealizar clculos en paralelo.

  • Curso de Administracin GNU/Linux 7

    0.2. MotivacinDespus de todos estos aos trabajando con GNU/Linux, estamos firmemente convencidos

    de que ste ofrece muchas ventajas frente a Windows(TM), aunque ni mucho menos desprecia-mos dicho sistema operativo. Simplemente estamos ms cmodos en nuestro trabajo diario conGNU/Linux. Creemos que deben usarse aquellos programas que faciliten al mximo nuestro tra-bajo, ya sean programas GNU/Linux o Windows(TM).

    Bajo este prisma consideramos que el trabajo de un grupo de personas que tienen la posibilidadde compartir recursos informticos e informacin en su lugar de trabajo, se optimiza empleandoun cluster GNU/Linux donde se compartan el mximo de recursos. El inconveniente de estesistema es que debe haber una persona responsable de todo el sistema. Ya que dicha persona tienehabitualmente otras obligaciones, adems de las informticas, es preciso minimizar sus tareasinformticas asociadas al mantenimiento del cluster. De nuevo consideramos que un clusterGNU/Linux donde se compartan el mximo de recursos reduce notablemente su trabajo.

    Despus de estos aos trabajando con un cluster GNU/Linux creemos que es importanteimpartir curso y crear documentacin que enseen a desenvolverse en este entorno. Consideramosque dichos cursos y dicha documentacin pueden ser tiles para muchas personas y adems reduciren el futuro nuestras tareas como administradores, ya que muchos de nuestros compaeros podrnresolver sus problemas por s mismos.

    0.3. ObjetivosEn este curso hay dos objetivos:

    Conocer las tareas bsicas que debe realizar un administrador de sistemas GNU/Linux engeneral y de sistemas Debian en particular.

    Aprender a construir un cluster GNU/Linux donde se compartan el mximo de recursosposibles.

    En relacin al primer objetivo es imposible estudiar en detalle cada una de las diferentes tareasque debe realizar el superusuario ya que pueden abordarse de muy diversas formas. En este manualse explicar la forma en la que nosotros solemos abordar dichas tareas y se darn referencias paraque el lector pueda optar por otra forma de trabajar que se adapte mejor a sus necesidades.

    Al cubrir el segundo objetivo mostraremos cmo se construye un cluster GNU/Linux muyparticular: uno anlogo al CLF o al CLGEM. Aunque el diseo del cluster puede ser muchoms eficiente, pensamos que el lector tendr con este manual las ideas bsicas para construirun cluster, con unos requerimientos mnimos, que pueden ir siendo ampliados hasta adaptarseperfectamente 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 diferentesdemonios y servicios que usaremos, ms bien proporcionaremos una forma particular de usar-los, apoyndonos sobre todo en los ficheros de configuracin que se emplean en el CLF o en elCLGEM.

  • 8 Curso de Administracin GNU/Linux

  • Parte I

    Administracin local de GNU/Linux

    9

  • Captulo 1

    Administracin local del sistema

    1.1. IntroduccinEl administrador de un sistema GNU/Linux debe cuidar del buen funcionamiento del sistema

    desde su arranque, controlando la correcta iniciacin de todos los dispositivos necesarios y que losdiferentes grupos de usuarios puedan realizar con normalidad (y seguridad) sus tareas. En concretoesto implica saber qu servicios son necesarios al iniciar el sistema y la forma en que se lleva acabo el arranque del mismo.

    Una vez con el sistema en marcha es necesario saber como controlar los diferentes dispo-sitivos, gestionar memoria y sistemas de ficheros y, finalmente, monitorizar los procesos que seestn corriendo en sistema. Adems, ha de tenerse una idea de como reaccionar ante los posiblesproblemas que se vayan planteando. En relacin con esto ltimo es muy til saber dnde y cmoorganiza la informacin el sistema, en los llamados logs, pues nos esto nos permite reconstruir loocurrido antes de un problema y nos orienta acerca de la naturaleza del mismo.

    1.2. Arranque del sistema

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

    1.2.1. Antes de Linux: El cargador

    Al arrancar un ordenador lo primero que este hace es un autochequeo (power on self test)comprobando que todo est en orden y se puede proceder al arranque del que se hace responsableun programa llamado el bootstrap loader1. Este programa se encuentra en la ROM BIOS delordenador y su propsito es buscar un sector de arranque.

    Se llama sector de arranque al primer sector de un disco (en realidad de un sistema de fi-cheros, aunque tambin puede arrancarse un ordenador por red) y en este sector de arranque elordenador encuentra un pequeo programa que hace posible cargar el sistema operativo.

    En la BIOS del ordenador (para ver cmo se accede a la misma hay que prestar atencin almensaje inicial que proporciona el sistema durante el autochequeo) hay una lista de los lugares

    1A veces se traduce como programa calzador aunque la definicin en ingls de bootstrap es:bootstrap: (n) a strap that is looped and sewn to the top of a boot for pulling it on.

    11

  • 12

    donde el ordenador busca un sector de arranque y el orden en el que se lleva a cabo esta bsqueda.Una vez encontrado un sector de arranque se ejecuta el programa que se encuentra en l que seencarga de cargar el sistema operativo, pudiendo ser posible escoger entre varias posibilidades. Enun sistema Debian existen dos alternativas principales a la hora de escoger este programa, -.-/ y0123

    .

    El programa -.-/

    El programa -.-/ (acrnimo de -.nux -/ader) permite configurar el arranque de un sistemaGNU/Linux. Se ejecuta en dos etapas, la segunda de ellas nos proporciona un prompt, que pode-mos configurar para que sea de naturaleza grfica o alfanumrica, donde se nos permite escogerentre los diferentes sistemas operativos instalados en nuestro ordenador. Tambin podemos si fueranecesario pasar argumentos al kernel en el arranque del sistema.

    Existe una informacin exhaustiva acerca de -.-/ en las pginas 456 y, por ejemplo, en elLILO User Manual, contenida dentro del paquete2.

    La primera vez que instalamos nuestro sistema se instala y se ejecuta -.-/ de forma queinstala el cargador del sistema operativo en el sector de arranque del disco duro o MBR (MasterBoot Record). Tambin puede instalarse en el sector de arranque de alguna de las particionesque hayamos realizado. Al instalarse almacena la informacin acerca de los diferentes sistemasoperativos que se pueden ejecutar. Cada vez que hacemos algn cambio dentro de la configuracinde arranque debemos de volver a ejecutar -.-/ como superusuario para que dicho cambio quedereflejado en el correspondiente sector de arranque. La configuracin de -.-/ se encuentra en elfichero 789 :7-.-/ ;:/[email protected]

    A BBCDEFGHEIFJ

    = >

    K

    @

    LAJM

    K

    = >M @

    N

    BBCDEFGHEIFJ

    K

    = >

    O

    @

    P

    BQRJ

    P

    C

    = >[email protected]

    TU V

    CJLLDEA BBCEA BBC WA

    = >

    X

    @

    FGLJYD

    KZ

    = >

    [

    @

    Q JRDEA BBCEQ JR

    = >

    \

    @

    H]JD

    U

    B

    N

    Q JL

    = >

    ^

    @

    R

    N

    BQRC

    C

    T

    Q GB_CD ?

    ZZ

    = `G

    N

    U

    GL

    K

    W

    O

    W

    K[

    T

    Q J]GDEA BBCEHQ L

    TU

    _a b

    K

    W

    O

    W

    K[

    LJAGLD

    K

    W

    O

    W

    K[

    TU T

    C

    N

    FDEA BBCE

    TU T

    C

    N

    F b

    K

    W

    O

    W

    K[

    W

    T

    Q ]

    N

    GJF bB

    U

    LY

    JRRG

    U

    FD cIF

    P

    D

    T

    FG b

    V

    P

    VT

    c

    = `G

    N

    U

    GL

    K

    W

    O

    W

    K[

    2En Debian puede encontrarse en E_ VNEVIJNGEFBPELTLBEdJU_ JL WCeC W]a

  • 13

    fg hijklm nnolpg qfrst uv wx wvv

    qhmjqkv wx wvv

    fr foyzklmnnolfr foyz wfg i uv wx wvv

    yjhz unr q{

    | }

    hrzyh~j

    fg hijkl

    }

    hrzyh~jlm nnolpg qfrst

    qhmjqkg hrzyh~j

    ynnoklzjplzh

    yjhz unr q{

    nofnrhq

    yjoyfojz

    hqfhk

    |

    frzntj

    nojyklzjplzh

    qhmjqk

    frzn u

    Este fichero configura un sistema que Debian que arranca con dos posibles kernels, dados en laopcin y adems indica que puede arrancar una particin con la distribucin Mandrakeo tambin en Windows XP (TM). Al indicar una imagen (kernel) las opciones ms importantesson:

    : Indica la etiqueta que identifica a esa imagen en el prompt.: Si la imagen se encuentra en una particin diferente a la particin root por defecto.

    : Fichero usado por el kernel al arrancar.

    Adems de estas opciones que afectan a cada imagen las opciones generales indican lo siguiente:

    1. Especifica desde qu dispositivo se arrancar el sistema

    2. Opcin relacionada con la forma que tiene de acceder a una unidad de fichero quean no est montada. Desde 1998 es la opcin estndar y permite superar la limitacinexistente en sistemas ms antiguos que forzaba a que la informacin de arranque del sistemase encontrara en los primeros 1024 cilindros del disco.

    3. Indica qu dispositivo se montar como root ().4. Permite leer de forma ms eficiente el sector de arranque. Esta opcin est especialmen-

    te indicada si se arranca desde un floppy o si se observa que el sistema tarda un tiempoinusualmente largo en cargar el kernel.

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

    6. Nmero de dcimas de segundo que el sistema espera antes de arrancar la imagen por de-fecto.

    7. Localizacin del archivo map que contiene los kernels con los que es posible arrancar y sulocalizacin en el disco.

    8. Modo de texto VGA en el que se arranca el ordenador.

    9. La opcin muestra la informacin acerca de los kernels disponibles y espera dadecisin del usuario durante un tiempo fijado en la opcin

  • 14

    El programa GRUB

    El nombre , acrnimo de and nified ootloader, corresponde al que hoy por hoy esprobablemente el mejor cargador de sistemas (bootloader) disponible y que, casualmente, entradentro del software ofrecido por GNU3.

    La aplicacin es independiente del sistema o sistemas operativos instalados en el ordena-dor. Podemos considerar a GRUB como un minsculo sistema operativo en s mismo. El propsitode este mini s.o. es reconocer sistemas de ficheros y ficheros que sean imgenes de arranque delsistema, y trabajar con ellos. Para esto ltimo nos proporciona entornos tanto de men como deconsola. 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 estnacostumbrados a trabajar con bash se sientan a sus anchas con l.

    En concreto demuestra todo su potencial cuando se instala en sistemas que cuentancon mltiples sistemas operativos y modos de arranque, propios de aquellos usuarios que gustande probar simultneamente diferentes distribuciones GNU/Linux y que a la vez conservan otrossistemas operativos en su ordenador. Incluso si sigue siendo el cargador que utilicemos pordefecto, es interesante contar con un floppy en el que hayamos instalado y que nos permitarealizar tareas de rescate del sistema en caso de problemas. A continuacin supondremos que elprograma est instalado en el ordenador y describiremos como instalarlo en el MBR de unfloppy y de nuestro disco duro.

    En Debian forma parte de la distribucin estndar y si no estuviera instalado en el sistemaes muy simple aadirlo usando las herramientas para la gestin de paquetes de Debian.

    En principio reconoce multitud de sistemas de ficheros, pero al ser lo ms frecuentevamos a instalarlo en un floppy con un sistema de ficheros FAT. De paso eso nos va a permitirpresentar algunas herramientas importantes.

    Lo primero insertar un en la disquetera, le damos formato FAT y creamos el sistemade ficheros:

    Por cierto, esto destruye toda la informacin que hubiera en el floppy. Esperemos que no seademasiado tarde... Ahora hemos de copiar algunos ficheros al diskette, as que lo montamos parapoder acceder a l y copiamos los ficheros que necesita GRUB para funcionar:

    Aunque lo hayamos desmontado no sacaremos el floppy pues an nos queda el paso msimportante, que es instalar el cargador de en el MBR del disco. Por cierto, donde estn losficheros de depende de la versin y la distribucin que estemos usando, otras posibilidadesa la dada en el texto son los directorios o .A continuacin ejecutamos el comando con lo que entramos en un emulador del intrpretede comandos de y ejecutamos

    3La versin que incorpora en la actualidad Debian Sarge es GRUB Legacy, mientras que est en desarrollo la nuevaversin GRUB2. Vase la pgina web

  • 15

    Con esto hemos completado la instalacin de en el floppy y podemos arrancar el sistemacon el mismo.

    Supongamos que tenemos un sistema simple, que puede arrancar tanto en Windows Me, insta-lado en , como en GNU/Linux con un Kernel 2.4.x siendo /dev/hda2 el dispositivo montadoen la particin raz (). Al arrancar con el diskette que hemos preparado anteriormente obtenemosun 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 decomandos:

    Y tendremos enseguida en marcha el familiar (para algunos) proceso de arranque de un sistemaWindows. No vamos a explicar en detalle los comandos de grub empleados, aunque si convienedar una breve explicacin de la convencin que emplea para etiquetar las particiones, ya quees diferente de la que emplea Linux ( ). La forma de referirse en a una particin es como donde indica comenzando por cero la unidad de disco de quese trate (0 si es la primera como en nuestro ejemplo) e indica tambin comenzando por cero, queparticin es la que queremos utilizar. La primera en nuestro ejemplo. El porqu de este cambio esdebido a que no slo se utiliza con Linux sino con otros muchos sistemas operativos, cadauno con una convencin diferente a la hora de designar discos y particiones. Es por ello que se hadefinido un esquema propio de , independiente de todo sistema operativo.

    Para arrancar el kernel Linux en haremos, en el caso del sistema que tenemoscomo ejemplo:

    ! " ##"#$

    % &" # $

    Et voil! Tenemos al ordenador correctamente arrancado en Debian/Linux. El comando '( ')*es necesario siempre que el kernel necesite de una imagen initrd para su arranque. Si no lo propor-cionamos podemos terminar en un simptico +*( ,( '-.

    Despus de arrancar varias veces nuestro sistema de este modo es posible que nos sinta-mos un poco cansados de tanta orden y queramos configurar un men que nos permita ele-gir como arrancar. Nada ms fcil, definimos un fichero llamado .(/ 0) que copiamos a12

    34*/22):

    5 6

    5 7

    5 7

  • 16

    8 9:;; [email protected] ?AB [email protected] BD?FG H

    I:;; J

    8 [email protected] < @@?KDL M KDNO

    ?K?;B PQR SM KDNO

    [email protected]@? TAEU VJW

    >BFDB; SXY ;KDNZ [email protected]@?[SEBXSAE:\ [email protected]

    KD K?FE[SKD K?FE HKY L

    8 [email protected] < @@?KDL ] [email protected]^ C _B

    ?K?;B ] [email protected]^ C _B < @@? Y BDN

    [email protected]@[email protected] TAEU VU W

    Y :>B:=?KXB

    =A:KD;@:EBF ` J

    8 [email protected] KD C?:;;KDL PaRb [email protected] ?AB A:FE EKC>

    ?K?;B cD C?:;; PaRb [email protected] ?AB A:FE EKC>

    [email protected]@? TAEU VJW

    CB?Nd TAEU W

    8 eA:DLB ?AB [email protected];@FC H

    ?K?;B eA:DLB ?AB [email protected];@FC

    [email protected];@F ;KLA? fLFBBD S fGB;;@^S< ;NB

    Como podemos ver al arrancar de nuevo, una vez que el fichero ha sido copiado al diskette,tenemos ahora un men en el que podemos escoger entre arrancar el sistema en cualquiera delas dos opciones, instalar ghij en el MBR del disco duro o cambiar el esquema de colores dela pantalla de presentacin de ghij. Desde el men podemos aadir parmetros al kernel en elmomento del arranque pulsando la tecla klm tras seleccionar la opcin a la que queremos aadiralgn parmetro y tambin podemos trabajar en el modo intrprete de comandos pulsando la teclaknm.

    Para terminar veremos como instalar ghij en el MBR desde el intrprete de comandos unavez que nos hayamos acostumbrado a ghij usando el floppy. Con el paso intermedio por el floppytratamos de evitar algn efecto colateral no deseado en caso de que nos equivoquemos, una pos-tura conservadora que es adecuado seguir cuando se trabaje como superusuario. De todos modoses buena idea conservar el diskette con ghij ya que puede ser de gran ayuda en caso de que nosencontremos con un sistema con el MBR daado o con algn problema en opoq. La instalacin deghij en el MBR es una operacin muy parecida a la que hemos llevado a cabo para instalar ghijen el diskette. Por ejemplo podemos crear un directorio rsqqtruvwsr en cualquier particin decualquiera de nuestros discos, aunque lgicamente es preferible hacerlo en aquella particin queutilicemos ms a menudo y sea ms estable, vamos, que no sea en la que experimentamos ins-talando diferentes sistemas... Una vez hecho esto se copian todos los archivos que se encuentrenen ropsruvwsrpxyz{| n o en el directorio que corresponda en tu distribucin particular al direc-torio rsqqtruvwsr comprobando cuidadosamente que }l~w ot tambin est entre los ficherosaadidos. A continucin se entra en el modo de comandos de ghij y se ejecutan los siguientescomandos:

    LFN< [email protected]@? TAEU VJW

    LFN< CB?Nd TAEU W

    LFN< N K?

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

  • 17

    1.2.2. El proceso

    Una vez leido el sector de arranque el siguiente paso para el sistema consiste en iniciar losdiferentes servicios del ordenador, dependiendo del nivel en el que el ordenador est arrancando.Estos niveles de arranque, llamados runlevels, suelen estar configurados en sistemas UNIX usandodos alternativas diferentes: BSD o SystemV. En el caso de Debian se utiliza el sistema SystemV,que explicaremos brevemente a continuacin, pero otros UNIX, y alguna distribucin GNU/Linux(como Slackware, por ejemplo) utilizan el modelo BSD.

    En el caso del esquema SystemV, el primer proceso que arranca es el programa ,que utiliza un fichero de configuracin llamado para decidir el modo de ejecucinen el que va a entrar el sistema. En este fichero de configuracin se define el runlevel por defectoen arranque, y una serie de servicios de terminal para atender la entrada del usuario. Cualquier pro-grama que coloquemos en lugar de se ejecutara cuando el kernel hubiera terminadode cargarse.

    Los servicios, como habamos comentado, se inician despus de haberse cargado el kernel delsistema e iniciarse el primer proceso, denominado init. Este proceso es el responsable de ejecutary activar el resto del sistema. Como lleva a cabo esta tarea init se configura, como dijimos, desdeel fichero . En la figura 1.1 vemos un fichero tpico del que describiremossomeramente su contenido.

    La sintaxis del fichero es bastante simple. Las lneas que comienzan por # son comenta-rios, el resto de las lneas tienen la forma

    donde es una secuencia de uno a cuatro caracteres que define la entrada, es el o losrunlevels a los que afecta la lnea, describe que accin se va a llevar a cabo y esel proceso que se va a ejecutar.

    En la pgina puede encontrarse una descripcin detallada de este fichero, ex-plicando, por ejemplo, las diferentes opciones posibles en el campo . As hace queel sistema ejecute el proceso al entrar en el runlevel y espere a que este termine para proseguir, o

    , que implica que una vez terminado el proceso el sistema vuelva a lanzarlo.Como puede verse en la figura 1.1 lo primero que hace el proceso , tras definir el nivel

    por defecto de ejecucin (el dos en nuestro caso) es correr un script inicial en bash que en unsistema Debian es . Este script se encarga de fijar en una primera definicinalgunas variables del sistema, chequear y montar los sistemas de ficheros definidos, fijar la horadel reloj, hacer accesible es espacio de intercambio (swap space), definir el nombre del ordenador(hostname) etc.

    A continuacin se encarga de la gestin de los niveles de ejecucin (o runlevels), arran-cando el sistema en el nivel que proceda. Un nivel de ejecucin conlleva que se inicien una serie deprogramas y servicios, orientados a un determinado funcionamiento. En la tabla 1.1 se encuentrala descripcin de los niveles de acuerdo con el estndar LSB 1.34 y su traduccin a Debian.

    La ltima tarea que realiza es iniciar algunos procesos , con lo cual se obtienenterminales virtuales donde los usuarios pueden hacer login y entrar en el sistema. En Debian seinician 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 ficheros de log del sistema se detalla como obtener la informacin

    que se produce durante el arranque del sistema.

  • 18

    Figura 1.1: Ejemplo de fichero de configuracin .

  • 19

    Runlevel LSB 1.3 Descripcin Debian0 Parada Finaliza servicios y programas

    activos, as como desmonta fi-lesystems activos y para la CPU.

    Parada

    1 Monousuario Finaliza la mayora de servicios.Permite acceder slo al root enconsola para mantenimiento ycorreccin de errores.

    Monousuario

    2 Multiusuario sin red No se inicia el sistema de red. Multiusuario normal3 Multiusuario normal Multiusuario normal Multiusuario normal4 Reservado para uso local Tpicamente es igual que el 3. Multiusuario normal5 Multiusuario entorno grfico Multiusuario en xdm o equiva-

    lente.Multiusuario normal

    6 Reinicio Para todos los programas y ser-vicios, y reinicia el sistema.

    Reinicio

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

    El nivel en el que arranca Debian por defecto es el nivel dos, aunque como puede verse en latabla 1.1 Debian parte de que los niveles multiusuario sean todos equivalentes, permitiendo que eladministrador del sistema defina las diferencias que crea pertinentes.

    As pues, en Debian el X Windows System no se gestiona directamente desde ,sino que existe un gestor independiente (por ejemplo gdm o kdm) como si fuera un servicio msdel runlevel 2.

    Segn el runlevel escogido, el sistema al arrancar consulta los ficheros contenidos en el direc-torio donde X es el numero asociado al runlevel. En dicho directorio se encuentrauna lista de servicios que hay que activar o parar en caso de que arranquemos o abandonemos elrunlevel. La parada o arranque se decide en base a una serie de scripts (generalmente son enlacesa los scripts en ) que controlan cada servicio.

    Un servicio es una funcionalidad proporcionada por el ordenador. La activacin o parada deservicios se realiza mediante la utilizacin de scripts. Como veremos en el captulo 2, la mayo-ra de servicios estndar suelen tener su correpondiente fichero o directorio de configuracin enel directorio y se controlan mediante los scripts presentes en el directorio .En este directorio suelen aparecer scripts con nombre similar al servicio al que van destinados, yaceptan parmetros de activacin o parada. Estos servicios no slo se arrancan al iniciar el ordena-dor y se detienen al apagarlo, sino que el superusuario puede controlarlos en cualquier momento.As arranca el servicio, para elservicio y primero para y despus arranca el servicio. Si, porejemplo, hemos de reiniciar el demonio de impresin haremos como superusuario

    Cada script posee un nombre relacionado con el servicio, una S o K inicial que indica si es elscript para iniciar (S) o matar (K) el servicio, y un nmero que refleja el orden en que se ejecutarnlos servicios.

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

  • 20

    Una serie de comandos de sistema son los que perminten manejar los niveles de ejecucin,entre ellos cabe mencionar:

    )*+,-./0

    , permite parar (1* de halt) o reiniciar el sistema (12 de reboot). Puede darse tam-bin un intervalo de tiempo para hacerse, o bien inmediatamente. Para estas tareas tambinexisten los comandos *34, y 256..,./344

    , permite enviar mensajes de advertencia a los usuarios del sistema. de este modo eladministrador puede anunciar a todos los usuarios que se va a parar la mquina en un deter-minado momento. Comandos como )*+,-./0 suele utilizarlo de forma automtica.7 8-.9

    , utilidad que permite averiguar el PID (Process ID) asociado a un proceso. Con 7 )obtenemos los listados de procesos, y si queremos eliminar un servicio o proceso, mediante:

    844 necesitaremos su PID.+7-3,

    512 ; ?

    AC E1A @AB47C

    16FG6FG EEH I 3.06 84 50CC7C JKIL IKKMEKNEKN JO =KI @AB47C

    Ntese la P mayscula al final de la cadena de permisos. Indica que se ha activado el sticky bity que el directorio no es accesible a usuarios fuera del grupo del propietario, o sea, que la seal delsticky bit no encubre una seal de ejecucin, Q asociada al grupo *ther. Si al final de los permisosse encuentra una R minscula entonces indica que se ha activado el sticky bit y que el directorio esaccesible a todos los usuarios. Esta es la nica diferencia entre la marca R y la marca P. Este bitslo afecta al directorio en el que se ha activado, y no a sus subdirectorios.

    Un posible listado del contenido del directorio planes es el siguiente

    3 86 83. =

    >

    [email protected]

    ?

    AC EBA

    303BA M

    16FG6FG EEH I 3.06 84 50CC7C JKIL IKKMEKNEKN JO =JI S

    16FG6 EG6 EG L 3.06 84 50CC7C JKIL IKKMEKNEKN JO =KN SS

    E6F E6 EE6 EE J TB41BAU 50CC7C JIM IKKMEKNEKN JO =JN @AB4VB4 8AA0

    E6F E6 EE6 EE J 3.06 84 50CC7C JJL IKKMEKNEKN JO =JK @AB4VB3BWX7

    E6F E6 EE6 EE J 5 8A50 50CC7C IIY IKKMEKNEKN JO =JJ @AB4VABT0

    ?

    Como podemos ver diferentes miembros del grupo )*++,+ han aadido archivos a este di-rectorio. Supongamos que al usuario gandalf no le parece adecuada la informacin en el archivo9:;

  • 45

    2.3.5. Permisos cd ef y cg efEn esta seccin tratamos de dos permisos que deben de manejarse con precaucin, pues pueden

    ser una importante brecha en la seguridad de los sistemas si no se manejan con cuidado: el permisohi jk (het iser jkentity y el permiso hljk (het lroup jkentity.

    Cuando se activa el bit hi jk de un fichero ejecutable al correr cualquier usuario dicho ficherolo hace no con sus privilegios, sino con los privilegios asociados al usuario propietario del fiche-ro ejecutable. Del mismo modo si se activa el bit hl jk de un programa este se ejecuta con losprivilegios asociados al grupo propietario del fichero y no con los del grupo del usuario que loejecuta.

    Un ejemplo para aclarar este punto. Supongamos que el usuario thorin compila un programa Cllamado m noopoqr que tiene el mismo efecto que ejecutar el comando st uvwtxuyvws nrupoqrxzupoqr{oq|w,borrando el fichero poqr{oq|w. Supongamos que thorin permite a los miembros de su grupo eje-cutar este programa y adems lo hace hi jk con el comando }vt w~ z um noopoqr:

    Si ahora el usuario gandalf trata de borrar el fichero poqr{oq|w y para ello utiliza el programam noopoqrz finalmente tiene xito, a pesar del sticky bit, y ello es porque el programa corre conlos privilegios de thorin, su propietario, y l si puede borrar el fichero:

    Si queremos activar el bit hi jk a un programa resulta obvio que dicho programa debe contarcon permisos de ejecucin para el grupo o para todos los usuarios.

    El permiso especial hl jk tiene un efecto similar pero con los grupos. Si se activa el bit de unejecutable con el comando }vt w~ |z fichero y el fichero puede ser ejecutado por usuarios nopertenecientes al grupo (w), entonces al ejecutarse el programa corre con la GID asociada a supropietario y no al usuario que lo ejecuta.

    En ambos casos, hi jk y hl jk, este permiso slo tiene efecto sobre programas binarios (com-pilados), no sobre scripts.

    IMPORTANTE: Por razones obvias los permisos hi jk y hljk pueden comprometer de for-ma innecesaria la seguridad de un sistema si se activan en programas pertenecientes a root o acualquier usuario con privilegios de administrador. En estos casos deben usarse con cuidado y essiempre recomendable utilizar algunas de las herramientas para delegar la autoridad del superu-suario citadas en la prxima seccin.

    2.3.6. Permisos numricosHasta ahora para especificar los permisos asignados a un fichero hemos utilizado las letras

    q, w, | y (all, other, group y user) para representar a los diferentes conjuntos de usuarios y s, y (read, write y execute) combinndolas con los signos y . Existe una alternativa a estaconvencin que permite especificar de forma numrica los permisos y que aunque resulta algodifcil de recordar en un principio resulta ms rpida.

  • 46

    Especificar el modo de un archivo utilizando el mtodo numrico implica dar un nmero decuatro dgitos que lleva toda la informacin necesaria. El primer dgito se refiere a los permisosespeciales, el segundo concierne al usuario, el tercero al grupo y el ltimo al resto del mundo. Porejemplo 0740 implica ningn permiso especial activado, para el usuario, para el grupo y para otros.

    La traduccin de nmeros a permisos se lleva a cabo asignando un valor al permiso de eje-cucin, al de escritura y al de lectura. Para aadir simultneamente varios permisos sumamoslos correspondientes valores. As pues permiso supone .

    En el caso de los archivos especiales corresponde a activar , activa y el stickybit.

    Por ejemplo hace que testfile sea un programa con permisos para el usuario, para el grupo y para el resto de usuarios.

    La aplicacin nos permite determinar los permisos con los que se crean los archivos pordefecto. Para saber el valor que tenemos definido basta con correr sin argumento alguno.Si thorin ejecuta el comando obtiene

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

    es necesario restarlo a para obtener el modo de los ficheros 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 cambiarlos permisos por defecto basta con ejecutar con el valor numrico apropiado, teniendo encuenta lo que acabamos de decir acerca de restar a . Para que este nuevo valor permanezcapara cualquiier sesin se puede incluir la correspondiente lnea en el fichero o

    .

    2.4. y

    Un problema que suele plantearse al administrar nodos con UNIX, en especial cuando se tratade un cluster con un nmero elevado de usuarios es la gran disparidad de privilegios existente entreel superusuario (root) y el resto de usuarios. Por un lado tenemos al superusuario con TODOSlos permisos habidos y por haber, con la posibilidad de manejar y alterar el sistema a todos losniveles. Por otra parte los usuario de a pie tienen un nmero muy restringido de permisos yuna posibilidad muy limitada de poder manejar el sistema. Esto hace que tengamos en muchasocasiones que matar moscas a caonazos utilizando la identidad de superusuario para tratarcon situaciones rutinarias que otro usuario podra resolver. Y el problema ms grave que estoacarrea -aparte del agotamiento del administrador del sistema- es que abre la posibilidad de que lacontrasea del superusuario sea conocida por un crculo demasiado amplio de usuarios.

    Una primera solucin al problema descrito es promover en el sistema una poltica adecuadade 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, adqui-riendo su identidad. Por ejemplo, si el usuario thorin quiere convertirse durante una sesin en elusuario bombur har

  • 47

    Al ejecutar el comando es necesario proporcionar la contrasea del usuario al que se va aacceder y tras ello tenemos los mismos permisos que dicho usuario. Si el superusuario es el queejecuta el comando no necesita introducir contrasea alguna. Si aade un guin al comando ( username) entonces adems de entrar como el usuario se ejecutan sus ficheros de configuracin,esto es, se inicia una login shell. Si al comando no se le da un nombre de usuario entonces sesupone que se desea adquirir la identidad del superusuario, siendo necesario introducir el passwdde 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 regresandoel usuario inmediatamente a la inicial, por ejemplo si thorin necesita realizar una bsqueda en unode los ficheros de log sin abrir una sesin de root puede hacer

    Con la opcin se consigue solventar en parte el problema de limitar al mnimo el accesocomo superusuario al sistema, aunque sigue siendo necesario introducir la contrasea del superu-suario, una informacin que debera ser muy restringida. Un mtodo ms adecuado de solventarel 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 norma-les la ejecucin de aplicaciones del superusuario con la ventaja de que no es necesario que losusuarios conozcan la contrasea del superusuario y adems lleva un registro de las actividades delos usuarios a los que se ha dado permiso para ejecutar las aplicaciones.

    En todas las distribuciones Debian est presente este comando, si no estuviera instalado bastacon ejecutar como superusuario. La configuracin de se lleva acabo en el fichero aunque este archivo no se edite directamente sino a travs delcomando . En este archivo se definen las aplicaciones que se van a abrir a otros usuarios ycuales van a ser estos usuarios.

    Pongamos un ejemplo algo artificial, en el sentido que es muy simple, pero nos puede dar unaidea de como funciona . Si, por ejemplo, el superusuario desea permitir a gandalf borrar elarchivo perteneciente a bilbo puede aadir al archivo la lnea

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

    Tras los cual se le pide que introduzca su password (atencin, su propio password y no el deroot) y cuando lo proporciona el comando es ejecutado y el fichero finalmente borrado. En laspginas ! de , y puede encontrarse una informacin exhaustiva acercade este comando.

  • 48

    2.5. Bibliografa1. UNIX for the impatient, Paul W. Abrahams and Bruce A. Larson, Ed. Addison Wesley

    (1992).2. Filesystem Hierarchy Standard, Daniel Quinlan, Debian Policy Manual (2000).3. Linux Filesystem Security, Parts I and II, Mick Bauer, Linux Journal issues 126 and 127

    SSC Publications (2004).4. Gua de referencia DEBIAN3, Osamu Aoki (Trad. al espaol coordinada por Walter O.

    Echarri) (2005).5. Manual de Seguridad de DEBIAN4, Javier Fernndez-Sanguino Pea (2004).

    3http://www.debian.org/doc/manuals/debian-reference4http://www.debian.org

  • Captulo 3

    Configuracin de perifricos

    Una vez que el sistema est instalado en el disco duro y las partes esenciales del hardware delsistema han sido reconocidas satisfactoriamente: teclado y ratn, tarjeta de vdeo, tarjeta de red,modem, lectores y grabadores de CD/DVD, an es preciso que funcionen otros perifricos que enla mayor parte de los casos resultan imprescindibles. En particular la mayor parte de los usuariosprecisa de una impresora, un scaner y algn dispositivo de memoria USB.

    Aunque GNU/Linux tiene soporte para la mayor parte del hardware que hay en el mercado,no debe sorprendernos que haya algn dispositivo no soportado. En lo que sigue ensearemos aconfigurar una impresora, un scaner y un dispositivo USB, suponiendo que todo el hardware estsoportado GNU/Linux. Si ste no fuera el caso, no hay que desesperarse, ya que hay herramientas,que no son las que se explicarn a continuacin, con las que se puede llevar a cabo la configuracin.

    3.1. Impresoras

    3.1.1. CUPS

    Tradicionalmente se han utilizado en Unix dos sistemas de impresin: Berkeley Line PrinterDaemon (LPD) y el AT&T Line Printer, creados en los aos 70 para usar las impresoras matri-ciales de la poca. Ms tarde, con la evolucin de estos perifricos incorporando las tecnologaslser o de chorro de tinta, estos sistemas fueron adaptndose e incluyendo controladores que per-mitieran su uso en este tipo de impresoras, aunque sin mejorar sustancialmente sus capacidadesoriginales. A finales de los aos 90 surgieron diferentes iniciativas orientadas a la creacin de unsistema estndar de impresin, establecindose las especificaciones del protocolo IPP (InternetPrinting Protocol) como una extensin del HTTP (HyperText Transfer Protocol) -en el que se basala navegacin por Internet- con el propsito de proporcionar servicios de impresin remota. CUPS(Common UNIX Printing System) es software libre, distribuido conforme a los trminos de laLicencia Pblica General (GPL) y basado en este protocolo IPP, apareciendo su primera versinen octubre de 1999 con el objetivo de dotar de una solucin moderna, en materia de impresin, alos sistemas tipo Unix.

    El sistema de impresin CUPS ha sido desarrollado por la empresa californiana Easy Soft-ware Products (http://www.easysw.com/) y toda la informacin sobre el mismo puede encontrarseen la direccin de Internet: http://www.cups.org.

    49

  • 50

    El demonio de impresin

    Aunque hayas instalado GNU/Linux en un ordenador aislado, sin conexin con ningn otro,debes saber que tienes funcionando un sistema de red. El ncleo est concebido con una estructuramodular, de modo que permite aadir o suprimir servicios individualmente sin comprometer laestabilidad del resto del sistema. La idea es muy sencilla y, a la vez, muy efectiva.

    Los servicios se ofrecen con el modelo habitual de las redes, es decir, basados en la filosofacliente servidor, de manera que las aplicaciones demandan cualquier tipo de tarea al ncleo a travsde un determinado puerto -podramos considerarlos como diferentes lugares identificados por uncdigo numrico a travs de los que el ncleo escucha las peticiones- y ste les responde con elservicio correspondiente. Los programas encargados de regular estos dilogos se conocen con elnombre de demonios.

    En el caso concreto de GNU/Linux, el demonio encargado de regular las peticiones de im-presin proporcionado por CUPS, es cupsd (CUPS daemon), por lo tanto, necesitamos que seencuentre ejecutndose para que la impresora pueda recibir nuestras instrucciones.

    Normalmente, el sistema est preparado para que este demonio se active durante el arranquedel ordenador, por lo que es probable, no tengamos que hacer nada en este sentido. No obstante,no est de ms que aprendamos a parar y a iniciar este servicio, ya que el procedimiento es similaral que debemos utilizar con cualquier otro demonio del sistema.

    En primer lugar, vamos a comprobar si se est ejecutando. Accedemos al men de GnomeAplicaciones | Herramientas del sistema | Panel de control | Servicios. Por supuesto, se nospedir la clave de administracin -la clave de root que fijamos durante la instalacin- y nos mos-trar una ventana con todos los servicios del sistema, junto a una casilla de verificacin que nosinformar de cules se encuentran en ejecucin. En este caso debemos fijarnos si se encuentramarcada la casilla correspondiente a cupsys. En caso de no ser as, la marcaramos y pulsaramossobre el botn Aplicar.

    Otra forma de comprobar el estado de CUPS sera, abrir una terminal y ejecutar la orden:"

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

    ./0 12 3

    () 4 56$

    1

    #(

    127

    6889 :+; < =< < =

    > >

    ,

  • 51

    Una impresora no es una impresora

    Este epgrafe puede parecer una broma un tanto desconcertante, pero no es as. Simplementequeremos destacar que en GNU/Linux no debemos confundir el concepto de impresora con elobjeto fsico, es decir, con una impresora real, al menos, no tiene por qu ser as.

    En la mayora de las ocasiones, cuando nos referimos a una impresora o cuando enviamosun trabajo a imprimir, en realidad, deberamos precisar que se trata de una cola de impresinconfigurada conforme a unas caractersticas particulares establecidas por el usuario. Aclaremosesta situacin con un ejemplo.

    Supongamos, como es mi caso, que tenemos una impresora de inyeccin de tinta con calidadfotogrfica. Es este caso, deseamos configurarla correctamente, de modo que nos permita imprimirlas fotos e ilustraciones con unos resultados ciertamente vistosos.

    Sin embargo, qu ocurre cuando necesitamos imprimir una o varias pginas de texto puro?Pues, seguramente, la configuracin con calidades altas no mejorar en gran medida el aspecto denuestros textos impresos, tan slo ocasionar un mayor gasto de tinta y, como consecuencia, undespilfarro que, aunque leve, no menos indeseable.

    La solucin pasa por definir distintas colas de impresin que el sistema asumir como impre-soras, aunque se trate, en realidad, del mismo dispositivo fsico. Podramos definir una impresora-as entendida con resoluciones altas, llamada foto, por ejemplo, para enviar a ella los trabajos querequieran de una impresin de calidad. Otra, llamada normal, para imprimir documentos a color,pero sin unas exigencias de nitidez elevadas, por ejemplo, pginas de Internet.

    Finalmente, una tercera impresora, borrador, a la que enviaremos los trabajos que slo con-tengan texto puro, configurada con una calidad econmica. De esta forma, el sistema se comportacomo si tuvisemos tres impresoras distintas cuando, en realidad, se trata del mismo dispositivoconfigurado adecuadamente para cada necesidad. Ni que decir tiene que esta caracterstica del sis-tema es totalmente opcional, quedando a criterio del usuario la utilizacin que hace de ella. Sinembargo, es conveniente aclarar que cuando decimos configurar la impresora, vamos a configurarrealmente una cola de impresin.

    Configuracin de la impresora con el navegador

    Una de las caractersticas de CUPS es la posibilidad de realizar todas las tareas de administra-cin de los servicios de impresin desde un navegador. Por lo tanto, elegiremos nuestro navegadorfavorito, Mozilla Navigator, Mozilla Firebird o Epiphany y escribiremos en la barra de direcciones:JKKL M

    NNOPQRO

    J

    PS

    K M

    TU V

    O bien, el nombre del ordenador:JKKL M

    NNWPX

    M

    TU V

    En cualquiera de los casos, como nos hemos asegurado que el demonio cupsd est ejecutn-dose a la espera de recibir peticiones, accederemos al men principal de administracin.

    Pulsaremos sobre el enlace Manage Printers y, seguidamente, sobre Add Printers, el sistemanos solicitar el nombre de usuario (root) y la contrasea de administracin, e iniciar el asistentepara aadir una nueva impresora al sistema.

    La primera pantalla nos pedir el nombre de la impresora -en realidad, el nombre de la cola deimpresin que no puede contener espacios en blanco, la localizacin y la descripcin. Estos dos l-timos campos son de tipo informativo, por lo tanto, podemos incluir los comentarios que describanla cola de impresin sin temor a que interfieran en algn aspecto esencial de la configuracin.

  • 52

    A continuacin, debemos elegir el modo de conexin con la impresora, seleccionando el dispo-sitivo adecuado. Si nuestra impresora es de tipo USB, indicaremos USB Printer 1. Si se encuentraen el puerto paralelo, Parallel Port 1. Si se trata de una impresora de red, AppSocket/HP Direct, oel puerto correspondiente si no se trata de ninguno de los anteriores.

    Pulsando Continue debemos indicar a CUPS la marca del fabricante de nuestra impresora y,seguidamente, el modelo de la misma.

    Ahora es el momento de elegir los ajustes de impresin acordes con las caractersticas de lacola que estamos definiendo, por ejemplo, si se trata de la impresora con calidad fotogrfica, esaqu donde debemos establecer los parmetros para que nuestras fotografas se impriman con lacalidad deseada.

    Una vez completado el proceso, regresaremos a una ventana de administracin donde CUPSnos informar de las caractersticas que hemos definido para nuestra impresora y tendremos laoportunidad de imprimir una pgina de prueba.

    Establecer la impresora predeterminada

    Probablemente nos haya parecido una buena idea definir distintas colas de impresin paraun mismo dispositivo. En ese caso, debemos indicarle al sistema cul de ellas utilizar comopredeterminada impresora por defecto, para ello, hemos de registrarnos como administrador yejecutar la orden:YZ[\] ^_ `\ _a]bcd`^]Zcdeac[

    donde nombre-impresora es el que corresponda a la cola de impresin deseada que fijamosdurante la instalacin. Este nombre no es sensible a maysculas y minsculas. En concreto:f

    g

    d

    g

    Y^_hi `jk lmno eh

    p[eeqac\ l

    ca_ l

    rs

    a] d

    rt

    c ^][Y\aeu YZ[\] ^_ `\ _ac][Yv wx

    Esta secuencia fijara la cola normal810 como impresora predeterminada del sistema.

    Impresin desde la lnea de comandos

    En estos momentos ya tenemos a GNU/Linux en condiciones de comunicarse con nuestraimpresora y atender nuestras peticiones en este sentido. Ahora bien, cmo hemos de imprimir?Vamos a ver el ejemplo ms sencillo de uso de las posibilidades de este sistema. Para ello, conla impresora conectada -y con algo de papel-, abrimos una terminal y ejecutamos, uno a uno,cualquiera de los comandos siguientes:f

    g

    d

    g

    Y^_hi `jk lmno Ye y YZ

    cdzhde{ ^\ ^e _ac][Yv wx`j| }w ~ ^Yd }e

    f

    g

    d

    g

    Y^_hi `jk lmno YZ Zaczhd ^ {i{

    cdzhde{ ^\ ^e _ac][Yv wx`j }w ~ ^Yd }e

    f

    g

    d

    g

    Y^_hi `jk lmno YZ `\ ~a{av wx ^] [

    t

    d_ Z_

    t

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

  • 53

    En el segundo caso, enviamos a la impresora (lp) un archivo (porquevi.txt) que se encuentrasituado en el directorio actual, si estuviese en otra ubicacin, deberamos expresar la ruta completadel archivo. De la misma forma, obtendremos automticamente el documento impreso.

    Por ltimo, en el tercer caso, enviamos (lp), seleccionando (-d) como impresora de destino(foto810), el archivo (imagen.png) que se imprimir con los parmetros de calidad establecidos enla configuracin de esta cola.

    Para imprimir desde cualquier aplicacin del sistema, bastar indicar la orden lp en la ven-tana del dilogo de impresin que dicha aplicacin nos facilite. De esta forma, enviaramos eldocumento a la impresora establecida como predeterminada.

    Si deseamos utilizar otra diferente, lo indicaremos utilizando el modificador -d seguido delnombre de cola.

    3.1.2. Lprng

    El sistema lprng es un spooler de impresin que proporciona los servicios esenciales de impre-sin para sistemas operativos de tipo UNIX. Aunque GNU/Linux no incluye este servicio (puedeinstalarse si se desea) consideramos muy conveniente comentar brevemente los rudimentos paraponerlo a funcionar ya que es un sistema que sigue usndose muy a menudo.

    El paquete debian que contiene este servicio es lprng y y los comandos que tiene asociadosson:

    lpr -Pcola file: permite imprimir ficheros.lpq -Pcola: permite ver el estado de una cola de impresin.

    lprm: permite borrar un trabajo de impresinlpc: programa interactivo para controlar las colas de impresin.

    Es muy conveniente instalar los paquetes debian ifhp y magicfilter que corresponden a filtrosde impresin que permitirn configurar gran cantidad de impresoras: laser, chorro de tinta, etc.

    El fichero donde se almacena la informacin sobre las colas de impresin es .Para ver algunas de sus opciones analizaremos un fichero printcap concreto:

  • 54

    Como puede verse, al definir las colas hay una primera lnea donde se define el nombre onombres de la cola de impresin. lp se refiere al dispositivo de impresin, que puede ser local oremoto. sd, af, lf y cd se refieren al directorio de spool y a diferentes ficheros de registro. ifhp y if serefiere al filtro de impresin que se emplea, en uno de los casos se usa ifhp y en el otro magicfilter.Adems de este fichero deben crearse con los permisos adecuados los directorios de spool (losficheros de registro se crean automticamente).

    Si no se entiende muy bien el anterior proceso, pero an se quiere usar lprng puede emplearseel frontal grfico lprngtool (hay que instalar previamente el paquete lprngtool) con el cual puedengenerarse de forma sencilla las distintas colas de impresin del printcap y tambin se crean deforma automtica los distintos directorios de spool.

    3.2. Scanner

    A diferencia de lo que ocurre con las impresoras, el hecho de que un scanner est o no sopor-tado por Guadalainex depende bastante del tipo de conexin y del chip concreto que incorpore eldispositivo, incluso un mismo fabricante puede producir modelos con distintos chips, algunos sinsoporte.

    En cualquier caso, para salir de dudas podemos mirar en la pgina http://www.saneproject.org/,donde se centraliza todo lo relativo al funcionamiento de los scanners bajo GNU/Linux, concre-tamente en http://www.sane-project.org/sane-supported-devices.html tenemos una relacin com-pleta, clasificada por fabricantes, con el driver y las indicaciones pertinentes para hacer funcionarnuestro scanner. Bsicamente, podramos decir que si se trata de un modelo con conexin SC-SI, seguro que estar soportado y no tendrs ningn problema para su configuracin y uso enGNU/Linux, al igual que la mayora de escneres con conexin USB. Hoy en da, los fabrican-tes estn colaborando con el proyecto SANE, conscientes de las posibilidades que representa estecreciente mercado de usuarios de sistemas libres. Si ests pensando en adquirir un escner, ase-grate previamente que funcionar a pleno rendimiento en GNU/Linux, consultando en la pginareferenciada ms arriba.

    Qu es SANE?SANE son las siglas de Scanner Access Now Easy. Es una interfaz de acceso estandarizado a

    cualquier dispositivo de captura de imgenes, concebida con unas caractersticas muy avanzadasque la sitan por encima de otros proyectos similares. Permite, por ejemplo, el acceso al escnera travs de una red, o la posibilidad de escanear desde la consola de texto -lo que simplifica laautomatizacin de tareas mediante scripts-, separando claramente la interfaz de usuario para lacaptura de imgenes de los controles del dispositivo. Se trata de software de dominio pblico ypuede distribuirse conforme a los trminos de la Licencia GPL. GNU/Linux proporciona todoslos elementos necesarios para hacer funcionar a cualquier escner soportado sin mucho esfuerzo

  • 55

    en la configuracin; sin embargo, son varios los elementos del sistema que intervienen en el pro-ceso, incluso con algunas variaciones dependiendo del tipo de conexin y del modelo de escnerque poseamos. Comprobando los dispositivos GNU/Linux, durante la instalacin, habr efectuadoun exhaustivo reconocimiento de nuestro hardware y tendremos un ncleo preparado para gestio-nar nuestra instalacin. No obstante, podemos comprobar si tenemos correctamente conectados yreconocidos los dispositivos, proceso que vamos a explicar a continuacin.

    Si nuestro escner es SCSI ejecutaremos:

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

    El sistema devolvera un bloque informativo similar a ste para cada dispositivo USB presente yreconocido.

    Hasta aqu, todo correcto, sin embargo, nuestro scanner estar accesible para GNU/Linux enun fichero de dispositivo del directorio que, en el caso SCSI, ser:

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

  • 56

    En el supuesto de conexin USB:

    Configurando SANE

    Tanto si nuestro scanner es USB o SCSI, GNU/Linux habr instalado un kernel con el soporteadecuado para el control de todos los dispositivos de esta naturaleza que puedan estar presentes,pero necesitaremos unos retoques en la configuracin de SANE para adaptarlo a nuestra insta-lacin personal. El primer fichero donde miraremos ser en el del cargador dinmico de driversproporcionados por SANE, es decir:

    !" # $%&' ()

    *

    $ # # ) ) +

    *

    # (

    #"# #

    *

    "

    ++

    ,+

    -

    #

    -

    ,++

    .

    )

    +

    /

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

  • 57

    descomentada, la lnea que identifique a nuestro scanner. Veamos ahora el contenido del directoriode configuracin de SANE:0

    12134567 89: ;

    3? @2A [email protected]?B52 C

    D

    @

    BEBAF5 C1F5G

    D

    19H C1F5G I 41JFA2K9 C1F5G ?5BL?1B5 C1F5G

    BMGBGF16? C1F5G

    D

    33 C1F5G I 41JFA2K C1F5G ?L NH1 C1F5G

    BLL32 C1F5G

    D

    I 1 C1F5G I6?A2K C1F5G ?AOPP C1F5G

    BJA21 C1F5G 2L ?F5 C1F5G I6 ?A2KQLL C1F5G ABI BJB1K C1F5G

    BJA21Q2L36?OR6 C1F5G G6S4A?6 C1F5G I6 ?A2KQ6?E C1F5G A21F N C1F5G

    BT 4?4F5 C1F5G MLUFAF9 C1F5G 521 C1F5G A21F9 C1F5G

    EU C1F5G MAVR77 C1F5G 52A C1F5G A21F: C1F5G

    1B5F5V:P6 C1F5G ULHOPP C1F5G L 42 C1F5G A2?A C1F5G

    1B5F5 C1F5G UL C1F5G L36?A2K C1F5G 6IB7 N99P6 C1F5G

    1B5F5QLL C1F5G UL ?SH? C1F5G W 1BI C1F5G 6IB7 C1F5G

    1FF3?1B59 C1F5G 4EI C1F5G J 41FU C1F5G 6I B7QLL C1F5G

    1FF3?1B5 C1F5G 32F C1F5G ?XP:V C1F5G TO3 C1F5G

    D

    19NP C1F5G IB NHPX C1F5G ?12LAJ2 C1F5G

    D

    19OP C1F5G IBA?6?U 4AB C1F5G ?UBJL C1F5G

    Aqu se encuentra la configuracin especfica de nuestro modelo de scanner, y es donde de-bemos fijar los parmetros adecuados para que SANE pueda acceder sin problemas al dispositivo.No debemos preocuparnos, los ficheros ya estn preparados a falta, generalmente, de indicarle eltipo de conexin. Veamos, a modo de ejemplo, el correspondiente a un scanner Epson:0

    12134567 89: ;

    1BA @2A [email protected]?B52 C

    D

    @2L ?F5 C1F5G

    Y

    2L?F5 C1F5G

    Y

    Y

    U2J2 BJ2 ?FI2 27BIL32? GFJ UFZ AF 1F5G 4M6J2 AU2 [\]^_ EB1K25

    D

    Y

    Y

    ]`]a ?1B552J ;

    Y

    ?1?4 [\]^_

    Y

    Y

    \BJB3323 LFJA ?1B552J ;

    Y

    L 4F P79bR

    Y

    L 4F P7:bR

    Y

    L 4F P7:c`

    Y

    Y d

    ]c ?1B552J 8 F53e 25BE32 AU 4? 4G eF6 UBT2 B5 [\]^_ ?1B552J C

    aA 1F63

    D

    Y

    FAU2JZ 4?2 E3F1K eF6J 5F5 8[\]^_ ?1B552J GJFI E245M

    Y

    J21FM5 4f2

    D

    C

    Y g

    2L25

    D

    45M F5 eF6J

    D

    4?AJ 4E6A 4F5 h eF6 IBe 522

    D

    24AU2J AU2

    Y

    G4J ?A FJ AU2 ?21F5

    D

    25AJe C

    Y

    6 ?E @

    D

    [email protected]?E?1B552JP

    6?E @

    D

    [email protected] [email protected]?1B552JP

    En este caso, al ser un scanner USB, slo es necesario descomentar la lnea 6?E @[email protected][email protected]?1B552JP,tal y como recoge el contenido del fichero. Si nuestro scanner Epson tuviese una conexin SCSIo al puerto paralelo del ordenador, nicamente habra que descomentar la entrada correspondientey dejar el resto comentado.

  • 58

    3.2.1. Escaneando con XSANEUna vez realizados todos los pasos descritos anteriormente, estaremos en condiciones de uti-

    lizar nuestro scanner bajo GNU/Linux. Para ello, abrimos una terminal y tecleamos xsane direc-tamente.

    3.3. Dispositivos de memoria usbLas unidades de memoria flash y las cmaras digitales pueden parecer, en principio, dos dis-

    positivos totalmente dispares. En parte es cierto, sin embargo, tambin es verdad que compartenalgunas caractersticas que les han hecho desarrollarse casi a la par. Ambos poseen una memoriade almacenamiento de datos que puede comunicarse con un ordenador a travs de cualquier puertoUSB, en este sentido ha estado ligado su desarrollo hasta alcanzar las capacidades de hoy en da.GNU/Linux trata estos dispositivos como si fueran discos SCSI, de hecho, los drivers usados sonlos mismos y, tanto los memory driver como las tarjetas compact flash, estn soportados como dis-positivos de lectura/escritura, es decir, una comunicacin total, en ambos sentidos. Si posees unaunidad de memoria flash -llamada comnmente llavero USB- o una cmara digital, GNU/Linuxacceder perfectamente a los datos que puedan contener, siempre y cuando estos dispositivos res-peten los estndares internacionales USB.

    En el caso de llavero USB, seguramente GNU/Linux habr creado las entradas correspondien-tes a los puertos USB en el archivo ijk limnkop y, del mismo modo, habr creado el directoriode montaje iqrkis npt y iqrkis np u. De esta forma, slo tendremos que conectar nuestro llaveroal puerto USB y seleccionar, en el men del botn derecho del ratn, Discos | usb0, para queaparezca un icono en el escritorio representando un disco duro. Si pulsamos dos veces sobre lcon el botn izquierdo del ratn, se abrir una ventana de Nautilus mostrndonos el contenido dela unidad.

    Si conectamos nuestra cmara digital, en lugar del llavero, accederemos de la misma formaal contenido de la tarjeta de memoria y podemos recuperar nuestras fotografas, retocarlas y/oalmacenarlas en el disco duro, independientemente del modelo de nuestra cmara. Por ltimo,si deseamos cambiar el nombre de los directorios de montaje, tendremos que registrarnos comoadministrador del sistema y ejecutar:v

    ljlwxrsy z{| }

    ~

    q iqrkisnpt iqrkiwwoj

    v

    ljlwxrsy z{| }

    ~

    x ijk limnkop

    oqp xoqn wo wrjo }

    ijino u iqrkis npt mok jmoswk n rosk snj t t

    nko sj lrk xjrj jw rsj

    srk j q rkoj }

    ijino u iqrkiwwoj mok jmoswk n rosk snj t t

    Es decir, renombramos como iqrkiwwoj el directorio iqrkis npt y editamos el fichero ijk limnkoppara cambiar tambin la entrada correspondiente. A partir de ese momento, el contenido de nuestraunidad de memoria se encontrar en el directorio iqrkiwwoj cuando sea montada.

    3.4. Bibliografa1. Guadalinex. La gua de instalacin y primeros pasos, Jos J. Grimaldos, Edit Lin Edito-

    rial (2004).

  • Captulo 4

    Compilando el kernel

    4.1. IntroduccinLa compilacin del kernel, que cuando Linux comenz a difundirse era una tarea difcil y

    necesaria casi siempre que se instalaba, se ha simplificado mucho. Adems la introduccin demdulos, aunque el kernel sigue siendo del tipo monoltico, ha permitido reducir el nmero deocasiones en las que es necesario compilar nuestro propio kernel. De cualquier modo y aunque engeneral los kernels precompilados que se suministran con las distribuciones GNU/Linux suelen darbuenos resultados es conveniente tener una idea de como compilar el kernel para poder adaptarnosa posibles cambios de hardware no soportados en el kernel precompilado o para optimizar el kernelde acuerdo con el sistema que estemos empleando.

    Antes de pasar a la compilacin propiamente diche es apropiado dar alguna informacin ge-neral acerca del kernel Linux.

    El kernel de un sistema Linux podemos asimilarlo al corazn del sistema, es el encargadode gestionar la multitud de procesos que estn corriendo simultneamente, tanto lanzados por elmismo sistema, por los usuarios o por el superusuario. Permite tambin comunicar unos procesoscon otros cuando sea necesario, es el responsable de gestionar la memoria, los ficheros y el flujode informacin con los perifricos.

    Las versiones del kernel Linux se agrupan en la serie de kernels inestables o experimental y laestable o de produccin. Los primeros llevan un nmero impar en la segunda cifra, mientras que losestables llevan un nmero par en la segunda cifra. La ltima versin estable en el momento en quefue escrito este documento es la 1. En concreto daremos las instrucciones de compilacinrefirindonos a la versin en un sistema con Debian Sarge.

    4.2. Compilando el kernel

    4.2.1. Antes de compilar

    Una vez que nos hemos decidido a compilar el kernel hemos de comprobar si nuestro sistemaposee los requilitos mnimos para poder llevar a cabo dicha compilacin. Nos har falta unos40MB libres en el disco duro para las fuentes del kernel, y unos 400MB ms para los ficheros quese vayan generando durante la compilacin. En la tabla que sigue se incluye las condiciones quedebe cumplir un sistema para compilar un kernel :

    1Un lugar donde poder descargarnos el cdigo fuente de los ltimos kernels publicados es

    .

    59

  • 60

    Versin Cmo comprobarloGnu 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 oprofile 0.5.3

    Es importante tener en cuenta que compilar el kernel es una tarea que requiere de bastantesrecursos 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 necesa-riamente en la mquina en la que va a instalarse el kernel. Es posible compilar en un ordenadorpotente y una vez compilado el kernel instalarlo en otra mquina. Tambin es posible (y recomen-dable) compilar el kernel como un usuario que no sea root de forma que as nos evitamos meter lapata en algo bsico como root provocando un dao quizs irreparable al sistema2.

    Si contamos con las herramientas antes citadas podemos proseguir, aunque antes es conve-niente tener una idea del hardware del ordenador en el que correr el kernel. Para ello es muy tilla orden que nos lista todos los dispositivos PCI3 disponibles en el ordenador.

    Tambin es recomendable tener en cuenta la informacin acerca de la CPU de nuestro sistemalo que como hemos visto en el captulo de administracin local del sistema se consigue haciendo

    .

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

  • 61

    A continuacin hay que obtener el cdigo fuente del kernel. Si el kernel que queremos com-pilar es uno de los recogidos en la distribucin Debian que tengamos instalada en nuestro sistemabasta con instalar el correspondiente paquete deb4. Tras ello tendremos la fuente del kernel com-primida en el directorio . Se descomprime y desempaqueta:

    !

    "

    !

    #

    $

    !

    #% &

    '

    &

    (

    &) &

    *+

    %

    ) ,-.

    !

    "

    !

    #

    $

    !

    #% &

    '

    &

    (

    &) &

    *+

    %

    !

    "

    !

    #

    $

    !

    #% &

    '

    &

    (

    !

    "

    !

    #

    $

    !

    #% &

    '

    &

    (

    &) &

    *+

    %

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

    1

    023

    4

    035 6

    7

    6

    8

    .

    4.2.2. Compilacin del kernelUna vez que estamos en el directorio /010234 035 67 68 un primer paso antes de co-

    menzar la compilacin del kernel es salvar la configuracin presente en el sistema, por si fueranecesario recuperarla ms tarde para lo que hacemos

    !

    "

    !

    #

    $

    !

    #% &

    '

    &

    (

    9 &&

    "

    ,

    &

    $

    ". : &&

    "

    ,

    &

    $

    ". : &

    );

    !

    y decidir que etiqueta vamos a usar en el campo [email protected]

  • 62

    t uv utw x

    yz {

    v

    y{

    v |

    y}~

    v

    ~{z

    v|

    ~

    |

    y

    u

    z

    t uv utw x

    yz {

    v

    y{

    v |

    y

    u

    z

    }~

    vv

    ~

    v

    Para configurar el kernel existen cuatro herramientas, que son

    : Es la opcin ms pesada de usar ya que simplemente presenta una seria de pregun-tas que deben ser respondidas y si nos equivocamos... vuelta a empezar.: Esta opcin lee las opciones por defecto de un fichero previo y rehacelos enlaces y ficheros necesarios de acuerdo con l. Sirve si hemos hecho pequeos cambiosen el cdigo fuente.

    En este caso tenemos un frontal basado en que resulta bastante intui-tivo 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 grfico bastante intuitivo y configurable con una seccin de ayuda que semuestra para cada seccin del kernel. Adems muestra posibles problemas de dependenciaslo que ayuda a diagnosticar errores en la construccin del kernel. Otro posible frontal grficoes .

    t uv utw x

    yz {

    v

    y{

    v |

    y

    u

    z

    |

    y}~

    v

    ~{z

    v|

    ~

    t uv utw x

    yz {

    v

    y{

    v |

    y}~

    v

    ~{z

    v|

    ~

    }~

    |

    u

    Una vez decidida la configuracin del kernel podemos directamente pasar a compilar el kernel6para lo que haremost uv utw x

    yz {

    v

    y{

    v |

    y}~

    v

    ~{z

    v|

    ~

    }~

    ~

    y dependiendo de la CPU que dispongamos nos armaremos de ms o menos paciencia hastaque termine la compilacin. Si tenemos suerte, tras una serie de mensajes obtendremos algo similara

    t

    ~

    u|

    ~

    u

    {

    t

    {~

    |t

    v

    t

    ~{

    ~

    t

    z

    u

    {

    t

    ~{

    {

    t

    ~

    u

    {

    }

    ~

    v

    ~

    x

    v |w

    y

    u

    y

    t

    y

    ~

    u

    {

    v

    ~

    t uv utw x

    yz {

    v

    y{

    v |

    y}~

    v

    ~{z

    v|

    ~

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

    v

    y{

    v |

    y}~

    v

    ~{z

    v|

    ~

    y

    v |w

    y

    u

    y

    t

    y

    ~

    Ahora debemos compilar los mdulos asociados al nuevo kernel con la ordent uv utw x

    yz {

    v

    y{

    v |

    y}~

    v

    ~{z

    v|

    ~

    }~

    z~{

    Tras un buen rato con la CPU trabajando a tope si no hay error alguno llegaremos a recuperar elprompt con lo que podemos pasar a instalar los mdulos recin compilados. Este paso es necesariohacerlo como root as que toca hacer si hemos realizado la compilacin como usuario de a pie.t uv utw x

    yz {

    v

    y{

    v |

    y}~

    v

    ~{z

    v|

    ~

    }~

    z~{

    u

    {

    t

    6En el caso de los kernels de